mapgis二次开发教程

合集下载

MapGIS常见问题之二次开发相关问题

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基本控件做二次开发

利用VB和MAPGIS基本控件做二次开发
第一步:首先建立VB开发环境。
安装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

GIS二次开发使用PPT教案

GIS二次开发使用PPT教案
}
Class flyBird inherit from Bird{ String Name; Publice fly { … }
}
第15页/共45页
在OOP中,继承的概念很好的支持了代码的重用 性(reusability),也就是说,我们可以向一 个已经存在的类中添加新的特性,而不必改变 这个类。这可以通过从这个已存在的类派生一 个新类来实现。这个新的类将具有原来那个类 的特性,以及新的特性。而继承机制的魅力和 强大就在于它允许程序员利用已经存在的类 (接近需要,而不是完全符合需要的类),并 且可以以某种方式修改这个类,而不会影响其 它的东西。
第23页/共45页
第24页/共45页
DCOM
基于分布式环境下的COM被称作 DCOM(Distribute COM,分布式组件对象模 型)。
DCOM是ActiveX的基础,它实现了COM对象 与远程计算机上的另一个对象之间直接进 行交互。
第25页/共45页
ActiveX与ActiveX控件
第26页/共45页
ActiveX的内容
ActiveX控件(ActiveX Control):
用于向WEB页面、Microsoft Word等支持 ActiveX 技术的容器(Container)中插入 COM对象;
ActiveX文档(ActiveX Document):
用于在Web Browser或者其它支持ActiveX的 容器中浏览复合文档(非HTML文档),例如 Microsoft Word文档、Microsoft Excel文 档或者用户自定义的文档等
第27页/共45页
ActiveX的内容
ActiveX脚本-(ActiveX Scripting)

用C 实现混合使用MAPGIS的多种二次开发方式

用C  实现混合使用MAPGIS的多种二次开发方式

