【问题标题】:How to reverse longitude/latitude of point in Postgis?如何在Postgis中反转点的经度/纬度?
【发布时间】:2015-11-13 03:41:22
【问题描述】:

Postgis中Linestring中的点(通过osm2pgsql从osm导入)按顺序描述(经度,纬度)

例如慕尼黑地图中的线串

'LINESTRING(11.4068032 47.8580927,11.4067187 47.8580965)'

如何将顺序反转为正常(纬度,经度)? (经度,纬度)的顺序很奇怪吗?因为我看到流行的 Map API 都使用(纬度,经度)顺序

【问题讨论】:

  • 如果您将经度视为 X 坐标,将纬度视为 Y 坐标,那么 long,lat 排序更有意义,因为我们倾向于将几何点指定为 X,Y 而不是 Y, X。 FWIW,SQL Server 的地理空间功能使用与 PostGIS 相同的排序(SQL Server 的地理空间功能似乎源自几何特征,因此 X,Y 在那里有意义)。

标签: geospatial openstreetmap postgis


【解决方案1】:

您可以使用 ST_FlipCoordinates 返回给定几何图形的 X 轴和 Y 轴翻转的版本。

请记住,您通常希望保持轴顺序(经度、纬度),这是 PostGIS 的正确轴顺序。将其翻转到(纬度,经度)通常会破坏事物。

【讨论】:

  • Keep in mind, you generally want to keep the axis order (longitude, latitude), which is the correct axis order for PostGIS 这是有问题的,尽管当您处理像 EPSG:4326 这样的实际 CRS 时,它被定义为轴顺序为纬度然后经度。如果我告诉 PostGIS 我在 EPSG:4326(纬度/经度)中有数据,并且假设它是经度/纬度,它会导入它,那么这是一个主要问题,事情确实会中断。
【解决方案2】:

您可以使用以下查询:

select st_askml(ST_FlipCoordinates(linestring)) as kml from table_name

【讨论】:

    猜你喜欢
    • 2015-07-08
    • 2019-11-05
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 2019-01-01
    • 2020-07-13
    • 2021-10-29
    • 2011-02-01
    相关资源
    最近更新 更多