SuperMap 开发WebGIS的经验总结.docx

上传人:b****5 文档编号:28106630 上传时间:2023-07-08 格式:DOCX 页数:18 大小:28.55KB
下载 相关 举报
SuperMap 开发WebGIS的经验总结.docx_第1页
第1页 / 共18页
SuperMap 开发WebGIS的经验总结.docx_第2页
第2页 / 共18页
SuperMap 开发WebGIS的经验总结.docx_第3页
第3页 / 共18页
SuperMap 开发WebGIS的经验总结.docx_第4页
第4页 / 共18页
SuperMap 开发WebGIS的经验总结.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

SuperMap 开发WebGIS的经验总结.docx

《SuperMap 开发WebGIS的经验总结.docx》由会员分享,可在线阅读,更多相关《SuperMap 开发WebGIS的经验总结.docx(18页珍藏版)》请在冰豆网上搜索。

SuperMap 开发WebGIS的经验总结.docx

SuperMap开发WebGIS的经验总结

SuperMap开发WebGIS的经验总结

时间:

2009-03-0521:

56:

24  来源:

Internet  作者:

未知  点击量:

82

SuperMap系列产品作为GIS开发平台,比较符合中国人习惯,操作也比较便利,自己做了一段时间,感觉有点郁闷,也不妨将一些经验写下来。

SuperMapDeskPro中制图的一些词语:

工作空间:

WorkSpace,实际上就是集中一些地图数据集,并在此基础上面进行地图制作、地图分析的环境。

在IS.NET中,配置一个MapServer实际上就是对应一个工作空间。

并且由于目前在IS.NET中SuperMap暂不支持MapServer的切换,所以多地图的情况下最好将它们都坐在一个工作空间中,以利于地图的切换。

地图数据集:

1。

重要的是一些转换的问题,因为我们一般是购买地图数据集。

在地图的整合中可能有一个坐标系的问题,这时候如果进行坐标配准,就需要知道原始坐标系和目标坐标系。

这个可以在地图数据集的属性中进行转换。

2。

数据集还有属性数据的问题,这是地图自己的与地理信息相联系的数据表。

这些属性数据在地图查询中会有非常重要的作用,简单的数据可以在这个数据表中添加,在IS.NET中设置QueryParam-》QueryLayer的ReturnValue可将对应数据取出。

地图:

地图本身并不困难,难的在于基于数据集做出漂亮专业的地图,这个主要是通过风格设置和专题图设置来实现的。

风格设置中要注意点线面的颜色搭配,线条粗细,文字搭配,最大最小比例尺等。

建议是多参照专业电子地图进行风格设置。

其他有用的冬冬:

1。

地图裁剪,有时候我们只需要当前地图的一部分,可以采用地图裁剪,选取裁剪的图层,存储新数据集的位置,新地图命名,即可将你裁剪后的地图获得。

2。

关于smw和sxw,工作空间可以将文件存储为smw和sxw文件,sxw直接可以用写字板打开,可以看到里面是遵守XML标准的代码,你可以在里面添加可视化环境中的任何东西,也可以看到这个工作空间的组织结构。

这个在将多个工作空间的地图集中到一个工作空间中非常便利,你只要将对应的

Maps>

Map>.........

Map>

Maps>中的某个地图拷贝过来,设置好数据集的位置名称,在保存SMW文件,倒入符号库就可以了。

这样将省去大量的风格配置的功夫。

在目前SuperMapIS.NET尚不支持多个MapServer的情况下,这显得非常有用。

个人觉得简单的webGIS无外乎地图的基本操作,基于地图的查询定位,查询地图上元素的属性(包括连接到数据库中查询相关信息),专题图的制作和交互。

地图基本操作SuperMap提供了非常好的控件支持。

查询的关键是如何获取地理信息。

这个可由QueryParam类,通过设置QueryParam的QueryLayer查询图层,ReturnFields返回字段,WhereClause查询条件来实现。

查询结果是一个ResultSet,是RecordSet集合,可以获取属性数据。

在图查属性时需要重写触发事件MapControl_MapQuerying,MapControl_MapQueryCompleted分别设置查询条件和对返回ResultSet的处理。

在属性查图时只需要在触发事件中设定QueryParam,通过MapControl的QueryBySQL来查询。

动态生成专题图需要通过Layer类的Theme***来实现,诸如ThemeGraph(统计专题图),ThemeLabel(标签专题图),ThemeUnique(单值专题图),ThemeRange(范围分段专题图)等。

