如何将PostGIS多边形坐标转换为lat和lng?

时间:2019-09-19 19:59:01

标签: php json api google-maps-api-3 postgis

我从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地图上。

有可能吗?如果是,那么流程将是什么?

1 个答案:

答案 0 :(得分:2)

通常,当几何图形不包含有关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
      ]
    ]
  ]
}

..并对应于..

enter image description here

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

祝你好运!

相关问题