MAPGIS二次开发常见问题及解答

合集下载

MAPGIS中常见问题集锦

MAPGIS中常见问题集锦

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的符号和线型的代码。

这个代码在数字测图里可以看到,进入数字测图,新建一个工程就可以看到地类编码的管理窗口。

mapgis问题解答

mapgis问题解答

1、小弟县里的1:1万现状图,请一大学进行矢量化并分乡制作了基本农田保护图,但此学校让学生们做的,矢量化没有按规范做,如没有分地类层,所有地类都放在一个文件中(点、线、区文件),且没有提供图例文件,小弟找了省国土厅有关单位要了一个现状图图例,应该是标准的,现请教:1、如何进行图例与地类的对应2、如何将各种地类分开,并能按村分地类进行面积统计,是否需要按地类分别建立点、线、区文件您好!因为我不知道您说的图例是在矢量化过程中所建的图例板,还是在基本农田保护图的右下角通常会出现的图示,这里我暂且认为是后者,如果有出入,我们可以再联系;第一个问题“图例和地类的对应”解答如下:方法一:就是自己去根据图中所出现的所有的地类图斑类型,一个一个的去做图例,地类名字通过新建一个点文件输入注释的方法编辑实现,这个方法做起来可能有些慢,但很简单,就是每个人都会做,矢量化;方法二:通过通过“创建分类图例”的方法实现在“输入编辑”模块下打开您的所有的矢量图1、在左边的“工程管理”窗口中单击鼠标右键,在弹出的快捷菜单中选择“自动提取图例”,系统弹出“自动提取图例”对话框;单击“选择图例文件”按钮,给生成的图例文件命名保存;然后单击“自动提取”按钮,系统提示“图例文件不存在,是否创建”,单击“是”,这时系统会显示所提取的图例情况;单击“确定”,然后保存工程图例文件推出;2、在左边的“工程管理”窗口中单击鼠标右键,在弹出的快捷菜单中选择“打开图例板”,可以看到上一步生成的图例板;3、在左边的“工程管理”窗口中单击鼠标右键,在弹出的快捷菜单中选择“创建分类图例”,系统弹出“创建分类图例”对话框;单击“预览”按钮,在系统弹出的对话框中,单击“自定义范围”按钮,然后在左边的窗口中,按住鼠标左键,然后拖动鼠标,拉出一个矩形框,这时会看到所有的图例文件都会出现在矩形框内,单击“关闭”按钮;系统返回上一级窗口,然后单击“创建”按钮,分类图例创建完毕;单击鼠标右键选择“复位”命令,这时就会看到创建的分类图例文件,不过一般都需要做进一步的编辑和修改;4、第二个问题:根据您的描述“所有地类都放在一个文件中(点、线、区文件)”,您的所有地类图斑应该都是在一个区文件里面,而且同一地类图斑应该具备相同的颜色,不同的地类图斑具备不同的颜色。

MAPGIS 开发问题

MAPGIS 开发问题

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的常见问题解答

mapgis的常见问题解答

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进行二次开发的问题研究
学 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/

MAPGIS二次开发常见问题及解答1

MAPGIS二次开发常见问题及解答1

二次开发常见问题及解答、问:如何用生成明码文件?答:先利用手册看懂明码格式文件的格式,知道数据的组织方式,利用的文件函数创建一个文本型文件,吧数据库中的数据按照格式输出就是了。

、问:和的区别和联系?答:是以前老版本的东东,换成试试中包含了属性结构的详细信息,具体用法可参见二次开发帮助文档中第三章数据结构中关于属性字段描述结构,属性字段描述头和属性信息头的介绍,里面有该结构的详细内容。

、问:请教关于“不能打开子图库...”的问题,急!答:系统库路径不对,将、、三个文件拷贝到执行目录即可。

这几个语言件放在\\目录中。

或是运行可设置,该运行文件也同样在\\目录中。

、问:如果只知道工作区能不能依次得到工作区中的图元号,该如何得到啊!答:;;;;*;{()取点数(《){(()<)取点,返回值成功失败删除;…对该图元进行操作}}就是图元号、问:的函数,到底应该如何用啊!跟以前的不同了,给个例子吧!答:( * * *);点工作区号* 点位置号比如鼠标的位置图层开关标志,如不为空就只在打开状态的图层中查找是的长度出口返回距离返回值成功返回点号,失败为、问:如何屏蔽掉中的右键功能!!!答:有一个属性,同理也可以直接使用这个属性。

'不显示菜单'全部显示'显示窗口菜单'显示窗口编辑菜单'工具箱、问:如何将一个圆添加到一个工作区中?答:先用函数在工作区画园(或画弧)的时候需要自己生成坐标点,比如说 *,这里的空间需自己申请,其长度为,线的参数是,需要赋值,为区工作区号,为弧段号。

然后调用:();输入弧段。

然后添加区域入口: 区工作区号[] 区域数据块[] (弧段个数)[] ( 为弧段号)区域图形信息,需要赋值然后调用:();、问:急关于( * )函数!答:{ 工作区号图元类型图元号}定义一个数组你把所要闪烁的图元一个一个加进去就行了。

、问:实现查询多边形中图元的,并时期闪烁显示,应如何实现呢?答:用系列函数,然后可通过的闪烁机制完成。

MapGis缺陷及解决方案

MapGis缺陷及解决方案

由于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 k9 二次开发基础知识 个人总结 强烈推荐

mapgis k9 二次开发基础知识 个人总结 强烈推荐

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对象。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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。

相关文档
最新文档