我正在使用PostGIS计算用户定义的字符串的长度。列定义为geography(LineString,4326)
linestring由这个GeoJSON表示:

"track": {
  "type": "LineString",
  "coordinates": [
    [
      49.364325571013,
      16.785549033597
    ],
    [
      49.363254969491,
      16.642149334451
    ]
  ]
}

SELECT ST_Length("geography") FROM table;返回15945.7486086962,但在谷歌地图上测量的长度约为10公里。
我做错什么了?如何测量长度以获得与谷歌地图相同的值?

最佳答案

我相信这是切换x,y位置的经典问题。
考虑到x,y:

SELECT
    ST_Length(
      ST_GeogFromText('SRID=4326;LINESTRING(49.364325571013 16.785549033597,49.363254969491 16.642149334451)'),true);

    st_length
------------------
 15869.9069442778

“相同”的线串切换到y,x。。
SELECT
   ST_Length(
     ST_GeogFromText('SRID=4326;LINESTRING(16.785549033597 49.364325571013,16.642149334451 49.363254969491)'),true)

    st_length
------------------
 10416.8606521809

07-24 17:47
查看更多