部署利用SuperMap开发的系统需要打包的内容

时间:

2009-03-0521:

57:

04  来源:

Internet  作者:

未知  点击量:

29

在使用SuperMapObjects开发了GIS应用系统以后,面临的第一个问题,就是如何打包我的系统。

以下是自己总结的需要打包的SuperMap的内容啦~大家可以参考,基本是没有问题的哦

主要包括的内容:

(1)数据(data),存放应用程序所需要的数据。

(2)支持(support),存放的东西,为需要在工程安装时同时安装的支持文件,如果没有用到第三方的控件,可以只使用SuperMap安装目录下Support文件夹下的东东,主要包括:

MDAC_TYP.exe(如要连接数据库,则需要);msxml4.exe(如使用到XML相关的操作,比如ToXML,则需要添加);SentinelProtectionInstaller.exe(软件加密锁的驱动安装程序);dx90update_redist.exe(如果使用到3D控件则需要安装)。

(3)SuperMap所需的文件(SMBin),需要放置SuperMap安装目录中Bin文件夹中Plugins文件夹的内容,以及要用到的*.ocx和*.dll文件,注意*.oca文件是临时文件,可以删掉,另外SuperMap的帮助文档也可删掉。

最后,需要将C:

\ProgramFiles\CommonFiles\SuperMap文件夹下的,DiskSerial.DLL、SmLicManager.exe以及sx32w.dll也加入到其中。

注意:

在打包的时候,这三个:

DiskSerial.DLL、SmLicManager.exe以及sx32w.dll文件需要放置到安装的机器的系统盘的ProgramFiles\CommonFiles\SuperMap文件夹下。

所以,在打包时要注意设置安装路径。

SuperMap开发小贴士第一期

时间:

2009-03-0522:

17:

31  来源:

超图通讯  作者:

未知  点击量:

146

技巧贴:

快捷方式真方便

  SuperMapDeskpro提供了很多快捷方式,掌握其中的快捷操作,鼠标和键盘相结合会大大提高效率,比如,当你在窗口画线时,出了窗口范围,想移动,这时使用键盘上的“上”“下”“左”“右”键,要比“漫游”方便些。

 

 

技巧贴:

使用XML技术合并工作空间

  SuperMapGIS提供了XML格式的工作空间管理方式,使用该技术可以方便的合并多个工作空间,使用方法是:

先将A、B两个工作空间保存为SXW格式,再用记事本打开,将A中有关地图的信息拷贝到B中相应的地图节点下,保存即可。

 

 

常见问题贴:

问题1

  进行SuperMapIS.NET项目部署时一般会需要修改地图服务的IP地址,与部署的服务器相对应,怎样修改呢?

  解决办法:

  

  

  

  参数说明:

  第一个参数:

服务器地址;

  第二个参数:

端口;

  第三个参数:

当key值与页面中的MapControl设置不同时,该参数为true表示取key的设置,该参数为false表示取MapControl的设置。

常见问题贴:

问题2

  将SDB转换为PMR,在PDA上打开该数据没有显示出地图。

  原因分析:

  PMR格式中保存的是空间数据,地图配置(包括图层叠加、图层风格、专题图等)是保存在工作空间PMW文件中。

  解决办法:

  使用eSuperMapViewer打开PMR,将需要叠加显示的数据集在一个地图窗口中打开,并为图层设置风格,然后保存地图和工作空间。

将PMR和PMW文件下载到PDA设备上,打开工作空间和地图,数据就可以按照预先设定的样式和叠加顺序显示了。

SuperMap开发小贴士第二期

时间:

2009-03-0522:

21:

26  来源:

超图通讯  作者:

未知  点击量:

75

问题:

在SuperMapIS.NET项目中有时为了适应客户端显示器分辨率的不同,需要动态调整鹰眼窗口的位置,怎么实现呢?

 

解决方法:

  1、在工程的*.cs文件中定义一个全局的变量,如publicintiTop=0;然后在page_load事件中给iTop赋值iTop=60,并且调用

  Page.DataBind();

  2、在html文件中的OverviewControl代码前增加一个div标签来进行定位操作,具体代码

112;LEFT:

24px;

  POSITION:

absolute;TOP:

<%#iTop%>px">。

 

 

 

不使用安装包也可以自己动手安装SuperMapIS.NET

安装步骤:

  

