IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]ArcSDE for ST_Geometry的ST_Buffer的单位问题(续)

    linghe301发表于 2015-01-16 09:48:04
    love 0

    导语

    前几天写了一篇关于ArcSDE for ST_Geometry函数中ST_Buffer函数中半径的使用,尤其是用户数据为地理投影,但是在实际业务中又希望获得平面单位的结果,比如WGS84坐标的数据,Buffer100米半径等要求,其实不光是buffer,在经纬度坐标下,很多用户都希望能够得到相关的面积、长度等!本身在这个环境下,肯定是无法得到相关的准确结果的。

    解决方案

    前一篇文章我也介绍了,用户只能使用投影的方法来解决该问题,比如将地理投影转化为平面投影,然后在进行相关运算,完成之后再次进行投影转化,但是这就出现一个问题,效率,大家都知道投影转化会影响效率,原理上大家都通,而且本身用户的这个要求我个人觉得不怎么合理,但是就是有这样的情况发生,那么就介绍一个将度转化为米的方法。

    正文

    其实如果直接将度转化为米,这个误差比较不好控制,因为地球是一个椭球体,赤道与两级的变化差距比较大,以下是在赤道地区的度与米的转换关系

    1 degree / 1111.12KM
    1KM = 0.0089993 Degrees
    100M = 0.0008993 Degrees

    但是我个人觉得该转化也仅供参考,因为毕竟中国的版图离赤道还比较远,所以我个人建议,如果你不希望进行投影转化,考虑到效率,还希望使用单位转化,你可以通过ArcMap来获得相关的对比关系,方法很简单:
    1、打开ArcCatalog
    2、创建要素类或者数据集
    3、创建过程中选择经纬度投影比如WGS84
    4、在tolerance 选择项有一个以degree为单位的数值比较小,那么你可以将它等价于0.001米

    原理:如果你选择一个平面投影,默认单位为米,那么默认的tolerance单位为0.001米,所以可以这样类比,需要注意的是,这样的话,我们并不需要使用上面通用的转换公式,因为每个投影都会有所差别。

    使用该方法,我们可以得出,WGS1984投影,100米=0.0008983153 Degrees,我们可以看出要比上面的数字更加精确!


    更多参考:详见积思园



沪ICP备19023445号-2号
友情链接