您的当前位置:首页正文

基于ArcObjects的城市基础地理信息系统的设计与实现

来源:九壹网
2010年第12期 (总第136期) 大众科技 DAZHONG KEJ No.12,2010 (Cumulatively No.1 36) 基于ArcObj ects的城市基础地理 住I I=1,自  系统的 设计与实现 韩志远 (鞍钢矿业公司弓长岭矿山公司露天铁矿,辽宁鞍山111008) 【摘要】介绍了基于ArcObjects进行组件式地理信息系统开发的知识,分析了城市基础地理信息系统的功能模块,并开 发了赣州市基础地理信息系统原型,在处理赣州市城区地理数据中取的良好效果。 【关键词】ArcObjects;地理信息系统;组件 【中图分类-g-]TP391 【文献标识码】A 【文章编号】1008-1151(2010)12—0031—02 ArcObjects组件库集成了开发人员所需的全部GIS功能。 (一)引言 一城市基础地理信息系统是专业化的地理信息系统,它是 种运用计算机软、硬件及网络技术,实现对城市各种空间 开发人员可以通过四种应用程序接口(APIS)来访问 ArcObjects的功能构建GIS应用程序: (1)COM API 和非空间数据的输入、存贮、查询、检索、处理、分析、显 示、更新和提供应用,以处理城市各种空问实体及其关系为 主的技术系统,是地理信息技术及其他相关信息技术在城市 政府、企业管理与决策及市民社会生活中的应用。它利用地 理信息技术将城市系统中地理环境的组成要素及其相互关系 映射到信息空间中,建立城市现实地理环境的空间信息模型, 构造一个与现实城市相对应的虚拟“数字城市”,为政府和企 业的管理与决策以及人们的社会生活提供信息服务。本文通 过阐述基于ArcObjects的组件式GIS开发技术,设计和实现 任何COM生成语言(Visual Basic、Visual C++、Delphi 等)都可以使用这个API,需要引用类型库,一般在<ArcGIS 安装目录>/com文件夹下。 (2).NET API Visual Basic.NET和C#可以使用这个API,需要引用主 互操作程序集,一般在<ArcGIS安装目录>/DotNet文件夹下。 (3)Java API Sun公司的Java2平台标准编辑器可以使用这个API,需 要引用Java包,一般在<ArcGIS安装目录>/java文件夹下 (4)C++API 城市基础地理信息系统的开发。 (二)组件式Gl s 随着计算机软件技术的发展,组件技术已经成为GIS应 用开发的主流,具有面向对象、语言无关等特性。组件式GIS 的基本思想是把GIS的各大功能模块划分为几个控件,每个 控件完成不同的功能。各个GIS控件之间,以及GIS控件与 其它非GIS控件之间,可以方便地通过可视化的软件开发工 具集成起来,形成最终的GIS应用。控件如同一堆各式各样 的积木,他们分别实现不同的功能(包括GIS和非GIS功能), 根据需要把实现各种功能的“积木”搭建起来,就构成应用 系统。 ArcObjects 是美国 ESRI(Environmenta1 Systems 微软VC++6.0、微软Vc十+.NET2008、Sun Solaris Forte6 Update2、Linux GCC3.2支持此API,需要引用头文件,一般 在<ArcGIS安装目录>/include文件夹下。 ArcObjects是基于COM组件的,具有跨平台、跨语言的 特性,因此不同的开发人员可以选择自己熟悉的API进行开 发,这些API的真正实现是在<ArcGIS安装目录>\bin文件夹 的众多DLL文件中。 2.组件对象模型 ArcObjects是一套基于微软的COM组件对象集,COM模 型是一种二进制标准,它允许任意两个组件按照一定规则互 相通信,具有跨平台、跨语言的特性,COm组件具有以下特点: (1)COM是一种二进制级别的组件通信标准,它规定了 组件之间如何通信。 (2)COM对象可以以DLL或EXE文件形式存在,它实际 实现了接口。 (3)COM对象必须实现IUnknown接口,它负责管理COM 对象生命周期并在运行时刻提供类型查询。 (4)一个COM对象可以实现多个接口定义的方法,从一 个接口跳转到另一个接口可以通过QI(Query Interface), 即查询接口。 (5)每个组件都要拥有一个独一无二的标识码,即GUID, 供机器使用。 (6)接口分为两种,即内向接口和外向接口。内向接口 Research Institute,Inc.)公司提供的一个GIS技术框架, 它是基于Microsoft的COM技术开发的一套COM组件对象集, 这个组件集提供了几乎全部的底层GIS功能,就连ArcGIS软 件本身都是使用ArcObjects的组件开发出来的 由于ESRI 开放了这个组件库的APls,因此我们可以很方便的利用 ArcObjects开发组件式GIS。 (三)ArcObjects开发技术 1.ArcObjects简介 ArcObjects是一套庞大的、独立于平台的COM组件集合, 采用c++语言编写,有3000多个对象可供开发人员调用,其 中有细粒度的小对象,例如:Geometry对象;也有粗粒度的 大对象,例如Map对象,通过这些对象开发人员可以操作控 制文档(mxd,3dd,sxd等)、和空间数据库进行交互等。 【收稿日期】2010-09—12 【作者简介】韩志远,男,鞍钢矿业公司弓长岭矿山公司露天铁矿工程师。 一31. 用于组织方法和属性,外向接口用于组织事件。 3.抽象类、组件类和普通类 ArcObjects中存在三种类型的类:抽象类(Abstract Class)、组件类(CoC1ass)和普通类(Class)。抽象类不能 产生一个新的对象,但是可以用于定义一个子类。组件类可 以直接创建对象实例,它的实例对象不依赖其他对象的存在 而存在,其生存周期也不用其他对象管理。比如在c#环境中: IMap pMap=new MapClass 0: (2)Geometry库 包含了核心的几何形体对象,如点、线、面等,即在 ArcObjects中的要素和图形元素的几何形体都可以在这个组 件库中寻找到。 (3)Display库 包含在输出设备上显示图形所需要的组件对象,它包括 Display对象、Color对象、ColorRamp对象、DisplayFeedback 对象、RubberBand对象、Tracker对象和Symbol对象。 (4)Framework库 这里的MapClass就是一个组件类,它可以使用new关键 字来产生一个对象pMap。 普通类不能够直接产生一个对象,但它可以通过其他的 普通类或组件类的方法产生,而不是使用new关键字来完成。 如下面的例子,A和B为普通类对象,C为组件类对象,D为 个普通类,如下面的代码: ~提供了ArcGIS程序的某些核心对象和可视化组件对象。 (5)Output库 包含了ArcObjects所有的输出对象,它包括两大类,即 打印输出对象Printer和转换输出对象Export。 (四)城市基础地理信息系统设计与实现 本原型系统基于ArcObjects+C#开发而成,开发环境为 Visual Studio 2008、ArcGIS Desktop 9.3,并建设了赣州 市城区地理数据库作为验证数据,运行良好。 A=B.WriteA(): A:C.WriteA(): 正确 正确 A:new D0: 产生 不正确,普通类不能通过new的方法 1.系统结构 A可以由B和C的WriteA方法产生,A的生命周期是由 产生它的对象B和C控制的,如果B或C对象在内存中被释 放了,则此对象也将从内存中消失。抽象类、组件类和普通 类之间的关系如图1 图2 关联联系 2.功能设计 图1 ArcObjects类结构关系图 (1)基本文件操作功能:新建地图文件、打开、保存、 另存为:还包括添加数据、添加CAD数据。 4.常用ArcObjects组件库 ArcObjects是一套庞大的COM组件集合,ESRI将它们放置 在不同的组件库中,一个组件库就是一个assembly,一个 assembly包含多个不同的命名空间。如ESRI.ArcGIS.ADF Assembly 的Namespaces:ESRI.ArcGIS.ADF、ESRI.ArcGIS.AIF.BaseClasses、 ESRI.ArcGIS.ADF.CATIDs、ESRI.ArcGIS.ADF.COMSupport。 (2)地图浏览功能:可以漫游地图,对每一幅地图可以 实现放大、缩小、漫游、查看各种地物的属性、控制图层的 显示、查询自己感兴趣的图层。 (3)视图功能:可以为布局视图添加格网、边框、背景、 指北针、阴影等,添加、删除图例,设置比例尺,添加日期 等,显示鹰眼地图,为地图添加标注等。 (4)空间数据编辑:创建多段线、圆,移动几何对象, 组件库是对~个或多个COM组件中所有的组件类、接口、 方法和类型的描述,这种描述是二进制级别的。所有的这些 组件库组件部位于<AEGIS安装目录>\com文件夹中,而其真 正的实现在<ArcGIS安装目录>\bin文件夹的众多DLL文件 中。 多边形挖空,分割线要素,修剪线要素,线面整形,要素合 并,绘制多段线,编辑要素节点等。 (5)空间数据符号化功能:单一符号化、唯一值符号化、 分级色彩符号化、分类符号化、点值符号化,制作饼状专题 图、柱状专题图、叠置柱状专题图等。 (6)空间分析功能:缓冲区分析、叠置分析 (7)空间查询功能:点击查询、属性数据查询、定位查 询、缓冲区查询等。 c#.NET的命名空间(NameSpace)以一种逻辑分层的方式 来组织元素的方法。命名空间将功能相同或者相似的COM对 象在逻辑上松散组织起来。在ArcObjects中,众多的组件放 在不同命名空间。如果要进行地理数据操作,需要引入 GeoDatabase等相关的命名空间;如果涉及几何形体对象的处 理,就需要引入Geometry等命名空间。 ArcObjects对象被放在8O多个组件库中,不同的组件库 的功能是不一样的。学习ArcObjects的过程,也就是不断了 解这些组件库本身以及库与库之间关系的过程。熟悉常用的 ArcObjects组件库是开发的基础。 (1)System库 是ArcGIS框架中最底层的一个库,它提供了一些可以被 其他组件库使用的组件。 (8)提供一些实用工具:如面积测量、距离测量、定制 工具条等。 (9)地图输出:提供打印地图,对打印预览、设置,对 地图转换输出。 3.模块介绍 为了提高代码的可复用度和系统的可扩展性,将系统的 重要功能设计成了单独的模块,并封装在了独立的程序集中, 如表1。 (下转第34页) .32一 代码为ASCII码字符。NMEA--OI83协议是GPS接收机应当遵 守的标准协议,也是目前大多GPS接收机、GPS数据处理软件、 开始 导航软件都遵守或者至少兼容这个协议。其标准格式如下: ¥GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>, ,关闭阜口中岢i ●。。。。_●--。。。。r。’。。’_一 —————j —一 <ll>,<I2>*XX<CR><LF>如一条GPS定位数据信息语句 lI将GP入s信号苎 uPDH53中 ¥GPGGA,103529,420l_3535,N,I3506.2258,E,I,04, 21.4,98.8,M,34.7,M,*65意思为UTC时间为l0时35 分29秒,位置在北纬42度1.3535分,东经135度6.2258 分,普通GPS定位方式,接收到4颗卫星,水平经度为21.4m, 天线离海平面高度为98.8m,所在地离地平面高度为34.7m, I等待卓口中断I =二=[= 竟成一次有效的 ‘GPGGA语句接收 校验和为63H。 5.硬件电路的整体结构设计 基于ARM7实现GPS信号叠加视频输出设计,其硬件电路 设计的整体结构框图如图3所示。 图4软件流程框图 (四)总结 本文利用¥3C440B0和uPD6453等芯片将GPS信号叠加到 视频信号上,实现了将两路信号转变为单路信号的传输,此 筒 S3C44BO 村 H l 设计性价比高、可配置性强、实用性好等特点,因此是一种 薹 詈 。 委r=1 l 较好的设计方案。 的整个流程框图如图秉  所示: 嗍频输出设 其软件设计 於萁干㈣ 立邢 兰 +甘朴仕 + [2]孙20泓05.波.视频字符叠加技术的发展及四种实现方案【M】.电 【3】 一赆 一 :三 原理与应用fM】.北京:电子工业出版 (上接第32页) 袁1系统模块介绍 程序集名称 MyAO 一 舌一 (五)结束语 功能 系统土辫序.提供系统主界面和些主要的窗体 当前,数字城市的建设如火如荼,城市基础地理信息系 统作为一种城市现代化管理、规划和科学决策的先进工具, 已经在政府管理、土地、规划、房产等部门得到了广泛的应 用;利用ArcObjects开发组件式GIS,具有高效、稳定、灵 l ̄ayoutV… DataEditot RlghtMenu Prlnt ̄ap 为布局视圈提供功能支持 为 间数据编辑提供功能支持 Toolg 4.系统界面 本系统的主界面有数据视图(dataview视图)和版面视 图(LayoutView视图)通过选项卡来切换不同的视图显示, 同时还包括鹰眼视图,用于显示地图浏览的范围。系统的数 荤 扣印输出地图 右键菜单显示的一 功能 提供一些实用I_其 活的特点,相信会在城市基础地理信息系统的建设中发挥越 来越重要的作用。 据视图主要是用于显示地图数据,在数据视图中,我们可以 对地图数据执行查询、空间数据符号化、空间分析等相关的 GIS功能,而版面视图只要是通过设置相应的版面,起到地图 版面的装饰作用,用于设置好地图的版面,然后发布打印输 出相应的地图版式,可以在版面视图中添加一些辅助性信息, 比如指北针、比例尺等。系统主界面如图3。 【参考文献】 …1韩鹏,等.地理信息系统开发:ArcObjects方法Ⅱ】_武汉:武汉 大学出版社,2005. 【2】刘仁义,等.ArcGIS开发宝典一从入门到精通U】.北京:科学 出版社.2006. 【3】周玉清,等.基于ArcObject的空间数据管理系统的设计与 开发[『1.地理空间信息,2006. 【4】赵万锋,等.基于ArcObjects的系统开发技术剖析卟计算机 应用研究,2004(3). [5】宋关福,钟耳顺.组件式地理信息系统研究与开发U】.中国图 象图形学报,1998(4). 图3系统主界面(DataView) 34.. ..

因篇幅问题不能全部显示,请点此查看更多更全内容

Top