(1)将已经在另外一台机器上面部署的IS.NET所有文件夹复制过来;

  

(2)创建指向SuperMap\SuperMapIS.NET5\Bin\SuperMap.IS.AppServer.exe的快捷方式;

  (3)修改这个快捷方式的目标为

  "D:

\SuperMap\SuperMapIS.NET5\Bin\SuperMap.IS.AppServer.exe"-app;

  (4)创建指向\SuperMap\SuperMapIS.NET5\output的虚拟路径,名称为output;

  (5)创建指向\SuperMap\SuperMapIS.NET5\Demo\AspxDemo的虚拟目录,名称为AspxDemo;

  (6)创建指向\SuperMap\SuperMapIS.NET5\Manager的虚拟目录,名称为\SuperMap\SuperMapIS.NET5\Manager的虚拟目录,名称为ISManager。

 

SuperMap开发小贴士第四期

时间:

2009-03-0522:

24:

48  来源:

超图通讯  作者:

未知  点击量:

38

※问题:

有时候在标签专题图中需要标注不同的字段,并使不同的标注以特殊的颜色显示,该怎么办呢?

解决方法:

  1、将要标注的图层复制两份叠加显示,然后分别对两个图层用不同的字段制作标签专题图,并使最上面的图层透明显示。

不过当被标注的图层的数据量较大时要慎用。

  2、将字段保存成文本图层,与原始图层叠加显示。

 

 

 

※问题:

对于刚刚接触eSuperMap尤其是在VS2005下进行开发的用户来说,可能会觉得一开始的配置问题比较繁琐,特别是在编译时出现一些配置相关的错误以及连接模拟器或是嵌入式设备的时候经常遇到程序无法执行的提示。

安装步骤:

  1、建立工程时包含开发包头文件和库文件;

  2、正确设置设备类型以及是模拟器还是设备,并与步骤1中库文件的设置保持严格的一致;

  3、运行前一定上传与前面设置对应DLL文件,包括设备类型、模拟器还是设备以及DEBUG版本还是RELEASE版本等;在VS2005下模拟器环境中调试一般是以共享目录的形式保存文件的,一定要将程序相关联的动态库文件添加齐全。

 

 

 

※在SuperMapObjects中实现自定义添加空间对象的时候,如果数据集的数据量很大,要使用Query方法得到记录集然后调用AddNew方法添加对象,可以设置第一个参数查询条件为“smid<0”,这样既可以得到记录集,又可以提高查询的速度,可谓两全其美。

 

 

 

※问题:

关于SuperMapGIS软件的升级(5.0→5.2),需要升级驱动

解决方法:

  您可以从公司的下载中心下载5.2.0的安装包,安装完成以后,在5.2.0的安装目录下有一个support目录,从里面找到新的驱动程序SentinelProtectionInstaller.exe,安装一下即可。

 

 

 

※问题:

关于SuperMapDeskpro中的投影转换

解决方法:

  由于投影转换的计算精度问题,它的计算结果是不完全可逆的。

强烈建议您在进行转换前对数据进行备份。

 

 

 

※问题:

我们在做地图的时候经常会碰到这样的问题,那就是,将做好的虚线线型进行风格设置,当线宽度设置为5以上的时候,整条线就会变得很粗,根本看不出虚线的风格效果。

解决方法:

  解决的办法是在线型编辑器中对该线型进行固定宽度的限制(例如固定宽度值给5),就可以做出符合要求的线型了。

 

 

 

※问题:

在Windows2003系统中使用SuperMapIS.Net经常会有不出图的问题

解决方法:

  解决办法是这样的,在安装软件过程中已经新建了output虚拟目录,但是在Windows2003默认情况下这个虚拟目录是没有读取权限的,可以在Internet信息服务中找到output这个虚拟目录,将读取的复选框钩上就可以了。

 

SuperMap开发小贴士第五期

时间:

2009-03-0522:

27:

00  来源:

超图通讯  作者:

未知  点击量:

83

 

※问题:

关于工具下的“标准图幅图框”问题。

SuperMapDeskpro5.2中标准图幅图框生成1:

10000和1:

5000的标准图幅位置都是正确的,而生成1:

50000的标准图幅时,图幅的位置不对,比如一幅1:

50000的I50E011009的标准图,生成后Y是20409,正解应该是39409吧?

解决方法:

  图幅号是I50的,中央经线应该是117度,如果是6度分带带号是20,3度分带带号是39。

1:

