《电子技术应用》
您所在的位置:首页 > 其他 > 设计应用 > ArcObject与Java结合实现矿产资源管理信息系统
ArcObject与Java结合实现矿产资源管理信息系统
来源:微型机与应用2010年第10期
芶 盛1, 王茂芝2, 郭 科2
1. 成都理工大学 信息管理学院,四川 成都610059;2. 数学地质四川省高校重点实验室, 四川
摘要: 介绍了ArcEngine 支持的开发平台、产品许可模式和图层操作技术路线。通过ArcObject与Java结合动态创建和叠加矢量图层的开发方式,完成了矿产资源管理信息系统,实现了攀枝花矿产资源数据综合有效的管理。
Abstract:
Key words :

摘  要: 介绍了ArcEngine 支持的开发平台、产品许可模式和图层操作技术路线。通过ArcObject与Java结合动态创建和叠加矢量图层的开发方式,完成了矿产资源管理信息系统,实现了攀枝花矿产资源数据综合有效的管理。
关键词: ArcEngine; 产品许可; 矢量图层; 矿产资源管理

    随着人们对空间信息需求的增长以及地理信息系统(GIS)技术的快速发展,GIS已经在资源管理、资源配置、城市规划和管理、土地信息系统和地籍管理、 生态、环境管理与模拟等领域获得了越来越广泛的应用。许多GIS公司相继开发了功能强大的GIS应用软件,随着组建技术的出台和日益成熟,各公司相继推出了各自的组件式GIS产品,如ERSRI公司的MapObjects和Arcobjects、MapInfo公司的MapX以及Intergraph公司的Geomedia等[1]。其中,ArcObjects以其功能强大、开发灵活成为了进行GIS二次开发时的主要平台。
1 ArcEngine技术简介
    ArcObject是ESRI公司ArcGIS产品族应用程序Arcmap、AcrCatalog和ArcEditor等的开发平台,包括了大量可重用组件。而ArcEngine是ArcObject组件跨平台应用的核心,它采用微软公司的COM技术构架了整个组件集。因此AreEngine具有语言无关的特性,开发者可以用.NET、Java、VB和VC++等多种开发环境,以功能强大的ArcGIS为技术基础,开发适合的应用程序。使用ArcEngine技术开发出来的程序只需安装ArEngine Runtime即可,这样既节省了开发成本,又节约了系统运行时所消耗的计算机系统资源[2]。
2 产品许可模式
    ArcEngine Developer Kit产品以及相应的产品许可安装以后,只是为应用程序实现许可允许的功能提供了可能性,应用程序想要拥有这些功能,还需进行许可文件的初始化。在ArcEngine中,应用程序是强制初始化许可的,即应用程序必须在运行时使用LicenseControl或AoInitialize来管理和初始化产品许可或扩展许可,否则便无法启动[3]。许可文件的初始化工作要在应用程序的入口处实现,初始化之前要先判断将被初始化的许可是否可用,应使用IsProductCodeAvailable方法进行判断,并且许可要从高到低添加,由高到低的排序为:ArcInfo、ArcEditor、ArcView、ArcServer、EngineGeoDB、Engine。同时可使用CheckOutExtension方法初始化需要扩展模块的许可(如三维分析、空间分析和网络分析)。为节省系统资源,可将初始化代码写在类静态语句块中。
    在初始化产品许可的过程中,应该遵循以下几点许可规则[4]:①许可规则初始化必须在所有ArcEngine代码运行以前进行;②程序运行期间产品许可只能被初始化一次;③扩展许可可以在需要时被检入检出;④不可以合并或混合产品许可和扩展许可;⑤需要使用代码来查询可获取许可的级别并从中检出许可;⑥应尽可能使用低级别的许可。
