版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MAPGIS二次开发常见问题及解答MAPGIS, 解答, 开发1、问:如何用Delphi生成MAPGIS明码文件?答:先利用手册看懂明码格式文件的格式,知道数据的组织方式,利用delphi的文件函数创建一个文本型文件,吧数据库中的数据按照格式输出就是了。2、问:ATT_STRU 和CATT_STRU的区别和联系?答: ATT_STRU是以前老版本的东东,换成CATT_STRU试试.CATT_STRU中包含了属性结构的详细信息,具体用法可参见二次开发帮助文档中第三章数据结构中关于属性字段描述结构,属性字段描述头和属性信息头的介绍,里面有该结构的详细内容。3、问:请教关于“不能打开子图库.”的问题
2、,急!答:系统库路径不对,将mapfont.gis、mconfig.gis、netcfg.gis三个文件拷贝到执行目录即可。这几个语言件放在MAPGISPROGRAM目录中。或是运行MapEnv.exe可设置,该运行文件也同样在MAPGISPROGRAM目录中。4、问:如果只知道工作区 ai 能不能依次得到工作区中的图元号,该如何得到啊!答:long i,pntn;short len;pnt_info inf;d_dot xy;char *dat;_GetPntNum(ai,&i,&pntn);/取点数for(i=1;ipntn;i+)if(_getpnt(ai,i,&
3、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 图层开关标志,如不为空
4、就只在打开状态的图层中查找padLen 是layerOnOffPad的长度出口 dis 返回距离返回值成功返回点号,失败为06、问:如何屏蔽掉CPrjEditView中的右键功能!答:editview有一个PopMenuControl属性,同理CPrjEditView也可以直接使用这个属性。editview.PopMenuControl=-1 '/不显示菜单
5、; =0 '/全部显示 =1 '/显示窗口菜单 =2 '/显示窗口+编辑菜单
6、160; =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);输入弧段。然后添加区域入
7、口: ai - 区工作区号 long rdat2 - 区域数据块 rdat0 = 1(弧段个数),rdat1= i (i 为弧段号) rinf - 区域图形信息,需要赋值然后调用: _AppendReg(ai,rdat,2,&rinf);8、问:急关于_ShortFlash(ENTITY_MSG *pt,long num)函数!答:sypedef structshort ai 工作区号short
8、type 图元类型long elmi 图元号ENTITY_MSG定义一个ENTITY_MSG数组你把所要闪烁的图元一个一个加进去就行了。9、问:实现查询多边形中图元的,并时期闪烁显示,应如何实现呢?答:用_RectAskToList系列函数,然后可通过CGisView的闪烁机制完成。10、问:CloseToolBox();/关闭工具箱OpenToolBox(); /打开工具箱我的程序只要进行了上面关闭和打开工具箱的操作后,在最后关闭时总是报错不管是用上面的函数还是用右键提供的工具箱控制,到最后都会出现一个Debug Assertion Failed!的错误,谁能解释一下呢?答: 1、升级你的V
9、C+(比如SP2、SP4)2、出现这种问题不用管,在编绎成Releas版后,这个问题不会再出现。11、问:我在本机器开发环境上运行开发的软件没什么问题。但在其他机器上,运行时出现找不到mfc42d.dll动态链接库文件。请帮忙!答:你编的东西编译成DEBUG版,运行时需要mfc42.dll(这可不是MAPGIS的动态库,是VC的),如果你在编译时生成RELEASE版,到别的机子上运行,就不用找mfc42d.dll了。12、问:有没有获得工程文件名的函数,有没有通过工程文件,来获得工程中的个文件的路径的函数!答:这个容易,兄弟用VC吧。打开有关PRJ的头文件(*.h,具体是哪个我记不清了,自已找
10、找),看里面的函数声明,这比看帮助或是开发指南要好用得多,而且看到的东西比什么指南都强。里面的函数英文名称确切,当然,如果你的英文不行,先去补习一下吧。13、问:颜色不准,急!急!急!我公司新买的HP DJ800PS的喷墨打印机,mapgis的颜色库用的是地矿部的标准色库,可每次执行光栅化输出以后,出图颜色与色标差太多,光栅化参数按推荐100、75、61、100设的。答:又是该死的地矿部标准,那玩意是用6色印刷的,普通喷墨仪如果只有四色,怎么着都打不出一模一样的。真要打出跟那标准一模一样,也简单,输出到EPS,花几千块,去印刷厂印一张回来。14、问:请教各位大侠,logcount和count的
11、区别?含义分别是什么?答:逻辑数:工作区中没有被删除的实体或者记录的个数。物理数:工作区中所有的实体或者记录的个数,包括那些从被删除了的实体或者记录。有如下等式:物理数逻辑数被删除的个数115、问:请问有没有这样的函数?可以求出两个区之间的公共弧段呢。有的话,请告诉我关于这个函数的详细情况。谢谢!答:先取出第一个区的所有弧段,对每一条弧段取拓扑,看看拓扑的左区或者右区中有没有一个等于第二个区的区号。如果有,那么这条弧段就是这两个区的公共弧段。16、问:如何对表文件(.wb)进行读某条记录的某个字段!请问各位大虾:如何取得表文件的记录数,如何判断该记录是被删除,如何取某记录的某个字段值。谢谢!答
12、:MAPGIS.COM.CN下载区二次开发示例第5章有详细说明。17、问:请问在delphi里怎么调用mapgis的api函数答:和调windows的api一样调用。如:function _FindNearColor(r,g,b:Integer):Integer;stdcall;External'mapdsp60.dll'procedure TForm1.Button1Click(Sender: TObject);var aa:Integer; S: string11;begin aa:=_FindNearCol
13、or(255,255,255); Str(aa, S); ShowMessage(S);end;18、问:在对话框中实现区填充颜色、图案预览和选择答:自己重绘ListCtrl。在DrawItem函数中绘制每一个Item的图形(用MyDC)。19、问:请教各位大虾,如何用vb编程实现mapgis中属性文件转换为dbf、mdb等文件?答:目前VB中还没有提供导出属性数据的二次开发的方法。你可以用ADO或者其他的工具将mapgis的属性数据读出来再形成各自的记录集,最后专程dbf、mdb20、问:请教有关cmyk和mapgis颜色阶的问题答:目前组件中还没
14、有相应的方法。API中提供_FindNearCMYKColor、_FindNearColor等函数完成颜色的转换。21、问:那位朋友有 MAPGIS明码文件格式说明能不能给我发一份,急需,我实在是找不到。谢谢。答:详见mapgis地理信息系统使用手册数字制图篇22、问: 1)如何能得到一条线的起始结点和终止结点(图元号)?2)知道一个node的x,y坐标,如何能得到这个node的图元号?答:取该线的拓扑信息。LIN_TOP该拓扑信息中第一个和第二个元素就是其实结点和中止结点的图元号查找最近结点long _NearNod(short ai,D_DOT *xy,double
15、*rtnDis) 参数入口 ai - 结点工作区号 *xy - 结点位置,xy为图形实际坐标出口 *rtndis - 返回距离返回值成功返回结点号(>0),失败返回023、问:在VC+中,如何从一装入工程文件中,读出工程文件中每个文件的名称和类型?谢谢,大虾。答:7、取工
16、程中某个文件的类型 short _PRJGetItemType(MAPPROJECT prj,int index) 参数:入口 prj 工程句柄
17、160; index 文件位置出口无返回值:index指定文件的文件类型(LIN/PNT/REG/MSIIMG)9、取项目的文件名(带全路径) LPCTSTR _PRJGetI
18、temName(MAPPROJECT prj,int index) 参数:入口 prj 工程句柄
19、 index 文件位置出口无返回值:index指定文件的名称的字符串10、取项目的文件名(不带全路径) short _PRJGetItemName1(MAPPROJECT prj,int index,char *name) 参数:入口 prj 工程句柄
20、 index 文件位置出口 *name 返回文件的名称返回值:成功返回1,失败返回024、问:如果调用CGisEditView的编辑与修改什么的函数,那么视图窗口总是处于交互状态,请问如何取消?答:先调用SetEx
21、tTool(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
22、 = 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。只需要到别的地方去找一个MFC42D。DLL文件复制到SYSTEM目录即可。27、问:我想取消EditView的右键功能,而自己用C
23、ommand1(在vb中)来实现,该怎么样做?(比如实现放大、缩小、平移、更新、复位等)答: EditView空间提供zoomin()放大,zoomout()缩小等对窗口操作的方法。具体可参考对象浏览器中对各方法的注释。28、问:我在求距离和面积的时候想先画出线然后得到距离或面积,就跟在MAGPGIS图库管理子系统中距离测量和面积测量功能一样,又该怎么样来实现?答:画线可以采用异或线的方法,鼠标点击的每个点都转换成逻辑坐标,放入D_DotSet,再用CalculateLength,CalculateOneArea求长度和面积。29、问:急!关于_InputFileName
24、()函数我的代码是这样的:char * strOutPath;char * fileter;strOutPath=NULL;fileter="wt"_InputFileName(strOutPath,NULL,NULL,"PNT",'1',fileter,NULL);我调试的时候,一到最后一行就报错。错误信息如下:Unhandled exception in ChangePoint.exe(BAS60.DLL):0xC0000005:Access Violation请指教,谢谢!答:char szName128;char dsn32;ch
25、ar owner32;char ftype;char openflag=0; /0 打开文件;1 保存文件char filter=_T("线文件(*.wl)0*.wl0点文件(*.wt)0*.wt00");char ttlStr=_T("打开文件");char log32;char psw32;memset(szName,0,sizeof(szName);memset(dsn,0,sizeof(dsn);memset(log,0,sizeof(log);memset(psw,0,sizeof(psw);memset(owner,0
26、,sizeof(owner);_InputFileName(szName, dsn, owner, &ftype, openflag,filter,ttlStr);if(dsn0!='0') db_GetLogPsw(dsn, log, psw); /m_hInst 工作区示例句柄 m_ai 工作区号m_ai=_OpenFileArea(m_hInst,szName,dsn,log,psw); elsem_ai=_OpenFileArea(m
27、_hInst,szName);szName dsn owner ftype 都是出口参数。strOutPath你给的是NULL当然是错误的。有可能是网络数据,dsn owner 也为NULL,是相当危险的。30、问:用delphi怎么新建一个工程?并且能不让新建的工程弹出那两个对话框吗?答:直接CreateComObject()as IMap,然后把这个Imap接口赋给editview即可。31、问:关于maplayer,在delphi中maptree不能正确使用,请问我如何能知道工程里所有文件的名称和状态?答:对map的layer进行遍历,每个layer的workarea的name属性就是工
28、程里该文件的名称。该layer的visible表示是否可见的状态。用map的activelayer取、设激活的layer。32、问:这样求两点距离和图型面积?(vb) 用鼠标虚义一根线,求出线两端的距离?用鼠标画一个任意闭合区,求闭合区的面积?答:不管你输入的是线,还是闭合区域,在Mapgis里都是用“点集”D_DotSet表示的。将你鼠标输入的点转换成逻辑坐标存入D_DotSet。调用 CalculateLength(xy As D_DotSet) As Double 求线长度调用 CalculateOneArea(xy As D_DotSet) As Double 求该点集围成的区的面积3
29、3、问:请问用delphi开发,如何将某一maplayer和工作区绑定?我打开了一个工程文件,现在想对其中某一层进行操作,如何把这一层和工作区进行绑定?那个attach怎么用?我的意思是已经用map.load把文件打开了,然后怎么绑定?我用的是var regarea:iregarea;regarea:=createcomobject(class_regarea) as iregarea;maplayer.attach(regarea);把regarea保存一下,发现还是空白一片答:对工程中的某一层进行操作,只需要对该layer的workarea接口操作即可。而你的代码是把该layer又和一个新
30、的regarea(你只是实例化了,没有装载文件)绑定,此时已经丢掉了原来的workarea。所以出现你描述的情况。34、问:那个函數能够实现计算一条曲线与其它多条曲线的交点?答:在winarea.h文件中有计算单个线段交点的函数short WINAPI _CalCrossDot(D_DOT *la0,D_DOT *la1,D_DOT *lb0,D_DOT *lb1,D_DOT *xy);你可以先用当前线的rect通过RectAskLin找到相交的线,再逐个求交点。35、问:我使用actxedit-gisedit控件进行的二次开发。可是打包后安装,这个控件总也不能被注册。具
31、体怎么解决?答:建议你将该控件所用到的dll也一起打包(用DEPENDS察看)在你的打包程序中用regsvr32来注册。36、问:我用ModEnvFile但是报错说不支持对象的属性或方法请问为什么?我用GetEnv得到了路径的文本,怎么修改呀?str=Mapgis.GetEnv.cur之后怎么办呢?答:Mapgis.GetEnv.cur="新的路径"37、问:如何在VB中实现对目录环境修改的功能答:你指的是mapgis的环境目录吗?如果是,你可以用mapgis对象下面的getenv、writeenvfile、setenv方法来取得、修改、设置mapgis的环境目录。38、问:老话重提:如何获得工程的地图参数答: MAPGIS工程中也同样记载了一个“地图参数”的内容!如果是按照标准方式建立的工程数据,那么工
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度林业用地承包经营权租赁合同范本2篇
- 2025年化妆品原料质量追溯体系建设合同3篇
- 绿色金融在气候科技中的未来角色
- 2025年度环保产业园投资合作合同集锦3篇
- 2025年度女方离婚协议履行义务及违约赔偿合同-@-1
- 课题申报参考:马克思主义与儒释道思想融创的哲学范式研究
- 2025年度个人二手车交易合同模板全新升级版
- 《短视频编剧:选题构想+脚本制作+剧本策划+镜头拍摄》课件汇 第1-5章 选题方向:从账号定位出发 - 了解剧本:创作优剧本的基础
- 黑龙江省高三上学期开学考试语文试题(含答案)
- 二零二五版门卫室节能环保改造合同4篇
- 2024年大宗贸易合作共赢协议书模板
- 新闻记者证600道考试题-附标准答案
- 变压器搬迁施工方案
- 单位转账个人合同模板
- 八年级语文下册 成语故事 第十五课 讳疾忌医 第六课时 口语交际教案 新教版(汉语)
- 中考语文二轮复习:记叙文阅读物象的作用(含练习题及答案)
- 2024年1月高考适应性测试“九省联考”数学 试题(学生版+解析版)
- (正式版)JBT 11270-2024 立体仓库组合式钢结构货架技术规范
- EPC项目采购阶段质量保证措施
- T-NAHIEM 101-2023 急诊科建设与设备配置标准
- 针灸与按摩综合疗法
评论
0/150
提交评论