论文部分内容阅读
(1.东北岩土工程勘察总公司 辽宁 鞍山 114002;2.辽宁石油化工大学顺华能源学院 辽宁 抚顺 113001)
【摘 要】mapx是mapinfo公司推出的功能比较完善的activeX组件,可以与多种编程语言结合进行GIS二次开发。本文以VB为开发工具,结合阜新市电子地图,介绍了mapx在城市地理信息系统中的应用。
【关键词】城市地理信息系统(UGIS);MapX;Visual Basic 6.0;组件式地理信息系统
Application of MAPX in urban geographic information system
Zhou Ji-feng1,Liu Yan1,Jiang Zhi-wen2
(1.geotechnical engineering reconnaissance parent company in Northeast Anshan liao ning 114002;
2.shun hua college of liao ning shi hua university liao ning Fushun 113001)
【Abstract】With the quite perfect function mapx is activeX module which mapinfo Corporation promotes, it may carry on the GIS secondary developments with the many kinds of programming language. This article takes VB as the development kit, unifies Fuxin electron map, and introduces mapx in the city geographic information system application.
【Key words】Urban geographic information system;MapX;Visual basic 6.0;Comgis.
1. 引言
城市地理信息系统(Urban Geographic Information System,简称UGIS)是专业化的地理信息系统、是为城市建设城市规划、城市管理和信息服务的空间性地理信息系统.具体地讲,城市地理信息系统是一种利用计算机技术及信息工程等技术实现对城市各种数据和信息进行采集、处理、存储、管理、查询、分析、应用和维护更新的空间地理信息系统。
自1990年以来,计算机技术与网络技术迅速发展,促进了城市的数字化进程,对城市地理信息系统的需求也大大加强.城市地理信息系统以应用为导向,已进入城市管理和规划的业务应用阶段.在城市信息的查询、政府职能部门的办公自动化、土地规划、房地产管理、城市问题的分析评价与科学决策,以及数据和信息的更新等许多方面,都要借助地理信息系统的技术。
2. MapX简介
MapX是一种集MapInfo强大功能于一身的性价比非常高的ActiveX控件,MapX。
支持将地图功能添加到任何应用中,提供了一种高度可视化的方法,来显示和分析基于位置的数据,它和众多的可视化编程工具例如Visual Basic、Visual C++、PowerBuilder、Delphi等紧密结合,使得众多的用户利用它可以很快的开发出非常专业的地理信息系统应用软件,并能够很快投入到实际商业应用中去,产生相应的社会效益和经济效益,从而更好地为客户服务,更好的进行商业决策,更有效的管理资产和运营[1]。
MapX 基本功能特点:
2.1 地图图层化。
MapInfo是按图层组织计算机地图的。也就是说,将一幅计算机地图加工成多个层层叠加的透明层,这个透明层就称为图层。每个图层包含了整个地图的一个不同方面,如图1。例如,第一个图层包含省边界,第二个图层表示省府的符号,第三个图层由标注文本组成,把它们层层叠加就形成一幅完整的地图。

2.2 数据绑定。
每个地图都有一个数据集合(Datasets),通过数据集合可以将用户的属性数据与地图空间数据连接起来。数据绑定是将外部数据引入MapX的过程,外部数据可以是多种类型的数据库,数据绑定后可以在地图上以图元浏览数据或基于这些数据创建专题渲染地图[2]。
2.3 MapX组件的模型结构。
MapX组件的基本组成单元是Object(单个对象)和Collection(集合)。其中集合包括对象,是多个对象的组合。每种对象和集合负责处理地图某一方面的功能。由图2可以看出,位于顶层的是Map对象本身,其它均由Map对象继承。Layers、DataSets、Annotations是Map对象下面的三个重要的分支。其中Layer主要用于操作地图的图层,DataSet用于访问空间数据表,Annotation用于在地图上增加文本或者符号[3]。

