基于MapX控件的电子地图软件的研究与实现

更新时间:2023-07-17 09:57:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

MapX 相关应用基础

基于MapX控件的电子地图软件的研究与实现

郎 杰,徐 虹

(桂林长海发展有限责任公司,广西 桂林 541001)

【摘 要】文章应用MapX控件实现了电子地图软件的基本功能,着重以Visual C++显示地图和对图层进行操作为例,说明利用MapX控件进行Maplnfo地理信息系统二次开发的方法,并对软件构成和实现功能进行了详细的介绍。

【关键词】MapX;Visual C++;电子地图;Maplnfo

【中图分类号】TP311 【文献标识码】A 【文章编号】1008-1151(2009)08-0047-02

“地图工具”菜单中选项具有地图的放大、缩小、居中、(一)引言

漫游、平移、点选图元、圆选图元、多边形选择等功能。同MapX是MapInfo公司提供的具有强大地图分析功能的

时用户可以输入经纬度对地图定位、进行地名查找和距离测ActiveX控件产品,它提供了一个最简单和最节约成本的方

量,方便用户使用。 法,用来将地图功能嵌入到新的和现有的应用中。它可以被

3.软件的界面 快速集成到使用面向对象语言的客户端应用程序中。通过

软件的运行界面,如图1所示。 MapX,可以按照开发人员的意愿在应用程序中加入强大的制

图功能。只需在设计阶段将MapX控件放入窗体中,并对其进

行编程,设置属性、调用方法或相应事件,即可实现数据可

视化,专题分析,地理查询,地理编码等丰富的地图信息系

统功能。MapX还可以方便地将一些有特殊意义的数据记录在 地图上,使用户更直观地了解地理信息,从而为用户的决策 提供根据。VC++是目前较为流行的可视化开发编程工具,有 较好的组件集成功能,是电子地图应用程序较为理想的开发 环境。随着计算机的飞速发展,电子地图在农林、水利、交 通、城市、资源管理与灾害监测等方面取得了广泛的应用。 下面本文将讨论以Visual C++为开发平台,用MapX开发电子

地图软件的具体方法。

(二)软件构成

1.软件的特点 图1 软件运行界面 软件采用MapX组件与面向对象可视化编程语言Visual

C++集成的二次开发模式,具有电子地图所必备的基本功能;(三)软件的实现

同时该软件还具有可扩展性,使开发者能根据实际情况添加在VC环境下集成MapX开发电子地图软件是将MapX作为其它应用功能,能够根据应用的变化而不断改进系统功能。控件插入到应用程序中,然后通过设置其属性和调用其方法,软件界面友好,使用方便,维护简单,稳定性好,通用性强。 响应其事件来实现的。系统具体的开发步骤如下: 2.软件的主要功能介绍 1.软件框架的生成 软件的主要功能包括文件、编辑、查看、工具等。并提首先打开VC新建一个基于MFC的应用程序,然后在工程中供地图工具栏,方便用户的使用。 包含MapX控件,方法为从“Project”菜单中选择“Add To (1)文件 Project”的“Files”选项,将MapX.cpp和MapX.h文件包含“文件”菜单中可以打开电子地图或者导入电子地图的到工程中,在视图类CDituView中定义一个MapX实例:CMapX 图层,也可以把用户编辑过的地图场景保存下来。MapX支持

m_ctrlMapX,并声明MapX的控件ID:#define IDC_MAP 100,与MapInfo一致的数据格式,可直接开.tab、.gst等文件。

就可以通过VC调用MapX的属性和方法来实现所需的功能。 (2)编辑

2.软件初始化 “编辑”菜单中选项可以根据用户不同需要,在图层上

进行放置符号注释、文本注释、图元标注等编辑操作。 首先在类向导中为WM_CREATE、WM_SETFOCUS和WM_SIZE消

(3)查看 息创建处理程序,以在创建视图时创建MapX控件,语句如下: “查看”菜单提供了查看属性页、查看整个图层、工具if (m_ctrlMapX.Create(NULL, WS_VISIBLE, CRect(0,0,600,600),this, 栏、比例尺等子菜单。查看整个图层,使用户可以浏览全图。IDC_MAP) == false) 工具栏、比例尺何以由用户选择加载或隐藏软件的工具栏及{ 是否在地图上显示当前比例尺。 return -1; (4)工具 }

【收稿日期】2009-04-15

【作者简介】郎杰(1982-),男,桂林长海发展责任有限公司设计师,从事装备系统软件设计;徐虹(1986-),女,桂林长海发展责任有限公司设计员,从事终端软件设计。

- 47 -

MapX 相关应用基础