图3 然后选择GisEdit Contrl控件并插入,如图4、图5所示。
图4
图5 调整对话框大小及GisEdit控件大小,添加几个功能按钮,如图6所示。 白色部分为GisEdit控件。
图6 用C++实现混合使用MAPGIS的多种二次开发方式(二) 为了操作GisEdit控件,在ClassWizard中,将GisEdit控件添加为成员变 量。变量名为m_MapGIS。如图7所示
图1 注册成功后,出现图2所示对话框:
图2 如果没成功的话,看看是否和MAPGIS的DLL文件放在同一目录下,因为 它还要依赖MAPGIS的DLL库。 然后用VC中的MFC AppWizard生成一个对话框架的应用程序。打开 所生成的对话框资源,在对话框资源上右击,并选择Insert ActiveX Control…菜单。如图3所示。
} 为了在视窗改变大小时,m_MapGIS控件也改变大小,为视类添加一个 WM_SIZE消息,在其生成的OnSize函数中添加如下代码。 void CMapView::OnSize(UINT nType, int cx, int cy) { CView::OnSize(nType, cx, cy); // TODO: Add your message handler code here m_MapGIS.MoveWindows(cx,cy);// GisEdit控件中新增的改变窗口大小 函数 } 在菜单资源中,修改“打开文件”项,改成“打开工程文件”;并将其(资 源ID号:ID_FILE_OPEN) 在视窗类中(本例为CMapView)建立消息 映射。在映射函数中加入如下代码: void CMapView::OnFileOpen() { // TODO: Add your command handler code here m_MapGIS.LoadProject(); } 编译整个工程并运行,打开一个MAPGIS工程文件,运行结果如图11, 所示

基于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卷。

03.MapGIS VirtualEarth二次开发技术篇

03.MapGIS VirtualEarth二次开发技术篇

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技术开发。

GIS二次开发第7课教程

GIS二次开发第7课教程



其它 workspace 类型包括:
Raster Workspace: A workspace containing Grids and Images. Tin Workspace: A workspace containing TINs. CAD Workspace: A workspace containing CAD drawings.
Creating a connection file (.sde) to an Enterprise ArcSDE workspace

public IWorkspaceName open_ArcSDE_Workspace (string server, string instance, string user,string password, string database, string version)

IWorkspaceFactory接口 定义了所有工作空间工厂
对象的一般属性和方法,
用户可以通过它管理不同
类型的工作空间。

使用 IWorkspaceFactory::Create方法可以用于产生一个新的工作空间名称对 象。

public IWorkspaceName Create ( string parentDirectory, string
{ IPropertySet propertySet = new PropertySetClass(); propertySet.SetProperty("SERVER", server); propertySet.SetProperty("INSTANCE", instance);
propertySet.SetProperty("DATABASE", database);

MAPGIS K9 IMS SilverLight二次开发介绍

MAPGIS K9 IMS SilverLight二次开发介绍

www.
SilverLight与Flex对比
以下是国外给出的Silverlight与Flash全面对比:
Tecnologias Adobe Flex 4 Microsoft Silverlight 4
Runtime
- Flash Player 10.1 - Windows - MacOS - Linux - Solaris - Google Android - Frame-by-Frame - Baseado em simulação de perspectiva X, Y e Z.
Aplicações Multi-Plataforma
Animação – Timeline 3D
www.
SilverLight与Flex对比
Aplicações baseadas em Desktop 2.0 Modelo de programação Linguagem de interfaces - Adobe Air - Silverlight OOB - Orientado a Objetos - Orientado a Objetos
2、提供丰富的、一致的用户体验
◆强大的网络支持,支持互动性网络会议,以及网络教学等功能 ◆强大的基于向量的图形支持 ◆强大的多媒体支持,从Mobile到HD质量的视频和音频,支持15X 的快速视频编码及硬件加速,支持数码版权管理(DRM) ◆强大的客户端功能,支持打印功能,支持多点触碰,支持络摄像 和麦克录音功能,支持COM,支持本地文件访问,支持富文本编辑, 支持数据绑定,支持报表和图表,支持剪切板等
SilverLight结构
Silverlight 平台作为一个整体,由两个主要部分以及一个 安装程序和更新组件组成,如下表中所示。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

mapgis二次开发教程默认分类 2009-09-08 10:18:14 阅读898 评论1 字号:大中小订阅目前MAPGIS二次开发库主要以API函数、MFC(Microsof t Foundation Class)类库、Com组件、Activ eX 控件四种方式提供。

开发库被封装在若干动态链接库(DLL)中。

API函数在使用方法上与Windows的API函数完全一样,因此是独立于开发工具的。

无论您使用VC++、VB还是BC++、Dephi…,您在这些工具中如何调用Windows的API函数,您就可以怎么调用这些二次开发函数。

MAPGIS类库是为基于MFC类库的C++开发者提供的多个可重用基类,它将应用程序所需的常见基本功能作了封装,使用便利,改动灵活。

开发者只需从类库派生即可使自己的程序获得从窗口显示控制到图形查询编辑的各项功能。

MAPGIS COM组件是MAPGIS新一代体系结构的表现,功能更加强大,使用更加便利。

具有二次开发方便、易于集成、无限扩展等特点。

支持多种开发软件,包括Visual C++、Visual Basic、Delphi、script、InterDev、Power Builder等,开发者可以多层次的访问MAPGIS组件的数据层、功能层和界面层。

Activ eX 控件是MAPGIS完成组件化改造的成果之一,它们使得二次开发更为快捷便利,代码的可复用性更高。

上述各类开发接口提供了从最基本数据单元的读取、保存、更新和维护到MAPGIS地图库的建立和漫游,以及空间分析,图象处理等一系列功能。

其中,API函数是基础,使用上最灵活,但技巧性要求也最高。

所以本书大量篇幅用于介绍C++ API函数。

MAPGIS将不断丰富完善各类二次开发接口,以多种开发手段满足不同层次、不同应用的需求。

这些函数所在的C++头文件表4-1所示:表4-1 二次开发头文件4.2 MAPGIS基本术语下面介绍MAPGIS系统中经常使用的一些基本概念。

地图:是按一定的数学法则和特有的符号系统及制图综合原则将地球表面的各种自然和社会经济现象缩小表示在平面上的图形,它反映制图现象的空间分布、组合、联系及在时空方面的变化和发展。

窗口:是用户坐标系中的一个矩形区域。

用户可以改变这个矩形的大小、或移动位置来选择所要观察的图形。

窗口就象照相机的取景框,当我们瞄准不同的地方,就选取了不同的景物。

离景物越远框内包括的景物越多而成像就小;当我们靠近它,所包括的景物越少,成像越大。

利用窗口技术,我们可以有选择的考察图形的某一部分,观察图形的细致部分或全局。

视区:是设备坐标系中的矩形区域,它是图形在设备上的显示区。

可视区是在一定高程和一个或多个视点内,通过计算所得到的一个或多个视点的可见区域。

图层:用户按照一定的需要或标准把某些相关的物体组合在一起,我们称之为图层。

如地图中水系构成一个图层,铁路构成一个图层等。

我们可以把一个图层理解为一张透明薄膜,每一层上的物体在同一张薄膜上。

一张图就是由若干层薄膜叠置而成的,图形分层有利于提高检索和显示速度。

靶区:是屏幕上用来捕获被编辑物体(图形)的矩形区域,它由用户在屏幕上形成。

控制点:控制点是指已知平面位置和地表1 工作区介绍工作区是MAPGIS提出的一个概念,简单的说,工作区就是一个数据池,存放实体的空间数据、拓扑数据、图形数据和属性数据,每个工作区对应一个MAPGIS数据文件。

MAPGIS开发函数库提供对工作区实施操作的一系列函数,如将工作区中的内容存盘,从盘上将数据装入工作区,对工作区中的内容进行添加、修改、删除、检索等等。

对硬盘数据的存取及虚拟内存的管理等等复杂繁琐的工作无需应用程序的编程者去关心,而是有MAPGIS工作区管理模块自动完成。

因此,深入了解工作区的逻辑结构和工作区操作函数的使用,是进行成功的二次开发的关键。

2 工作区操作函数MAPGIS的空间数据和属性数据的读写操作都是在工作区的基础上进行的,工作区是应用程序和数据文件的桥梁,他保证了数据的一致性、完整性。

[工作区操作流程]1)初始化工作区实例(_InitWorkArea)可循环执行2-5步2)打开工作区(点,线,区,网,表)(_OpenArea)3)装文件至工作区(_LoadFile)4)...实体(图形,属性)操作,表格操作......5)关闭打开的工作区(_CloseArea)6)释放工作区实例(_FreeWorkArea)工作区实例是MAPGIS为了便于管理工作区而定义的句柄。

