logo资料库

论文研究-基于MapX控件的GIS应用软件研究与开发 .pdf

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
http://www.paper.edu.cn 基于 MapX 控件的 GIS 应用软件研究与开发 于淼 周娅 (大连交通大学电气信息分院 辽宁 116028) 摘要:本文应用地理信息 MapX 控件实现了 GIS 的基本功能,着重以 Visual C++显示地图和 对图层进行操作为例,说明了利用 MapX 控件进行 MapInfo 地理信息系统二次开发 的方法,这是进一步利用 MapX 控件开发 GIS 应用软件的基础。 关键词:MapX, Visual C++,GIS, MapInfo 二次开发 Research and development of GIS application software by MapX control Yu Miao ZhouYa (School of Electronics and Information,DaLian JiaoTong University,LiaoNing 116028) Abstract:This paper implements the basic function of GIS by applying MapX control. Emphasizing on display and lay-based operation by using Visual C++,we illuminate the way to do MapInfo secondary development with MapX control,which is the foundation for further development of GIS application software by using MapX control. Keywords: MapX, Visual C++,GIS, MapInfo secondary development 0 引言 地理信息系统(GIS)是一门利用计算机技术管理空间地理数据及与之相关联的关系数据 的技术,它在计算机软件和硬件的支持下,以一定的格式输入、存储、检索、显示和综合分 析应用的技术系统。经过几十年的发展,其应用已深入到市政管理、土地利用、环境监测、 商业决策等众多领域。但GIS也面临着自身的问题,比如数据结构复杂、功能体系庞大,不仅 在构建单独的GIS应用系统时需要投入大量人力、物力和财力,而且很难与其它非GIS系统集 成,很大程度限制了GIS的发展与应用。如今计算机软件技术的发展,尤其是软件领域中组件 技术的兴起,为GIS的发展带来了生机。组件式GIS软件开发是目前较为流行、高效和快速的 开发模式,它既沿用了专业GIS产品的强大制图功能,又能根据需要灵活实现各种管理功能。 它开发周期短,成本低,可以脱离大型商业GIS软件平台独立运行,并且对开发者的GIS专业 背景要求不高。因此,组件式为越来越多的GIS软件开发者所采用 ]1[ 。 目前比较常用的GIS控件有MapInfo公司的MapX,ESRI公司的MapObject,Blue Marble Geographics公司的Geo-View,Visual Component公司的GeoPoint以及Intergraph公司的 Geomedia等等。其中,MapX可以说是一个性价比较好,功能较强的OCX控件。它为开发者提 供了一个快速、易用、功能强大的地图化组件。在VC++、VB、Delphi等可视化开发环境中, 只需在设计阶段将MapX控件插入工程中,并对其进行编程、设置属性或调用方法或相应事件, 即可实现数据可视化、专题分析、地理查询、地理编码等丰富的地图信息系统功能。 VC++是目前较为流行的可视化开发编程工具,有较好的组件集成功能,是GIS应用程序 较为理想的开发环境。本文将讨论以VC++为开发平台,用MapX开发地理信息系统的具体方法。 1 在VC平台上用MapX组件开发出的GIS系统的特点和主要功能 首先介绍一下MapX的主要功能。MapX定义了一个类体系,可以有效地组织图形元素、图 层、属性数据等对象,主要有以下功能 : ]2[ 1)显示MapInfo格式的地图。MapX支持与MapInfo一致的数据格式,可直接开 .tab、 .gst 等文件。 2)生成和编辑地图对象。MapX中封装了大量的绘图工具,可生成点、线、面、注记等要
http://www.paper.edu.cn 素,它内部的FeatureFactory对象,为要素符号化提供了方法,并允许用户自定义符号。 3)供对地图进行放大、缩小、漫游和要素选取等操作。在MapX中,应用Tool Used事件 并设定相关参数,便可实现对地图的上述操作。 4)图层控制。MapX允许用户将要素分层管理,真正创建要素的物理层。 5)建立属性表。MapX提供了实现数据库中的数据与MapInfo地图的关系连接方法,对几 何数据赋予相应的属性,以满足信息查询的需要。用户可通过图上选取或SQL语句对要素的 属性进行访问。 另外本系统具有GIS所必备的基本功能,同时该系统还具有可扩展性,开发者还可以根 据具体需要添加其他功能,界面友好,使用方便,维护简单,稳定性好,通用性强。该系统 的主要功能如下: 1)文件管理:“文件管理”菜单中的“导人图层”选项,可以很方便地添加图层,使 用户能根据自己的需要添加所需的地图。 2)编辑:“编辑”菜单中诸选项可以根据用户不同需要,在可编辑图层上进行放置符号 注释、放置文本注释、图元标注等编辑操作。 3)地图工具: “地图工具”菜单中诸选项具有地图的放大、缩小、漫游、平移、点选、 半径选择、矩形选择、多边形选择等功能.同时,提供了地图工具栏,使用户的操作更加方 便。 4)视图管理: “视图管理”菜单提供了查看属性页、图层控制、地图工具栏等子菜单.图 层控制使用户能根据自己的需要来设置图层的属性;查看整个图层,使用户可以浏览全图.地 图工具栏是一个乒乓键,能交替显示地图工具栏。 5)地图及数据的维护。为r适应不断发生的变化,地图及数据的维护能使系统得到充分 的利用。此功能可以对空间数据进行修改、增删、调整等操作。 ]3[ 2 在VC平台上用MapX组件二次开发出GIS系统的部分实现方法 MapX是一个基于ActiveX (OCX)技术的可编程控件。他使用与MapInfo一致的地图数据格 式,并实现了大多数MapInfo的功能。MapX由一系列Object(对象)和Collection(对象集合) 组成.Map是最基本的对象,每个Map由Layer (层)、Dataset(数据集)和Annotation(标注) 这 3个对象及对象集合(Layers,Datasets, Annot- ations) 来定义,其中Layer用于操作地图 的图层,Dataset用于访问空间对象的属性数据,Annotation用于在地图上添加文本、符号 等标注.掌握上述3个主要对象的特征以及它们下一级对象的特征,就能很好地利用MapX进 行二次开发了。 在VC中.每个MapX对象是一个C++类,这些类在MapX.h文件中定义,在Mapx.cpp文件 中实现。 ]4[ 每个MapX对象的属性与方法是通过C++类的成员函数来实现的,从下面例子可以 看出在VC中创建MapX对象并进行增加图层、删除图层、删除所有图层操作的具体方法。 首先要将MapX.h与Mapx.cpp两个文件加入工程中,这样就相当于在工程中定义并实现 了MapX对象的类。然后显示地图,显示地图是在View中,故在CMapxView 类中WM_CREATE和 WM_SIZE的消息映射函数中进行创建与调整地图大小的操作。 ]5[ 也就是说在CMapxView 中的WM—CREATE的消息映射函数中,增加: if(!m_ctrlMapX.Create(NULL.WS_VISIBLE.CRect(O,0,1,1),this,0)) return -1; 这样就在CMapxView 中创建了地图。 在CmapxView中的WM_SIZE的消息映射函数中,增加:
http://www.paper.edu.cn if(cx!=o&&cy!=O) m_ctrlMapX.MoveWindow(O,0,cx,cy,TRUE): 这样就可以实现视图大小改变时,地图也随之改变大小,使他充满客户区。 MapX是按图层组织地图的.图层对象代表矢量地图数据,他包含了一组地理特征。获得图层 集合对象是用MapX对象的GetLayers成员函数。增加图层,是用图层集合对象的Add成员函数。 删除图层是用图层集合对象的Remove成员函数,删除所有图层是用图层集合对象的RemoveA- ll成员函数来实现的。下面是增加图层的源代码: CFileDialog dlg(true,”*.tab” ,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,”MapInfo Tables(*.tab)| *.tab ”,NULL); dlg.DoModal(); m—ctrlMapX.GetLayers().Add(dlg.GetFileName()); 3 结语 在地理信息系统应用软件的开发中,采用组件GIS软件开发是必然的趋势。这主要是由 于在开发语言平台下嵌入ActjveX控件,可实现快速小型的组件重用,代码共享,从而提高 编程效率。因此,选择开发平台与特定的GIS组件是非常重要的。在具体的开发过程中,要 根据经济条件、硬件配置及时间等因素综合考虑择优选取。本文采用面向对象程序设计语言 VC++,集成MapX控件,举例说明了一个小型地理信息系统应用软件的基本方法,旨在为用户 提供开发具有典型GIS功能应用软件接口程序的基本方法。如要投入应用还需要根据具体情 况,在此基础上进行完善与扩充。 参考文献 [1]吴信才.地理信息系统原理与方法[M].北京:电子工业出版社,2002.218-223. [2]李楠,顾兆军.应用MapX控件控件开发地理信息系统[J].中国民航学院学报,2001,(12): 41-44. [3]刘小勇,盛建东.基十GIS技术的信息系统设计[J].新疆农业大学学报,2001,24(4): 54-58. [4]Jon Bates,Tim Tompkins.实用Visual C++ 6.0教程[M].北京:清华大学出版社, 2000.136-146,184-203. [5]Troy.NY.MapX developer’S Guide,Maplnfo Corporation.
分享到:
收藏