如何将 PostGIS 多边形坐标转换为纬度和经度?

How to convert PostGIS polygon coords into lat and lng?

从 json API,我正在获取显示为多边形的区域的数据。可以在此处找到端点示例:

这是我从中获取数据的平台上显示的多边形预览:

下面是包含多边形坐标的元素片段。

"the_geom": {
        "coordinates": [
          [
            [
              543271.0,
              6213477.0
            ],
            [
              543553.0,
              6213471.0
            ],
            [
              543556.0,
              6213013.0
            ],
            [
              543287.0,
              6213008.0
            ],
            [
              543271.0,
              6213477.0
            ]
          ]
        ],
        "type": "Polygon"
      },
      "the_geom2": {
        "coordinates": [
          543416.1695806364,
          6213244.042039478
        ],
        "type": "Point"
      },

我想在网站上的嵌入式 Google 地图中显示多边形。我目前正在使用 PHP 将坐标导入内容管理系统。

问题是,据我所知,'the_geom' 元素的坐标是来自 PostGIS 数据库的坐标。

我想将坐标转换为纬度和经度以便在 Google 地图上显示。

这可能吗?如果是——流程是什么?

通常当几何不包含任何关于 SRS 的信息时,我们可以假设它是 EPSG:4326(又名 WGS84),但显然不是这种情况。另外,如果我没记错的话,GeoJSON 几何 only intend to be encoded as WGS84。所以,我敢说这个 API 没有提供正确的信息。

也就是说,如果您可以访问 PostgreSQL,请考虑在 UPDATE 语句中使用 ST_Transform 将几何图形转换为您想要的 SRS,或者在查询时转换它们。

在查询时间内转换几何图形

考虑到您的几何结构的 SRS 是 EPSG:23032(ED50/UTM 区域 32N)

SELECT ST_AsGeoJSON(ST_Transform(the_geom),4326)) As wkt;

这将为您提供以下结果(考虑到您的 GeoJSON 几何结构)..

{
  "type": "Polygon",
  "coordinates": [
    [
      [
        9.69359591513313,
        56.0626693979362
      ],
      [
        9.6981234775552,
        56.062589963491
      ],
      [
        9.69809730445666,
        56.0584749528625
      ],
      [
        9.69377718993567,
        56.0584543863193
      ],
      [
        9.69359591513313,
        56.0626693979362
      ]
    ]
  ]
}

.. 对应于..

我对 Google 地图不太熟悉,但如果它只需要 EPSG:4326 几何图形,则需要在传递 GeoJSON 之前对其进行转换(例如使用 JavaScript)几何学。如果 Google 地图足够灵活以接受不同的 SRS,请确保您明确说明几何 SRS - 在这种情况下很可能 EPSG:23032

祝你好运!