03.MapGIS VirtualEarth二次开发技术篇
MapGIS常见问题之二次开发相关问题

MapGIS常见问题中地数码集团平台二次开发支持部本期常见问题主要由MapGIS开发平台C/S开发问题组成,涉及部分B/S开发问题。
1、基于MapGIS开发平台,如何通过代码实现修改线的图形参数操作,包括可变颜色、可变笔宽、线型等参数?答:可按照如下步骤实现:(1)在MapGIS软件中若需查看线、区等要素的图形参数,需开启还原显示功能,可通过编写代码手动开启还原显示功能。
(2)在还原显示模式下,线是通过MapGIS符号库的线型来显示的,而线型符号则由几部分构成,而每一部分若采取固定颜色或者固定笔宽的模式,则无法看到修改后的线型参数。
只有在某一部分采取可变颜色或者可变笔宽的情况下,对图形信息中的相关项的修改才会有效果,因此可以通过修改符号库的相关线型的颜色模式或笔宽模式来达到效果。
(3)一个线型可以通过线型号+辅助线型号来唯一确定,以COM组件式开发C#语言为例的线属性如下:mcLinInfo. libID:辅助线型号mcLinInfo. linstyID:线型号(4)基于COM组件式开发C#语言的还原显示实现代码如下:mcLinInfolineInfo = new mcLinInfo();//线信息mcGeoVarLinevarLine = new mcGeoVarLine();//折线对象//点对象mcDot dot1 = new mcDot();mcDot dot2 = new mcDot();//点对象赋值dot1.x = 50;dot1.y = 50;dot2.x = 200;dot2.y = 200;//添加到折线对象varLine.Append2D(dot1);varLine.Append2D(dot2);//设置线参数lineInfo.linstyID = 21;lineInfo.libID = 4;lineInfo.xscale = 20;lineInfo.yscale = 20;//绘图IXDisplay display = this.axMapXView1.Display;//绘图对象display.DispLine(ptGeom as IGeoLine, lineInfo as mcLinInfo, 6);//根据线参数显示对应的线display.DisplayOption.SymbolShow = true;//开启还原显示功能display.DispLine(varLine, lineInfo as mcLinInfo, 0);//重绘制线2、在查看地图的过程中,常要通过不同比率显示地图,如何通过代码实现按照一定的显示比率显示地图的功能?答:步骤如下:(1)用户常常将显示比率与比例尺相混淆,比例尺一般应用于地图数据打印输出时,表示图上距离与实际距离的比值。
利用VB和MAPGIS基本控件做二次开发

安装MAPGIS SDK软件到MAPGIS安装路径下。
添加声明模块vbW60_Area.bas,该模块包含MAPGIS基本参数及结构定义、消息与版本定义等。添加的方法是:在VB程序中点取"Project"菜单下的"Add Module",添加vbW60_Area.bas文件,该文件在MAPGIS安装程序的Basic子目录下。
主界面上还要放置图形编辑和显示控件:EditView.ocx。首先要将该控件添加到控件面板中,方法是:在VB程序中点取"Project"菜单下的“Components”,将EditView ActiveX Control Module控件打钩,如下图所示。
然后按照VB的常规编程设计方法使用该控件,在FORM窗体上划出该控件的大小和位置。设置各个控件和菜单的属性等参数。
设置可执行文件输出目录。生成的可执行文件必须放在与MAPGIS安装目录的动态库和控件相同的目录中才能执行。设置的方法是:点取"File"菜单下的"Make *.exe..",选择MAPGIS动态连接库所在的目录,如PROGRAM。
第二步:设计功能界面。
本文中演示的基本设计功能描述如下。程序分为四个主要的菜单:文件、编辑、窗口和帮助,每个菜单有分别有相应的功能。
End Sub
'弧段转线
Private Sub ArcToLne_Click()
ev1.ArcToLine
End Sub
'清除窗口并及时更新显示
Private Sub Clear_Click()
ev1.CleanWindow
ev1.RestoreWindow
mapgis二次开发基础知识

mapgis二次开发基础知识MAPGIS二次开发基础知识一、手动注册组件与注销组件COM以及客户应用程序所需的、用来定位组件及对组件进行实例化的信息存储在Windows的注册表(Registry)里。
因此,在使用组件之前要对组件进行注册,只有成功注册才能引用该组件,其具体步骤为:1.将包容组件的DLL文件放入MAPGIS PROGRAM 目录下,假设物理路径为:D:\mapgis65\program\ MapGisBasCom1.dll2.运行注册表程序注册组件 Windows开始菜单-〉运行:regsvr32 D:\mapgis65\program\MapGisBasCom1.dll 注册成功与否将有对话框弹出。
3.注销该组件方法为:regsvr32 /u D:\mapgis65\program\MapGisBasCom1.dll二、Visual Basic中嵌入对象类型库为了使Visual Basic能够访问MAPGIS对象定义,应该在Visuai Basic项目或模块中嵌入MAPGIS对象类型库。
如果想把一个Visual Basic对象声明为MAPGIS对象类型,要求嵌入MAPGIS对象类型库, 如果想把一个Visual Basic对象声明为一般Object类型,就不必嵌入MAPGIS对象。
为了在项目中嵌入MAPGIS对象类型库,通常执行这些步骤:从Project(工程)菜单, 选择References, References对话框出现, 选中复选框嵌入MapGisBasCom1 Type Library文件。
这要求VisualBasic环境或代码模块编辑器是活动的,正在运行。
三、使用MAPGIS对象可以使用Visual Basic编写使用MAPGIS对象的程序。
在Visual Basic程序中使用MAPGIS 对象所要求的步骤是:1.嵌入MAPGIS对象类型库。
2.建立一个MAPGIS对象。
基于MAPGIS组件的二次开发