3. 系统的实现
3.1 基于MapX的开发模式特点。
组件对象模型(com)是一种面向对象的编程模型,该模型提高了软件的“互用性”,使得用户的软件投入达到最小。com实际上是一种协议,它建立了一个软件模块同另一个软件模块之间的连接,并将其描述出来。当这种连接建立起来之后,两个模块之间就可以通过“接口”来进行通信。通常一个com对象支持一个或多个接口,而每个接口又支持若干个方法,com对象之间的连接都必须通过接口进行,一个接口之间的方法通常都是相互关联的。
基于MapX的应用系统开发模型实际上相当于用OLE的方式嵌入了一个更为精练、实用的MapInfo系统,具有简单、快速高效的特点,使用可视化开发语言对MapInfo Professional不具备的功能可能进行极大地扩充,制作的应用系统的组织、结构、稳定性、对计算机资源的开销等较为合理[1]。
3.2 系统主要功能。
下面以阜新市地理信息系统为例介绍使用MapX和面向对象编程语言VB开发的城市地理信息系统的主要功能。系统界面如图3。

3.2.1 视图管理功能
(1)可以完成图层的放大、缩小、漫游基本的视图操作;
(2)界面全部采用菜单形式、鼠标操作;
(3)提供鹰眼图,通过对简图内取景框移动、放大、缩小操作,主视图内将显示相应的部分详细图形。下面为基本试图操作的部分代码:
On Error Resume Next
Select Case Button.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
End Select
3.2.2 查询功能
(1) 查询定位:可根据建筑物名称、道路名称、设备名称、路线名称、小区名称等进行精确定位查询。
(2) 点查询:选择某一个实体的同时我们可以查询所有的内容。
(3) 方框查询:根据所给的范围,将给范围中的所有实体的属性都列出来。
(4) 距离查询:地图上任意两点间的直线距离。
(5) 多边形查询:给出多边形的范围来查询多边内部的所有实体的属性数据。
以下为查询定位的代码:
Private Sub Command1_Click()
Dim FindObj As MapXLib.Find
Dim FoundFeature As FindFeature
'从要查询的RTU图层生成Find对象,并为这个对象设置要查询的FindDataSet、FindField属性
……
If FoundFeature.FindRC Mod 10 = 1 Or FoundFeature.FindRC Mod 10 = 2 Then
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节点!”
End If
End Sub
3.2.3 图层控制功能。
用LayersDlg 方法显示可以添加图层、删除图层、更改图层顺序和更改图层属性的对话框。
Private Sub menulayercontrol_Click()
Map1.Layers.LayersDlg
Map1.Refresh
End Sub
(1) 创建图层。
创建新的临时或永久的 MapInfo 表图层。该方法返回 Layer 对象——即添加到集合的 Layer 对象。
dim lyr as layer
set lyr = Map1.Layers.CreateLayer (“Temporary”)
(2) 添加图层。
使用可选的 Position 参数指定图层在集合中的位置。如果没有指定 Position 参数,图层将根据地图中的其它图层自动放置。例如,点图层将置于区域图层之上。
Map1.Layers.Add “C:\ Data\ Counties.tab”
(3) 删除图层。
用Remove 方法将指定的图层从地图删除。
Map1.Layers.Remove 3
(4) 重新定位图层。
用Move 方法重确定图层在 Layers 集合中的顺序。第一个参数是原来的顺序(顶端图层为1),第二个参数是要移动到的顺序。
Map1.Layers.Move 1,2
(5) 动态图层。
Animation 图层在地图图元需要经常更新(例如在实时应用时)时很有用。
最初,AnimationLayer 设置为 null。可以向 Layer 对象分派属性以使图层成为动态图层(它可以是常规图层或是用户绘制图层)。当图层被分派了 AnimationLayer 属性,它就会绘制在所有图层的上方,包括 Annotations 图层和选择结果。该图层仍然在 Layers 集合中的同样位置。浮动对象如图标符号仍然显示在动态图层的顶端,尽管它们因为被省略了而不必每次重新绘制。如果普通的图层被用作动态图层,其选择结果和标注会依然有效。
Set Map.Layers.AnimationLayer = Layers(3)
for each lyr in Map.Layers
if Map.Layers.AnimationLayer = lyr then
...
end if
next
要关闭动态图层,给它赋予空值:
Set Map.Layers.AnimationLayer = nothing
这样使该图层变回普通图层,且其在图层列表中的位置不变。
(6) 专题分析功能。
根据需要对不同专题数据进行分析,借助于专题地图能够很直观地分析出结果,为决策准备更加准确的数据。专题地图可以分为:范围值;直方图;饼图;等级;点密度;独立值自定义专题地图。
4. 结束语
MapX和面向对象语言相结合能够简单快速地在企业应用中嵌入地图化功能,增强企业应用的空间分析能力,实现企业应用的增值。MapX采用基于MapInfo Professional的相同的地图化技术,可以实现MapInfo Professional具有的绝大部分地图编辑和空间分析功能。而且,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
【摘 要】mapx是mapinfo公司推出的功能比较完善的activeX组件,可以与多种编程语言结合进行GIS二次开发。本文以VB为开发工具,结合阜新市电子地图,介绍了mapx在城市地理信息系统中的应用。
【关键词】城市地理信息系统(UGIS);MapX;Visual Basic 6.0;组件式地理信息系统
Application of MAPX in urban geographic information system
Zhou Ji-feng1,Liu Yan1,Jiang Zhi-wen2
(1.geotechnical engineering reconnaissance parent company in Northeast Anshan liao ning 114002;
2.shun hua college of liao ning shi hua university liao ning Fushun 113001)
【Abstract】With the quite perfect function mapx is activeX module which mapinfo Corporation promotes, it may carry on the GIS secondary developments with the many kinds of programming language. This article takes VB as the development kit, unifies Fuxin electron map, and introduces mapx in the city geographic information system application.
【Key words】Urban geographic information system;MapX;Visual basic 6.0;Comgis.
1. 引言
城市地理信息系统(Urban Geographic Information System,简称UGIS)是专业化的地理信息系统、是为城市建设城市规划、城市管理和信息服务的空间性地理信息系统.具体地讲,城市地理信息系统是一种利用计算机技术及信息工程等技术实现对城市各种数据和信息进行采集、处理、存储、管理、查询、分析、应用和维护更新的空间地理信息系统。
自1990年以来,计算机技术与网络技术迅速发展,促进了城市的数字化进程,对城市地理信息系统的需求也大大加强.城市地理信息系统以应用为导向,已进入城市管理和规划的业务应用阶段.在城市信息的查询、政府职能部门的办公自动化、土地规划、房地产管理、城市问题的分析评价与科学决策,以及数据和信息的更新等许多方面,都要借助地理信息系统的技术。
2. MapX简介
MapX是一种集MapInfo强大功能于一身的性价比非常高的ActiveX控件,MapX。
支持将地图功能添加到任何应用中,提供了一种高度可视化的方法,来显示和分析基于位置的数据,它和众多的可视化编程工具例如Visual Basic、Visual C++、PowerBuilder、Delphi等紧密结合,使得众多的用户利用它可以很快的开发出非常专业的地理信息系统应用软件,并能够很快投入到实际商业应用中去,产生相应的社会效益和经济效益,从而更好地为客户服务,更好的进行商业决策,更有效的管理资产和运营[1]。
MapX 基本功能特点:
2.1 地图图层化。
MapInfo是按图层组织计算机地图的。也就是说,将一幅计算机地图加工成多个层层叠加的透明层,这个透明层就称为图层。每个图层包含了整个地图的一个不同方面,如图1。例如,第一个图层包含省边界,第二个图层表示省府的符号,第三个图层由标注文本组成,把它们层层叠加就形成一幅完整的地图。

