缓冲区
对于投影坐标系的数据,当需要对数据集做缓冲区分析时,只要输入直线距离就OK了,但对于经纬度坐标系的数据,怎么在二次开发中通过输入直线距离得到缓冲区呢???
在SuperMap Objects中,如果一个数据源是经纬坐标系,要对一个点数据集做缓冲区分析,用户输入的距离是直线地面距离,现希望对点数据集做一个缓冲分析,步骤如下:
1.通过查询得到一个点对象,定义一个soPoint对象,其XY为相应点对象的XY坐标值。
2.定义一个soPJCoordSys 对象,其地理坐标系为数据源的地理坐标,投影方式任选一个(在投影方式上没有太大区别)。
3.通过soPJCoordSys.Forward方法将原soPoint对象转换成投影坐标(也就是地面直角坐标),将soPoint对象的X或Y坐标值加上(或减)用户输入距离,之后再通过soPJCoordSys.Inverse将soPoint对象从地面直角坐标转换到经纬坐标,点对象与定义的soPoint对象之间的距离(求距这个过程只能在几何对象之间进行,再定义一个soGeoPoint即可,这个过程就不多说)。
4.通过第三步求出的距离对点数据集做缓冲分析(线和面数据集原理一样)。
欢迎访问SuperMap技术问答社区http://qa.supermap.com/