收稿日期:2001-11-16基金项目:国家“九五”重中之重科技攻关项目“M APGIS 软件的开发与商品化”(N o.96-B02-03-05).基于MAPGIS 组件的二次开发周顺平,王海龙(中国地质大学信息工程学院,湖北武汉430074)摘要:组件式GIS 是GIS 与组件技术相结合的新一代地理信息系统.介绍了地理信息系统和组件式GIS 的基本概念,并简单介绍了组件式GIS 的基本优点及M APGIS 组件开发平台的组成和功能划分.阐述了使用M APGIS 组件进行GIS 应用软件二次开发的一般方法和步骤,以及在VB 中使用M APGIS 组件对象的基本步骤.并以VB 为开发环境,结合M APGIS 数据管理组件、图形显示组件、图形编辑控件、属性编辑控件等,给出了一个具有图形显示、地理属性数据编辑等功能的实例程序,演示了如何使用M APGIS 组件进行GIS 应用软件的二次开发.关键词:地理信息系统;组件;组件式地理信息系统;M APGIS;GIS 二次开发.中图分类号:TP311.52 文献标识码:A 文章编号:1000-2383(2002)03-0289-04作者简介:周顺平(1967-),男,副教授,1999年毕业于中国地质大学信息工程学院,获硕士学位,现主要从事GIS 基础软件和数据库方面的科研及应用开发工作.E 2mail :zhouspin @ 地理信息系统(geographic information system ,简称GIS )是在计算机软硬件支持下,以采集、存储、管理、检索、分析和描述空间物体的地理分布数据及与之相关的属性,并回答用户问题等为主要任务的技术系统[1,2].组件式GIS (com ponent GIS )指基于组件对象平台,以组件的形式提供基本功能的GIS ,是GIS 与组件技术相结合的新一代地理信息系统[3].组件式GIS 充分利用了组件的可重用特性,使用GIS 组件可以很大程度地提高GIS 应用软件的开发效率和质量.MAPGIS 地理信息系统是国产的GIS 基础软件平台,它提供了丰富的二次开发手段,包括API 函数库、C ++类和组件开发库[4].1 MAPGIS 组件开发平台MAPGIS 组件开发平台以一系列C OM 组件和ActiveX 控件的形式提供了GIS 基本功能:包括数据管理组件、图形显示组件、图层管理组件、地图管理组件、图例管理组件、图像处理组件、图库管理组件、图1 M APGIS 组件(控件)对象关系Fig.1Relation of M APGIS com ponent (ActiveX control )ob 2jects图形编辑控件、工程管理控件、属性编辑控件、属性结构编辑控件等.这些组件(控件)对象关系如图1所示.数据管理组件是整个系统的基础和核心,主要进行空间数据和属性数据的存取和管理,并提供基本的数据交互功能.数据管理组件定义了MAPGIS的基本数据类型和数据结构,封装了对点、线、区、网、表格等工作区的基本操作[5].GIS 通用功能组件(控件)集合提供了MAPGIS 平台的通用处理功能.通用功能组件基于数据管理组件构造而成,它们具有面向通用GIS 功能:图形显示第27卷第3期地球科学———中国地质大学学报V ol .27 N o .32002年5月Earth Science —Journal of China University of G eosciencesM ay 2002对象MAPGIS DC封装了MAPGIS的基本显示操作;图层对象Layer封装了点、线、区、网文件的数据管理功能;地图对象Map封装了对MAPGIS基本图形的编辑/输出操作和对多个图层的管理功能;图例对象Legend封装了点、线、区图例元素的管理和操作功能,并提供了管理图例文件存储和图例元素的功能;MSI对象封装了对图像工作区的操作和显示,并提供了矢量数据和栅格数据的相互转换功能;DBS 对象封装了操作和显示图库工作区的方法.同时, MAPGIS组件开发平台还提供了几个可视化控件: EditView控件对象包括点编辑、线编辑、区编辑、数字化、矢量化及其他操作功能;MapT reeCtrl控件对象封装了与Map对象的交互操作功能;G isAttEdit控件对象主要用来浏览和编辑MAPGIS属性数据; AttStruEdit控件对象主要用来浏览和编辑MAPGIS 属性结构.MAPGIS组件包含在一系列WI NDOWS动态连接库文件里,ActiveX控件则包含在一系列.ocx文件中.表1是WI NDOWS文件与MAPGIS组件的对应关系.表1 WIN DOWS文件与MAPGIS组件对应关系T able1C orrespondence of WI NDOWS files and M APGIS com po2 nentsWINDOWS文件M APGIS组件(控件)M ap G isBasC om1.dll数据管理组件M ap G isDspC om.dll图形显示组件M ap G is LayerC om.dll图层管理组件M ap G isM apC om.dll地图管理组件、图例管理组件M ap G isDBSC om.dll图库管理组件M ap G isRasterC om.dll图像分析管理组件EditView.ocx图形编辑控件M apT ree.ocx工程管理控件G isAttEdit.ocx属性编辑控件AttS truEdit.ocx属性结构编辑控件2 基于MAPGIS组件的二次开发MAPGIS组件不依赖于某一种开发语言,它可以直接嵌入到通用的开发环境(如VIS UA L BASIC或DE LPHI)中实现GIS功能.通过调用MAPGIS组件的基本功能,并结合其他专业模型和专业模型分析控件,可以快速地开发GIS应用程序,这就大大降低了GIS应用系统的开发难度与开发成本.利用MAPGIS组件开发平台进行GIS应用程序的开发分以下几个步骤进行:(1)选择应用系统的开图2 M APGIS应用程序层次结构Fig.2Architecture of M APGIS application发工具,如VB;(2)将使用到的MAPGIS组件引用到应用程序中;(3)调用MAPGIS组件的属性和方法完成GIS基本功能;(4)开发应用系统专用的功能.基于MAPGIS组件开发平台的GIS应用程序结构如图2所示.3 VB开发示例MAPGIS组件的使用方法与一般组件的使用方法完全相同,在使用MAPGIS组件之前,必须先注册.运行MAPGIS二次开发包中的setup.exe程序,可以自动安装并注册组件;或进行手工注册:将要注册的组件对应的文件(如数据管理组件对应的Map G is2 BasC om1.dll文件)拷贝到MAPGIS的program目录下,假设路径为:“D:\mapgis61\program\”,选择WI NDOWS开始菜单的运行,在命令行中输入:“regsvr32D:\mapgis61\program\map G isBasC om1. dll”,进行组件的注册[6].在VIS UA L BASIC中使用MAPGIS组件对象的步骤是:(1)嵌入MAPGIS对象类型库;(2)建立MAPGIS对象;(3)调用MAPGIS对象和其他VB对象的方法和属性完成GIS应用软件功能;(4)释放MAPGIS对象.下面的例子演示了如何使用MAPGIS 组件(控件)进行GIS应用软件的开发.首先,新建一个VB工程(标准EXE类型),“引用”程序中用到的组件和控件.为了使VIS UA L BA2 SIC能够访问MAPGIS组件对象,需要在VIS UA L BA2 SIC项目中嵌入MAPGIS对象类型库.执行下列步骤:从Project(工程)菜单中选择References(引用), References对话框出现后,选中所需的类型库: Map G isBasC om11.0T ype Library和Map G isDspC om1. 0T ype Library.再从Project(工程)菜单中选择C om po2 nents(组件),C om ponents对话框出现后,选中所需的682地球科学———中国地质大学学报第27卷控件:EditView ActiveX C ontrol M odule和G isAttEdit ActiveX C ontrol m odule.然后,将图形编辑控件、属性编辑控件添加到一个F orm中,并将控件的名称分别改为EditView和G isAttEdit,并定义在此F orm中使用到的变量:Public linAi As LinArea ’线工作区对象Public isBrowAtt As Integer. ’浏览编辑属性标志接着,添加LoadLinFile函数和BrowOrEditAtt函数,并在“装入线文件”和“浏览、编辑线属性”的菜单响应中调用这2个函数.Load LinFile函数,调用线工作区对象LinArea的Load方法,装载一个线文件到工作区中,并设置图形显示范围;BrowOrEditAtt函数,则调用G isAttEdit控件的属性和方法来编辑工作区文件的属性值:Public Function Load LinFile()’装入线文件I f N ot linAi Is N othing ThenSet linAi=N othing ’释放原工作区End I fSet linAi=New LinAreaI f linAi.Load Then ’装入新文件EditView.SetWinMapRange-linAi.rect.xmin,linAi.rect.ymin,-linAi.rect.xmax,linAi.rect.ymax ’设置图形显示范围EditView.RestoreWindow ’复位窗口End I fEnd FunctionPublic Function BrowOrEditAtt(ByVal Editable As Integer)’浏览/编辑属性I f N ot linAi Is N othing ThenG isAttEdit.AttachArea linAi,gis LI N ’添加要编辑的工作区到控件中G isAttEdit.EditEnable=Editable ’浏览或编辑属性标志isBrowAtt=1F orm-Resize ’调整窗口及控件的位置和大小End I fBrowOrEditAtt=1End Function再接着,触发EditView控件的MyDraw事件和F orm的Resize事件,在事件处理过程中分别添加显示工作区和移动、调整控件大小的代码:Private Sub EditView-MyDraw(ByVal M pDC As Object)’显示工作区图3 M APGIS组件开发示例Fig.3Sam ple of application based on M APGIS com ponents Dim mapDC As Map G isDCSet mapDC=M pDC ’设置图形显示对象mapDC.DispArea linAi ’调用图形显示对象的方法显示linAi工作区Set mapDC=N othing ’释放图形显示对象End SubPublic Sub F orm-Resize()’调整窗口及控件的位置和大小I f isBrowAtt=0Then ’不显示实体属性EditView.M ove0,0,Me.ScaleWidth,Me.Scale2 HeightG isAttEdit.M ove0,0,0,0E lse ’显示实体属性EditView.M ove0,0,Me.ScaleWidth,Me.Scale2 Height/332G isAttEdit.M ove0,Me.ScaleHeight/332,Me. ScaleWidth,Me.ScaleHeight/3End I fEnd Sub’最后,释放工作区对象:Private Sub F orm-Unload(Cancel As Integer)’释放对象I f N ot linAi Is N othing ThenSet linAi=N othing782 第3期 周顺平等:基于M APGIS组件的二次开发End I fEnd Sub程序运行结果如图3所示.参考文献:[1]吴信才.地理信息系统的基本技术与发展动态[J].地球科学———中国地质大学学报,1998,23(4):329-333.W U X C.Basic technology and development of geographic in2 formation system[J].Earth Science—Journal of China Univer2 sity of G eosciences,1998,23(4):329-333.[2]李超岭,张克信.基于GIS技术的区域性多源地学空间信息集成若干问题探讨[J].地球科学———中国地质大学学报,2001,25(6):545-550.LI C L,ZH ANG K X.S tudy on regional multi2s ource geologi2 cal spatial in formation system based on techniques of GIS[J].Earth Science—Journal of China University of G eosciences, 2001,25(6):545-550.[3]宋关福,钟耳顺.组件式地理信息系统研究与开发[J].中国图象图形学报,1998,3(4):314-316.S ONG G F,ZH ONG E S.Research and development of com2 ponents geographic in formation system[J].Journal of Image and G raphics,1998,3(4):314-316.[4]周顺平,李雪平.M APGIS二次开发库的设计与实现简介[J].地球科学———中国地质大学学报,1998,23(4):337 -340.ZH OU S P,LI X P.M APGIS design and realization in the secondary2developed functions set[J].Earth Science—Journal of China University of G eosciences,1998,23(4):337-340.[5]袁艳斌,吴冲龙,李伟忠.面向野外地质填图的空间实体对象表达[J].地球科学———中国地质大学学报,2001, 26(2):192-196.Y UAN Y B,W U C L,LI W Z.Object styles of spatial entity for field geological mapping based on object2oriented method [J].Earth Science—Journal of China University of G eo2 sciences,2001,26(2):192-196.[6]R ofail A,Shohoud Y.C OM与C OM+从入门到精通[M].邱仲潘,等译.北京:电子工业出版社,2000.27-34.R ofail A,Shohoud Y.Mastering C OM and C OM+[M].Bei2 jing:E lectronics Industry Press,2000.27-34.Secondary Development of GIS Application B ased on MAPGIS ComponentsZH OU Shun2ping,W ANG Hai2long(Faculty o f Information Engineering,China Univer sity o f G eosciences,Wuhan430074,China)Abstract:C om ponent GIS,combined with GIS and com ponent technology,is a mainstream in GIS technology. This paper introduces the concept of GIS and com ponent GIS and presents the merits of com ponent GIS and the struc2 ture of MAPGIS com ponent development platform.Meanwhile it shows the comm on method of GIS application develop2 ment by using MAPGIS com ponents and the steps of using MAPGIS com ponents in VIS UA L BASIC.Als o,it describes a sam ple to dem onstrate how to develop GIS application based on MAPGIS com ponents.The sam ple is combined with VIS UA L BASIC and MAPGIS com ponents,such as data management com ponent,graphic display com ponent,graphic editing control and attribute data editing control,and thus possesses the functions of graph display and GIS attribute data editing.K ey w ords:GIS;com ponent;com ponent GIS;MAPGIS;secondary development of GIS.882地球科学———中国地质大学学报第27卷。
MAPGIS二次开发库的设计与实现简介

