Fly

 

缓冲区

对于投影坐标系的数据,当需要对数据集做缓冲区分析时,只要输入直线距离就OK了,但对于经纬度坐标系的数据,怎么在二次开发中通过输入直线距离得到缓冲区呢???

在SuperMap Objects中,如果一个数据源是经纬坐标系,要对一个点数据集做缓冲区分析,用户输入的距离是直线地面距离,现希望对点数据集做一个缓冲分析,步骤如下:

1.通过查询得到一个点对象,定义一个soPoint对象,其XY为相应点对象的XY坐标值。

2.定义一个soPJCoordSys 对象,其地理坐标系为数据源的地理坐标,投影方式任选一个(在投影方式上没有太大区别)。

3.通过soPJCoordSys.Forward方法将原soPoint对象转换成投影坐标(也就是地面直角坐标),将soPoint对象的X或Y坐标值加上(或减)用户输入距离,之后再通过soPJCoordSys.Inverse将soPoint对象从地面直角坐标转换到经纬坐标,点对象与定义的soPoint对象之间的距离(求距这个过程只能在几何对象之间进行,再定义一个soGeoPoint即可,这个过程就不多说)。

4.通过第三步求出的距离对点数据集做缓冲分析(线和面数据集原理一样)。

posted on 2009-04-08 12:14  Emily_Fly  阅读(432)  评论(0编辑  收藏  举报

导航