




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录一、内容及要求说明11.1 内容介绍11.2 要求说明1二、环境配置12.1 Arc Objects SDK for Java Platform配置12.2 Java平台配置及Arc Objects插件安装2三、基于Arc Objects的Java语言二次开发43.1 系统框架设计43.2 系统功能设计53.3 系统功能实现6四、开发总结11一、 内容及要求说明1.1 内容介绍本课程实习要求主要是熟悉基于ArcGIS的AE或是AO二次开发过程,了解ArcGIS二次开发体系。1.2 要求说明本课程二次开发主要实现ArcGIS数据格式地图显示、缩放、平移等基础功能;另外要求实现根据数据的省份
2、字段进行地图复杂查询,并高亮且居中显示查询结果;开发语言不限,可使用C#、Java及VB等;ArcGIS SDK采用AE或AO都可;二、 环境配置2.1 Arc Objects SDK for Java Platform配置本人采用基于Arc Objects的Java语言的开发模式,所以为方便开发,需要配置Arc Objects SDK for Java Platform的开发环境。本人采用【arcgis.desktop完全中文版】.ESRI.ArcGIS.10.CS.iso安装软件,并采用arcGIS10.0kegen注册机进行破解。(1) ArcGIS许可管理器安装本人采用虚拟光驱Deam
3、on Tools加载ISO镜像文件,打开后进入初始安装选择界面,如图1所示。第一步安装ArcGIS许可服务器打开后进入初始安装选择界面,选择安装ArcGIS许可管理器,直接点击根据提示进行安装。图1. 初始安装选择界面第二步进行破解。首先打开“注册机”,如图2所示,功能选择arc/info,版本不用说:10.0;然后点击右下角的所有,把产生的注册信息全部复制到: 安装ArcGIS许可管理器下的目录License10.0bin下的service.txt中。把service.txt中的东西全部覆盖。然后把第二行中的 “this_host”替换为你的主机名或者是localhost。 图2. 注册机破
4、解图示 图3. ArcGIS许可服务管理器其次根据路径【开始】-【程序】-【arcgis-licensemanger- license server administrator】打开ArcGIS许可服务管理器,点击【停止】按钮,如图3所示。同时,根据路径【开始】-【程序】-【arcgis-arcgis administrator】打开ArcGIS管理器,更改中写的内容跟第二步中的:“this_host”替换为你的主机名或者是localhost内容相同,然后点击可用性,如图4和图5所示。 图4. 更改许可服务器 图5. 可用性显示的效果(2) Arc Objects SDK for Java P
5、latform安装打开后进入初始安装选择界面,选择安装Arc Objects SDK for Java Platform,直接点击根据提示进行安装,如图6所示。2.2 Java平台配置及Arc Objects插件安装本人采用的Java语言集成开发环境是Eclipse,版本号为Helios。开发环境配置过程介绍如下。(1) Eclipse配置本人采用绿色纯净免安装版本,直接拷贝至D盘,并设置工作目录为E盘。(2) JDK安装本人安装JDK版本为jdk1.7.0_40,直接根据提示进行安装部署,佩带的JRE版本为7.0。(3) 环境变量配置本人使用Win7操作系统,打开环境变量窗口路径为:【计算机
6、】-【属性】-【高级系统配置】-【高级】-【环境变量】,或者直接在【控制面板】打开环境变量窗口,环境变量窗口如图1所示。 图6. 环境变量窗口 图7. 新建JAVA_HOME系统变量第一步,在系统变量点击【新建】按钮,新建系统变量,变量名称为JAVA_HOME,变量值为JDK安装目录,例如:C:Program Files (x86)Javajdk1.7.0_40,效果如图7所示。第二步,在系统变量点击【新建】按钮,新建系统变量,变量名称为CLASSPATH,变量值为JDK目录下dt.jar和tools.jar包,例如路径:.;%JAVA_HOME%libtools.jar;%JAVA_HOME
7、%libdt.jar,效果如图8所示。 图8. 新建CLASSPATH系统变量 图9. 编辑JAVA系统变量第三步,在系统变量找到Path变量选中并点击【编辑】按钮,变量值添加内容%JAVA_HOME%bin,效果如图9所示。Java环境配置完成后,点击Eclipse启动程序,效果如图10所示。图10. Java集成开发环境Eclipse界面(4) Arc Objects插件安装在Arc Objects插件安装之前,需要配置Eclipse可视化开发环境。介于该可视化开发环境配置的考虑,我选择了Eclipse 的Helios版本。因为该版本之前的版本需要下载安装EMF、GEF和VE三种插件,而该
8、版本及之后的版本已经集成了EMF和GEF插件,配置过程无需安装他们;同时该版本之后的版本对应的VE插件版本高求在VE-1.5.0以上,但是官网关于更新VE版本服务已经关闭。故在Eclipse平台上进行能够获取的VE-1.5版本插件安装。打开Java集成开发环境(英文版)后,根据路径:【help】-【Install New Software】-【Add】进行VE-1.5.0插件的导入,过程如图11和图12所示。 图11. VE安装-插件导入 图12. VE安装-选择Tools VE然后开始安装Arc Objects插件,打开Java集成开发环境(英文版)后,根据路径:【help】-【Instal
9、l New Software】-【Add】进行Arc Objects插件的导入,过程如VE插件安装类似。到此为止,基于Arc Objects的Java语言二次开发环境已经配置完成。三、 基于Arc Objects的Java语言二次开发3.1 系统框架设计根据开发内容及要求,本人设计了如图13的中国行政区查询系统框架,框架内容主要分为四个部分。第一部分是主程序入口,在main()函数当中主要调用了bootstrapArcobjectsJar()和EcityMapDisplay.getInstance() 函数。前者主要检测Eclipse是否安装ArcGIS的Arc Objects插件,同时根据插
10、件安装路径加载本地的nativeLibrary、jarFile、joglFile和gluegenFile等文件;后者是初始调用主窗口类,实例化窗口类静态变量。第二部分是可视化模块,实现窗口的JMenuBar、ToolBarBean、TOCBean和MapBean四个小模块加载并对其进行合理布局。第三部分是消息响应窗口类中菜单和工具条的具体操作,实现地图的缩放、平移、复位等基础功能和字段条件查询功能。第四部分是辅助模块,前面三个部分在调用过程中从方便考虑将建立的模板类、异常处理等其他辅助类存在在此框架下。图13. 系统框架设计图3.2 系统功能设计根据开发内容及要求,本人实现了系统所需要实现的所
11、有功能。系统分为三大功能模块,第一模块是文件操作模块,主要内容是打开、保存和另存为地图文档以及系统关闭功能;第二个模块是地图基础工具模块,主要实现地图缩放、平移和复位等其他功能;第三个模块是条件查询模块,主要实现字段条件查询,模块加载地图图层所有字段名称,并根据选择的字段名和输入的字段值进行模糊查询。系统功能设计如图14所示。 图14. 系统功能设计 图15. 系统整体界面3.3 系统功能实现系统整体实现如图15所示。系统功能实现部分介绍依据功能模块进行介绍。3.3.1 文件操作模块文件操作模块主要分为打开、保存、另存为和关闭四个部分,实现效果如图16所示。(1) 打开消息响应openFile
12、函数,实现地图文档的关联。ICommand command = new ControlsOpenDocCommand();command.onCreate(getMapBean();command.onClick();(2) 保存消息响应saveFile函数,实现地图文档的关联。IMxdContents pMxdContents = (IMxdContents)(getMapBean().getMapControl().getMap();IMapDocument pMapDocument = new MapDocument();pMapDocument.open(getMapBean().ge
13、tDocumentFilename(), );pMapDocument.replaceContents(pMxdContents);(3) 另存为消息响应saveAsFile函数,实现地图文档的关联。ICommand command = new ControlsSaveAsDocCommand();command.onCreate(getMapBean();command.onClick();(4) 关闭消息响应closeFile和closeApplication函数。/ 关闭窗口 之前要保存 public void closeFile(ActionEvent e) if(closeAppli
14、cation() / 关闭前先保存 saveFile(e); System.exit(0); / 关闭操作的选择框提示框 private boolean closeApplication() int result = JOptionPane.showConfirmDialog(null, 是否保存并关闭系统?, 关闭并关闭系统, JOptionPane.YES_NO_OPTION); if (result = JOptionPane.YES_OPTION) return true; else return false; 图16. 地图文档操作 图17. 基础工具3.3.2 基础工具模块基础工具
15、模块主要分为地图缩放、平移、复位、旋转等其他基础工具,即主要与ToolBarBean功能类似。实现效果如图17和图18所示。(1) 地图缩放消息响应mapZoomIn和mapZoomOut函数,实现地图文档的关联。ControlsMapZoomInTool command = new ControlsMapZoomInTool();command.onCreate(getMapBean();getMapBean().setCurrentToolByRef(command);ControlsMapZoomOutTool command = new ControlsMapZoomOutTool()
16、;command.onCreate(getMapBean();getMapBean().setCurrentToolByRef(command);(2) 地图平移消息响应mapPan函数,实现地图文档的关联。ControlsMapPanTool command = new ControlsMapPanTool();command.onCreate(getMapBean();getMapBean().setCurrentToolByRef(command);(3) 地图复位消息响应mapFullExtent函数,实现地图文档的关联。ICommand command = new ControlsM
17、apFullExtentCommand();command.onCreate(getMapBean();command.onClick();(4) ToolBarBean功能实现工具条实现地图文档操作和基础功能相应,采用Arc Objects二次开发接口直接添加。/加载工具条按钮private ToolbarBean getToolbar() if (toolbar = null) try toolbar = new ToolbarBean(); / 打开 toolbar.addItem(new ControlsOpenDocCommand(), 0, 0, false, 0, esriCom
18、mandStyles.esriCommandStyleIconOnly); / 保存 toolbar.addItem(new ControlsSaveAsDocCommand(), 0, 1, false, 0, esriCommandStyles.esriCommandStyleIconOnly); /地图比例尺 toolbar.addItem(new ControlsMapZoomToolControl(), 0, 2, false, 0, esriCommandStyles.esriCommandStyleIconOnly); /地图放大 toolbar.addItem(new Cont
19、rolsMapZoomInTool(), 0, 3, false, 0, esriCommandStyles.esriCommandStyleIconOnly); /地图缩小 toolbar.addItem(new ControlsMapZoomOutTool(), 0, 4, false, 0, esriCommandStyles.esriCommandStyleIconOnly); /地图平移 toolbar.addItem(new ControlsMapPanTool(), 0, 5, false, 0, esriCommandStyles.esriCommandStyleIconOnl
20、y); /地图复位 toolbar.addItem(new ControlsMapFullExtentCommand(), 0, 6, false, 0, esriCommandStyles.esriCommandStyleIconOnly); /地图刷新 toolbar.addItem(new ControlsMapRefreshViewCommand(), 0, 7, false, 0, esriCommandStyles.esriCommandStyleIconOnly); /地图回到前状态 toolbar.addItem(new ControlsMapZoomToLastExtentB
21、ackCommand(), 0, 8, false, 0, esriCommandStyles.esriCommandStyleIconOnly); /地图回到后状态 toolbar.addItem(new ControlsMapZoomToLastExtentForwardCommand(), 0, 9, false, 0, esriCommandStyles.esriCommandStyleIconOnly); /地图中心放大 toolbar.addItem(new ControlsMapZoomInFixedCommand(), 0, 10, false, 0, esriCommandS
22、tyles.esriCommandStyleIconOnly); /地图中心缩小 toolbar.addItem(new ControlsMapZoomOutFixedCommand(), 0, 11, false, 0, esriCommandStyles.esriCommandStyleIconOnly); /地图旋转功能 toolbar.addItem(new ControlsMapRotateTool(), 0, 10, false, 12, esriCommandStyles.esriCommandStyleIconOnly); /地图旋转清除 toolbar.addItem(new
23、 ControlsMapClearMapRotationCommand(), 0, 13, false, 0, esriCommandStyles.esriCommandStyleIconOnly); toolbar.setBuddyControl(getMapBean(); catch (java.lang.Throwable e) e.printStackTrace(); return toolbar; 图18. ToolBarBean加载基础工具3.3.3 查询功能模块查询功能模块,主要实现字段条件查询功能。消息响应【字段条件查询】,弹出字段条件查询框,选择属性字段并输入字段值再点击【查
24、询】就能够实现中国省份查询,并将查询结果进行居中显示。消息响应过程和字段条件查询如图19和图20所示。图19. 字段条件查询消息响应部分实现如下。/ 打开字段条件查询部分public boolean selectByCondition(ActionEvent e) EventQueue.invokeLater(new Runnable() public void run() try / 主程序启动,新建界面程序 EcityFeatureSelection ecityFeatureSelection = new EcityFeatureSelection(); / 设置界面可见 ecityFea
25、tureSelection.setVisible(true); catch (Exception e) e.printStackTrace(); ); return true;图20. 字段条件查询在启动字段条件查询窗口,下拉窗口读取图层信息加载属性字段名称。private JComboBox initComboBox() Vector vector = new Vector(); vector.add(请选择属性字段); try IFeatureLayer iFeatureLayer = (IFeatureLayer)EcityMapDisplay.getInstance().getMapB
26、ean().getLayer(0); IFeatureClass featureClass = iFeatureLayer.getFeatureClass(); FeatureCursor featureCursor = new FeatureCursor(featureClass.search(null, true); /确定NAME字段的在所有字段中的索引号 Fields fields = (Fields) featureCursor.getFields(); int fieldCount = fields.getFieldCount(); for (int index = 0; inde
27、x fieldCount; index+) Field field = (Field) fields.getField(index); String fieldName = field.getName(); vector.add(fieldName); catch (AutomationException e) e.printStackTrace(); catch (IOException e) e.printStackTrace(); JComboBox NameCombox = new JComboBox(vector); NameCombox.setMaximumRowCount(6); NameCombox.addActionListener(new EcityAc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 火炬传递面试题及答案
- avr考试题及答案
- 广东车工考试题及答案
- 物理试题及答案初二
- 大学解剖考试题及答案
- 湖北省武汉市部分省级示范高中2024-2025学年高一下学期期中测试地理试卷(含答案)
- 潮玩行业分析报告:2025年收藏价值与文化传承趋势洞察
- 2025年广东省广州市越秀区第十六中学中考二模数学试卷(含部分答案)
- 新能源汽车内饰材料绿色生产技术评估报告
- 共享出行平台用户行为与出行习惯变迁研究报告
- 3停止间转法教案
- 2022-2023学年重庆市合川市三下数学期末学业质量监测模拟试题含解析
- 文创园物业管理方案
- 全过程造价咨询服务实施方案
- 初二生地会考复习资料全
- 里氏硬度法检测钢材强度范围记录表、钢材里氏硬度与抗拉强度范围换算表
- 《屹立在世界的东方》示范课教学课件【人教部编版小学道德与法治五年级下册】
- 四川省宜宾市翠屏区中学2022-2023学年数学八年级第二学期期末检测试题含解析
- 2020-2021成都石室联合中学蜀华分校小学数学小升初模拟试卷附答案
- 某冶金机械厂供配电系统设计
- 《在中亚细亚草原上》赏析 课件
评论
0/150
提交评论