关键词:城市地理信息系统(UGIS);MapX;VisualBasic6.0;组件式地理信息系统。
applicationofMAPXinurbangeographicinformationsystem
zhoujifeng1,LiuYan1,JiangZhiwen2
(1geotechnicalengineeringreconnaissanceparentcompanyinNortheastliaoninganshan114002,shunhuacollegeofliaoningshihuauniversityliaoningfushun113001)
Abstract:WiththequiteperfectfunctionmapxisactiveXmodulewhichmapinfoCorporationpromotes,itmaycarryontheGISsecondarydevelopmentswiththemanykindsofprogramminglanguage.ThisarticletakesVBasthedevelopmentkit,unifiesFuxinelectronmap,andintroducesmapxinthecitygeographicinformationsystemapplication.
Keywords:urbangeographicinformationsystem;MapX;visualbasic6.0;comgis.
0引言
城市地理信息系统(UrbanGeographicInformationSystem,简称UGIS)是专业化的地理信息系统、是为城市建设城市规划、城市管理和信息服务的空间性地理信息系统.具体地讲,城市地理信息系统是一种利用计算机技术及信息工程等技术实现对城市各种数据和信息进行采集、处理、存储、管理、查询、分析、应用和维护更新的空间地理信息系统.
自1990年以来,计算机技术与网络技术迅速发展,促进了城市的数字化进程,对城市地理信息系统的需求也大大加强.城市地理信息系统以应用为导向,已进入城市管理和规划的业务应用阶段.在城市信息的查询、政府职能部门的办公自动化、土地规划、房地产管理、城市问题的分析评价与科学决策,以及数据和信息的更新等许多方面,都要借助地理信息系统的技术.
1MapX简介
MapX是一种集MapInfo强大功能于一身的性价比非常高的ActiveX控件,MapX
支持将地图功能添加到任何应用中,提供了一种高度可视化的方法,来显示和分析基于位置的数据,它和众多的可视化编程工具例如VisualBasic、VisualC++、PowerBuilder、Delphi等紧密结合,使得众多的用户利用它可以很快的开发出非常专业的地理信息系统应用软件,并能够很快投入到实际商业应用中去,产生相应的社会效益和经济效益,从而更好地为客户服务,更好的进行商业决策,更有效的管理资产和运营[1]。
MapX基本功能特点:
(1)地图图层化
MapInfo是按图层组织计算机地图的。也就是说,将一幅计算机地图加工成多个层层叠加的透明层,这个透明层就称为图层。每个图层包含了整个地图的一个不同方面,如图1。例如,第一个图层包含省边界,第二个图层表示省府的符号,第三个图层由标注文本组成,把它们层层叠加就形成一幅完整的地图。
(2)数据绑定
每个地图都有一个数据集合(Datasets),通过数据集合可以将用户的属性数据与地图空间数据连接起来。数据绑定是将外部数据引入MapX的过程,外部数据可以是多种类型的数据库,数据绑定后可以在地图上以图元浏览数据或基于这些数据创建专题渲染地图[2]。
(3)MapX组件的模型结构
MapX组件的基本组成单元是Object(单个对象)和Collection(集合)。其中集合包括对象,是多个对象的组合。每种对象和集合负责处理地图某一方面的功能。由图2可以看出,位于顶层的是Map对象本身,其它均由Map对象继承。Layers、DataSets、Annotations是Map对象下面的三个重要的分支。其中Layer主要用于操作地图的图层,DataSet用于访问空间数据表,Annotation用于在地图上增加文本或者符号[3]。
2系统的实现
2.1基于MapX的开发模式特点
组件对象模型(com)是一种面向对象的编程模型,该模型提高了软件的“互用性”,使得用户的软件投入达到最小。com实际上是一种协议,它建立了一个软件模块同另一个软件模块之间的连接,并将其描述出来。当这种连接建立起来之后,两个模块之间就可以通过“接口”来进行通信。通常一个com对象支持一个或多个接口,而每个接口又支持若干个方法,com对象之间的连接都必须通过接口进行,一个接口之间的方法通常都是相互关联的。
基于MapX的应用系统开发模型实际上相当于用OLE的方式嵌入了一个更为精练、实用的MapInfo系统,具有简单、快速高效的特点,使用可视化开发语言对MapInfoProfessional不具备的功能可能进行极大地扩充,制作的应用系统的组织、结构、稳定性、对计算机资源的开销等较为合理[1]。
2.2系统主要功能
下面以阜新市地理信息系统为例介绍使用MapX和面向对象编程语言VB开发的城市地理信息系统的主要功能。系统界面如图3。
2.2.1视图管理功能
1)可以完成图层的放大、缩小、漫游基本的视图操作;
2)界面全部采用菜单形式、鼠标操作;
3)提供鹰眼图,通过对简图内取景框移动、放大、缩小操作,主视图内将显示相应的部分详细图形。下面为基本试图操作的部分代码:
OnErrorResumeNext
SelectCaseButton.Key
Case"toolbarprint"
Map1.CurrentTool=miArrowTool
Case"zoomin"
Map1.CurrentTool=miZoomInTool
Case"zoomout"
Map1.CurrentTool=miZoomOutTool
Case"pan"
Map1.CurrentTool=miPanTool
Case"alllayers"
Map1.Bounds=Map1.Layers.Bounds
EndSelect
2.2.2查询功能
1)查询定位:可根据建筑物名称、道路名称、设备名称、路线名称、小区名称等进行精确定位查询。
2)点查询:选择某一个实体的同时我们可以查询所有的内容。
3)方框查询:根据所给的范围,将给范围中的所有实体的属性都列出来。
4)距离查询:地图上任意两点间的直线距离。
5)多边形查询:给出多边形的范围来查询多边内部的所有实体的属性数据。
以下为查询定位的代码:
PrivateSubCommand1_Click()
DimFindObjAsMapXLib.Find
DimFoundFeatureAsFindFeature
'从要查询的RTU图层生成Find对象,并为这个对象设置要查询的FindDataSet、FindField属性
……
IfFoundFeature.FindRCMod10=1OrFoundFeature.FindRCMod10=2Then
Me.Hide
'关掉AutoRedraw是因为CenterX(Y)的改变就要刷新图层,AutoRedraw打开的话会造成二次刷新
Form1.Map1.AutoRedraw=False
Form1.Map1.CenterX=FoundFeature.CenterX
Form1.Map1.CenterY=FoundFeature.CenterY
Form1.Show
Else
MsgBox"不存在该RTU节点!"
EndIf
EndSub
2.2.3图层控制功能
用LayersDlg方法显示可以添加图层、删除图层、更改图层顺序和更改图层属性的对话框。
PrivateSubmenulayercontrol_Click()
Map1.Layers.LayersDlg
Map1.Refresh
EndSub
1)创建图层
创建新的临时或永久的MapInfo表图层。该方法返回Layer对象——即添加到集合的Layer对象。
dimlyraslayer
setlyr=Map1.Layers.CreateLayer(“Temporary”)
2)添加图层
使用可选的Position参数指定图层在集合中的位置。如果没有指定Position参数,图层将根据地图中的其它图层自动放置。例如,点图层将置于区域图层之上。
Map1.Layers.Add“C:\Data\Counties.tab”
3)删除图层
用Remove方法将指定的图层从地图删除。
Map1.Layers.Remove3
4)重新定位图层
用Move方法重确定图层在Layers集合中的顺序。第一个参数是原来的顺序(顶端图层为1),第二个参数是要移动到的顺序。
Map1.Layers.Move1,2
5)动态图层
Animation图层在地图图元需要经常更新(例如在实时应用时)时很有用。
最初,AnimationLayer设置为null。可以向Layer对象分派属性以使图层成为动态图层(它可以是常规图层或是用户绘制图层)。当图层被分派了AnimationLayer属性,它就会绘制在所有图层的上方,包括Annotations图层和选择结果。该图层仍然在Layers集合中的同样位置。浮动对象如图标符号仍然显示在动态图层的顶端,尽管它们因为被省略了而不必每次重新绘制。如果普通的图层被用作动态图层,其选择结果和标注会依然有效。
SetMap.Layers.AnimationLayer=Layers(3)
foreachlyrinMap.Layers
ifMap.Layers.AnimationLayer=lyrthen
...
endif
next
要关闭动态图层,给它赋予空值:
SetMap.Layers.AnimationLayer=nothing
这样使该图层变回普通图层,且其在图层列表中的位置不变。
6)专题分析功能
根据需要对不同专题数据进行分析,借助于专题地图能够很直观地分析出结果,为决策准备更加准确的数据。专题地图可以分为:范围值;直方图;饼图;等级;点密度;独立值自定义专题地图。
3结束语
MapX和面向对象语言相结合能够简单快速地在企业应用中嵌入地图化功能,增强企业应用的空间分析能力,实现企业应用的增值。MapX采用基于MapInfoProfessional的相同的地图化技术,可以实现MapInfoProfessional具有的绝大部分地图编辑和空间分析功能。而且,MapX提供了各种工具、属性和方法,实现这些功能非常容易。随着计算机网络和地理信息系统的发展,这种模式将有广泛的前景。
参考文献:
[1]李连营李清泉李汉武颜辉武王涛基于MapX的GIS应用开发[M].武汉:武汉大学出版社,2003:39-47.
[2]李欣,李华,董海鹰基于MapX的地理信息系统开发方法及应用[J].信息技术,2000.28(10):23-25.
[3]陈明赟基于MapX的组件式GIS技术的应用研究[J].工业控制计算机,2006.19(1):36-37.
[4]宋关福钟耳顺组件式地理信息系统研究与开发[J].中国图象图形学报,1998.(5).
[5]李巍基于的城市地理信息系统[J].测绘与空间地理信息,2005.28(6):68-71.
[6]黄杏元,汤勤.地理信息系统概论[M].北京:高等教育出版社,1990