MAPGIS二次开发常见问题汇总.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
### MAPGIS二次开发常见问题汇总知识点解析 #### 一、Delphi 生成 MAPGIS 明码文件的方法 在使用Delphi进行MAPGIS二次开发时,若需生成MAPGIS明码文件,首先需理解明码文件的基本格式。明码文件是一种用于存储地理信息系统(GIS)数据的文本文件,通过Delphi可以方便地创建这种文件。 **步骤如下**: 1. **阅读手册**:了解明码格式文件的具体格式与数据组织方式。 2. **创建文件**:使用Delphi的文件函数创建一个文本型文件。 3. **输出数据**:按照明码文件的格式要求,将数据库中的数据输出至文件中。 #### 二、ATT_STRU 和 CATT_STRU 的区别与联系 - **ATT_STRU**:这是MAPGIS早期版本中使用的属性结构,主要用于存储图元的属性信息。 - **CATT_STRU**:相较于ATT_STRU,CATT_STRU是更现代的属性结构,包含了更多详细的属性信息,如属性字段描述结构等。在进行二次开发时,建议优先使用CATT_STRU。 **使用建议**:在实际应用中,若遇到兼容性问题或者需要更详细的属性信息时,可以尝试替换为CATT_STRU。具体的使用方法可参考二次开发帮助文档中的相关内容。 #### 三、解决“不能打开子图库”的问题 当遇到“不能打开子图库”的错误提示时,可能是由于系统库路径设置不正确导致的。解决方法如下: 1. **复制必要文件**:将`mapfont.gis`、`mconfig.gis`、`netcfg.gis`这三个文件复制到执行目录中。 2. **检查文件位置**:确保上述文件位于`MAPGIS\PROGRAM\`目录下。 3. **运行设置工具**:可以通过运行`MapEnv.exe`来设置环境变量,该文件同样位于`MAPGIS\PROGRAM\`目录下。 #### 四、获取工作区中的图元号 如果已知工作区号`ai`,可以通过以下代码片段获取工作区中的图元号: ```delphi var i, pntn: LongInt; len: ShortInt; inf: PntInfo; xy: D_DOT; dat: PChar; begin _GetPntNum(ai, i, pntn); // 获取点数 for i := 1 to pntn do begin if (_getpnt(ai, i, xy, dat, len, inf) <= 0) then // 获取点,返回值 1/0/-1 成功/失败/删除 Continue; // 对该图元进行操作 end; end; ``` 其中`i`即为图元号。 #### 五、使用_NearPnt函数 在MAPGIS 6.5版本中,_NearPnt函数用于查找最近点,具体使用方法如下: ```delphi function _NearPnt(ai: ShortInt; xy: PD_DOT; layerOnOffPad: PByte; padLen: ShortInt; var dis: Double): LongInt; stdcall; ``` - `ai`:点工作区号 - `xy`:点位置号 - `layerOnOffPad`:图层开关标志,若不为空,则仅在打开状态的图层中查找 - `padLen`:`layerOnOffPad`的长度 - `dis`:返回的距离 返回值表示找到的点号,若未找到则返回0。 #### 六、屏蔽CPrjEditView中的右键功能 为了屏蔽CPrjEditView中的右键菜单功能,可以设置`PopMenuControl`属性。例如: ```delphi editview.PopMenuControl := -1; // 不显示菜单 ``` - `-1`:不显示菜单 - `0`:全部显示 - `1`:显示窗口菜单 - `2`:显示窗口+编辑菜单 - `3`:显示窗口+编辑菜单+工具箱 #### 七、向工作区添加圆 要在工作区中添加圆,需要使用_AppendLin函数来绘制圆或弧。具体步骤如下: 1. 使用`_AppendLin`函数根据需要自动生成坐标点。 2. 使用`_AppendReg`函数添加区域。 示例代码如下: ```delphi var dat: ^D_DOT; len: LongInt; inf: LinInfo; ai, i: ShortInt; rdat: array [0..1] of LongInt; rinf: RegInfo; begin // ...生成坐标点... i := _AppendLin(ai, dat, len, @inf); // 输入弧段 // ...设置区域数据块... rdat[0] := 1; // 弧段个数 rdat[1] := i; // 弧段号 _AppendReg(ai, rdat, 2, @rinf); // 添加区域 end; ``` #### 八、使用_ENTITY_MSG数组实现图元闪烁 为了实现特定图元的闪烁效果,可以使用_ENTITY_MSG数组。定义如下: ```delphi type ENTITY_MSG = record ai: ShortInt; // 工作区号 type: ShortInt; // 图元类型 elmi: LongInt; // 图元号 end; ``` 使用方法: 1. 定义一个_ENTITY_MSG数组。 2. 将需要闪烁的图元信息添加到数组中。 3. 使用_ShortFlash函数进行闪烁处理。 #### 九、查询多边形中图元并闪烁显示 为了实现查询多边形中图元的功能,并使其闪烁显示,可以使用_RectAskToList系列函数,并结合CGisView类的闪烁机制完成。 示例步骤如下: 1. 使用_RectAskToList系列函数查询多边形内的图元。 2. 获取图元列表后,利用CGisView类提供的闪烁机制实现图元的闪烁显示。 #### 十、解决CloseToolBox和OpenToolBox导致的Debug Assertion Failed错误 在使用CloseToolBox和OpenToolBox函数进行工具箱的关闭和打开操作时,可能会遇到Debug Assertion Failed错误。这通常是由于资源管理不当引起的。 **解决方法**: 1. **检查工具箱状态**:确保在关闭工具箱之前,工具箱是处于打开状态的。 2. **资源释放**:在关闭工具箱前,检查是否有其他资源未被正确释放。 3. **避免频繁操作**:尽量减少频繁地关闭和打开工具箱的操作次数。 4. **错误调试**:使用调试工具定位具体的错误发生点,并针对性地进行修复。 通过上述方法可以有效地解决在MAPGIS二次开发过程中遇到的常见问题,提高开发效率。
- 粉丝: 231
- 资源: 2万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- springboot项目同城上门喂遛宠物系统.zip
- 数据分析-71-关于B站每周必看系列榜单数据可视化
- springboot项目网上商品订单转手系统boot.zip
- springboot项目微乐校园.zip
- springboot项目玩具租赁系统boot.zip
- vcs安装数据手册pdf
- springboot项目武汉君耐营销策划有限公司员工信息管理系统.zip
- springboot项目纹理生成图片系统.zip
- springboot项目无人智慧超市管理系统_niyfl.zip
- 【AI11111111111111】
- springboot项目闲置图书分享boot.zip
- springboot项目物业管理系统_ahx.zip
- springboot项目西安旅游系统.zip
- springboot项目项目申报管理系统.zip
- springboot项目小型企业客户关系管理系统.zip
- springboot项目箱包存储系统.zip