Как преобразовать координаты полигона PostGIS в лат и лнг? - PullRequest
1 голос
/ 19 сентября 2019

Из API-интерфейса json я получаю данные области, отображаемой в виде многоугольника.Пример конечной точки можно найти здесь:

Вот предварительный просмотр многоугольника, отображаемого на платформе, из которой я получаю данные:

Ниже приведен фрагмент элемента, содержащий координаты многоугольника.

"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 Ответ

1 голос
/ 20 сентября 2019

Обычно, когда геометрия не содержит никакой информации относительно SRS, мы можем предположить, что это EPSG:4326 (он же WGS84), что явно не так.Также, если я не ошибаюсь, геометрия GeoJSON предназначена только для кодирования WGS84 .Итак, я осмелюсь сказать, что этот API не предоставляет правильную информацию.

При этом, если у вас есть доступ к PostgreSQL, рассмотрите возможность преобразования геометрии в SRS, которую вы хотите, с помощью ST_Transform в операторе UPDATE или преобразование их во время запроса.

Преобразование геометрии во время запроса

Принимая во внимание, что 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 геометрий, вам нужно преобразовать его (например, с помощью JavaScript) перед передачей геометрии GeoJSON.Если Google Maps достаточно гибок, чтобы принимать другие SRS, убедитесь, что вы явно указали геометрию SRS - в этом случае, скорее всего, EPSG:23032.

Удачи!

...