我正在使用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