2.2 数据绑定。
每个地图都有一个数据集合(Datasets),通过数据集合可以将用户的属性数据与地图空间数据连接起来。数据绑定是将外部数据引入MapX的过程,外部数据可以是多种类型的数据库,数据绑定后可以在地图上以图元浏览数据或基于这些数据创建专题渲染地图[2]。
2.3 MapX组件的模型结构。
MapX组件的基本组成单元是Object(单个对象)和Collection(集合)。其中集合包括对象,是多个对象的组合。每种对象和集合负责处理地图某一方面的功能。由图2可以看出,位于顶层的是Map对象本身,其它均由Map对象继承。Layers、DataSets、Annotations是Map对象下面的三个重要的分支。其中Layer主要用于操作地图的图层,DataSet用于访问空间数据表,Annotation用于在地图上增加文本或者符号[3]。

3. 系统的实现
3.1 基于MapX的开发模式特点。
组件对象模型(com)是一种面向对象的编程模型,该模型提高了软件的“互用性”,使得用户的软件投入达到最小。com实际上是一种协议,它建立了一个软件模块同另一个软件模块之间的连接,并将其描述出来。当这种连接建立起来之后,两个模块之间就可以通过“接口”来进行通信。通常一个com对象支持一个或多个接口,而每个接口又支持若干个方法,com对象之间的连接都必须通过接口进行,一个接口之间的方法通常都是相互关联的。
基于MapX的应用系统开发模型实际上相当于用OLE的方式嵌入了一个更为精练、实用的MapInfo系统,具有简单、快速高效的特点,使用可视化开发语言对MapInfo Professional不具备的功能可能进行极大地扩充,制作的应用系统的组织、结构、稳定性、对计算机资源的开销等较为合理[1]。
3.2 系统主要功能。
下面以阜新市地理信息系统为例介绍使用MapX和面向对象编程语言VB开发的城市地理信息系统的主要功能。系统界面如图3。