MAPGIS 二次开发库的设计与实现简介31998年3月10日收稿.3国家“九五”重中之重科技攻关项目(No.96-B02-03)资助.周顺平李雪平(中国地质大学信息工程学院,武汉430074)(中国地质大学环境科学与工程学院,武汉430074)摘 要 MAPGIS 系统不仅是一个GIS 基础软件,而且是用户开发面向具体领域的GIS 的工具.在分析对比GIS 空间模型的基础上,从空间实体模型分析、二次开发函数库软件结构设计、函数的功能分类、二次开发函数库的实现几个方面,介绍了MAPGIS 二次开发函数库的设计思想和实现方法.关键词 二次开发库,软件结构,空间模型,地理信息系统.中图法分类号 TP311.52第一作者简介 周顺平,男,副教授,1967年生,1991年毕业于中国地质大学(武汉)计算机系,获学士学位,主要从事计算机图形学和地理信息系统的研究和开发工作.0 引言能够进行二次开发是工具型GIS 的基本特征.二次开发接口一般称为应用程序界面(application program interface ,简称API ),是一组供应用程序调用(call )的命令集.二次开发就是利用工具型GIS 提供的API ,编写更高级程序的过程.实现API 的方法一般有两种:宏命令(macro command )和函数库(function library ).宏命令方式需要提供一个解释命令的环境,在这个环境下,用户很容易作一些较小的开发,但对于较大规模的二次开发,这种方式效率低,不容易进行.而函数库方式则是提供API 函数库,这种方式以某种高级语言(如C ,PASCAL ,BA 2SIC 等)为宿主语言,API 函数可看作高级语言的扩展,因而能够充分利用高级语言提供的编程环境,便于进行较大规模的二次开发,且开发完成的应用程序执行效率高.MAP GIS 是中国地质大学(武汉)开发的一个工具型GIS ,具有二次开发能力.其二次开发接口为一组定义在空间模型之上的函数集,借助于这组接口函数,用户可在BORLAND C ++,V ISUAL C ++,V ISUAL BASIC 等编程环境下,建造面向特定领域的应用型GIS.1 空间模型分析人类生活和生产所在的现实空间世界是由事物或实体组成的,有着错综复杂的组成结构.要表示、模拟这样的现实世界,就必须对现实世界进行抽象和概括,建立GIS 空间模型.换句话说,空间模型是现实世界到计算机世界的一个转换器.1.1 基本模型(1)基于平面的点、线、面模型(planar-graph based model ).这种模型把现实世界投影到一个二维平面上,再把平面上的各种要素(feature )归纳为点、线、面或零维、一维、二维3种类型的实体.这种模型的优点是精度高,适于表达曲状要素和不规则多边形,容易表示二维拓扑结构;缺点是不适于表示连续变化的空间[1].(2)连续铺盖的栅格模型(tessellation based raster model ).这种模型是将连续空间离散化,即用二维铺盖或面片(tessellation )覆盖整个连续空间,每个面片所覆盖的范围都被认为具有相同的性质.这种模型的优点是适于表征连续空间,且和现代高效的数据采集手段(遥感)紧密结合,数据的实效性强;缺点是不易精确表示实体的位置、形状和特征,且不直接考虑空间拓扑关系[1].1.2 时态矢量栅格模型(temporal planar-graph based vector and raster model)上述两种基本模型对现实世界的描述方法不同,各有优缺点,这决定了它们对解决不同的空间问第23卷第4期地球科学———中国地质大学学报Vol.23 No.41998年7月Earth Science —Journal of China University of G eosciencesJ uly 1998题具有不同的适应性.单一模型的GIS难以满足城乡规划管理对空间数据存储、管理、查询检索、分析评价、输出表达等方面的要求.而这两种模型的优缺点呈一定的互补性,所以在实际应用中,常常要求将两者结合起来[2].这两种模型都有一个共同点,就是把现实世界投影到一个二维平面上;不同点是对二维平面上的各种要素的描述方式不同.因而,理论上二者能够结合在一起,在实践中需要解决的主要问题是两个平面的套合(参照系的变换)、两种信息的相互转化,以及多种信息融合问题.MAP GIS 采用的空间模型是基于平面的时态矢量栅格一体化模型.这种模型将矢量模型和栅格模型的优点结合在一起,并增加了时间维,以便处理随时间变化引起的空间实体的变化.图1 时态矢量栅格空间模型Fig.1Temporal vector and raster spatial model如图1所示,空间实体随着时间t 的变化而变化,这种变化包括实体的空间位置、形状和属性的变化.在TVR 模型中,t 离散取值,即采用摄影方式记录在某一时刻或时间段内空间实体的状态.摄取到的空间实体的状态集则按照基于平面的矢量栅格模型处理.每一个状态集合可同时包含矢量数据和栅格数据,或二者之一.矢量数据把空间实体归纳为点、线、面3种类型,这3种类型又进一步细分为弧段(arc )、结点(node )、坐标(coordinate )等数据组织单元.其中弧段和结点还可以代表空间实体.属性信息始终和实体相关联.TVR 模型的矢量数据组织结构如图2所示.空间实体之间的关系通过结点和弧段拓扑信息表达,栅格数据则通过控制点与矢量数据进行配准.为了减少数据冗余和节省存储空间,MAP GIS 采用增量存储方式存储数据.在这种方式下,假设t 0,t 1,坐标点结点弧段面空间数据属性数据点空间数据属性数据属性数据空间数据线图2 矢量数据组织结构Fig.2The organization structure of vector datat 2时刻,空间实体的状态集如下.S 0=S (t 0)={es 00,es 01,…,es 0n }(1)S 1=S (t 1)={es 10,es 11,…,es 1n }(2)S 2=S (t 2)={es 20,es 21,…,es 2n }(3)其中:es 00,es 01,…,es 2n 表示实体的状态,每个状态包括实体的空间信息和属性信息.这样,从t 0时刻到t 1时刻,空间实体的状态变化为ΔS 1=S (t 1)-S (t 0)={es 10,es 11,…,es 1n }- {es 00,es 01,…,es 0n }(4)从t 1时刻到t 2时刻,空间实体的状态变化为ΔS 2=S (t 2)-S (t 1)={es 20,es 21,…,es 2n }- {es 10,es 11,…,es 1n }(5)因此,MAP GIS 表示t 0,t 1,t 2时刻空间的状态为{t 0,S (t 0)},{t 1,ΔS 1}和{t 2,ΔS 2}.为了表示相同实体在相邻两个时刻空间状态之间的联系,MAP GIS 使用下列5种联系操作,如表1所示.表1 实体空间状态之间的5种联系Table 1Five types of links of a entity ’s spatial state ><=操作符示意类型保持分解合并消失产生2 API 函数库结构和功能分类MAP GIS 的二次开发平台以数据库管理为核心,采用积木式总体结构.整个二次开发函数库以数据库管理为核心,包括遥感图象处理、属性操作、空间数据输入输出、空间查询、空间分析这几个部分(图3).833地球科学———中国地质大学学报第23卷OODBC图象处理其他GIS空间分析矢量数据I数据库管理属性操作查询空间数据属性数据A PI图3 MAPGIS API 结构Fig.3MAPGIS API structure (1)数据库管理.管理空间数据和属性数据,负责数据添加、提取、更新、维护数据一致性,并进行操作权限检查等[3].(2)图象处理.提供遥感图象处理工具,包括数据校正和专业信息提取等,实现栅格数据与矢量数据的准确套合.(3)属性操作.提供编辑、浏览属性结构和记录的手段,将SQL 查询语言转换为内部数据库存取操作.(4)矢量数据I/O.提供输入、输出矢量数据的手段,建立矢量型空间实体,维护空间拓扑结构,与其他图形系统交换数据.(5)查询.提供空间数据查询手段,将图视化查询语言GSQL 分解成空间范围查询和属性SQL 查询.(6)空间分析.提供矢量空间分析工具和栅格空间分析工具,包括空间叠加、Buffer 计算、统计空间分类、网络分析等.3 API 函数分类MAP GIS API 函数根据操作类型分成8类.操作对象包括空间数据、属性数据、时间数据、参考系统数据、质量描述数据、系统字典数据等.(1)Append ,Insert.添加实体(或对象)到当前数据集,Append 将实体添加到数据集的尾部,Insert 将对象插入当前位置.(2)G et.从数据库中检索对象.(3)Delete ,Undel ,Remove.删除或反删除数据库中的某个对象.其中Delete 从数据库中逻辑删除某个对象,Undel 则清除某个对象的逻辑删除标志;Remove 将某个对象从数据库中永久性删除,且不能恢复.(4)Set ,Update ,Modify.改变对象或对象的某些域,使对象更新或更准确[4].(5)Display.显示可视化对象.(6)Setup.设置或清除系统状态.(7)If ,Is.判断某个对象或对象集是否处于某种给定状态.(8)Ask.根据给定条件查找信息.4 MAP GIS 的API 的实现设计MAP GIS 的目的之一就是要使更多的用户能够充分发挥他们的聪明才智,编写他们所需要的应用程序;因此,对二次开发的用户不能作过高的要求.MAP GIS 选择的操作系统是WINDOWS 3.1,WINDOWS 95,WINDOWS N T ,在实现API 的过程中,充分利用WINDOWS 提供的程序设计方法.MAP GIS API 的基本部分,即数据管理,用动态连接库(DLL )实现;更上层API 则按照DLL 和OL E 进行设计和实现,并逐步实现控件化设计.到目前为止,MAP GIS API 5.0版已经完成,然而还有很多需要改进的地方.上述TVR 模型中,在两个相邻时刻空间实体状态之间的联系就不完善.研究能够准确描述现实世界的时空模型是GIS 学术界关注的焦点之一,也是我们今后研究的一个方向.参考文献1 宋现锋.系统模型分析.见:中国地理信息系统协会编.中国地理信息系统协会首届年会论文集.[s.l.]:[s.n.],1995.3192ISO/TC 211G eographic Information/G eomatics ,1996-11.World Wide Web :http ://www.statkart.no/isotc211/3 王光启.基于客户-服务器方式的地理信息系统及其实现.见:中国地理信息系统协会编.中国地理信息系统协会首届年会论文集.[s.l.]:[s.n.],1995.3564Zhang J Q ,Zhang J.GIS software system design considera 2tion.In :Proceedings of the 3rd International Workshop on GIS.[s.l.]:[s.n.],1993.160933 第4期 周顺平等:MAPGIS 二次开发库的设计与实现简介043地球科学———中国地质大学学报第23卷MAPGIS DESIGN AN D REAL IZATION IN THESECON DAR Y-DEVE LOPED FUNCTIONS SETZhou Shunping(Faculty of Inf orm ation Engi neeri ng,Chi na U niversity of Geosciences,W uhan430074)Li Xueping(Faculty of Envi ronmental Science and Geotechnique,Chi na U niversity of Geosciences,W uhan430074)Abstract MAP GIS system is not only the foundation of basic software of MAP GIS,but also a tool of GIS to develop a specific field that the user faces.This paper introduces,from several aspects of spatial sub2 stantial model,software structure design for secondary-developed functions set,ability classification of func2 tions,realization of secondary-developed functions set,the thought of design and method of realization for sec2 ondary-developed functions set of MAP GIS based on comparing GIS spatial model.K ey w ords secondary-developed functions set,software structure,spatial model,geographic informa2 tion system.333333333333333333333333333333333333333333333《地球科学———中国地质大学学报》1998年 第23卷 第5期 要目预告…………………………………………………………………中央造山带的演化及其特点殷鸿福 张克信关于“中央造山带”几个问题的思考张国伟 柳小明…………………………………………………………中央山系大别、东秦岭和东昆仑段最古老岩系变质过程对比陈能松 朱 杰 游振东等………………………………华北克拉通基性火山岩HFSE对A-P界限及新生代地幔源区特征的示踪刘勇胜 高 山昆仑山东段构造隆升、水系响应与环境演化李长安 殷鸿福 于庆文等……………………………………大别造山带中新生代隆升作用的时空格局———构造年代学证据王国灿 杨巍然……………………………………………………………………………………海西—印支阶段华南大陆构造演化张 宁 夏文臣女山玄武岩中尖晶石-石榴石二辉橄榄岩包体及其岩石物理意义金淑燕 潘顺安………………………浙江遂昌治岭头金银矿床硅同位素研究章传玲 姚书振………………………………………………………………………………………山西柳林泉域水-岩相互作用地球化学模拟王焰新 马 腾 罗朝晖等用遗传算法求解地下水资源管理模型邵景力 魏加华 崔亚莉等…………………………………………一维层状介质大地电磁模拟退火反演法师学明 王家映……………………………………………………………………………………反应条件指数(RCI)及其在地球化学中的应用史维浚 孙占学 周文斌等简单剪切———中国活动构造变形主要机制王业新 李运贵 李子权等……………………………………华北地台北缘中段中新元古代地块的p-T-t轨迹及构造演化研究吴泰然 刘树文 张臣…………。
利用MapGis二次开发技术实现第二次土地调查权属协议书的自动生成——以成都地区为例

