MAPGIS二次开发常见问题及解答
- 格式:doc
- 大小:52.50 KB
- 文档页数:8
1.为什么打开MAPGIS子系统时提示不能打开字库、子图库,图案库,线型库、颜色库?答:因为没有正确的设置子图库、图案库、线型库。
打开MAPGIS主程序菜单,进入"系统设置"选择字库、系统库所在的目录。
一般情况下,是放在MAPGIS安装的目录下。
2.如何进行符号库之间符号的拷贝?第一步:进"系统设置",把系统库目录设置为源符号库所在的目录。
第二步:进入"输入编辑",选择"系统库"菜单下的拷贝符号库。
第三步:系统要求选择目的符号库。
系统会弹出显示两个符号的对话框。
第四步:在对话框的左边,选择要拷贝的符号,在右边给这个符号选择一个合适的位置,最好将此符号放置目的符号库的尾部。
然后,选择红色的箭头,这样就实现了符号库之间的拷贝。
用插入、删除的操作来实现符号库的编辑。
按确定按钮后,退出操作。
3。
为什么打开点、线、区文件时,只看到区文件的图形,看不到点、线文件?这是因为区文件把点、线文件压盖了,只要从新调整一下文件的顺序即可。
在工程管理窗口中,文件的排列顺序是区、点、线。
4。
何进行AUTOCAD与MAPGIS之间的转换?首先要编辑AUTOCAD与MAPGIS之间的符号库之间的对照表。
在MAPGIS安装完之后,在…/MAPGIS6.5/SLIB目录下有四个文件,arc_map.pnt、arc_map.lin、cad_map.clr、cad_map.tab,这四个文件分别是CAD与MAPGIS的符号、线型、颜色、图层对照表。
这四个文件可以用写字板或记事本打开进行编辑。
因为这四个文件都是文本格式的。
打开文件会看到两列数字,在arc_map.pnt、arc_map.lin文件中前一列代表的是CAD符号、线型的名。
后一列代表MAPGIS的符号和线型的代码。
这个代码在数字测图里可以看到,进入数字测图,新建一个工程就可以看到地类编码的管理窗口。
1、小弟县里的1:1万现状图,请一大学进行矢量化并分乡制作了基本农田保护图,但此学校让学生们做的,矢量化没有按规范做,如没有分地类层,所有地类都放在一个文件中(点、线、区文件),且没有提供图例文件,小弟找了省国土厅有关单位要了一个现状图图例,应该是标准的,现请教:1、如何进行图例与地类的对应2、如何将各种地类分开,并能按村分地类进行面积统计,是否需要按地类分别建立点、线、区文件您好!因为我不知道您说的图例是在矢量化过程中所建的图例板,还是在基本农田保护图的右下角通常会出现的图示,这里我暂且认为是后者,如果有出入,我们可以再联系;第一个问题“图例和地类的对应”解答如下:方法一:就是自己去根据图中所出现的所有的地类图斑类型,一个一个的去做图例,地类名字通过新建一个点文件输入注释的方法编辑实现,这个方法做起来可能有些慢,但很简单,就是每个人都会做,矢量化;方法二:通过通过“创建分类图例”的方法实现在“输入编辑”模块下打开您的所有的矢量图1、在左边的“工程管理”窗口中单击鼠标右键,在弹出的快捷菜单中选择“自动提取图例”,系统弹出“自动提取图例”对话框;单击“选择图例文件”按钮,给生成的图例文件命名保存;然后单击“自动提取”按钮,系统提示“图例文件不存在,是否创建”,单击“是”,这时系统会显示所提取的图例情况;单击“确定”,然后保存工程图例文件推出;2、在左边的“工程管理”窗口中单击鼠标右键,在弹出的快捷菜单中选择“打开图例板”,可以看到上一步生成的图例板;3、在左边的“工程管理”窗口中单击鼠标右键,在弹出的快捷菜单中选择“创建分类图例”,系统弹出“创建分类图例”对话框;单击“预览”按钮,在系统弹出的对话框中,单击“自定义范围”按钮,然后在左边的窗口中,按住鼠标左键,然后拖动鼠标,拉出一个矩形框,这时会看到所有的图例文件都会出现在矩形框内,单击“关闭”按钮;系统返回上一级窗口,然后单击“创建”按钮,分类图例创建完毕;单击鼠标右键选择“复位”命令,这时就会看到创建的分类图例文件,不过一般都需要做进一步的编辑和修改;4、第二个问题:根据您的描述“所有地类都放在一个文件中(点、线、区文件)”,您的所有地类图斑应该都是在一个区文件里面,而且同一地类图斑应该具备相同的颜色,不同的地类图斑具备不同的颜色。
mapgis开发问题22008-04-07 18:2139、问:如何在map对象中实现只对激活的maplayer进行编辑和操作?[/B] 答:selectpoint方法可以选中所有的打开的点文件中的点。
而不仅仅是你激活的那个layer。
在最新的mapgis中对maplayer增加了一个selected的标志。
如果该标志设为1,则selectpoint 会在这个layer上做操作。
相反,则不会影响这个layer。
40、问:在mapgis输入编辑里有个功能叫“根据属性赋参数”,请问二次开发里提供这个功能吗?如果有怎么用,在哪里可以找到;如果没有怎么根据属性筛选符合条件的点。
答:、“根据属性赋参数”实际上就是找出那些满足你给定的属性条件的图元,然后给他们参数的某一项,或者某几项。
用AttAsktoList即可,具体可参考vb开发示例。
( 下载区)41、问:用Gisedit1.SelectGraphics选中图元后,如何取得其属性值,请用VB示范一下,谢谢!答:可以自己写一个交互操作,用鼠标双击、或者拉框来查询图元。
对于鼠标双击可以直接调用nearlin...,对于拉框可用rectasktolist来查询。
前者得到图元实体好,后者得到实体号列表。
然后用这些实体号即可取属性即可得到相应的属性。
42、问:有关IMS 的浏览查询的问题我想在IMS中实现浏览查询功能,能不能按照如下的思路做:1 选定某一个工作区;2 找出该工作区的所有图元3 显示该图元的信息问题是:怎么样找出一个工作区的所有图员dim PrjItemset PrjItem = Server.CreateObject("MpMapCom.MpPRJITEM.1")Session("MapViewObject").ViewPrj.GetItem i,PrjItem这样能得到i对应的工作区,下面该怎么得到此工作区的所有图元呢?答:要得到图元,是用户进行查询的,而查询有多种查询方法,可以模糊、点击等等,如果用添加查询,就用函数gisSearchByStr,点击就用gisSearchByHitting等等,lib库中有这样的函数,web开发实例中也有这样的例子,您可以看看那里的例子,希望对您有所帮助49、问:请教关于定位的问题。
mapgis的常见问题解答电脑制图基本步骤:在做⼀幅图之前,先新建⼀个⽂件夹(⽤来保存与该图有关的所有⽂件),⽤图名给该⽂件夹命名,例:×××矿1号剖⾯,之后将扫描的图放⼊该⽂件夹中。
打开MAPGIS主菜单,进⾏系统设置,把⼯作⽬录设置为刚才新建的⽂件夹(×××矿1号剖⾯),其余三项在安装MAPGIS软件时设置好。
因为扫描⽂件为(*.tif)格式,在MAPGIS中使⽤不变,因此需要转换成MAPGIS 可使⽤的⽂件格式(*msi),需要进⾏数据类型转换:MAPGIS主菜单→图象处理→图象分析(镶嵌配准)→⽂件→数据输⼊→转换数据类型:(*.tif)→添加⽂件(扫描的⽂件)→转换图形处理→输⼊编辑→确定:新建⼯程(把做的这张图看作⼀个⼯程),在左区点右键→新建区、新建线、新建点→⽮量化→装⼊光栅⽂件→描图其它常⽤功能:做平⾯图之前,⽣成标准图框::MAPGIS主菜单→实⽤服务→投影变换→系列标准图框→键盘⽣成矩形图框→矩形图框参数输⼊:坐标系:国家坐标系;带号:20/40;注记:公⾥值。
边框参数:内间距10,外间距1,边框宽1。
⽹线类型:绘制实线坐标线;⽐例尺:图的⽐例尺(例:5000);矩形分幅⽅法:任意公⾥矩形分幅。
图廓参数:横向起始公⾥值(去带号):例20556000→556.000,纵向起始公⾥值:例4820.000,横向结束公⾥值:,纵向结束公⾥值:,图廓内⽹线参数:⽹起始值(根据起始公⾥值定):,⽹间隔(根据⽐例尺定):;(例横向起始值为556.020,⽐例尺为5000,⽹起始值应为:556.500,⽹间隔为0.5)图幅名称:××××,图框⽂件名:×××,线参数设置→点参数设置→确定因为扫描图纸过程中会产⽣变形,为校正所产⽣的误差,需要⽤标准图框对扫描图转换后的(*.msi)格式的图纸进⾏图像校正,如下:MAPGIS主菜单→图象处理→图象分析→打开影像(*.msi⽂件)→镶嵌融合→打开参照⽂件→参照线⽂件→镶嵌融合→删除所有控制点→镶嵌融合→添加控制点(点原图(左侧)的某点,再点右侧图对应的点,之后连续三次空格,)→镶嵌融合→控制点浏览(添加⾜够数量的控制点)→校正预览→影像校正为将野外⽤GPS实测的地质、物化探点(有⼤地坐标)⼀次性投影到所图纸上,需要做投影变换先在Excel表格中输⼊X(数据去掉带号20或40)、Y、Z,另存为⽂本⽂件(制表符分隔)(*.txt)MAPGIS主菜单→实⽤服务→投影变换→投影转换→⽤户⽂件投影转换→设置⽤户⽂件:打开⽂件(*.txt)→点第⼆⾏数据⽤户投影参数:椭球参数:北京54坐标系;⽐例尺分母:1;坐标单位:⽶;投影带类型:6度带/3度带;结果投影参数:椭球参数:北京54坐标系;⽐例尺分母:图的⽐例尺分母(例5000);坐标单位:毫⽶;投影带类型:6度带/3度带按指定分隔符→设置分隔符:√Tab;数据类型:5:双精度,6:字符串,属性名称所在⾏:点图元参数设置→√⽣成点;X位于Y位于列→投影变换→确定→保存⽂件做物化探异常等值线图的步骤如下:先把Excel(*.xls)电⼦表格⽂件转换成(*.dat)⽂件(可以在Sufer软件中转换)注意:Excel表格中的Z值不可以有空格或符号(如≤),若某⼀点⽆数据,便⽤0补齐→MAPGIS主菜单→空间分析→DTM分析→Grd模型→离散数据⽹格化→设置参数:X:⽂件第列数据,Y:⽂件第列数据,Z:⽂件第列数据;⽹格化⽅法:Kring泛克⽴格法⽹格化;⽂件名:→保存为(*.GRD)格式⽂件→Grd模型→平⾯等值线图绘制→设置等值线参数:√等值线套区;√等值线光滑度处理:⾼程度;等值线层:删除当前分段,起始:,终⽌:,步增,→确认。
二次开发常见问题及解答、问:如何用生成明码文件?答:先利用手册看懂明码格式文件的格式,知道数据的组织方式,利用的文件函数创建一个文本型文件,吧数据库中的数据按照格式输出就是了。
、问:和的区别和联系?答:是以前老版本的东东,换成试试中包含了属性结构的详细信息,具体用法可参见二次开发帮助文档中第三章数据结构中关于属性字段描述结构,属性字段描述头和属性信息头的介绍,里面有该结构的详细内容。
、问:请教关于“不能打开子图库...”的问题,急!答:系统库路径不对,将、、三个文件拷贝到执行目录即可。
这几个语言件放在\\目录中。
或是运行可设置,该运行文件也同样在\\目录中。
、问:如果只知道工作区能不能依次得到工作区中的图元号,该如何得到啊!答:;;;;*;{()取点数(《){(()<)取点,返回值成功失败删除;…对该图元进行操作}}就是图元号、问:的函数,到底应该如何用啊!跟以前的不同了,给个例子吧!答:( * * *);点工作区号* 点位置号比如鼠标的位置图层开关标志,如不为空就只在打开状态的图层中查找是的长度出口返回距离返回值成功返回点号,失败为、问:如何屏蔽掉中的右键功能!!!答:有一个属性,同理也可以直接使用这个属性。
'不显示菜单'全部显示'显示窗口菜单'显示窗口编辑菜单'工具箱、问:如何将一个圆添加到一个工作区中?答:先用函数在工作区画园(或画弧)的时候需要自己生成坐标点,比如说 *,这里的空间需自己申请,其长度为,线的参数是,需要赋值,为区工作区号,为弧段号。
然后调用:();输入弧段。
然后添加区域入口: 区工作区号[] 区域数据块[] (弧段个数)[] ( 为弧段号)区域图形信息,需要赋值然后调用:();、问:急关于( * )函数!答:{ 工作区号图元类型图元号}定义一个数组你把所要闪烁的图元一个一个加进去就行了。
、问:实现查询多边形中图元的,并时期闪烁显示,应如何实现呢?答:用系列函数,然后可通过的闪烁机制完成。
由于MapGis当时设计的缺陷,有些问题一直存在。
根据软件的继承性,很多以MapGis为平台进行二次开发的软件都面临这些共性问题,大家只要用已经发现的问题进行排查是否为MapGis本身还是二次开发软件的问题。
先列出一些发现的相关MapGis缺陷及解决方案。
大家亦可看Section帮助。
1、文件名缺陷【应该是6.7以前所有的版本都存在】大概这个问题产生的影响比较大,很多情况下发生的错误提示你都可以看看是不是这个引起的,比如无法打开文件或者打开后为空,无法输出打印等等。
这个缺陷描述为:MapGis本身对文件夹目录深度由一定的限制;文件名方面就是不能有空格;还有一个就是文件名的字符总长限制。
很多人喜欢把文件放到桌面上编辑,殊不知桌面的路径(默认没有改桌面位置的)有空格文件名又长。
解决办法:看情况修改吧。
2、加载MSI影像文件时报MS_CANNOT_ALLOCMEM错误提示具体什么引起不是很清楚,有时候MSI文件过大也会提示;有些人说与IE8不兼容,但是我在干净的系统用IE8并不会出现问题;有些人提示用网上流传的那个“解决cannot错误”的补丁,其实我用过没什么用处,这个问题虽然不提示了,却又出现了其他错误或者功能损失。
但是这个问题在Windows 7下这个问题不会出现,又怎么解释呢?是MapGis设计的动态链接库问题吗?由于最新的Windows 7系统内核的改变,MapGis与系统出现了一些不兼容的状况(二次开发的也逃不过这关)。
目前已经发现的情况大致收集如下,如果大家在使用过程中碰到一些奇怪的问题(诸如假死,崩溃,退出,无法继续运行等等)欢迎大家踊跃举报,受益的将是使用MapGis用户,请所有参与反应问题的网友,首先要却确定这个问题是普遍存在的,无法消除有共性的,如果其他相同环境的人不存在此问题则可能是自己系统中存在其他不兼容性软件所致;其次,都要讲清楚问题出现的详细步骤描述,相关截图或演示视频;第3,为了交流请大家都不要把附件收费,以方便大家共同发现探讨问题所在和解决办法。
MAPGIS二次开发基础知识一、手动注册组件与注销组件COM以及客户应用程序所需的、用来定位组件及对组件进行实例化的信息存储在Windows的注册表(Registry)里。
因此,在使用组件之前要对组件进行注册,只有成功注册才能引用该组件,其具体步骤为:1.将包容组件的DLL文件放入MAPGIS PROGRAM目录下,假设物理路径为:D:\mapgis65\program\MapGisBasCom1.dll2.运行注册表程序注册组件Windows开始菜单-〉运行:regsvr32D:\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对话框出现,选中复选框嵌入MapGisBasCom1Type Library文件。
这要求VisualBasic环境或代码模块编辑器是活动的,正在运行。
三、使用MAPGIS对象可以使用Visual Basic编写使用MAPGIS对象的程序。
在Visual Basic程序中使用MAPGIS 对象所要求的步骤是:1.嵌入MAPGIS对象类型库。
2.建立一个MAPGIS对象。
3.使用MAPGIS对象和包含的其他对象。
4.释放MAPGIS对象。
基于Mapgis二次开发解决地图生产编制中的若干棘手问题一、课题出发点地图编制及生产是我室的主要业务工作。
我室每年完成上级下达的常规生产和应急保障任务,以及对外技术合作项目中,有非常大的一块是地图编制生产。
Mapgis软件是作业中主要使用的一个工具软件,该软件提供了丰富的二次开发包(如Mapgis v6.7 SDK)供用户所用,使用户具备了通过编程开发的途径来实现已有功能所不能满足的需求。
然而作业生产实际中碰到的具体问题千变万化,多种多样。
因此,基于Mapgis软件进行编程二次开发解决作业员、审校人员生产实际中费时费力的若干棘手问题,具有实际意义。
二、课题目的及定位目的:利用Mapgis软件的二次开发包进行软件开发,快速实现若干自动化或半自动化软件功能,直接为作业员提供技术保障。
主要意图:(1)解决地图生产中作业员需要花大量时间、精力所做重复劳动的不足,提高效率。
例如快速实现打表格。
(2)利用一些小的算法或巧妙办法帮助作业员,实现人工不容易判断、鼠标操作或者非常费力的问题。
例如利用算法实现街区快速化简为点状居民地,地图所编时居民地压盖严重情况下初步快速删除化简。
(3)通过大量的计算机后台帮助作业员及审校进行一些数据检查工作。
例如mapgis文件属性完整性检查,一致性检查。
定位:虽然在应急保障等任务中,已有的快速成图软件等产品发挥了重要作用。
但平时生产任务中,小问题、琐碎问题依然不断出现,影响成图效率,即“小问题大麻烦”。
本课题立足于平时利用Mapgis软件进行生产中所出现棘手问题的解决,对Mapgis软件不能提供一些规律化的功能编程实现,作为对大型快速成图软件的有效补充,进一步提高生产效率。
三、课题能实现的功能及指标:1.道路线要素合并、剪断自动赋里程;作业当中通常有道路沿线居民地出现增加、删除、移位,以及高速出入口、里程截点的变更等操作,作业员需要多次繁琐操作来人工计算道路里程的合并和分拆赋值,利用算法实现后台自动里程赋值,包括属性变更和里程注记变更。
1.为什么打开MAPGIS子系统时提示不能打开字库、子图库,图案库,线型库、颜色库?答:因为没有正确的设置子图库、图案库、线型库。
打开MAPGIS主程序菜单,进入"系统设置”选择字库、系统库所在的目录.一般情况下,是放在MAPGIS安装的目录下.2。
如何进行符号库之间符号的拷贝?第一步:进"系统设置",把系统库目录设置为源符号库所在的目录。
第二步:进入"输入编辑”,选择"系统库”菜单下的拷贝符号库。
第三步:系统要求选择目的符号库.系统会弹出显示两个符号的对话框。
第四步:在对话框的左边,选择要拷贝的符号,在右边给这个符号选择一个合适的位置,最好将此符号放置目的符号库的尾部。
然后,选择红色的箭头,这样就实现了符号库之间的拷贝。
用插入、删除的操作来实现符号库的编辑。
按确定按钮后,退出操作。
3。
为什么打开点、线、区文件时,只看到区文件的图形,看不到点、线文件?这是因为区文件把点、线文件压盖了,只要从新调整一下文件的顺序即可.在工程管理窗口中,文件的排列顺序是区、点、线。
4。
何进行AUTOCAD与MAPGIS之间的转换?首先要编辑AUTOCAD与MAPGIS之间的符号库之间的对照表。
在MAPGIS安装完之后,在…/MAPGIS6.5/SLIB目录下有四个文件,arc_map。
pnt、arc_map.lin、cad_map。
clr、cad_map.tab,这四个文件分别是CAD与MAPGIS的符号、线型、颜色、图层对照表。
这四个文件可以用写字板或记事本打开进行编辑。
因为这四个文件都是文本格式的。
打开文件会看到两列数字,在arc_map.pnt、arc_map。
lin文件中前一列代表的是CAD符号、线型的名。
后一列代表MAPGIS的符号和线型的代码。
这个代码在数字测图里可以看到,进入数字测图,新建一个工程就可以看到地类编码的管理窗口。
在cad_map.clr、cad_map。
MAPGIS一些小问题解答MAPGIS一些小问题解答1:在输入编辑中分数的编辑是怎么输入的?答:在输入编辑中以这样的方式输入“/***分子/***分母/”。
;2:图层必须要编号吗?有无必要?答:最好进行分层设置。
数据分层有利于同类要素进行分层管理,便于各类要素剥离和修改工作。
3:如何进行矢量数据的裁剪?答:裁剪有两中方法:一种是工程裁剪,一种是单文件裁剪。
一是在“图形编辑”模块,建立相应的裁剪区,打开工程文件,在“其它”菜单下选择“工程裁剪”进行参数设置后进行裁剪(裁剪后文件直接形成工程文件,无需再建立工程)。
一是在“图形裁剪”中进行,先建立裁剪框文件,然后新建裁剪工程将需要裁剪的文件逐一加入并设置好裁剪参数,然后进行裁剪(裁剪后文件不能形成工程文件,需再建立工程)。
4:怎样将小比例尺的图幅转换成大比例尺的图幅?答:在MAPGIS 6.7平台中“实用服务”下的“投影变换”模块中进行同一坐标系下进行投影转换,将不同数据的不同比例尺进行转换。
5:生成图框时,有没有具体要求小比例尺必须用标准图框生成?答:针对个人的具体数据,图框的生成完全是根据自己的数据进行选择(建议最终能用系统生成的标准图框,以利于提高图幅精度)。
6:如何快速的画出已知长度的水平线及垂直线?答:在“输入编辑”中的“线编辑”下“解析造线”按钮,选择角度距离定点,在画线的过程中从MAPCAD解析窗口下的角度和距离可以显示将要画的线的距离和角度;7:如何准确的在线节点处快速剪断线?答:可以通过先输入一段线并抓以有线节点,然后通过“相交线剪断”功能剪断,然后删除所输入的线段。
8:如何查询某条线图元各节点坐标?答:查询某条线图元各节点坐标,在“输入编辑”的“设置”菜单下“参数设置”中在“显示线坐标注记”前划勾,前提条件相关文件处于编辑状态下,再更新显示,则会显示相关图元坐标注记;9:在多文件工程中,如何查询某个图元所在文件(即在哪个点线面文件内)?答:在工程中打开数据文件并使之处于编辑状态,修改所需要查询的图元,然后修改数据文件打开状态,系统会提示某个“文件以修改,是否保存”此文件即是该图元所在的文件。
二次开发常见问题1、启动IMS服务后日志里面空间分析服务报错或空间分析无法使用原因一:IMS服务管理器中数据库配置问题空间分析要用到两个临时数据库,一个是SpatialAnalyIMS,要存储到商用数据库中;一个是IMSWEBGISGDB.HDF,存储到平台下的。
(1)确定数据库SpatialAnalyIMS已经附加到SQL数据库中;IMSWEBGISGDB.HDF附加到平台下;(2)如果是SQL2005的数据库,在IMS服务管理器中数据库配置中不要设置IP,设置数据库所在机器的计算机名称(这个是SQL2005数据库的问题)。
原因二:IMS服务管理器中矢量数据服务配置中没有勾选“启动空间分析服务”,勾选后要单击“保存”按钮,重启服务。
2、配置网络数据源SQL、ORACLE失败原因:学习版不支持网络数据源解释:要理解MapGIS的数据存储,分为两种,一种是本地数据源,一种是网络数据源。
本地数据源是以本地HDF文件方式存储网络数据源指的就是将空间数据存储在商用数据库里面。
一般用本地数据源就行了。
3、发布示例站点后,打开站点提示“无法远程连接服务器”原因一:矢量示例数据没有附加到平台中。
没有附加请附加数据。
原因二:IMS的GIS服务未启动,或不能正常启动。
要检查IMS服务发布数据后是否单击“保存”按钮,保存配置并启动服务。
4、发布示例站点后,打开站点出现白图原因:如果使用的是IE8,是浏览器兼容问题,更改IE8为兼容模式或者使用火狐等非IE内核的浏览器。
5、发布示例站点后,打开站点提示open地图失败解决方法:重新注册下\MapGIS K9\Program下的regxcom.bat、CheckWebFunction.dll6、使用平台一段时间后,打开平台发现无法使用,任何MapGIS的exe都无法打开原因:可能是Beta版包学习版注册问题1、打开注册表,将HKEY_CURRENT_USER\Software\MapGis\LCCSYSTEM下的NO_PROMPT键值改为“0”;2、打开平台,会弹出一个注册的对话框,里面有注册码,(注意此时不要关闭该对话框);3、根据该注册码到http: 的学习版注册模块注册,得要一个证书码;4、在之前弹出的对话框中入延长证书码后,再修改NO_PROMPT的键值为“1”,继续使用学习版证书。
mapgis常见问题解答:1,图像裁剪怎么裁剪???工程裁剪:其它→工程裁剪→另存一个地方→添加需要裁剪的文件→内裁→拓扑裁剪→装入裁剪框→开始裁剪→退出。
2,裁剪后图像为什么显示不出来?应该是你的裁剪参数设置有问题,造成空裁,所以什么都没有。
请正确设置,设置后最好在预览窗口复位显示,看看是否有图形3,工程裁剪为什么区数为0?这个很有可能是你画线是有没闭合的线,造区要求是封闭的曲线。
造区是在MAPGIS里有一个模块叫弧段提取的用这个造区但是线一定要封闭4,图形裁剪下面的输入编辑里的工程裁剪怎么用??工程裁剪视频/forum.php?mod=viewthread&tid=32255&fromuid=2532工程裁剪方法/forum.php?mod=viewthread&tid=2840&fromuid=2532裁剪时要注意,不要让被裁剪的文件处于编辑状态,只需要添加到工程即可。
另外裁剪框要确定是面文件而不是没有拓扑重建的弧段文件。
最后要确认被裁文件与裁剪框是否是套合的,就是空间位置关系是否正确的,就像你用北京的范围线去裁美国的范围,得出来的肯定是什么都没有,因为空间位置就不对。
三种方案:一、1 打开要裁剪的工程,确定你要裁剪的区域,工程中新建个线文件(WL文件),在左侧“工作台”区域这个新建的线旁边的方框里打上对勾(表示编辑当前新建的线文件),这时画个矩形把你要裁剪的区域圈在里面,然后保存新建的线文件,这就是你下面裁剪步骤所需的重要文件--“裁剪框”。
2 打开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)用户常常将显示比率与比例尺相混淆,比例尺一样应用于地图数据打印输出时,表示图上距离与实际距离的比值。
二次开发常见问题1、启动IMS服务后日志里面空间分析服务报错或空间分析无法使用原因一:IMS服务管理器中数据库配置问题空间分析要用到两个临时数据库,一个是SpatialAnalyIMS,要存储到商用数据库中;一个是IMSWEBGISGDB.HDF,存储到平台下的。
(1)确定数据库SpatialAnalyIMS已经附加到SQL数据库中;IMSWEBGISGDB.HDF附加到平台下;(2)如果是SQL2005的数据库,在IMS服务管理器中数据库配置中不要设置IP,设置数据库所在机器的计算机名称(这个是SQL2005数据库的问题)。
原因二:IMS服务管理器中矢量数据服务配置中没有勾选“启动空间分析服务”,勾选后要单击“保存”按钮,重启服务。
2、配置网络数据源SQL、ORACLE失败原因:学习版不支持网络数据源解释:要理解MapGIS的数据存储,分为两种,一种是本地数据源,一种是网络数据源。
本地数据源是以本地HDF文件方式存储网络数据源指的就是将空间数据存储在商用数据库里面。
一般用本地数据源就行了。
3、发布示例站点后,打开站点提示“无法远程连接服务器”原因一:矢量示例数据没有附加到平台中。
没有附加请附加数据。
原因二:IMS的GIS服务未启动,或不能正常启动。
要检查IMS服务发布数据后是否单击“保存”按钮,保存配置并启动服务。
4、发布示例站点后,打开站点出现白图原因:如果使用的是IE8,是浏览器兼容问题,更改IE8为兼容模式或者使用火狐等非IE内核的浏览器。
5、发布示例站点后,打开站点提示open地图失败解决方法:重新注册下\MapGIS K9\Program下的regxcom.bat、CheckWebFunction.dll6、使用平台一段时间后,打开平台发现无法使用,任何MapGIS的exe都无法打开原因:可能是Beta版包学习版注册问题1、打开注册表,将HKEY_CURRENT_USER\Software\MapGis\LCCSYSTEM下的NO_PROMPT键值改为“0”;2、打开平台,会弹出一个注册的对话框,里面有注册码,(注意此时不要关闭该对话框);3、根据该注册码到http: 的学习版注册模块注册,得要一个证书码;4、在之前弹出的对话框中入延长证书码后,再修改NO_PROMPT的键值为“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 二次开发函数库,有工作区基础函数、图形显示输出、工作区管理函数、图形窗口操作、空间分析函数、地图库读取显示、图形编辑函数、图像输入输出、图像显示函数、彩色变换函数、图像处理函数以及进程控制函数。
MAPGIS二次开发常见问题及解答MAPGIS, 解答, 开发1、问:如何用Delphi生成MAPGIS明码文件?答:先利用手册看懂明码格式文件的格式,知道数据的组织方式,利用delphi的文件函数创建一个文本型文件,吧数据库中的数据按照格式输出就是了。
2、问:ATT_STRU 和CATT_STRU的区别和联系?答:ATT_STRU是以前老版本的东东,换成CATT_STRU试试.CATT_STRU中包含了属性结构的详细信息,具体用法可参见二次开发帮助文档中第三章数据结构中关于属性字段描述结构,属性字段描述头和属性信息头的介绍,里面有该结构的详细内容。
3、问:请教关于“不能打开子图库...”的问题,急!答:系统库路径不对,将mapfont.gis、mconfig.gis、netcfg.gis三个文件拷贝到执行目录即可。
这几个语言件放在MAPGIS\PROGRAM\目录中。
或是运行MapEnv.exe可设置,该运行文件也同样在MAPGIS\PROGRAM\目录中。
4、问:如果只知道工作区ai 能不能依次得到工作区中的图元号,该如何得到啊!答:long i,pntn;short len;pnt_info inf;d_dot xy;char *dat;{_GetPntNum(ai,&i,&pntn);//取点数for(i=1;i《pntn;i++){if(_getpnt(ai,i,&xy,&dat,&len,&inf)<=0)//取点,返回值1/0/-1 成功/失败/删除continue;…对该图元进行操作}}i就是图元号5、问:MapGis6.5的SDK函数NearPnt,到底应该如何用啊!跟以前的不同了,给个例子吧!答:long WINAPI _NearPnt(short ai,D_DOT *xy,unsigned char *layerOnOffPad,short padLen,double *dis);ai 点工作区号*xy 点位置号---比如鼠标的位置layeronoffpad 图层开关标志,如不为空就只在打开状态的图层中查找padLen 是layerOnOffPad的长度出口 dis 返回距离返回值成功返回点号,失败为06、问:如何屏蔽掉CPrjEditView中的右键功能!!!答:editview有一个PopMenuControl属性,同理CPrjEditView也可以直接使用这个属性。
editview.PopMenuControl=-1 '///不显示菜单=0 '///全部显示=1 '///显示窗口菜单=2 '///显示窗口+编辑菜单=3 '///1+2+工具箱7、问:如何将一个圆添加到一个工作区Ai中?答:先用_AppendLin函数在工作区画园(或画弧)的时候需要自己生成坐标点,比如说D_DOT *dat,这里dat的空间需自己申请,其长度为long len,线的参数是LIN_INFO inf,需要赋值,short ai为区工作区号,long i 为弧段号。
然后调用:i = _AppendLin(ai,dat,len,&inf);输入弧段。
然后添加区域入口: ai - 区工作区号long rdat[2] - 区域数据块rdat[0] = 1(弧段个数),rdat[1]= i (i 为弧段号)rinf - 区域图形信息,需要赋值然后调用:_AppendReg(ai,rdat,2,&rinf);8、问:急关于_ShortFlash(ENTITY_MSG *pt,long num)函数!答:sypedef struct{short ai 工作区号short type 图元类型long elmi 图元号}ENTITY_MSG定义一个ENTITY_MSG数组你把所要闪烁的图元一个一个加进去就行了。
9、问:实现查询多边形中图元的,并时期闪烁显示,应如何实现呢?答:用_RectAskToList系列函数,然后可通过CGisView的闪烁机制完成。
10、问:CloseToolBox();//关闭工具箱OpenToolBox(); //打开工具箱我的程序只要进行了上面关闭和打开工具箱的操作后,在最后关闭时总是报错不管是用上面的函数还是用右键提供的工具箱控制,到最后都会出现一个Debug Assertion Failed!的错误,谁能解释一下呢?答:1、升级你的VC++(比如SP2、SP4)2、出现这种问题不用管,在编绎成Releas版后,这个问题不会再出现。
11、问:我在本机器开发环境上运行开发的软件没什么问题。
但在其他机器上,运行时出现找不到mfc42d.dll动态链接库文件。
请帮忙!答:你编的东西编译成DEBUG版,运行时需要mfc42.dll(这可不是MAPGIS的动态库,是VC的),如果你在编译时生成RELEASE版,到别的机子上运行,就不用找mfc42d.dll了。
12、问:有没有获得工程文件名的函数,有没有通过工程文件,来获得工程中的个文件的路径的函数!!!答:这个容易,兄弟用VC吧。
打开有关PRJ的头文件(*.h,具体是哪个我记不清了,自已找找),看里面的函数声明,这比看帮助或是开发指南要好用得多,而且看到的东西比什么指南都强。
里面的函数英文名称确切,当然,如果你的英文不行,先去补习一下吧。
13、问:颜色不准,急!急!急!!!我公司新买的HP DJ800PS的喷墨打印机,mapgis的颜色库用的是地矿部的标准色库,可每次执行光栅化输出以后,出图颜色与色标差太多,光栅化参数按推荐100、75、61、100设的。
答:又是该死的地矿部标准,那玩意是用6色印刷的,普通喷墨仪如果只有四色,怎么着都打不出一模一样的。
真要打出跟那标准一模一样,也简单,输出到EPS,花几千块,去印刷厂印一张回来。
14、问:请教各位大侠,logcount和count的区别?含义分别是什么?答:逻辑数:工作区中没有被删除的实体或者记录的个数。
物理数:工作区中所有的实体或者记录的个数,包括那些从被删除了的实体或者记录。
有如下等式:物理数=逻辑数+被删除的个数+115、问:请问有没有这样的函数?可以求出两个区之间的公共弧段呢。
有的话,请告诉我关于这个函数的详细情况。
谢谢!答:先取出第一个区的所有弧段,对每一条弧段取拓扑,看看拓扑的左区或者右区中有没有一个等于第二个区的区号。
如果有,那么这条弧段就是这两个区的公共弧段。
16、问:如何对表文件(.wb)进行读某条记录的某个字段!!!请问各位大虾:如何取得表文件的记录数,如何判断该记录是被删除,如何取某记录的某个字段值。
谢谢!!答:下载区二次开发示例第5章有详细说明。
17、问:请问在delphi里怎么调用mapgis的api函数答:和调windows的api一样调用。
如:function _FindNearColor(r,g,b:Integer):Integer;stdcall;External'mapdsp60.dll'procedure TForm1.Button1Click(Sender: TObject);varaa:Integer;S: string[11];beginaa:=_FindNearColor(255,255,255);Str(aa, S);ShowMessage(S);end;18、问:在对话框中实现区填充颜色、图案预览和选择答:自己重绘ListCtrl。
在DrawItem函数中绘制每一个Item的图形(用MyDC)。
19、问:请教各位大虾,如何用vb编程实现mapgis中属性文件转换为dbf、mdb等文件?答:目前VB中还没有提供导出属性数据的二次开发的方法。
你可以用ADO或者其他的工具将mapgis的属性数据读出来再形成各自的记录集,最后专程dbf、mdb 20、问:请教有关cmyk和mapgis颜色阶的问题答:目前组件中还没有相应的方法。
API中提供_FindNearCMYKColor、_FindNearColor等函数完成颜色的转换。
21、问:那位朋友有MAPGIS明码文件格式说明能不能给我发一份,急需,我实在是找不到。
谢谢。
答:详见mapgis地理信息系统使用手册数字制图篇22、问:1)如何能得到一条线的起始结点和终止结点(图元号)?2)知道一个node的x,y坐标,如何能得到这个node的图元号?答:取该线的拓扑信息。
LIN_TOP该拓扑信息中第一个和第二个元素就是其实结点和中止结点的图元号查找最近结点long _NearNod(short ai,D_DOT *xy,double *rtnDis)参数入口 ai - 结点工作区号*xy - 结点位置,xy为图形实际坐标出口 *rtndis - 返回距离返回值成功返回结点号(>0),失败返回023、问:在VC++中,如何从一装入工程文件中,读出工程文件中每个文件的名称和类型?谢谢,大虾。
答:7、取工程中某个文件的类型short _PRJGetItemType(MAPPROJECT prj,int index)参数:入口 prj -工程句柄index -文件位置出口无返回值:index指定文件的文件类型(LIN/PNT/REG/MSIIMG)9、取项目的文件名(带全路径)LPCTSTR _PRJGetItemName(MAPPROJECT prj,int index)参数:入口prj -工程句柄index -文件位置出口无返回值:index指定文件的名称的字符串10、取项目的文件名(不带全路径)short _PRJGetItemName1(MAPPROJECT prj,int index,char *name)参数:入口prj -工程句柄index -文件位置出口*name -返回文件的名称返回值:成功返回1,失败返回024、问:如果调用CGisEditView的编辑与修改什么的函数,那么视图窗口总是处于交互状态,请问如何取消?答:先调用SetExtTool(NULL);再调用SetOperateState(0);25、问:我用VB来调试一些帮助中列举的例子,在加载工程的时候用bPRJLoadProject(),系统给出错误:bad dll calling convention.我不知道什么原因?答:你在mapgis目录下的basic中找到map_prj.bas ,对bPRJLoadProject的声明如下。
Declare Function bPRJLoadProject Lib "mapprj60.dll" Alias "#1" (Optional ByVal aInst As Integer = 0) As Long你自己改为:Declare Function bPRJLoadProject Lib "mapprj60.dll" Alias "#1" (Optional ByVal aInst As Integer = 0, Optional ByVal fastOpen As Integer = 0) As Long26、问:请问用delphi调用mapgis的dll一定要用vc的dll对吗答:不用重装VC。