5万的标准图幅我国国家规定通常是用6度分带,所以20409开头是对的。

 

 

 

※问题:

以前有朋友遇到这样的问题,在VC中创建SuperMap实例,开发环境中使用正常,运行环境下却报“找不到许可”的错误,出现这个问题的原因是在创建实例的时候没有传入lic相关的参数,正确的创建代码如下:

安装步骤:

BSTRbStr=L"SuperMap";

m_SuperMap.Create("SuperMap",WS_CHILD|WS_VISIBLE,CRect(0,0,10,10),this,1,NULL,false,bStr);

 

 

 

※问题:

使用SuperMapObjects提供的方法SuperWorkspace.Open打开一个工作空间,很多朋友通过该方法返回的Boolean型参数来判断数据是否打开成功,其实这个是不够的,该返回结果仅能判断工作空间是否被正常打开,而其自动关联的数据源是否打开了需要对数据源进一步判断,可以通过三个方法辅助判断数据源是否成功被关联打开。

安装步骤:

  

(1)通过SuperWorkspace.DataSources.Count判断工作空间中有几个数据源,如果是0个,表明没有关联进来;

  

(2)通过SuperWorkspace.DataSources.Item来获得其中的数据源,看看返回的结果是否为空;

  (3)如果关联的是数据库引擎的数据源,那即使数据源没有被关联打开,通过SuperWorkspace.DataSources.Item获得的数据源也不会为空,这时候要辅助以soDataSource.Datasets.Count来判断该数据源下是否有数据集。

 

 

 

※问题:

将带投影的纸图扫描后,导入SuperMapDeskpro进行矢量化,实现起来比较方便,只要按照原来的纸图进行投影设置,配准为正确的坐标后就可以进行矢量化。

但是对于多幅带投影信息的纸图也这样操作的话,就容易发生无法正确拼接的问题。

解决方法:

  建议先用PS拼接扫描图,设置正确的数据源投影,然后再导入SuperMapDeskpro中进行配准和矢量化。

 

 

 

※问题:

eSuperMap导航原理

路径导航是eSuper-Map功能的重要应用之一。

其基本实现是先构造好一条导航路径,通过比较当前GPS点与前方路径点的位置关系从而获取有效的路径导航信息。

开发步骤如下:

安装步骤:

  1、通过对网络数据集进行路径分析获取路径节点或者是自采集路径点串并顺序记录存储进所定义的数组中;

  2、初始化导航类对象,利用步骤1中采集的点串构造导航路径,并设置导航容限;

  3、OnTimer()事件响应函数中不断地获取当前GPS点的位置,利用导航接口获取当前GPS点的导航结果;

  4、如果导航正常,则获取当前针对当前GPS点的导航信息。

 

 

 

※问题:

有这样一种需求,对空间数据制作专题图或者查询的时候,使用的属性数据是外部数据,并非与空间数据一体化存储。

要解决这样的问题,在SuperMap中有两种办法:

解决方法:

  1、将外部数据导入到该空间数据所在的数据源中作为一个纯属性数据集保存,然后通过SuperMap提供的属性关联功能设置相应的关联关系;

  2、如果空间数据保存在SDX+引擎的数据源中还有另外一种办法,即对空间数据表和外部属性表创建视图,然后修改SMRegister管理表中该空间数据表的记录,将SMTableName由表名修改为视图名,这样就把该视图当作SuperMap的一个数据集来使用,该数据集中包括了视图中的全部字段。

(注意:

这样的数据集是不能添加和修改记录的,受限于数据库中的视图不能修改)

 

 

 

※问题:

在网页编程的过程中,调试JavaScript代码是一件很头疼的事情,往往要通过Alart("Here");来测试代码运行到哪儿了,非常不方便。

现在在VS.NET2005中可以像调试C#程序那样单步调试JavaScript代码了,只要在“IE->工具->Internet选项->高级”中将“禁用脚本调试”复选框去掉,其他的调试方法都是一样的。

(注意:

上面方法目前只能在.js脚本文件中使用,页面中的JavaScript代码还是不可以的)

解决方法:

  现在在VS.NET2005中可以像调试C#程序那样单步调试JavaScript代码了,只要在“IE->工具->Internet选项->高级”中将“禁用脚本调试”复选框去掉,其他的调试方法都是一样的。

(注意:

上面方法目前只能在.js脚本文件中使用,页面中的JavaScript代码还是不可以的)

 