利用 MaGs p i二次 开发技 术 实现第 二次 土地 调 查 权 属 协 议 书 的 自动 生成
— —
以成都 地 区为例
汪 宏 , 国业 , 任 李天和 , 王 昕
( 四川省农业科学院遥感应用研究所 , 四川 成都 606 ) 106
摘 要: 第二次全 国土地调查是一项关系国民经济发展大局的重大国情 国力调查 , 也是一项技 术性 、 专业性、 政策性很强的社会系
目前农村产权制度的改革, 以及新农村建设发展, 权 属调查意义重大。第二次土地调查 中权属调查一般 调绘到村或组( 如成都地区调绘到组) 权属调查方 ,
1 技术方法与关键技术
法主要是双边指界, 实地调绘上图, 并签定权属协议书。 1 1 技术 方法 . 基于县( 市) 区、 级土地利用 现状标准 的数据 目 权属协议书的制作方法主要是采用传统手工填表、 前,
大局 的重要 国情 国力 调查 , 是一 项技术性 、 涉及 多学
县 ( 市 ) 土 地调 查 是 按 相关 规 程 、 范 建 区、 级 规 立 土地 利用 现状 数据 库 , 实现 图 、 、 数 实地 一致 。其
科 的系统工程。土地调查成果直接为国土资源科学 管理、 社会经济宏观决策提供基础依据 , 对国民经济
西
12 3
南
农
业
学
报
21 00年 2 3卷 l 期
Vo . 3 12 No 1 .
S uh e t iaJun lo r utrlS in e o tw s Chn o ra fAgi l a ce cs c u
文 章 编 号 :0 1 4 2 (0 0 0 — 12— 5 10 — 8 9 2 1) 1 03 0
mapgis二次开发培训教程

