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

标签 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

最佳答案

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

  1. 距离是在球体上计算的,球体是地球表面的数学近似值,考虑了两极的扁平化。这也称为“大弧距”。在本例中,默认椭球体是 WGS84,GPS 系统和卫星图像也使用它。
  2. 距离是在球体上计算的,不考虑展平(形状实际上像一个球)。通常,球体与某些椭球体的体积相同,因此它在赤道处稍小,在两极处稍稍凸出。它在数学上比椭球体简单得多,因此计算速度快很多。
  3. 距离是在通过地理坐标转换建立的笛卡尔坐标引用系(平面)上计算的,在本例中是来自 WGS84 椭球体的 UTM50N。

第一种方法通常会给出最好的结果(这 3 种方法中),但对于靠近或靠近赤道的坐标,与更快的第二种方法相比,差异可以忽略不计。

第三种方法对于 UTM50N(WGS84) 坐标引用系来说并不是特别准确,但笛卡尔坐标系具有其他重要的优点,例如计算三重点或多边形区域之间的角度。另请注意,与本地 CRS 一起使用的一些基准比 WGS84 可以更好地表示地球不规则表面,在这种情况下,本地 CRS 变得比大弧计算准确得多。您必须查找您所在区域的所有大地测量详细信息才能进行评估。

关于postgresql - 在 PostGIS 中,哪一种是计算两点之间距离最准确的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39030232/

相关文章:

java - 如何在Java中绘制一个矩形?

java - 使用 WhirlyGlobe 显示 ShapeFiles

javascript - 如何使用 forEachFeatureAtPixel 方法过滤图层

arrays - 使用 F# 中的 Npgsql 传入和传出 postgresql 存储过程的数组参数

java - Maven 连接到 IDE

postgresql - postgres upsert json Prop

c# - NetTopologySuite 反转多边形以使其逆时针旋转

postgresql - 最近非空列的总和(带有 "ignore nulls"的窗口函数)

algorithm - 如何沿由两点创建的直线计算镜像点?

sql-server - 我将如何概括多个相邻的多边形?