supermap二次开发从0到1

一、为什么要写这篇博客

地理信息系统门外汉,计算机背景。项目要求基于csharp、supermap进行开发。在看了supermap的实例程序后,发现没有自己能用的,有的示例有参考价值,但也是边边角角,不成系统。需要自己整理思路。

二、需求

    同事提供了一个算法接口,根据输入的经纬度以及其他参数,计算出某一点的某属性值(类似于高度等高程值),项目需要计算出中国范围内的每个点的属性值,然后根据属性值的不同,渲染颜色后呈现在地图上(后来知道这叫专题图)。

三、supermap情况介绍

我用的是supermap iobjet 8c,机器是64位的。由于集成了其他的软件接口,所以必须生成64位的程序,因此只能安装supermap64位安装包。这样就不能拖放控件,也不能运行示例程序(示例均为32位)。

四、开发历程

1.首先根据入门程序,实现了在winform窗体中加入mapcontrol,然后打开工作空间,显示地图的功能。
2.调用接口,计算每个点的值(以一经度、一纬度为间隔), 定义一个二维数组rec[][],来存储各个点的值,经过查看帮助文档,我大概了解到需要生成栅格专题图。那么我需要生成栅格数据,最开始我认为我的数组数据就包含了栅格数据需要的信息。所以我就想直接生成栅格数据集,然后把属性值和对应经纬度填进去就行了。但是询问客服说一般都不会这么做,会使用插值算法生成栅格数据。
但是咨询过程中supermap人员反复问我。
人:你的点数据是怎么取的?
我:  我的数据是根据经纬度算出来的啊(凌乱中)
人:经纬度是怎么取的?
我:  就是中国地图的点上的经纬度?(这是什么问题???)
人:就是坐标系不一样,经纬度也不一样,你这个参考系是什么参考系?要先确定这个
总结:因为是门外汉,我在网上搜索中国经纬度范围,得到范围值之后,就获取到点数据了,但是这个坐标系是什么坐标系?没办法解决,而且点数据肯定有坐标系等数据,而且地图的坐标系是怎样的,这些都需要对应起来。最后我的解决方法是`从所选择的地图数据中的数据集中找到一个点数据集,复制以后清空点数据内容,那么这个空的数据集就拥有跟地图同样的坐标系统,参数什么的也都不需要设置`。这样往点数据集添加点数据以后,就得到了点数据集。
3.点数据集需要转为栅格数据集,邮件客服开始给了一个接口Interpolator,但是使用过程中发现不能这样用,因为dem数据需要先构建,而在构建的过程中会自动调用这个接口(电话客服告诉我的),解决方法,通过idesktop对我生成的点数据进行dem构建(每个版本位置不同,8c在数据栏下)。然后根据参数面板中的参数设置去对相应的对象参数进行设置(进一步适当修改参数)。

捕获.PNG
4.图层显示,栅格图要显示在底层,这样就不会遮挡矢量数据,同时要把地图的数据集图层中面数据去掉(试过设置半透明,但是效果不好),只留下线数据和点数据,文字数据。这样效果才会好一点。

阅读 322

推荐阅读