用C 实现混合使用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)用户常常将显示比率与比例尺相混淆,比例尺一般应用于地图数据打印输出时,表示图上距离与实际距离的比值。

C# GIS二次开发代码1

C# GIS二次开发代码1

ESRI.ArcGIS.Display.CancelTracker pCancel = new ESRI.ArcGIS.Display.CancelTracker(); mapGIS.ActiveView.Output(pExport.StartExporting(), (int)pScreenResolution, ref pExportFrame, mapGIS.ActiveView.Extent, pCancel); pExport.FinishExporting(); } catch //()Exception ex { } }
3. 地图的空间查询
添加一个窗体,Name 为 QueryFrm。
在该窗体中添加控件,具体添加控件如下 空间名 GroupBox(Panel) 5 个 RadioButton Name groupBox rdoNormol rdoLine rdoEnvo rdoCircle rdoPoly Button btnOK 备注 一个容器,可以自行选择 Text 属性为:默认状态 Text 属性为:线选查询 Text 属性为:框选查询 Text 属性为:圆选查询 Text 属性为:多边形查询 Text 属性为:确定
2. 地图保存
在 menu 中添加 File,在 File 的中添加 Export Data,Name 为 exportDataMenu, 为其添加单击事件,代码如下 private void exportDataMenu_Click(object sender, EventArgs e) { SaveFileDialog sfd = new SaveFileDialog(); //设置可以保存的文件类型 sfd.Filter = "TIF FIles(*.TIF)|*.TIF|SVG FIles(*.SVG)|*.SVG|PNG FIles(*.PNG)|*.PNG|PDF FIles(*.PDF)|*.PDF|JPEG FIles(*.JPEG)|*.JPEG|GIF FIles(*.GIF)|*.GIF|EMF FIles(*.EMF)|*.EMF|BMP FIles(*.BMP)|*.BMP|AI FIles(*.AI)|*.AI"; //显示对话框 sfd.ShowDialog(); //判断路径为空,返回 if (sfd.FileName == null) return; //获取保存文件路径 string path = sfd.FileName; string pathExtention = System.IO.Path.GetExtension(path); try { ESRI.ArcGIS.Output.IExport pExport; pExport = (ESRI.ArcGIS.Output.IExport)new ESRI.ArcGIS.Output.ExportTIFF(); //根据文件拓展名选择保存的格式 switch (pathExtention) { case ".SVG": pExport = (ESRI.ArcGIS.Output.IExport)new ESRI.ArcGIS.Output.ExportSVG(); break; case ".PS": pExport = (ESRI.ArcGIS.Output.IExport)new ESRI.ArcGIS.Output.ExportPS(); break; case ".PNG": pExport = (ESRI.ArcGIS.Output.IExport)new ESRI.ArcGIS.Output.ExportPNG();

VC中嵌入MAPX进行二次开发的过程

VC中嵌入MAPX进行二次开发的过程

结合GIS工具软件与当今可视化开发语言的集成二次开发方式是GIS应用开发的主流。

它的优点是既可以充分利用GIS工具软件对空间数据库的管理、分析功能,又可以利用其它可视化开发语言具有的高效、方便等编程优点,集二者之所长……MapX是MapInfo公司向用户提供的具有强大地图分析功能的ActiveX控件产品。

由于它是一种基于Windows操作系统的标准控件,因而能支持绝大多数标准的可视化开发环境如Visual C++、Visual Basic、Delphi、PowerBuilder等。

编程人员在开发过程中可以选用自己最熟悉的开发语言,轻松地将地图功能嵌入到应用中,并且可以脱离MapInfo的软件平台运行。

这里谈到的VC++嵌入MapX进行二次开发可分为以下几个步骤来实现:1对应用工程的预设置在创建MapX控件之前,必须将MapX.h和MapX.cpp文件加入到工程中。

对于Visual C++5.0及以上版本,从Project菜单中选择Add To Project -> Files命令,打开InsertFiles into Project对话框,选择MapX.cpp和MapX.h文件加入到工程中(在MapX自带的C++例子中有这两个文件)。

注意:不要选择Project菜单中的Add TO Project->Components And Controls命令。

如果选择该命令加入MapX控件,将创建一新的.cpp文件,但是该文本没有包括所有的MapX对象。

2对MapX属性的操作对于C++程序来说,每个MapX对象(Objects)都在MapX.h 和MapX.cpp中用一个类来实现,类的名字和MapX对象的名字相同,且已经在CmapX中定义了。

例如,DataSet对象用类CmapXDataset实现。

这和C++类的定义相一致。

而每个MapX对象的属性(Properties)是用类的成员函数来实现的。

用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进行二次开发的问题研究
学 f÷
秦 佳 ( 西 大 学 电 气与 信 息 工 程 系 , 鸡 黑龙 江 鸡 西 18 0 ) 5 10
运用 MA G S 行 二次开 发 的问题 研 究 P I进
摘 要: 分析 了运用 MA G S进行二次开发 的基础及 主要形式 , 出了进行二次开发的方法和步骤 , PI 给 最后分析 了在开发过程 申常遇到的 问题及 解 决方 法 。 关 键 词 : P S 二 次 开发 ; C + MA GI; v + MA GS是武汉中地信息工程有限公司研制 多 种 开 发 软 件 ,包 括 Vi a C 、i a B s 、 PI s l H Vs l ai u u c 的具有 自主版权的大型基础地理信息系统平台。 D lh、cit neD vPw rB i e 等 , 发 者 ep i r tre 、o e ul r 开 S pI d 它是一个集当代最先进的图形 、 图像、 地质、 地理、 可以多层次的访问 MAP I 组件的数据层 、功能 GS 遥感 、 测绘 、 人工智能 、 计算机科学于一体的大型 层 和界 面层 。 智能软件系统 , 是集数字制图、 数据库管理及空间 A te ci X控件是 MAP I v G S完成组件化改造的 分析为一体的空间信息系统 ,是进行现代化管理 成果之一, 它们使得二次开发更为快捷便利 , 代码 和决策的先进工具。 的可复用性更高。 MP I G S是运 行在 P 人 微机 平 台的 _具 型 C个 【 : 2MA GS的 V + 开发 方法 与步骤 PI C+ 软件, 它为用户提供两种使用方法 : 是利用软 其一 使用 V + 开发 MA G S c+ P I 应用程序 的最陕速 件 自身的各种功能,建立崩户的工作空间和专业 有效的方法就是使用 MA G S P I 类库 。这些类已经 属性数据库 ,并实现用户所需的各种专业检索和 为用户的程序与 M P I 操作平台的接口做好了 A GS 分析 ; 其二是借助软件所提供的完整 的二次开发 准备 , 用户可以体会到使用这些类可以很容易地 函数库 , M P I 平台 在 A GS 上开发 面向各 自 领域 的 实 现 MA GI P S系统 里 的 功 能 ,而 且 在 实 现 应用系统。目前 , 利用该平台已研制开发通信管网 MA GS系统功能的基础上用户还可以随意地添 PI 及配线 、 国土祥查 、 地籍管理 、 供水管网 、 煤气管 加 自己想要的功能。下面我们讲述如何构造—个 道、 城市综合管网、 电力配网、 城市规划 辅助作战 简单的 MA G S P I 二次开发的方法和基本步骤 。 指挥 、 P G S导航与监控、 环境保护与监测等一系列 2 新 建一 个 V . 1 C工程 应用 软件 系统 。 2 添加组件 m i mdl( . 2 sc . 控件) o l ,可用 O E L/

C# GIS二次开发代码6

C# GIS二次开发代码6

mapGIS.Visible = false;
layoutMain.Visible = true; toolGIS.SetBuddyControl(layoutMain); dataViewMenu.Checked = false; layoutViewMenu.Checked = true; CopyMapFromMaptoPageLayout();
} catch (Exception) {
} }Leabharlann mapGIS.Visible = true; toolGIS.SetBuddyControl(mapGIS); layoutMain.Visible = false; dataViewMenu.Checked = true; layoutViewMenu.Checked = false;
} layoutViewMenu 的单击事件: private void layoutViewMenu_Click(object sender, EventArgs e) {
layoutMain.Left = mapGIS.Left; layoutMain.Top = mapGIS.Top; layoutMain.Width = mapGIS.Width; layoutMain.Height = mapGIS.Height;
给 dataViewMenu 添加单击事件 在此事件中,改变 mapGIS 和 layoutMain 的 visible,并在菜单上选中相应的菜单。并设置与 toolGIS 关联的控件。 private void dataViewMenu_Click(object sender, EventArgs e) {
pFileName.Path = pFillePaths[i]; CreateLayer((IName)pFileName); } } } else if (pDadaObject.CanGetNames()) { pEnumName = pDadaObject.GetNames(); pEnumName.Reset(); pName = pEnumName.Next(); do { CreateLayer(pName); pName = pEnumName.Next(); } while (pName!=null); } } } public void CreateLayer(IName pName) { try { mapGIS.MousePointer = esriControlsMousePointer.esriPointerHourglass; ILayerFactoryHelper pLayerFactoryHelper; pLayerFactoryHelper = new LayerFactoryHelperClass(); IEnumLayer pEnumLayer; pEnumLayer = pLayerFactoryHelper.CreateLayersFromName(pName); pEnumLayer.Reset(); ILayer pLayer; pLayer = pEnumLayer.Next(); do { mapGIS.AddLayer(pLayer); pLayer = pEnumLayer.Next(); } while (pLayer!=null); mapGIS.MousePointer = esriControlsMousePointer.esriPointerDefault;

MapGIS开发平台二次开发

MapGIS开发平台二次开发
1.Jar包
Jar包
功能
备注说明
dcs-cls-1.0.0
集群管理服务
提供对DCServer集群的管理能力
dcs-cms-1.0.0
控制管理服务
提供对数据中心服务器的管理能力
dcs-dws-1.0.0
数据仓库服务
目录服务、地图服务、要素/栅格服务、三维数据服务、空间参考系服务等
dcs-fws-1.0.0
IDesigner:为MapGIS IGSS设计开发中心的应用层,基于DataCenter服务之上的Web服务体系,IDesigner以服务插件方式提供Web服务扩展,实现GIS功能与其他业务功能的扩展。
AppCenter:“空间信息软件应用中心”支持多类型的客户端——桌面端、Web端、移动端的应用,可便捷地获得GIS服务。通过SCenter的不断积累,AppCenter可提供的服务不断增多,能最大限度地满足用户的需求。
COM组件二次开发接口
组件级别的二次开发接口,提供二次开发需要的各种功能函数的支持,亦能同C++接口一样无差别的完成二次开发功能。
1.
模块
库文件
备注说明
TDE框架
TDEMain7.dll、TDEPluginBase7.dll、TDE3DCommon7.dll、FeatureNodeLayerLib.rpk、TDECommon7.dll、……
DesignCenter:“设计开发中心”提供了一个“零编程、巧组合、易搭建”的可视化搭建开发环境。不需要技术高超的程序员,不需要大量的编码,只需简单的搭建配置流程,结合个别满足特定需求的插件,即可实现复杂的应用。
SDesigner:为MapGIS IGSS设计开发中心的基础内核,并提供底层服务的扩展开发,即通过跨平台的内核服务群向上封装扩展,或采用服务插件方式扩展,同时可结合工作流机制进行功能扩展。

C#进行MapX二次开发之控件基本操作

C#进行MapX二次开发之控件基本操作

C#进行MapX二次开发之控件基本操作C#进行MapX二次开发之控件基本操作Posted on 2009-06-26 20:40 伍华聪阅读(2018) 评论(6) 编辑收藏上篇介绍了MapX的部分基本使用代码,包括放大、缩小、缩放到初始大小(全图)、平移、矩形选择、圆形选择、箭头、打开图层对话框、打开ActiveX属性对话框、添加符号等基本操作代码,本篇继续探讨一些控件的基本操作。

MapX提供的标准工具,不同的工具将会使鼠标能够完成多种任务。

例如,如果当前的工具设成miLabelTool,那么当单击鼠标时,会在此特指的地图对象上放置标签。

鼠标光标将根据正使用的工具更改形状。

MapX 可用的标准工具列表如下所示:导出地图为图片的操作代码:if (axMap1.GeoSet.Length < 1){MessageBox.Show("未加载地图,不能导出!");return;}SaveFileDialog exportFD = new SaveFileDialog();exportFD.Title = "导出当前地图";exportFD.Filter = "windows bitmap(*.bmp)|*.bmp|GIF (*.GIF)| *.gif|JPEG (*.JPG;JPEG;JPE)|*.JPG|PNG (*.PNG)|*.PNG|PSD (*.PSD)| *.PSD|TIFF (*.TIF)|*.TIF";if (exportFD.ShowDialog() == DialogResult.OK && (exportF D.FileName) != null){try{axMap1.ExportSelection = true;switch (exportFD.FilterIndex){case1:axMap1.ExportMap(exportFD.FileName, MapXLib.ExportForMapPaperHeight);break;case2:axMap1.ExportMap(exportFD.FileName, MapXLib.ExportFor matConstants.miFormatGIF, axMap1.MapPaperWidth, axMap1. MapPaperHeight);break;case3:axMap1.ExportMap(exportFD.FileName, MapXLib.ExportFor matConstants.miFormatJPEG, axMap1.MapPaperWidth, axMap1. MapPaperHeight);break;case4:axMap1.ExportMap(exportFD.FileName, MapXLib.ExportFor matConstants.miFormatPNG, axMap1.MapPaperWidth, axMap1. MapPaperHeight);break;case5:axMap1.ExportMap(exportFD.FileName, MapXLib.ExportFor matConstants.miFormatPSD, axMap1.MapPaperWidth, axMap1. MapPaperHeight);break;case6:axMap1.ExportMap(exportFD.FileName, MapXLib.ExportFor matConstants.miFormatTIF, axMap1.MapPaperWidth, axMap1.M apPaperHeight);break;case7:axMap1.ExportMap(exportFD.FileName, MapXLib.ExportFor.MapPaperHeight);break;}}catch (Exception ex){MessageBox.Show(ex.Message);}}添加图层的操作代码OpenFileDialog openFile = new OpenFileDialog();if (openFile.ShowDialog() == DialogResult.OK){yers.Add(openFile.FileName, 0);//默认值为0,C#调用不能省略默认值,图层的位置yerInfo liinfo;liinfo = new yerInfoClass();liinfo.Type = ayerInfoT ypeTab;liinfo.AddParameter("AutoCreateDataset", true);}查找图元信息:MapXLib.Features mX;mX = yers[1].AllFeatures;this.listView1.Items.Clear();foreach (MapXLib.Feature mY in mX){ListViewItem mZ = new ListViewItem(mY._FeatureID.ToStrin g());mZ.SubItems.Add(.T oString());this.listView1.Items.Add(mZ);}查找图层信息yers mX;mX = yers;this.listView1.Items.Clear();foreach (yer mY in mX){ListViewItem mZ = new ListViewItem(mY._Name);this.listView1.Items.Add(mZ);}获取鼠标移动的坐标double x = 0;double y = 0;axMap1.ConvertCoord(ref e.x, ref e.y, ref x, ref y, MapXLib.C onversionConstants.miScreenToMap);toolStripStatusLabel1.Text = string.Format("X:{0} Y:{1}", x, y);放置点工具操作try{yer mX;mX = yers[1];mX.Editable = true;yers.InsertionLayer = mX;this.axMap1.CurrentTool = MapXLib.ToolConstants.miAddP ointT ool;}catch (Exception ex){MessageBox.Show(ex.Message);}MapX自定义工具的使用:如果需要一种MapX 没有提供的工具栏按钮,可以使用Map.CreateCustomTool 方法来创建自定义工具。

mapgis二次开发教程

mapgis二次开发教程

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系统中经常使用的一些基本概念。

C# GIS二次开发代码3

C# GIS二次开发代码3

Line 和 polygon 与 point 相似 在窗体的 load 事件中添加代码如下 private void ColorSelection_Load(object sender, EventArgs e) { //点的初始颜色,文本框初始值 txtPointRed.Text = MainFrm.pointR.ToString(); txtPointGreen.Text = MainFrm.pointG.ToString(); txtPointBlue.Text = MainFrm.pointB.ToString(); //设置按钮的背景色 btnPointColor.BackColor = Color.FromArgb(MainFrm.pointR, MainFrm.pointG, MainFrm.pointB); } 给 btnPointColor 注册单击事件,代码如下 private void btnPointColor_Click(object sender, EventArgs e) { ColorDialog cd = new ColorDialog();
1、颜色选择器
添加窗体,name 为 ColorSelection,具体控件如下 控件名 GroupBox 3 个 Label 3 个 TextBox Button Button Name 随意 随意 txtPointRed、 txtPointGreen、txtPointBlue btnPointColor btnOK 备注 一个容器 Text 分别为 Red、Green、 Blue RGB 显示颜色 Text:OK; 最下方的按钮
m_pMapControl.MousePointer = esriControlsMousePointer.esriPointerDefault; } } private void mapGIS_OnBeforeScreenDraw(object sender, IMapControlEvents2_OnBeforeScreenDrawEvent e) { if (m_bRoating == false) { m_pMapControl.MousePointer = esriControlsMousePointer.esriPointerHourglass ; } } Private void mapGIS_OnMouseMove(object sender, IMapControlEvents2_OnMouseMoveEvent e) { if (m_bRoating == false) return; IPoint pPoint; pPoint=new PointClass(); pPoint.PutCoords(e.mapX,e.mapY); m_pMapControl.ActiveView.ScreenDisplay.RotateMoveTo(pPoint); m_pMapControl.ActiveView.ScreenDisplay.RotateTimer(); } private void mapGIS_OnMouseUp(object sender, IMapControlEvents2_OnMouseUpEvent e) { //旋转标志 if (m_bRoating == false) return; m_bRoating = false; double dRotationAngle; dRotationAngle = m_pMapControl.ActiveView.ScreenDisplay.RotateStop(); m_pMapControl.Rotation = dRotationAngle; m_pMapControl.Refresh(esriViewDrawPhase.esriViewGeography); }

MapGis二次开发

MapGis二次开发

Dim ldot As New L_DOT
例如,使用CreateObject函数声明和创建一个新的MapGis对象:
Dim ldot As L_DOT
Set ldot = CreateObject("MapGisBasCom1.L_DOT")
有些版本的Visual Basic 使用虚函数表绑定(vtable-binding),或早期绑定。直接使用
4.释放MAPGIS对象。
使用一个句点(.)把对象变量与该对象的属性、方法和集合分开。
四、使用C++和COM函数
可以使用C++和COM函数编写使用MAPGIS对象的程序。在C++程序中使用
MAPGIS对象所要求的步骤是:
1.嵌入MAPGIS对象和COM头文件,并链接到COM库。
hr=CoCreateInstance(CLSID_PntArea,
NULL,
CLSCTX_INPROC_SERVER,
IID_IPntArea,
(void**)&ptPAi);
注意:一个多线程程序,必须串行化对MAPGIS对象的所有访问,以避免重入.
[Directoris].[Library files]中加入“e:\mapgis62\lib”;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
二次开发基础知识
一、手动注册组件与注销组件
COM以及客户应用程序所需的、用来定位组件及对组件进行实例化的信息存储在
控制点操作 w32_cpnt.h

MAPGIS7二次开发入门篇C++

MAPGIS7二次开发入门篇C++

中地软件系列丛书MAPGIS70二次开发教程―入门篇(C++版)中地数码科技有限公司2006年4月武汉内容提要《MAPGIS70二次开发教程-入门篇( C++版)》是根据最新推出的MAPGIS70软件平台编写而成,主要介绍在VC环境下进行MAPGIS70二次开发必须具备的基础知识,通过实例程序一步步的带领大家了解和理解MAPGIS70二次开发的开发模式和开发技巧。

本书作为MAPGIS70地理信息系统系列产品配套使用手册,供使用MAPGIS70地理信息系统进行二次开发的入门用户参考。

版权所有武汉中地数码科技有限公司警告:未经武汉中地数码科技有限公司书面许可,任何单位和个人均不得以任何形式或手段复制或传播本书的任何部分。

在国家“十五”863项目的支持下,历经5年的科技攻关,由中地数码科技有限公司开发的具有完全自主版权的第一套“分布式超大型GIS平台软件MAPGIS70”已经研制成功。

MAPGIS70是属于最新的“第四代GIS”软件产品,具备“纵向多层,横向网格”的分布式体系结构,采用“面向服务”的最新设计思想,支持局域和广域网络环境下空间信息网格(SIG)的分布式计算,实现了面向空间实体及其关系的数据组织、高效海量空间数据的存储与索引、大尺度多维动态空间信息数据库、三维实体建模和分析,具有TB级空间数据处理能力、支持分布式空间信息分发与共享、网络化空间信息服务,支持Unix/Linux大型服务器,支持海量、分布式的国家空间基础设施建设。

《《MAPGIS70二次开发教程-入门篇( C++版)》是根据最新推出的MAPGIS70软件平台编写而成,主要介绍在VC环境下进行MAPGIS70二次开发必须具备的基础知识,通过实例程序一步步的带领大家了解和理解MAPGIS70二次开发的开发模式和开发技巧。

本书共分为两部分:第一部分是基于插件的应用框架开发,通过实例带领大家完成工具,视图插件制作的过程。

第二部分是基于MFC类库的应用框架开发,通过实例带领大家完成地图文档的显示编辑,空间分析功能模块的开发过程。

应用VC++对MAPGIS进行二次开发

应用VC++对MAPGIS进行二次开发
维普资讯
第1 8卷
20 0 2年
第 5期
9月


V o . 8 NO. 11 5 S p. e 200 2
Ge o olgy
应 用 V +对 MA GI 行 二 次 开 发 C+ P S进
何 涛
( 国核 工 业 地 质 局 2 0研 究 所 中 8 四川广汉 680 ) 1 3 0
( NT— NF **if,h r p t y e ; P I O no s ot n T p )
参 数 :入 口 : **if — 实 体 图形 信 息 ( n— *
if 间 由 MA GI n空 P S申请 ) ; p t p —— 点 参 数类 型 。 nTy e 出 口 :**if n—— 返 回 实 体 的 缺 省
择 “ o e e eain , “ tutme e l n C d G n rt ” 在 Sr c o mb ra g — i
RE G一
参 数 : 口 :i p —— 工作 区类 型 ( I 入 a ye t LN
— —
线 工 作 区 ; NT — 点 工 作 区 ; P — 区工 作 区。 其 定 义 在 头 文
在 应 用程 序 工程 中 , 1 选 择 <工程 >菜单 () 下 的 <设 置 >, 标 题 为 “ rjcS tig 的 窗 在 P oet et ” n 口中①选 择 卡 片 <c C+ >, Y 分 类 ” / + 在“ 中选
( ) 得 工 作 区代 号 2获
原 型 :h r G t dt e(h r a y e ; s ot eE i a so i p ) Ar t t
ga 下 ) 贝 到应 用 程 序 输 出 文 件 夹 ( : : rm 拷 如 d \

浅谈VC++环境下MAPGIS二次开发的实现

浅谈VC++环境下MAPGIS二次开发的实现

浅谈VC++ 环境下MAPGIS 二次开发的实现发布时间:2012-08-03来源:互联网我要说几句 |∙»用户解决方案2013优秀论文合订本∙»NIDays2013行业应用资源包∙»机器人在智能机器系统中的作用∙»LabVIEW 2013评估版软件【摘要】目前,利用VC++基于MAPGIS平台已经研发出很多适合各领域的应用软件,包括神舟六号返回搜救系统。

本文简要介绍了目前MAPGIS二次开发的四种开发方式,并将详细介绍两种方式的VC++具体实现方法,以供开发者选用适当的二次开发方式开展应用开发工作。

【关键词】VC++;MAPGIS二次开发;API;MFC;COM;ActiveX0.引言MAPGIS 为支持用户进行二次开发,提供了包括从最基本数据单元的读取、保存、更新和维护到地图库的建立和漫游,以及空间分析、图象处理等一系列功能完整的二次开发函数库,用户完全可以在MAPGIS 平台上开发面向各自领域的应用系统。

神舟六号返回搜救系统———“载人航天任务主着落场搜救辅助决策系统”就是以MS-VisualC++ 5.0 为开发语言,利用Win32 API 函数和MAPGIS API 函数,基于MAPGIS 地理信息系统平台开发研制的。

1. MAPGIS二次开发方式成熟实用的地理信息系统的重要标志就是它能够提供给用户二次开发的能力。

目前,二次开发库以API 函数、MFC 类库、COM 组件、ActiveX 控件四种方式提供[1]。

1.1 API(Application Program Interface)即微软提供的Windows 操作系统下应用程序的编程语言接口。

MAPGIS 二次开发库的实现被封装于若干动态连接库(DL L)中,是独立于开发工具的。

1.2 MFC(Microsoft Foundation Class) 微软提供的基础类,MAPGIS为运用MFC 的开发者提供了多个基于MFC 的可重用基类(如图1),将应用程序所需的常见基本功能作了封装,开发者从这些基类下派生即自动获得了从窗口显示控制到图形查询编辑的各项功能,使用便利,改动灵活。

MAPGIS地理信息系统的二次开发

MAPGIS地理信息系统的二次开发

16 测绘信息与工程 2000 N o .1M A PG IS 地理信息系统的二次开发郭际元 曾 文摘 要 介绍了M A PG IS 地理信息系统的二次开发的环境,工作区概念,空间实体及其数据组织,应用程序类型以及编写应用程序的方法。

关键词 地理信息系统 二次开发 工作区 空间实体 M A PG IS 地理信息系统是中国地质大学(武汉)信息工程学院,在十几年数字制图软件开发的基础上,开展G IS 应用系统研究工作而开发出来的。

该软件于1995年10月通过鉴定,经过这几年的不断完善和扩充,于1998年推出了5.32版本。

M A PG IS 是运行在PC 486以上微机平台的工具型软件,它为用户提供了两种使用方法:其一是利用软件自身的各种功能,建立用户的空间和专业属性数据库,并实现用户所需的各种专业检索和分析;其二是借助软件所提供的完整的二次开发函数库,在M A PG IS 平台上开发面向各自领域的应用系统。

目前,利用该平台已研制开发出通信管网及配线、国土详查、地籍管理、供水管网、煤气管道、城市综合管网、电力配网、城市规划、辅助作战指挥、GPS 导航与监控、环境保护与监测等一系列应用软件系统。

1 M A PG IS 的二次开发环境操作系统,M A PG IS 开发函数库以及M A PG IS 应用程序的相互关系,如图1。

目前,M A PG IS 二次开发库主要是以A P I 函数的方式提供的,这些函数的实现被封装在12个动态链接库(DLL )中,因此,是独立于开发工具的。

用户在所使用的高级语言中,如何调用W indow s 的A P I 函数,可依此调用M A PG IS 的二次开发函数。

M A PG IS 二次开发函数库,有工作区基础函数、图形显示输出、工作区管理函数、图形窗口操作、空间分析函数、地图库读取显示、图形编辑函数、图像输入输出、图像显示函数、彩色变换函数、图像处理函数以及进程控制函数。

用VC对MapX进行二次开发总结

用VC对MapX进行二次开发总结

用VC++对MapX进行二次开发总结用VC++对MapX进行二次开发总结GIS 2010-08-29 09:33:40 阅读291 评论0 字号:大中小订阅1.MapInfo GIS二次开发概述MapInfo是美国MapInfo公司的产品,是一种桌面地图信息系统。

它为用户提供了完整的地理信息解决方案,以帮助用户实现数据的可视化。

它自带一个功能强大、面向对象的编程工具——MapBasic,这就给用户提供了一个很好的二次开发环境。

目前MapInfo已逐渐成为地理信息系统领域应用较为广泛的工具之一,在我国的测绘、铁路、邮电、水利、林业等部门得到了广泛应用,并收到了良好的经济和社会效益。

目前MapInfo GIS的二次开发方法主要有以下几种方法:(1)方法一:直接使用MapBasic编制应用或分析模型MapBasic是与MapInfo密切集成的开发工具.通过它,用户可以定制MapInfo的界面,取代MapInfo的标准菜单,并能完成复杂、多样的数据查询及对地理对象进行各种空间操作。

但MapBasic开发的界面较单调,且对话框等常用Windows控件的编写较为困难。

(2)方法二:动态数据交换(DDE)通过DDE 建立MapInfo与应用模型之间的通信。

DDE 会话是两个Windows 应用程序交换信息的过程,,只有当两个支持DDE 的应用程序运行时,它们之间才可以进行DDE 会话。

在一个会话中,只有一个应用程序是主动的,称为客户,被动的应用程序称为服务器。

但这种G IS 与应用模型是分离的,不能保证服务器程序对客户程序的指令作出正确处理,故这种方式现在较为少用。

(3)方法三:通过OLE自动化技术(OLEAUTOMATION)MapInfo向容器程序暴露其可编程对象,这与通常在office系列软件中嵌入OLE对象是同一原理。

容器程序可以采用VC,VB,Delphi ,Pb等高级语言,编程手段灵活,但对地图的对象操作、控制仍然离不开MapBasic 语言,且高级语言对嵌入MapBasic 的编写和解释较为困难。

C# GIS二次开发代码2

C# GIS二次开发代码2
防止鼠标在空白处点击抛出的异常tryplyrnamelyrindex在状态栏中添加数据tssinformtext显示右键菜单ctmtocshowtocgisnewsystemdrawingpointexey
状态栏与右键菜单
在状态栏 statusGIS 中添加 toolStripStatusLabel1,name 改为 tssInform; 在 mainFrm 中添加一个右键菜单 ContexMenuStrip,name 改为 ctmToc; 引入命名空间using ESRI.ArcGIS.Controls; 添加全局变量public int lyrIndex; 在主窗体的 load 事件中将右键菜单与 tocGIS 关联,代码如下: this.tocGIS.ContextMenuStrip = this.ctmToc; 在 mainFrm 中,给 tocGIS 注册单击事件,代码如下 private void tocGIS_OnMouseDown(object sender, ESRI.ArcGIS.Controls.ITOCControlEvents_OnMouseDownEvent e) { esriTOCControlItem toccItem = esriTOCControlItem.esriTOCControlItemNone; ILayer pLyr = null; System.Object pIndex = null; System.Object pOther = null; IBasicMap pMap = null; //tocGIS.HitTest(int x, int y, ref esriTOCControlItem itemType, ref IBasicMap basicMap, ref ILayer layer, ref object unk, ref object data) //获取图层相关信息 tocGIS.HitTest(e.x, e.y, ref toccItem, ref pMap, ref pLyr, ref pOther, ref pIndex); //防止鼠标在空白处点击抛出的异常 try { for (int i = 0; i < yerCount - 1; i++) { //确定索引 if (yer[i].Name == ) lyrIndex = i; }

应用VC+ +对MAPGIS进行二次开发

应用VC+ +对MAPGIS进行二次开发

应用VC+ +对MAPGIS进行二次开发
何涛
【期刊名称】《铀矿地质》
【年(卷),期】2002(018)005
【摘要】本文介绍了用VC+ +对MAPGIS进行二次开发的方法和基本函数以及软件开发实例.
【总页数】3页(P318-320)
【作者】何涛
【作者单位】中国核工业地质局280研究所,四川广汉,618300
【正文语种】中文
【中图分类】TP311.52
【相关文献】
1.Pro/Engineer 二次开发:ProToolkit and VC+ +6.0 [J], 王志辉;张光伟
2.AutoCAD 及 MapGIS 软件二次开发实现南方 CASS 与 MapGIS 数据转换 [J], 陈盼芳;姚辉
3.运用MAPGIS进行二次开发的问题研究 [J], 秦佳
4.运用MAPGIS进行二次开发的问题研究 [J], 秦佳
5.利用VB进行MAPGIS二次开发建立房屋信息管理系统 [J], 韩丽蓉;过静珺因版权原因,仅展示原文概要,查看原文内容请购买。

C#进行MapX二次开发===

C#进行MapX二次开发===

C#进行MapX二次开发鹰眼一般是指GIS应用中,系统有两个一大一小的图,小图提供快速定位地图位置的功能,这个是在GIS中应用比较广泛的一个功能,在Google地图中,右下角也有一个小图框,也是指的鹰图。

如下图所示。

在本次介绍的例子中,左边是主地图,右边是小地图,即鹰眼。

鹰眼要实现下面几个功能:1。

主地图变化时,鹰眼也要做出相应的位置变化,以便更好展示位置所在。

2。

鹰眼地图移动到任何一个位置,主地图也要做相关联的位置变化,以实现地图的粗略定位。

3。

主地图实现鼠标滚轮的变化支持。

首先我们先设置主地图的鼠标滚轮支持,先在主地图上设置MouseWheelSupprot属性为miFullMousewheelSupport。

该值是表示地图视图支持滚轮的操作。

或者你在代码中添加下面的代码实现滚轮支持。

axMap1.MousewheelSupport = MapXLib.MousewheelSupportConstants.miFullMousewheelSupport;然后在MapViewChanged的事件中添加和鹰图关联的操作private void axMap1_MapViewChanged(object sender, EventArgs e){MapXLib.Feature tempFea;//声明Feature变量MapXLib.Style tempStyle = new MapXLib.Style();//声明Style变量Double Xmin, Xmax, Ymin, Ymax;RegionPoint Pmin, Pmax;//矩形边框还没有创建时if(Portal.gc.MainDialog.EagleAnoLayer.AllFeatures.Count == 0){//设置矩形边框样式tempStyle.RegionPattern = MapXLib.FillPatternConstants.miPatternNoFill;//设置Style的矩形内部填充样式tempStyle.RegionBorderWidth = 2;//设置Style的矩形边框宽度//在图层创建大小为Map1的边界的Rectangle对象tempFea = Portal.gc.MainDialog.EagleMap.FeatureFactory.CreateRegion(Portal.gc.MainDialog.MainMap.CtlBounds, tempStyle);Portal.gc.MainDialog.EagleFea = Portal.gc.MainDialog.EagleAnoLayer.AddFeature(tempFea, Missing.Value);//添加矩形边框return;}else{//否则,根据Map1的视野变化改变矩形边框的大小和位置Xmin = Portal.gc.MainDialog.MainMap.CtlBounds.XMin;Xmax = Portal.gc.MainDialog.MainMap.CtlBounds.XMax;Ymin = Portal.gc.MainDialog.MainMap.CtlBounds.YMin;Ymax = Portal.gc.MainDialog.MainMap.CtlBounds.YMax;MapXLib.Points feaPoint = Portal.gc.MainDialog.EagleFea.Parts[1];feaPoint.RemoveAll(); //除去已有的矩形边框的顶点//添加大小和位置已变化的矩形边框的四个顶点feaPoint.AddXY(Xmin, Ymin, Missing.Value);feaPoint.AddXY(Xmax, Ymin, Missing.Value);feaPoint.AddXY(Xmax, Ymax, Missing.Value);feaPoint.AddXY(Xmin, Ymax, Missing.Value);Portal.gc.MainDialog.EagleFea.Update(Missing.Value, Missing.Value);//更新显示if (Portal.gc.MainDialog.MainMap.Zoom < 3){ //如果放大到实际比例的1/2倍以上,则启动局部刷新线程Pmin.x = Xmin;Pmin.y = Ymin;Pmax.x = Xmax;Pmax.y = Ymax;}else{ //否则,停止局部刷新线程Pmin.x = 0;Pmin.y = 0;Pmax.x = 0;Pmax.y = 0;}if(fsFlag == 0){oldZoom = Portal.gc.MainDialog.MainMap.Zoom;oldCenterX = (Xmin + Xmax) / 2;oldCenterY = (Ymin + Ymax) / 2;}}}其中我们注意到了操作小图的地代码,是添加一个矩形图来表示大图的当前视点。

基于VC的MAPGIS二次开发-以烟台市环境地质信息管理系统为例

基于VC的MAPGIS二次开发-以烟台市环境地质信息管理系统为例
通过烟台市环境地质信息管理系统的设计探讨如何将mapgis67sdk与microsoftvisualc60编程语言相结合进行地理信息系统二次开发
基于VC的MAPGIS二次开发-以烟台市环境地质信息管理系统为例
基于VC的MAPGIS二次开发-以烟台市环境地质信息管理系统为例
通过烟台市环境地质信息管理系统的设计,探讨如何将MAPGIS67SDK与Microsoft Visual C++6.0编程语言相结合,进行地理信息系统二次开发.
作 者:吴玺 成建梅 常敏 作者单位:中国地质大学环境学院,武汉,430074 刊 名:地下水 英文刊名:UNDERGROUND WATER 年,卷(期):2010 32(3) 分类号:X141 关键词:MAPGIS二次开发 Microsoft Visual ቤተ መጻሕፍቲ ባይዱ++6.0 数据库
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

} 为了在视窗改变大小时,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, 所示
图10 定义了变量m_MapGIS后,要做的事是让视窗建立时,同时运行 m_MapGIS控件。要为视窗类添加WM_CREATE消息映射,并加入如下 代码: int CMapView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here m_MapGIS.Create(NULL, WS_VISIBLE,CRect(50,50,100,100), this, 0); return 0;
司推出的C++开发工具,它与Windows系统有很好的兼容性,自Visual C++5.0推出以来,它已成为开发Windows应用程序的最流行的C++开 发工具。我们就以Visual C++ 为例介绍怎样用C++实现混合使用 MAPGIS的多种二次开发方式。 二、用C++实现混合使用MAPGIS的多种二次开发方式 使用C++进行API、MAPGIS类库方式开发MAPGIS应用程序,大家 都很熟悉。这里主要是讲怎样用C++实现混合使用MAPGIS的三种二次 开发方式。对于C++使用MAPGIS控件开发MAPGIS应用程序,可能有些 用户还不太熟悉。所以先讲怎样用ActiveX控件开发MAPGIS应用程序, 再讲怎样用C++实现混合使用MAPGIS的三种二次开发方式。 1、Visual C++中使用ActiveX控件开发方式 MAPGIS推出的ActiveX控件二次开发方式,主要是对于那些使用基 于对象语言开发工具的用户,如Visual Basic,Delphi等,用这些开发工 具的用户就可以使用MAPGIS控件对象来快速构建MAPGIS应用程序。事 实上这种基于COM(组件对象模型)标准的MAPGIS控件是用C++开发 出来的,但是这种用C++做出来的好东东,被他人所用,总感觉不爽。 其实C++可以使用ActiveX控件开发,经常往对话框中放的一些编辑框 之类的东西就是一些ActiveX控件,但是MAPGIS是要在视图中显示大量 的图形的,并要进行操作,怎么办呢?你不要担心,对话框、视窗都是 派生于CWnd类的,它们都能支持嵌入ActiveX控件。下面分别介绍 一、 在对话框程序中使用MAPGIS控件 在对话框应用程序中使用MAPGIS的ActiveX控件,比较简单。我们 可以这样做。 首先将MAPGIS的ActiveX控件在Windows系统中注册,以GisEdit控 件为例,运行regsvr32.exe 注册。见图1。
图3 然后选择GisEdit Contrl控件并插入,如图4、图5所it控件大小,添加几个功能按钮,如图6所示。 白色部分为GisEdit控件。
图6 用C++实现混合使用MAPGIS的多种二次开发方式(二) 为了操作GisEdit控件,在ClassWizard中,将GisEdit控件添加为成员变 量。变量名为m_MapGIS。如图7所示
为了使应用开发能使用API方式,在stdafx.h文件中包含mapgis.h, 具体操作可参考《MapGIS地理信息系统开发手册》。 首先在上面的文 档/视窗应用程序中,在菜单资源中增加一个test字菜单,并增加card菜 单项,在视类(CMapView)中增加处理card菜单项的消息映射和函 数。函数代码如下: void CMapView::OnMenuCard() { // TODO: Add your command handler code here long id; CString fxj; fxj.Format("加密狗(卡)号:%d",id); id=_GetCardNo(); MessageBox(fxj); } 编译运行结果,如图12所示:
图9 插入控件后,你会发现ClassView中多了一个CGisEdit类,这表明已经把 控件加入到工程中来了,下面就可以进行操作了。我们还需要对 CgisEdit类进行一下改进,因为我们要通过视窗大小的变化来改变 CgisEdit控件的大小,查一下CgisEdi的基类就可发现它是CWnd类的派 生类,在CWnd类中有个MoveWindow(CRect rect)函数来改变窗体位置 和大小,不幸的是CgisEdit也有一个同样的函数,但功能不一样。所以 我们自己增加一个改变控件位置和大小的函数MoveWindows(int x,int y)。具体代码如下: void CGisEdit::MoveWindows(int x, int y) { CWnd::MoveWindow(0,0,x,y); } 在视窗类中,加入变量m_MapGIS,类型为CGisEdit;如图10所 示:
图7 为几个功能按钮添加消息映射,并编写对应的函数。代码如下: void CDdDlg::OnL() //装入MAPGIS线文件 { m_MapGIS.LoadLine(); } void CDdDlg::OnP() //装入MAPGIS点文件 { m_MapGIS.LoadPoint(); } void CDdDlg::OnPr() //装入MAPGIS工程文件 { m_MapGIS.LoadProject(); } void CDdDlg::OnR() //装入MAPGIS区文件 { m_MapGIS.LoadRegion(); } 编译运行后就可以了。运行结果见图8
图8 以上只是一个很简单的例子。对话框和控件都是由CWnd类的派生的, 利用MFC类的相关函数,可以完成更高级的功能,如对话框大小由程序 调整,GisEdit控件的位置和大小也可由程序动态调节,加入菜单、工具 条、状态条等,你要知道VB是在FROM上用GisEdit控件开发,这和VC中 对话框上用GisEdit控件开发,在原理上是一样,只不过VB有一个比较 易用的控件属性对话框,但VC可直接支持更多的功能,你完全可以用 MAPGIS控件在VC上开发出MAPGIS应用程序。 二、 文档/视窗应用程序中使用MAPGIS控件 在对文档/视窗应用程序程序中使用MAPGIS的ActiveX控件,并不复 杂。我们可以这样做。通过MFC AppWizard生成一个单文档/视窗框架 的应用程序。 建好工程后,选择“Project->Add project->Components and Controls…”后,选择“Registered ActiveX Controls”进入后,选择插入 GisEdit Control控件。如图9所示。
用C++实现混合使用MAPGIS的多种二次开发方式(一) 一、MAPGIS及其二次开发 1、MAPGIS简介 MAPGIS微机地理信息系统是武汉中地信息工程有限公司开发的GIS 基础平台软件系统。集地图输入编辑、数据库管理及空间分析为一体 GIS基础平台。可应用于建立基础地理信息系统,能应用于需要地理信 息的相关行业和应用系统。作为一个GIS基础平台软件,提供了多种二 次开发方式,用户可以在MAPGIS上进行二次开发,开发出适合自己需 要的应用系统。 2、MAPGIS二次开发方式 MAPGIS的二次开发方式主要有API函数、MFC类库、ActiveX控件三 种方式,MAPGIS二次开发库封装在若干动态链接库(DLL文件)中。 MAPGIS提供的二次开发方式采用的开发接口独立于开发工具(MFC类 库开发方式除外),用户无需学习新的开发工具就可以进行MAPGIS二 次开发,无需像某些有自己二次开发语言(工具)的GIS系统,要学习 其开发语言(工具)。下面介绍一下MAPGIS的三种二次开发方式: API函数:MAPGIS的API函数开发方式与Windows的API开发方式一 样。 MFC类库:MAPGIS类库是基于MFC库的开发方式。用面向对象的 思想把一些API功能进行封装,形成多个派生于MFC中CView类的可重用 基类,用户利用基于MFC的MAPGIS类库,可构建符合面向对象软件工 程的MAPGIS应用系统。 ActiveX控件:它是基于COM(组件对象模型)标准的一种程序组 件,能够嵌入程序中运行完成一定功能,在软件开发中实现了功能重 用。开发中只需简单调用功能接口就行了,开发更为简单、可靠、便 利。 3、C++开发工具 C++语言是最符合面向对象软件工程思想的开发工具,C++支持结 构化软件工程、面向对象工程、组件软件工程开发模式。事实上C++也 是应用最广泛的开发语言,在当今最先进的组件软件开发模式中, C++是支持得最好的,尽管组件的使用不依赖特定的语言,但开发符合 COM规范的软件组件的最佳开发语言还是C++。Visual C++ 是微软公
相关文档
最新文档