3.2.1 视图管理功能
(1)可以完成图层的放大、缩小、漫游基本的视图操作;
(2)界面全部采用菜单形式、鼠标操作;
(3)提供鹰眼图,通过对简图内取景框移动、放大、缩小操作,主视图内将显示相应的部分详细图形。下面为基本试图操作的部分代码:
On Error Resume Next
Select Case Button.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
End Select
3.2.2 查询功能
(1) 查询定位:可根据建筑物名称、道路名称、设备名称、路线名称、小区名称等进行精确定位查询。
(2) 点查询:选择某一个实体的同时我们可以查询所有的内容。
(3) 方框查询:根据所给的范围,将给范围中的所有实体的属性都列出来。
(4) 距离查询:地图上任意两点间的直线距离。
(5) 多边形查询:给出多边形的范围来查询多边内部的所有实体的属性数据。
以下为查询定位的代码:
Private Sub Command1_Click()
Dim FindObj As MapXLib.Find
Dim FoundFeature As FindFeature
'从要查询的RTU图层生成Find对象,并为这个对象设置要查询的FindDataSet、FindField属性
……
If FoundFeature.FindRC Mod 10 = 1 Or FoundFeature.FindRC Mod 10 = 2 Then
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节点!”
End If
End Sub
3.2.3 图层控制功能。
用LayersDlg 方法显示可以添加图层、删除图层、更改图层顺序和更改图层属性的对话框。
Private Sub menulayercontrol_Click()
Map1.Layers.LayersDlg
Map1.Refresh
End Sub
(1) 创建图层。
创建新的临时或永久的 MapInfo 表图层。该方法返回 Layer 对象——即添加到集合的 Layer 对象。
dim lyr as layer
set lyr = Map1.Layers.CreateLayer (“Temporary”)
(2) 添加图层。
使用可选的 Position 参数指定图层在集合中的位置。如果没有指定 Position 参数,图层将根据地图中的其它图层自动放置。例如,点图层将置于区域图层之上。
Map1.Layers.Add “C:\ Data\ Counties.tab”
(3) 删除图层。
用Remove 方法将指定的图层从地图删除。
Map1.Layers.Remove 3
(4) 重新定位图层。
用Move 方法重确定图层在 Layers 集合中的顺序。第一个参数是原来的顺序(顶端图层为1),第二个参数是要移动到的顺序。
Map1.Layers.Move 1,2
(5) 动态图层。
Animation 图层在地图图元需要经常更新(例如在实时应用时)时很有用。
最初,AnimationLayer 设置为 null。可以向 Layer 对象分派属性以使图层成为动态图层(它可以是常规图层或是用户绘制图层)。当图层被分派了 AnimationLayer 属性,它就会绘制在所有图层的上方,包括 Annotations 图层和选择结果。该图层仍然在 Layers 集合中的同样位置。浮动对象如图标符号仍然显示在动态图层的顶端,尽管它们因为被省略了而不必每次重新绘制。如果普通的图层被用作动态图层,其选择结果和标注会依然有效。
Set Map.Layers.AnimationLayer = Layers(3)
for each lyr in Map.Layers
if Map.Layers.AnimationLayer = lyr then
...
end if
next
要关闭动态图层,给它赋予空值:
Set Map.Layers.AnimationLayer = nothing
这样使该图层变回普通图层,且其在图层列表中的位置不变。
(6) 专题分析功能。
根据需要对不同专题数据进行分析,借助于专题地图能够很直观地分析出结果,为决策准备更加准确的数据。专题地图可以分为:范围值;直方图;饼图;等级;点密度;独立值自定义专题地图。
4. 结束语
MapX和面向对象语言相结合能够简单快速地在企业应用中嵌入地图化功能,增强企业应用的空间分析能力,实现企业应用的增值。MapX采用基于MapInfo Professional的相同的地图化技术,可以实现MapInfo Professional具有的绝大部分地图编辑和空间分析功能。而且,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