在PostGIS中哪一个是计算两点之间距离的最准确方法?

时间:2016-08-19 02:28:49

标签: postgresql geometry gis postgis

我在postgis中遇到st_distance函数问题。我有三种计算距离的方法,但我不知道哪一种最准确。

SELECT ST_Distance('POINT(115.25 39.26)'::geography, 'POINT(117.30 41.04)'::geography) as distance;
--result is 263753.911823565
SELECT ST_Distance_Sphere(ST_GeomFromText('POINT(115.25 39.26)',4326), ST_GeomFromText('POINT(117.30 41.04)',4326)) as distance;
--result is 263674.468686404
SELECT ST_Distance( ST_Transform(ST_GeomFromText('POINT(115.25 39.26)',4326),32650),ST_Transform(ST_GeomFromText('POINT(117.30 41.04)', 4326),32650)) as distance;
--result is 263669.651755417

1 个答案:

答案 0 :(得分:3)

3次测量计算之间的差异如下:

  1. 在球体上计算距离,该球体是考虑到极点处的扁平化的地球表面的数学近似。这也被称为"大弧距离"。在这种情况下,默认的椭球体是WGS84,它也被GPS系统和卫星图像使用。
  2. 在球体上计算距离,不考虑展平(形状实际上像球一样)。通常球体具有与某些球体相同的体积,因此它在赤道处略小,在极点处略微凸出。它在数学上比椭球体简单得多,因此批次计算速度更快。
  3. 距离是在笛卡尔坐标参考系(平面)上计算的,该系统是通过从地理坐标转换而建立的,在这种情况下是来自WGS84球体的UTM50N。
  4. 第一种方法通常会得到最好的结果(这3种方法),但对于靠近或接近赤道的坐标,与更快的第二种方法相比,差异可以忽略不计。

    第三种方法对于UTM50N(WGS84)坐标参考系统并不是特别准确,但是笛卡尔坐标系具有重要的其他好处,例如计算点的三元组或多边形区域之间的角度。还要注意,与WGS84相比,使用本地CRS的一些基准给出了更好的局部地球表示,在这种情况下,本地CRS比大弧计算更准确。您必须查找您所在区域的所有大地测量细节才能对其进行评估。