摘 要:从组件对象模型(COM)技术出发,介绍了建立在对象链接与嵌入技术基础上的GIS控件MapX的运行机
制以及特点,并结合上海城市公安综合信息管理系统的开发,对开发中运用MapX开发GIS功能进行了分析。提
供了一种针对城市公共安全信息系统中GIS功能的开发与应用方法。关
键词:组件式GIS;组件对象模型;MapX;城市公安综合信息管理系统中
图分类号:P208 文献标识码:B 文章编号:1005-3123(2001)02-0031-05E
xamplesofMapX-BasedGISDevelopmentandApplicationsF
ANDa-kai,WUJian-ping(
TheOpenLabforCityandEnvironmentDynamicProcessatEastChinaNormalUniversity,Shanghai200062,China)A
bstract:StartingfromtheCOMtechmique,thispaperintroducestheoperationmechanismandcharacteristicsoftheMapX,aGIScontrolc
omponent.CombiningShanghaicitypublicsecuritygeneralinformationsystem,thedevelopmentofGISfunctionsusingMapXisanalysed.A
developmentandapplicationmethodforcitypublicsecurityinformationsystemisprovided.K
eywords:componenttypeGIS;COM;MapX;citypublicsecuritygeneralinformationsystem
0 引 言地
理信息系统(GIS)是目前各类信息管理系统中发
展最快的系统之一。GIS是一个有组织的计算机软件
和硬件的集合,它可以高效地创建、操作、分析和显示
各种类型的地理或空间参照的数据;并能将图形与数
据有机地结合起来,充分地表达数据的地理图形信息
。GIS的显著特征是可以从事复杂的空间运算,目前
在国内主要用于公安消防、供水供电、交通指挥、房地
产管理、土地管理等多个方面。一
般来说,地理信息系统的开发主要有3种形式:①
自主设计空间数据的数据结构和数据库,利用Visu a
lC++、VisualBasic、Delphi等编程语言开发地理信息系
统软件。这种开发形式主要适用于开发商品化的地理
信息系统平台软件,并且对科研力量和开发经费有很
高的要求,对开发一些实际应用系统而言,投入过高而
不一定实用。②引进国外先进的地理信息系统软件(
如Arc/Info、MapInfo等),利用其提供的二次开发工具
(AML、Mapbasic等),结合自己的应用目标开发。这
种方法比较简单易行,但移植性差,并且受开发工具的
限制,不能脱离原系统软件环境而独立运行。③利用
支持面向对象技术的高级程序语言和GIS厂商提供
的控件构成面向最终用户的可执行应用程序。利用这
些控件开发的GIS被称为组件式GIS(ComponentsG
IS,缩写为ComGIS),其技术解决方案如图1所示。C
omGIS是一种新的GIS开发思想,它是将GIS功能分
散制作成ActiveX控件,这些标准的ActiveX控件可以
被任何支持它们的开发环境所调用,以便在信息系统
中加入GIS功能。目前国际上比较流行的ComGIS软
件有ESRI的MapObjects,MapInfo公司的MapX等
。本文通过应用系统“上海城市公安综合信息管理系
统(GAGIS)”的开发,从中获得了许多利用ComGIS技
术开发GIS应用系统的体会。图
此主题相关图片如下:

1 组件式GIS的产生与发展2
0世纪90年代以来,软件的网络化和组件化趋势
给软件业带来新的机遇和挑战[1]。组件技术有效地
促进了面向对象技术和分布式计算技术的发展,在软
件开发方面起了巨大的推动作用。组件是建立在对象
链接和嵌入(OLE)体系上的[2],可形象地称之为即插
即用(PlugandPlay)的软件,它为可视化编程工具提
供接插件,这样可以实现代码的重用性,大大增强了编
程语言的功能和效率。目
前市场上流行的GIS软件的共同特点是它们将
图形处理,空间查询与分析,属性管理及其它GIS功
能都包含在一个比较庞大的系统中。这样会带来如下
问题:1)对于大多数用户来说,他们可能只需要部分而
不是全部GIS功能,但用户必须为购买整个GIS软件
系统而支付较高的费用。2)要满足用户的特殊需求
,需要对GIS软件进行二次开发,而目前许多GIS软
件的二次开发工具并非标准语言。这对用户提出了较
高的要求,也对原有系统的改造带来许多不便。利用
ComGIS技术就可以很好地解决这样的问题。使用C
omGIS进行系统开发,用户就不需要购买整个GIS软
件系统,只要在GIS组件的基础上进行开发组装即可
;而且ComGIS都支持标准的开发语言(如VisualB
asic等),这对于专用系统的开发更快捷和便利。此外
,利用组件技术更容易建立InternetGIS或IntranetG
IS信息系统[3]。所以ConmGIS技术使GIS应用软件
具有高水平的服务性,并逐渐成为对象链接与嵌入(
OLE)技术的新标准[4]以及当今GIS软件技术的发展
潮流。在
ComGIS领域中,有不少GIS厂商推出了自己的
GIS组件,比较知名的有美国环境研究所(ESRI)推出
的MapObjects2.x,MapInfo公司推出的MapX4.x以
及Intergraph公司推出的Geomedia3.x.MapX4.x和
其它GIS组件在对地图的常用操作(放大、缩小、漫游
等)、图层控制、属性数据绑定、地图信息查询等方面功
能相似,在地图符号、实时事件跟踪(与GPS集成)、空
间数据分析等方面则有一定的优势。2
MapX组件的模型结构M
apX组件的基本组成单元是Object(单个对象)和
Collection(集合),其中集合包括对象是多个对象的组
合[5]。每种对象和集合负责处理地图某一方面的功
能。图2表示了MapX组件的模型结构。由图2可以
看出Layer,DataSet,Annotation是Map对象下面3个
重要的分支。如果要操作地图的图层,就要用到L
ayer对象和Layers集合;如果要在地图上增加文本或
符号,就要用到Annotation对象和Annotations集合
;如果要访问空间数据表,那就要用到DatarSet对象和
DataSets集合;另外从图中也可以看出,对象和集合是
按层次来划分的。处在最高层的是Map对象,其它所
有的属性和方法是从Map对象继承过来的。
此主题相关图片如下:

图
2 MapX组件的模型结构3
MapX的空间数据结构空
间数据结构是地理信息系统的基石。地理信息系
统就是通过这种地理空间拓扑结构建立地理图形的空
间数据模型并定义各空间数据之间的关系,从而实现
地理图形和数据库的结合。从
横向分析,MapX采取的空间数据结构是基于空
间实体和空间索引相结合的一种结构。空间实体是地
理图形的抽象模型,主要包括点、线、面3种类型。任
何点、线、面实体都可以用直角坐标点x,y来表示。点
可以表示成一组坐标,对线和面则均被表示成多组坐
标(x1,y1,x2,y2…xn,yn)。空间索引是查询空间实体
的一种机制,通过空间索引,就能以尽量快的速度查询
到给定坐标范围内的空间实体及其所对应的数据。从
纵向分析,MapX的空间数据结构是一种分层存
放的结构[6]。用户可以通过图形分层技术。根据自
已的需求或一定的标准对各种空间实体进行分层组合
,将一张地图分成不同图层。在GAGIS地图中,可以
把小区、道路、居委、行政单位等不同类型区域和地物
分别放置在不同的图层中,采用这种分层存放的结构
,可以提高图形设备的搜索速度,便于各种数据的灵
活调用、更新和管理。图3说明了MapX的这种空间数据结构。
此主题相关图片如下:

图3 MapX的空间数据结构4
系统构成4
.1 系统目标G
AGIS是以上海市电子地图和人口信息为基础,以
面向整体作战、面向快速反应、面向综合利用为目标
,为广大公安干警进行案件调查、统计分析以及布控和
决策提供必要的信息保证。4
.2 应用系统组成4
.2.1 系统开发工具与平台G
AGIS操作平台为WindowsNTWorkstation4.0
(Pack6),编程语言采用可视化面向对象编程语言--
Delphi5.0。Delphi是Inprise公司推出的符合工业标
准的软件开发工具,它全面支持面向对象技术,具有高
速的编译器和强大的数据库支持[7],被广泛应用于开
发Windows应用程序。4
.2.2 系统数据库平台经
过技术测试,Oracle较其它同类产品更为稳定,而
且Oracle有基于Linux的版本,稳定性、安全性都有所
提高。另外,Oracle基于Internet的版本为系统的后
续升级铺平了道路。所以本系统后台数据库采用O
racle8,运行于操作系统为Linux的数据服务器上。4
.2.3 地理信息系统平台地
理信息系统平台采用灵活、方便的MapXv4.5。4
.2.4 系统运行硬件环境服
务器端:CPUPentiumII以上,内存128MB以上
,硬盘10G以上;客户端:CPUPentium133以上,内存
32MB以上,硬盘1.2G以上。4
.2.5 系统运行软件环境前
端操作系统采用Window98或WindowsNTW
orkstation4.0(Pack6),应用服务器采用WindowsN
TServer(Pack6),数据服务器采用Linux操作系统。4
.3 数据采集与地理编码将
上海市1:500地图数字化并转换为MapInfoT
able文件,并在MapInfo中完成了地图编辑与IDD编
码工作.GAGIS地图主要分为三层:基本层;信息层
;详细层。信息层又包括:大图斑数据信息层,小图斑
数据信息层,信息辅助层,注记层等。数字化时首先数
字化信息层,而后数字化详细层,最后是基本层。4
.4 系统的主要功能特点4
.4.1 地图双向快速查询系
统中的电子地图所显示的信息,可以精确到每个
门牌号和楼层数,以及所有的道路、消防龙头等城市常
见地物。实际使用时,基本层显示该区域内大致的地
图信息;信息层将所有的企事业单位、学校、居住楼与
数据库进行关联;详细层显示全部实地详细信息,为人
员定点、布控和逮捕等警力部署提供服务。因此,一方
面可以由数据库信息记录来定位电子地图上的具体位
置;另一方面可以选择地图某一区域来查询出该区域
的所有居民或企事业单位的详细信息。4
.4.2 浮动导航图导
航图是一个快速浏览全图的工具;可以指示当前
地图显示的区域,并可以快速定位到指定区域。导航
图中有蓝色矩形移动工具,通过鼠标移动导航图中的
移动工具,可实现在地图窗口中的迅速定位(如图
4)。
此主题相关图片如下:

图4 导航图4
.4.3 图层控制M
apX是按图层组织计算机地图的。用户可以依据
自身的要求,控制图层的显示与隐藏,这样可以使得用
户得到真正的符合自己要求的电子地图。通过选择不
同的图层,来实现地图的不同表现层次。4
.4.4 围追堵截这
项功能可以自动确定响应警区和路段,输入堵截
半径后,系统自动确定堵截路口以及相应的支援警区
,路口及支援警区在地图上闪烁显示,从而实现在地图
上自动对交通要道进行堵截。4
.4.5 警力布控用
户可以轻松地在电子地图上制作出直观的实时的
警力布控图,通过描述任务的具体内容以及对人员和
装备的配置将行动具体化和明确化,作为指导干警执
行任务时的行动指南。鼠标单击“警力布控”按钮,在
地图上对需要进行警力布控的点进行点击,地图将显
示为如图5所示。
此主题相关图片如下:

图5 警力布控图4
.4.6 犯罪分析在
GAGIS中利用MapX的空间分析功能能够形象
地显示出案犯的作案地点,受害者的居住地点以及警
员巡逻区域(叠加分析与缓冲区分析),并且将这些数
据信息以地图的方式输出,分发到各个地区的警察分
局中。并将各社区的警力资源与该地区的需求相互联
系,对成千上万的案情报告分门别类,并结合多个治安
服务设施点进行综合分析,使得部门策划者全面掌握
信息,重新调整各管区的警员配置。5
开发体会通
过GAGIS的开发,我们总结出用MapX开发应用
地理信息系统的一般方法:5
.1 创建数据库空
间数据库可以通过两种方法创建,一种是通过
pX的图层生成功能创建。MapX生成的每一图层都
对应一张表(table),该表中除了存有地理对象的位置
坐标以外,还可以包含其他属性字段;另一种方法是通
过导入带有地理位置信息的其他数据库生成[8]。M
apX可以通过数据绑定把这些数据库中的地理信息映
射到地图图层上,MapX支持对多种常用数据库的访
问。5
.2 设置图层控制和地图投影在
把地图加入到MapX之前,我们可以使用M
apX附带的图层管理工具GeosetManger把要加入的
图层匹配在一起,建成一个图层组,该图层组规定了其
中各个图层的名称、内容、属性及各图层之间的显示顺
序。MapX中可以给图层设置四种属性:可显示,可选
择,可编辑和自动标注。一般图层的属性是可显示的
,需要查询的图层设置为可选择,需要修改的图层设置
为可编辑,而自动标注可以自动显示图层中地理对象
的标签。合理地设置这些属性将有助于系统实现地理
信息的维护和查询功能。在
匹配各个图层时,应该注意各个图层投影的设置
。全部图层必须使用一致的投影方法才能精确匹配
。MapX中的地图分为地球地图和非地球地图,地球
地图中对象的坐标用经纬度来表示,非地球地图中对
象的坐标通常是相对坐标,是相对于图中的某个基准
点来设置的。如果图层的坐标不一致的话,必须先转
换坐标才能进行匹配。5
.3 设计MapX中地理信息的编辑功能M
apX提供标准的地理对象类型定义,在MapX所
提供的点、线、面类型选择对话框中可以方便地选择地
理对象的类型,包括所使用的符号的形状,颜色,大小
等属性。利用MapX提供的画图工具,可以为用户设
计出多种多样的地理对象生成工具。利用MapX提供
的多种地理信息对象的选择工具(如矩形、圆形选择工
具),我们可以调用这些选择工具并和MapX所提供的
编辑(删除、修改等)地理对象功能相结合以完成地理
信息系统中地理对象的编辑操作。但要注意,对于地
理数据和非地理数据要分别对待。5
.4 设计MapX中地理信息的查询功能和分析统计功
能对
于地理信息系统中所要求的有关地理信息查询功
能和分析统计功能,MapX提供了一定的查询和分析
手段,如MapX可以根据图层表中的字段值查询相对
应的地理对象;可以提供对应于图层表中某个或某依
据系统的具体要求用面向对象的语言设计查询和分析
统计功能。6
结束语在
开发地理信息系统的过程中,首先要考虑的就是
选择好的开发工具。单独使用可视化的编程语言不能
方便地实现地理地图功能,而通常的GIS软件却是一
个非常专业的界面,并且不能完全满足各种地理信息
系统用户的需要,而使用“GIS组件+面向对象可视化
编程语言”的模式就比较适合于各种应用的需要。通
过对应用系统“上海城市公安综合信息管理系统
(GAGIS)”的开发,我们深切体会到了MapX具有的优
点:①与Delphi连接性很好,图形显示速度较快;②使
用方便,仅少量代码就可以实现基本的GIS功能;③
强大的地理信息查询与统计功能。MapX可以和远程
数据库挂接,可以使用SQL语句进行查询,可以通过
数据绑定而把带有X、Y坐标的数据库记录显示在地
图中,并可以按照数据的地理信息进行多种多样的统
计与查询。MapX还可以通过投影和坐标变换把实际
地图中的地理信息数字化到电子地图中,如果和G
PS(全球定位)系统相结合,MapX还可以显示大面积
上的移动对象。这些特点也正是MapX适用于开发地
理信息系统的原因。参
考文献:[
1] 边馥苓.GIS地理信息系统原理和方法[M].北京:测绘出版社,1
996.[
2] 周 涛.GIS软件两个热点技术浅析[J].测绘通报,1999,(3):40-
41.[
3] 宋关福,钟耳顺.组件式地理信息系统研究与开发[J].中国图象图
形学报,1998,(5).[
4] ZhongErshun,SongGuanfu,WangErqi.DevelopmentofaCompo n
entsGISbasedonApplications[C].ProceedingsofIEAS’9
7&IWGIS’97,Volumel,August18-22.1997BeijingChina.[
5] MapXDevelop’sGuide[Z].MapInfoCorportion.[
6] MapXOnlineHelp[Z].MapInfoCorportion.[
7] InpriseCorporation.Delphi5标准教程[M].北京:清华大学出版社
,1999.[
8] MapInfo通用技术白皮书[R].北京:北大方正,2000.作
者简介:范
大凯(1975-),男,河南省开封市人,助理工程师,现华东师范大学
地图学与地理信息系统专业硕士研究生,主要攻研方向为遥感与城市
地理信息系统应用与开发研究。