MAPGIS应用程序在结束之前,必须调用_CloseAllArea函数或者_FreeWorkArea函数,以便关闭所有工作区并且释放工作区实例。

_CloseAllArea函数和_FreeWorkArea函数功能相同。

C示范5-1:打开点工作区,装入点文件:AREA_HINST AHInst;short AiPnt;AHInst = _InitWorkArea(NULL);AiPnt =_OpenArea(AHInst,PNT);If(_LoadFile(AiPnt) > 0){…..//实体操作}//关闭工作区if(_IsOpenArea(AiPnt)) //如果工作区打开{_SetChangeFlag(AiPnt, 0); //如果工作区改变了,且不想保留更改的内容_CloseArea(AiPnt);_FreeWorkArea(AHInst);3 工作区函数1)AREA_HINST _InitWorkArea(HINSTANCE hInst);//初始化工作区实例2)int _FreeWorkArea(AREA_HINST ahInst);//释放工作区实例3)short _OpenArea(AREA_HINST,short ty pe);//打开某种类型的工作区4)int _CloseArea(short ai);//关闭指定的工作区5)short _LoadAFile(char * datName,short ai);//将某个文件装入指定的工作区,datName为文件名指针,必须带路径short _LoadFile(short ai);6)char _GetAreaTy pe(short ai); //取工作区文件类型7)short _IsAreaEmpty(short ai); //指定的工作区是否为空8)short _IsOpenArea(short ai); //指定的工作区是否已经打开9)short _GetAreaNumber(AREA_HINST ahInst); //获取打开的工作区数10)short _GetFirstAreaNo(AREA_HINST ahInst);//取属于ahInst实例的第一个工作区号。

11)short _GetNextAReaNo(AREA_HINST ahInst);//取属于ahInst实例的下一个工作区号。

