用C 实现混合使用MAPGIS的多种二次开发方式
- 格式:pdf
- 大小:800.88 KB
- 文档页数:13
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)用户常常将显示比率与比例尺相混淆,比例尺一般应用于地图数据打印输出时,表示图上距离与实际距离的比值。
结合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#进行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二次开发教程默认分类 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系统中经常使用的一些基本概念。
中地软件系列丛书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 二次开发的实现发布时间: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),将应用程序所需的常见基本功能作了封装,开发者从这些基类下派生即自动获得了从窗口显示控制到图形查询编辑的各项功能,使用便利,改动灵活。
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进行二次开发总结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 的编写和解释较为困难。