SuperMap开发小贴士第六期

时间:

2009-03-0522:

28:

06  来源:

超图通讯  作者:

未知  点击量:

14

【提问】用SuperMapIS的WebService方式开发,用到地图编辑EditService时,出现编辑操作无故失败是什么原因?

【回答】这是因为EditService的命名空间是,而MapServerce的命名空间是,在使用如MapCoord等参数时,如果直接对不同命名空间的实例赋值,就会导致参数信息丢失。

因此要对这些参数进行转换,才能正确获取到参数信息。

 

巧用SuperMapDeskpro的Debug信息

  在SuperMapDeskpro安装目录Bin文件夹下有一个supermap.ini配置文件。

把此文件中ShowDebug属性设置为1,地图浏览的时候,可以显示地图各个图层的查询时间以及显示时间。

便于辅助找到影响地图显示速度慢的图层,以分析解决方法。

  在eSuperMapViewer里面配置好地图后,除了可以将地图配置信息保存在工作空间中,也可以将其存为XML文件,这样便于查看和手工编辑地图配置,也可在重新编辑数据源后导入原来的地图配置。

具体操作为在eSuperMapViewer中保存好地图后,鼠标选中当前地图右键弹出下拉菜单,选择保存地图为XML文件。

SuperMap开发小贴士第七期

时间:

2009-03-0522:

29:

15  来源:

超图通讯  作者:

未知  点击量:

51

【提问】为什么有时候绘制对象会失败?

【回答】分析原因:

当向一个数据集上绘制几何对象出现画不上的问题,如果通过重新计算范围和重建空间索引不能解决问题,请检查一下该数据集的属性字段是否存在必填字段,而且该字段没有设置缺省值,这个就是问题所在。

解决办法:

新建字段,使用“更新列”将原始字段值复制过来;删除原有字段,重新建立一个同名字段并设置缺省值,再更新复制回该列的值,删除中间字段即可。

                                     作者:

SMLiwh

【提问】将SuperMap的一个线数据集aa导出成e00文件,再将e00文件导入回SuperMap生成新的线数据集bb,原始的aa中只有一条线,而结果的bb数据集中却是两条线,是将原始一条线打断成两条来保存的,为什么?

【回答】e00文件存储线对象,对线对象的顶点数限制在500个以内,因此,如果原始线对象的顶点数超过这个限制,导出的时候就会在第500个顶点处截断,分成两条线来存储。

                                    作者:

flyinmap

 

【提问】在SuperMapObjects中如何实现反选?

【回答】假设选择了若干对象的SMID分别为2,4,5,7,10实现反选时,设置查询条件"SMiDnotin(2,4,5,7,10)",再对此图层数据集查询出的记录集转换为选择集,实现的效果就是选中了除了这几个ID之外的对象了。

                                   作者:

xiaoniliu

【提问】在SuperMapObjects中如何绘制岛洞多边形?

【回答】以选中的两个面对象为例,先用union方法得到这两个面的并集,再使用Intersect得到它们的交集,用这个交集面去Erase并集面,最后的结果就是岛洞多边形了。

                                   作者:

xiaoniliu

【提问】工作空间中的数据源投影方式修改了,但是地图的坐标显示还是原来的,怎么办?

【回答】由于地图中保存的是配置地图时读取的坐标信息,因此还要修改地图的坐标信息。

方法是在地图属性中修改地图的投影方式。

                                    作者:

zhaoqian

三维贴图技巧

  大家在做楼房三维场景时,最头疼的可能就是如何让房屋的纹理贴图看起来更好看、更逼真,而通常找来的一些楼房纹理图片在三维场景中会被拉伸显示很不好看,这是因为图片的大小和三维立方体的大小不成比例造成的。

我们可以这样来解决,在二维窗口中计算出二维面的周长(这个可以在几何对象的属性中的Smperimeter中得到),然后再得到二维面的高程(这个可以从属性表的存储高程的字段中得到),有了面的周长和高度,那么在准备图片时就好办了,尽量选择图片的长宽和面的周长和高度相等的图像,这样贴出的图片就非常好看了。

                                    作者:

superguo

SuperMap开发小贴士第八期

时间:

2009-03-0522:

32:

19  来源:

超图通讯  作者:

未知  点击量:

33

【提问】有些时候,我们需要将不同类型数据集的属性字段合并,SuperMap中这是怎么实现的呢?

【回答】很简单,用数据集追加列,但是前提是两

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1