12)short _SetPackFlag(short ai,short f lag);//设置数据压缩标志,f lag=0/1:不压/压缩13)short _SetChangeFlag(short ai,char chg);//设工作区改变标志14)short _Sav eFile(short ai,short v er=VERSION); //将工作区内容存入文件_Sav eAFile //将工作区内容存入指定文件注意:版本号v er只能取VERSION50或VERSION60。

C示范5-2:读取属于AREA_HINST实例的所有工作区(假设工作区已经打开)short i,ai,an;…an = _GetAreaNumber(AHInst);ai = _GetFirstAreaNo(AHInst);f or(i = 0; i < an; i++,ai = _GetNextAreaNo(AHInst))//使用工作区ai...}实体存取主要依据实体数据的唯一标识:实体号实体类型有(Lin,Pnt,Nod,Reg,Net,Path)1 取实体个数_Get...Num: 逻辑数,物理数如:short WINAPI _GetLinNum(short ai,long *logN,long *n);short WINAPI _GetRegNum(short ai,long *logN,long *n);short WINAPI _GetPntNum(short ai,long *logN,long *n);short WINAPI _GetNodNum(short ai,long *logN,long *n);short WINAPI _GetNetNum(short ai,long *logN,long *n);short WINAPI _GetPathNum(short ai,long *logN,long *n);这里lonN返回逻辑数,n返回物理数。

2 取实体空间数据,图形数据_Get...取得实体数据,图形数据信息。

如取线:short WINAPI _GetLin(short ai,long li,D_DOT **dat,long *len,LIN_INFO *inf,short *dim=NULL); dat和inf分别返回线数据和线信息。

3 实体操作1)取实体图形参数 _Get...Inf o2)更新实体图形参数 _Update....Inf o3)添加实体 _Append...4)删除实体 _Del...5)撤销删除实体 _UnDel...对空间实体,上述方法是相似的。

[注意]:函数返回值是short型,则1表示成功;0表示失败;-1表示该图元被删除;返回值是long型,则不同的函数含义有所不同,对于_Append...函数,>0表示实体号,否则表示失败。

C示范5-3:将ai号工作区中所有黑色线改为兰色long i,linN;long len;LIN_INFO linf;D_DOT *lxy;_GetLinNum(ai,&i,&linN); //取线实体数,i返回逻辑数,linN返回物理数f or(i = 1;i < linN; i++){if(_GetLin(ai,i,&lxy,&len,&linf) <= 0)continue;//处理线实体代码if(linf.lclr==1){linf.lclr=5;_UpdateLinInf o(ai,i,&linf);}}C示范5-4:取ai工作区中的所有点,并进行处理long i,pntN;short len;PNT_INFO inf;D_DOT xy;char *dat;_GetPntNum(ai,&i,&pntN); //取点数f or(i=1;i<pntN;i++){if(_GetPnt(ai,i,&xy,&dat,&len,&inf)<=0)continue;switch(inf.ty pe){case PNT_NOTE: … break; //处理字符串case PNT_SUB: … break; //处理子图case PNT_CIR: … break; //处理圆case PNT_ARC: … break; //处理弧case PNT_IMAGE: … break; //处理图象case PNT_TEXT: … break; //处理文本def ault: break;}…}C示范5-5:添加一个字符串类型的点,坐标为(500,500),内容为“中地公司”,颜色为红色,字高宽均为10, PNT_INFO inf;D_DOT xy;char dat[64];xy.x=500;xy.y=500;lstrcpy(dat,”中地公司”);memset(&inf,0,sizeof(PNT_INFO));inf.ty pe=PNT_NOTE;inf.inf o.ch.height=10;inf.inf o.ch.width=10;inf.iclr=6;_AppendPnt(ai,&xy,dat,lstrlen(dat),&inf);C示范5-6:添加一条折线,颜色为绿色,坐标点为(20,50),(100,200),(200,200);LIN_INFO inf;D_DOT xy[3];xy[0].x=20; xy[0].y=50;一、显示输出的基本概念1. 逻辑坐标、设备坐标、窗口坐标、屏幕坐标逻辑坐标:又称图形坐标或用户坐标,是用户处理自己的图形实际所采用的坐标系。

相关文档
最新文档