前言MAPGIS 是武汉中地信息工程有限公司研制的具有自主版权的大型基础地理信息系统平台。
它是一个集当代最先进的图形、图像、地质、地理、遥感、测绘、人工智能、计算机科学于一体的大型智能软件系统,是集数字制图、数据库管理及空间分析为一体的空间信息系统,是进行现代化管理和决策的先进工具。
MAPGIS 连续四年在全国GIS 测评中名列第一,并成为唯一连续四年获得国家科技部向社会推荐的国产GIS 软件平台。
中地软件丛书之MAPGIS 二次开发培训教程是根据最新推出的MAPGIS 软件平台编写而成,主要介绍进行MAPGIS 二次开发必须具备的基础知识、主流开发工具以及MAPGIS 系统的基本概念、结构体系和操作方法。
该教程分为三个部分,共十一讲。
其中:第一部分(即第一讲的内容):介绍Windows 编程的概念。
包括类与数据封装、继承、重载、虚拟函数与多态性以及内存管理。
该部分为可视化编程的基础,有可视化编程经验的读者可以略过此讲,直接进入下一部分的学习。
第二部分(即第二讲的内容):编程工具VC 。
对于在VC 这样一个编程环境中开发应用程序所应熟悉的概念,术语和最基本的框架、构件实现过程等知识做了一个简明扼要的介绍。
已掌握一定VC 编程基础知识的读者可以略过该部分。
第三部分(即第三讲至第十一讲的内容):详细讲述了地理信息系统的基本概念(包括GIS 原理概述、空间数据类型、空间数据库、空间数据结构与数据管理等内容);MAPGIS的基本概念和体系结构(简要描述了MAPGIS 二次开发的基本概念、术语、工作区、空间实体及其数据、C++类组织和开发环境介绍的内容);MAPGIS 空间数据存取和属性编辑(包括工作区、空间实体和属性的操作及其网络介绍);图形显示输出及窗口操作、图形编辑、类库和控件开发;矢量空间分析和属性查询;投影变换、图框生成和工程管理;图库管理和查询系统(包括基于图库的应用程序开发、MAPGIS 图库介绍、开发的一般步骤以及结合图库显示说明图库主要函数的功能等方面的内容)以及图象分析与处理。
MAPGIS二次开发资料16点