3 图层操作技术
  GIS软件的应用离不开空间数据的支持,对图层的操作是其基本功能。它分为图层控制和地图浏览两个主要部分。图层控制功能主要包括诸如调整图层压盖关系、删除图层、控制图层可见性、可注释性、可编辑性等需求;地图浏览功能主要指通过窗口对空间数据进行缩放、漫游和全范围显示等。参考文献[1]的实际应用中,GIS软件必须具备为用户提供方便、灵活的图层加载方式,并且能加载多种数据格式的功能。ArcObject支持多种文件格式,矢量数据如:ArcInfoCoverage,ESRI Shapefile,AutoCAD的DXF、DWG等文件;栅格数据如:BMP、TIFF、JPG、GRID等[5]。
    下面主要讨论如何利用ArcObjects组件(MapControl控件)实现图层(*.shp文件)添加功能。首先需要打开工作空间,这可由代理类IFeatureWorkspaceProxy的对象赋值的方法获得IFeatureWorkspace工作空间;然后通过openFromFile方法指向装载有*.shp文件的文件夹,接下来调用openFeatureClass方法打开指定的shp文件;下一步由setFeatureClassByRef方法和代理类ILayerProxy把相应的feature class组装成一个ILayer对象;最后由getMap方法得到地图的IMap接口对地图的图层进行添加以及刷新操作。整个程序流程图如图1所示。
    图1中,用到了Carto、GeoDatabase、System等系统库,还用到了ILayer、IMap等接口。实际开发中,还可以通过调用相关方法对得到的IFeatureLayer对象实例设置与它相关的属性等进行操作。在利用ArcEngine开发的应用程序中,不仅图层数据可以来自不同地方,例如本地或者Web服务,而且图层数据类型也可以多种多样,例如矢量数据、栅格数据等。当得到地图的IMap接口后就可以对图层数据进行删除、调整顺序、添加渲染等进一步图层控制操作并实现其他地图浏览功能。

4 实例应用
    矿产资源管理信息系统的建设对攀枝花这样一个资源型城市,实现信息化管理矿产资源具有非常重要的意义。系统的总体开发目标是建立起兼有地理信息系统(GIS)、管理信息系统(MIS)二者功能的综合信息系统,以能够满足矿产资源海量数据信息的综合管理和分析,还能满足工作人员和行政管理人员的查询需求。因此,系统的开发需要结合GIS和MIS的各自特点,通过组件式GIS技术(ArcObjects)将空间信息与属性信息有机集成于一体。
    基于ArcObject开发的矿产资源管理信息系统是攀枝花市国土资源局矿产资源信息化管理平台的重要组成部分,它实现了对空间数据动态更新、维护和可视化管理, 并在实际中得到了广泛应用。最终开发的系统界面如图2。同时,在应用系统的实际开发过程中,可以根据需要定制系统的功能,合理设计系统运行的界面与操作,保证操作的友好与简便。

    结合上面的技术介绍和需求论述,在实际的Java开发环境中创建基于ArcEngine矿产资源管理信息系统程序主要包括以下几个步骤:(1)创建Java应用工程,确定程序的基本框架和功能,包括系统菜单、工具条、运行窗口等;(2)引用ArcEngine类库、ArcObjects组件对象及其他地图显示和操作控件;(3)初始化产品许可;(4)编写应用程序功能模块代码;(5)程序发布与部署。
参考文献
[1]    傅仲良.Arc Objects二次开发教程[M].北京:测绘出版社,2008.
[2]    侯鲁娟,郑晖,廖为明,等.基于AE技术的森林火灾扑救辅助决策系统[J].林业科技开发,2009, 23(1):109-113.
[3]    JING Dian Kao. ArcGIS Engine产品开发中的许可文件初始化[EB/OL].http://blog.csdn.net/ jingdiankao/archive/2009/04/15/4075667.aspx.2009-04-15/2009-07-27.
[4]  ESRI中国(北京)培训中心.ArcGIS Engine应用开发基础[Z]. 北京:2004.
[5]  ESRI中国(北京)有限公司.ArcGIS Engine开发指南[Z].北京:2004.
[6]  ArcEngine Developer Help[Z]. USA:ESRI.2008

此内容为AET网站原创,未经授权禁止转载。