二次开发常见问题
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.dll
6、使用平台一段时间后,打开平台发现无法使用,任何MapGIS的exe都无法打开
原因:可能是Beta版包学习版注册问题
1、打开注册表,将HKEY_CURRENT_USER\Software\MapGis\LCCSYSTEM下的NO_PROMPT键值改为“0”;
2、打开平台,会弹出一个注册的对话框,里面有注册码,(注意此时不要关闭该对话框);
3、根据该注册码到http: www.mapgis的学习版注册模块注册,得要一个证书码;
4、在之前弹出的对话框中入延长证书码后,再修改NO_PROMPT的键值为“1”,继续使用学习版证书。
7、Flex开发中——出现拖动控件后出错无法编译的情况
原因:可能是开源二次开发库附加错了,也就是把SDK下的文件拷贝到Flex工程的src下(注意是SDK目录下所有的文件,不要把SDK目录拷贝过去)。
1、发生错误:创建对象失败。
解决方法:开始--所有程序--MapGIS7.3二次开发大赛版软件--工具箱--注册组件。
2、在VS中添加MapGIS控件,调试运行时弹出对话框“托管调试助手LoaderLock ... 导致应用程序挂起。”
解决方法:(1)点击停止调试,然后点击“开始执行(不调试)”。
(2)在"Debug"菜单下----"Exceptions"----"Managed Debugging Assistants"中勾掉"LoaderLock"。
3、添加MapGIS控件后,VS中无法显示界面,错误提示“加载设计器时遇到一个或多个错误。这些错误在下面列出。一些错误可通过重新生成项目来修复,而另一些错误则需要更改代码”。 解决方法:取消所有添加进VS的控件,然后重新加载:工具箱——选择项——com组件。并在VS的解决方案资源管理器——你的项目名称——引用下,添加所用到的MapGIS控件dll。若添加该组件后仍显示黄感叹号,则该组件未注册,需在开始——运行中输入:regsvr32 “未注册的组件路径.dll”,注册成功后关闭VS项目,重新打开运行。
4曹海鑫、在VS2005中调试程序查看变量值时显示的不是十进制数值,怎么设置?
解决方法:类似这种情况,右击,把16进制显示去掉就可以了。
5、在vs2005环境的web编程中,我从HTML的源码视图返回的设计视图之下,为什么不显示控件,该怎么解觉?
解决方法:在“我的电脑”中搜索 "gdiplus.dll",发现Dreamweaver,office,qq,flash 8.0,adobe photshop cs2这些软件都调用了gdiplus.dll,挑一个最新版本的(就是把鼠标放在搜索结果的项上,会显示版本号、创建日期,选一个版本号、创建日期最新的),美国共同基金copy到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727和C:\Program Files\Microsoft Visual Studio 8\Common7\Packages两个目录下,好了之后,操作如下:
“开始”-“程序”-“Microsoft Visual Studio 2005”-“Visual Studio Tools”-“Visual Studio 2005 命令提示”,输入devenv /ResetSkipPkgs,)。
6、VS中显示,类似于——无法加载引用“AxGISSYMBOLVIEWLib”的类型库。库没有注册。
解决方法:首先点开始——所有程序——MapGIS 7.3 二次开发大赛版——工具箱——注
册组件,重新运行VS,若项目资源管理器中,引用下的类库仍然显示黄感叹号,则打开安装目录如:“D:\MapGIS7.3\Program”,到“GISSYMBOLVIEW.dll”(在Program文件夹中对应时去掉Ax,dll名类似与库名),并在开始——运行,中输入:regsvr32然后将该dll拖入运行对话框,此时自动显示regsvr32 “D:\MapGIS7.3\Program \GISSYMBOLVIEW.dll”,确定后再检查引用下的类库,黄叹号不存在则正常。
7、使用什么控件进行图属联动?RecordGird怎么不可以?
解决方法:加载GisGridCtrl而不是RecordGird,使用GisGridCtrl的selchanged事件即可,操作方法为:JAPONENSIS 19HAD
联动分两步:
第一步:根据鼠标在视图上点击查询得到oid,然后在gisgridctrl中调用SetXClsRcd,gisgridctrl会自动跳转到相应的记录上。
void axMapXView1_OnLButtonDown(object sender, AxMapXView._IXViewEvents_OnLButtonDownEvent e)
地震逃生记{
coordinate(e.x, e.y);//坐标转换,参照问题8,将窗口坐标转换为地图坐标
Rect m_Rect = new Rect();//创建矩形区域进行选择,也可创建多边形区域
SelectSet m_SelectSet = null;//创建选择集,用于保存选择到的所有元素
FeatureCls m_Fcls = null;//创建要素类
m_Fcls = (FeatureCls)axMxWorkSpace1.ActiveMap.ActiveLayer.XClass;
ax = ;//这里仅作为示例,你可以使用框选的办法或者点击时以鼠标按下的点建立一个小矩形进行单一要素选择
in =;
ax= ;
in=;
m_Fcls.RectSelect(m_Rect, out m_SelectSet, null, 0, 0, 0, 0);//要素类选择得到选择集
m_SelectSet.fset.MoveFirst();//移动到选择集第一个元素
for (int i = 0; i < m_SelectSet.fset.GetObjCount() - 1; i++)
{
axGisGrid1.SetXClsRcd(m_Fcls, m_SelectSet.fset.GetObjID());//取到oid
axMapXView1.AppendFlashItem(m_Fcls, m_SelectSet.fset.GetObjID(), XclsFID);
axMapXView1.StartFlash();//闪烁
m_SelectSet.fset.MoveNext();
}
}
第二步:在gisgridctrl中响应SelChanged事件,返回ptOID,然后在视图上AppendFlashItem添加闪烁图元,然后StartFlash。
void axGisGrid1_SelChanged(object sender, AxMC_GISGRIDCTRLLib._IGisGridEvents_SelChangedEvent e)
{//功能为点击GisGrid,在地图上闪烁图元
FeatureCls m_Fcls = null;//沈阳农业大学学报定义要素类,闪烁时则应加载要素类图层
m_Fcls = (FeatureCls)axMxWorkSpace1.ActiveMap.ActiveLayer.XClass;//取当前激活图层的要素类
axMapXView1.AppendFlashItem(m_Fcls, (ObjectID)e.ptOID, MapXVi
XclsFID);//加载闪烁项
axMapXView1.StartFlash();//开始闪烁
}
8、如何进行坐标转换?
重要概念:
窗口坐标(Wp):以当前客户区左上角为坐标原点,横向向右为X轴正方向,纵向朝下为Y轴正方向
设备坐标(Dp):以当前客户区左下角为坐标原点,横向向右为X轴正方向,纵向朝上为Y轴正方向
逻辑坐标(Lp):当前地理数据所采用的用户坐标信息安全保护,如北京54,西安80等坐标系