然后通过WM_SIZE消息处理函数调整地图大小,使其与本功能。首先在OnCreate()函数中创建一个定制工具,将其客户区域大小保持一致;通过WM_SETFOCUS消息处理函数确ToolTypeConstants值设为miToolTypePoly,以使其在使用保只要窗口被激活,MapX就获得焦点。为了方便该软件的使时触发PolyToolUsed事件,来实现折线测距的功能,其代码用,使软件初始运行显示预设地图。可以将地图文件夹拷贝如下:

m_ctrlMapX.CreateCustomTool(CUST_DISTANCE, 到可执行文件的同目录下,然后在WM_CREATE消息处理函数

miToolTypePoly, miCrossCursor); OnCreate()中取当前应用程序路径,将该地图显示出来,并

当用户选择测距功能时,设置当前工具ID为所创建的定取消文件标题的显示,打开地图程序代码与此一致,程序代

制工具,然后调用PolyToolUsed事件处理函数码段如下:

OnPolyToolUsedMap(),在该函数中实现测距功能。 m_ctrlMapX.SetGeoSet(sa); //sa为地图文件完整路径

在函数中定义一个CMapXPoints集合pts,用其表示用户m_ctrlMapX.SetTitleText(""); // 不显示标题

在测距时所选的节点集合,然后调用MapX的Distance方法至此,已完成程序的初始化过程,程序界面如图1所示。

计算总的距离: 3.地图编辑

double dDistanceTot = 0.0; MapX提供了对象编辑工具使用户能在地图图层中创建和n = pts.GetCount(); 修改图元。有四种标准的对象创建工具:添加点、添加线、for (i=1; i<n; i++) 添加折线和添加区域。这些工具把新的图元添加到那些用 { yers.InsertionLayer 属性指定的任一图层上。实现 CMapXPoint pt1 = pts.Item(i); 画点的代码如下: CMapXPoint pt2 = pts.Item(i+1); // 计void CDituView::OnMapToolDian() 算两点间距离 { double d = m_ctrlMapX.Distance(pt1.GetX(), layer.GetStyle().SetSymbolFontColor(miColpt1.GetY(), pt2.GetX(), pt2.GetY()); orOrange); // 设置符号颜色 dDistanceTot += d; layer.GetStyle().SetSymbolCharacter(54); }

// 设置Symbol样式

layer.GetStyle().PickSymbol(); (四)结束语

// 显示Symbol样式选择对话框 本文介绍了采用面向对象程序设计语言VC++,集成MapX

m_ctrlMapX.SetCurrentTool(miAddPointTool); 控件,实现了一个小型电子地图软件的基本方法,由于在开

// 设置当前工具为画点工具 发语言平台下嵌入了ActiveX控件,可实现快速小型的组件

} 重用,代码共享,从而提高编程效率。选择开发平台与特定画线和画面功能的实现与以上代码相似,只需设置不同的地图组件是非常重要的,在具体的开发过程中,要根据经的符号样式即可。用户还能够在地图中添加文本标注,代码济条件、硬件配置及时间等因素综合考虑择优选取。本文旨

在为用户提供开发具有典型地图功能的应用软件接口程序的如下:

基本方法。如要投入应用还需要根据具体情况,在此基础上m_ctrlMapX.SetCurrentTool(miTextTool);

进行完善与扩充。 4.地图工具

电子地图软件都提供如放大缩小、居中、漫游、图元选

【参考文献】 择、定位与查询、测距等基本功能。通常采用MapX通用工具,

[1] 岳新利.张永进.孙毅.基于MapX平台的地理信息系统开发MapX中常有的系统定义工具有:放大与缩小、居中、漫游、

技术的研究[J].实验室研究与探索,2003(8). 图元的选择等工具。可以非常方便的实现上述功能。MapX控

件本身没有提供测距功能,所以需通过创建定制工具来实现

(上接第46页)据库表的内容必须作为顶级元素出现在

<before>块里。<errors>:表示被 Diffgram 处理逻辑忽略

的元素。

(四)小结

SQL Server 2000 提供了许多处理XML 数据的有用特性。

通过分析利用这些特性,可以很容易地从数据库中提取XML

文档,这对基于XML的Web系统开发是非常有益的。相信随着

对XML应用的广泛以及领域的拓展和新的应用对传统的数据

库提出新的要求,在这个领域内,还有很多问题有待我们去

研究和解决。

【参考文献】 [1] 刑春晓,张志强,李骅竞,等译.XML数据管理 纯XML和支持XML的数据库系统[M].清华大学出版社,2006. [2] 沈兆样,李劲.SQLServer2000 与XML 整合应用[M].北京:清华大学出版社,2001. [3] 飞思科技产品研发中心.SQLServer2000XML 应用开发[M].北京:电子工业出版社,2001. [4] 蔡瑞奎.用XML DiffGram对SQL数据库操作的方法[J].科技情报开发与经济,2007(21). [5] 黄芳.SQL 数据支持XML 技术[J].山东省农业管理干部学院,2006(22).

- 48 -

本文来源:https://www.bwwdw.com/article/nma1.html

Top