postgresql - PostGIS:线串长度

标签 postgresql google-maps postgis

我正在使用 PostGIS 计算用户定义线串的长度。该列定义为 geography(LineString,4326)。 线串由此 GeoJSON 表示:

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

SELECT ST_Length("geography") FROM table; 返回 15945.7486086962,但 Google map 上测量的长度约为 10 公里。

我做错了什么?如何测量长度以获得与 Google map 相同的值?

最佳答案

我认为这是切换 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

和“相同”的 LineString 切换到 y,x ..

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

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

关于postgresql - PostGIS:线串长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58132589/

相关文章:

sql - 使用 Postgres 中的 Overlay 函数在不同位置更新同一列的多个值

android - 我应该使用什么版本的 firebase 和谷歌地图?

algorithm - 确定给定折线与一组现有折线的近似重叠

postgresql - 如何将线串的起点和终点顶点对齐到最近的点?

iphone - 如何向 Google map 上的信息窗口添加组合框和按钮?

gis - 带有Y坐标的postgis/proj 900913至4326投影问题

postgresql - 在 SQLAlchemy 中打印计算出的距离

postgresql - 在 Postgresql 中转义反斜杠

postgresql - Postgres 将列出我的数据库,但当我尝试连接到它时它不存在

javascript - Angular 2无法调用类函数