Dari API json, saya mengambil data area yang ditampilkan sebagai poligon. Contoh titik akhir dapat ditemukan di sini:

Berikut adalah pratinjau poligon yang ditampilkan pada platform tempat saya mengambil data:

Di bawah ini adalah cuplikan elemen yang berisi koordinat poligon.

"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"
      },

Saya ingin menampilkan poligon di dalam Google Map yang disematkan di situs web. Saat ini saya mengimpor koordinat ke sistem manajemen konten menggunakan PHP.

Masalahnya adalah, koordinat elemen 'the_geom', sejauh yang saya pahami, adalah koordinat dari database PostGIS.

Saya ingin mengubah koordinat menjadi lintang dan bujur untuk ditampilkan di Google Map.

Apakah itu mungkin? Jika ya - bagaimana prosesnya?

1
Dougless 19 September 2019, 22:59

1 menjawab

Jawaban Terbaik

Biasanya ketika suatu geometri tidak mengandung informasi apapun mengenai SRS, kita dapat menganggap itu adalah EPSG:4326 (alias WGS84), yang jelas tidak demikian. Juga, jika saya tidak salah, geometri GeoJSON hanya dimaksudkan untuk dikodekan sebagai WGS84. Jadi, saya berani mengatakan bahwa API ini tidak memberikan informasi yang benar.

Karena itu, jika Anda memiliki akses ke PostgreSQL, pertimbangkan untuk mengubah geometri ke SRS yang Anda inginkan dengan ST_Transform dalam pernyataan UPDATE atau ubah pada waktu kueri.

Mengubah geometri dalam waktu kueri

Mempertimbangkan bahwa SRS geometri Anda adalah EPSG:23032 (ED50 / UTM zona 32N)

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

Yang akan memberi Anda hasil berikut (mengingat geometri GeoJSON Anda) ..

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

.. dan sesuai dengan ..

enter image description here

Saya tidak begitu akrab dengan Google Maps, tetapi jika hanya mengharapkan geometri EPSG:4326, Anda perlu mengubahnya (misalnya menggunakan JavaScript) sebelum meneruskan geometri GeoJSON. Jika Google Maps cukup fleksibel untuk menerima SRS yang berbeda, pastikan Anda menyatakan secara eksplisit SRS geometri - dalam hal ini kemungkinan besar EPSG:23032.

Semoga berhasil!

2
Jim Jones 23 September 2019, 11:22