3 函数_LoadAFile( )传参数示例
char fileName[MAX_PATH]; lstrcpy(fileName,"c:\\mapgis6.7\\sample\\line.wl"); _LoadAFile(fileName,li);
4 取工作区文件名函数_GetAreaFileName1( )示例
8 从当前打开文件中提取出只属于该文件的图层名称或序号
可通过函数实现:
技术工兵(jsgb) 3
技术工兵淘宝店为您服务:
Hale Waihona Puke for(short i=0;i<MAX_LAYNUM;i++) {/*判断某一层是否有图元*/ short HaveElement = _IsALayHasElement(ai,i); if(HaveElement) TRACE( "area is %d at layer = %d has element\n", ai, i ); else TRACE( "area is %d at layer = %d has not element\n", ai, i ); }
char fname[MAX_PATH]; short len; fname[0] = 0; _GetAreaFileName1(ai,fname,MAX_PATH*sizeof(char));
5 删除字段函数_DelStruFldOnNumb( )提示示例
如果是用循环来操作此函数,需要从属性结构的尾部进行删除。打个很简单的例子:如 果有四个属性结构, 删除了第二个属性结构后, 则原来第四个属性结构变成了第三个属性结 构。所以 for(i=0;i<Num;i++) {
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MAPGIS VirtualEarth 二次开发技术篇目录目录..............................................................................................................................................- 2 -1 概述..............................................................................................................................- 3 -2 开发环境介绍..............................................................................................................-3 -2.1开发环境................................................................................................................- 3 -2.2开发软件---Eclipse................................................................................................- 4 -3 MAPGIS VirtualEarth二次开发技术........................................................................- 14 -3.1 JavaScript脚本语言.............................................................................................- 14 -3.2 Java语言...............................................................................................................- 16 -3.3 HTML语言..........................................................................................................- 18 -3.4 JSP技术................................................................................................................- 19 -3.5 数据库(SQL Server/Oracle)..........................................................................- 20 -3.6 XML语言.............................................................................................................- 21 -1 概述MAPGIS VirtualEarth是中地数码拥有自主产权的一套显示三维地球的软件,它依托MapGIS平台为基础,基于Java applet技术和JOGL技术开发。
采用面向Internet的分布式计算技术,支持跨平台、跨网络的大型网络应用系统的集成。
为了方便用户的二次开发,下面将会从开发环境、开发中涉及的主要技术等方面入手,详细的说明MAPGIS VirtualEarth二次开发的有关事项。
2 开发环境介绍MAPGIS VirtualEarth二次开发的环境是基于开发工具MyEclipse 6.0、开发语言JA V A、Applet、OpenGL的。
这些工具和技术是当下J2EE开发的主流技术,具有各自的特点,有助于用户更好地进行MAPGIS VirtualEarth的二次开发。
在开发之前需要配置开发环境,设置环境变量。
配置好环境后,就能利用功能强大的JA V A工具及技术开发WEB项目。
2.1开发环境开发环境配置如下:1、操作系统:WindowsXP、 Windows2003 Server(推荐)2、浏览器:IE 6.0 及以上版本3、环境支持:jdk1.6及以上、tomcat5.0及以上4、数据库: SQL Server 、Oracle2.1.1 MAPGIS VirtualEarth的开发环境MAPGIS VirtualEarth的开发环境配置如下:1.按上述配置开发环境,安装好JDK1.6和tomcat5.0后,正确配置好环境变量。
2.开发语言:JA V A和JavaScript。
3.二次开发工具:Eclipse3.2,MyEclipse5.0,MyEclipse6.0、其他插件。
如果不习惯英文版的Eclipse,可以用相应版本的汉化包汉化,便于开发。
4.准备好地图数据和相关的点位信息数据,并参照相关的配置文档配置好GIS服务器、相关数据和数据服务器。
示例中自带地图数据和点位信息数据,点位信息数据以SQL Server数据库文件形式存放。
如果使用自带的点位信息数据时,要将VirtualEarthDemoDatabase_Data.MDF附加到本地SQL Server 2000数据库里。
5.如果有用户自定义数据,则站点开发过程中须保持GIS服务器(MapGisIMSSvr)呈启动状态。
2.1.2 MAPGIS VirtualEarth的开发语言MAPGIS VirtualEarth开发的语言为JA V A语言。
JA V A语言由Sun公司推出,是一个支持网络计算的面向对象程序设计语言。
JA V A语言吸收了Smalltalk语言和C++语言的优点,并增加了其它特性,如支持并发程序设计、网络通信、和多媒体数据控制等。
2.1.3 MAPGIS VirtualEarth所用的文件类型MAPGIS VirtualEarth中用到的文件类型和重要文件如下表所示:表2-1 JA V A开发环境文件类型文件扩展名用途及说明.java Java文件。
.class Java文件编译后的文件。
.jar Java归档文件,存放各种java文件的压缩包。
.htm 静态网页文件。
.css 样式文件,存放网站样式的样式表。
编写的脚本文件。
.js Javascript.jsp 内含java 代码的文件,网站后台处理文件。
web.xml 网站配置文件。
使用Hibernate的数据库表映射文件。
.hbm.java与.hbm.xmlhibernate.cfg.xml 使用Hibernate操纵数据库的文件,即数据库连接。
2.2开发软件---EclipseEclipse是一种通用工具平台——普遍适用的开放式扩展IDE。
它提供了功能丰富的开发环境,众多插件能够无缝集成到Eclipse平台中的工具。
Eclipse的体系结构如下图:图3-1 Eclipse的体系结构图Eclipse的设计思想是:一切皆为插件。
Eclipse的核心是非常小的,其他所有的功能都以插件的形式附加到这个Eclipse核心之上。
这样的功能插件包括它的图形API(称为SWT/JFace)、Java开发环境插件(简称JDT)、插件开发环境(简称PDE)等。
Eclipse对插件的协同工作提供了良好的支持,不仅安装简单,而且还可以无缝结合。
Eclipse是开放源码的。
对于程序员,Eclipse的开放源码让他们阅读最顶级的Java源码,学习最优秀的Java技术。
下面就开始介绍如何在Eclipse里新建一个WEB站点,流程如下:1.打开Eclipse,其开始界面如图3-2。
图3-2 Eclipse启动时界面2.在初次启动Eclipse时会跳出一个对话框,提示选择工作空间,用来存Eclipse项目的文件。
如图3-3,选择路径后单击“确定”就可以启动Eclipse。
如果想下次启动时不出现该窗口,则勾选对话框最下面的“将此值用作缺省值并且不再询问”选项。
启动后的界面如图3-4。
图3-3 选择工作空间页面图3-4 Eclipse工作环境3.新建网站项目:选择文件Æ新建Æ项目,跳出如图3-5所示对话框。
4.点击“向导”下的MyEclipse,选择J2EEProjects下的WebProject,如图3-6。
图3-5 Eclipse中新建项目对话框图3-6 选择Web Project新建Web工程5.点击“下一步”,在跳出的对话框中的Project Name栏内输入项目名,例如填入newjavap,如图3-7。
Location栏指项目存放的目录,默认存放在选择的工作空间中,一般不需要更改。
如要特殊情况下需要更改时,请把Use default location的钩去掉,点击Directory栏的Browse按钮,选择路径。
图3-7 输入新工程名6.点击“完成”,新的WEB站点创建成功。
完成后的界面如图3-8。
图3-8 新建工程后的工作页面7.此时在包资源管理中右键点击站点,选择新建Æ文件,在弹出的对话框中根据站点的需要新建文件(如图3-9);也可以选择新建Æ其他,在弹出的对话框中选择要新建的文件模板。
图3-9 新建文件页面在如下的对话框中,选择站点目录(WebRoot),将新建的文件保存到该站点目录下。
图3-10 选择父文件夹对话框输入文件名和后缀名,根据不同的后缀名建立不同的文件类型。
网站启动时需要一个起始页,可以是.htm文件或者是.jsp文件。
在此可新建一个default.htm文件作为站点的起始页(如图3-11)。
图3-11 输入文件名8.文件建好后,可以在编辑区打开文件进行编程,实现所需要的功能。
例如,搭建一个简单的示例,即在起始页default.htm中写入如下代码:图3-12 default.htm中添加代码9.修改配置文件web.xml,在该文件中为站点进行相关的配置。
如图,给站点设置起始页default.htm。
图3-13 配置web.xml10.站点搭建完成后,需要进行站点部署。
点击按钮,弹出如下图3-14所示窗口,在“Project”中选择项目newjavap;点击“Add”按钮,出现下图3-15界面,在“Server”中选择tomcat5,在“Deploy type”中选择Exploded Archive,点击“完成”按钮;再点击“确定”按钮即可(如图3-16)。