Postgresql

Postgis 使用 ST_Distance 報告一個點距自身 1216m

  • December 2, 2020

我有一個表格,其中包含 4236 投影中的幾何列。我從一行中獲取 ST_X 和 ST_Y 值,並從中創建一個點。然後,我將點和原始幾何列值轉換為 3857 投影,然後使用 ST_DISTANCE 獲得 2d 距離。我希望距離為~0。我實際上得到的答案是 1216.something 米。

這是創建兩個點的範常式式碼,它們應該是相同的,並取它們之間的距離,給出相同的~1216m 答案

select ST_Distance(
              ST_Transform(
                      ST_SetSRID(
                              ST_MakePoint(5.6100, 58.8900), 4236),
                      3857),
              ST_Transform(
                      ST_SetSRID(
                              ST_MakePoint(5.6100, 58.8900), 4326),
                      3857));

我大概在這裡犯了一些愚蠢的錯誤(我絕不是 GIS 期望的),但我做錯了什麼?

兩點使用不同的橢球。

EPSG:4 32 6 是 WGS

84。EPSG:4 23 6 是 1950 年的鬍子山。

轉換總是帶來一定的不准確。

select ST_Distance(
               ST_Transform(
                       ST_SetSRID(
                               ST_MakePoint(5.6100, 58.8900), 4236),
                       3857),
               ST_Transform(
                       ST_SetSRID(
                               ST_MakePoint(5.6100, 58.8900), 4326),
                       3857));
| st_距離 |
| :---------------- |
| 1216.975464330136 |
select ST_Distance(
               

               'SRID=4326;POINT(5.6100 58.8900)'::geometry,
                                      'SRID=4326;POINT(5.6100 58.8900)'::geometry
                               );
| st_距離 |
| :---------- |
| 0 |

db<>在這裡擺弄

引用自:https://dba.stackexchange.com/questions/280680