Saya perlu memasukkan poligon dari GeoJSON ke tabel PostGIS saya. Beginilah tampilan query SQL.
INSERT INTO tablename (name, polygon)
VALUES (
'Name',
ST_GeomFromGeoJSON(
'{
"type": "Polygon",
"coordinates": [
[7.734375,51.835777520452],
[3.8671875,48.341646172375],
[7.20703125,43.580390855608],
[18.6328125,43.834526782237],
[17.9296875,50.289339253292],
[13.7109375,54.059387886624],
[7.734375,51.835777520452]
]
}'
)
)
Sayangnya, saya mendapat pesan kesalahan.
ERROR: Geometry SRID (0) does not match column SRID (3857)
GeoJSON sudah ada di sistem referensi yang tepat. Tapi ini tidak ditentukan. Bagaimana cara menentukan SRID di GeoJSON? Seperti apa bentuk GeoJSON?
Pembaruan: Ketika saya membungkus geometri yang dibuat ST_GeomFromGeoJSON
dengan ST_SetSRID(..., 3857)
itu melemparkan kesalahan lain. Dalam pandangan saya sepertinya tidak ada geometri yang memiliki dimensi Z.
ERROR: Geometry has Z dimension but column does not
Jawaban:
Melihat kode sumber PostGIS saya menemukan bagaimana mem-parsing SRID. Berikut adalah cara yang benar untuk menentukan SRID di GeoJSON.
Spesifikasi GeoJSON mengatakan bahwa koordinat poligon adalah larik string baris. Karena itu saya harus membungkusnya dengan tanda kurung tambahan.
sumber
Ada beberapa masalah dengan JSON Anda.
Setelah Anda memperbaiki dua hal ini, Anda bisa menyisipkan baris, menggunakan SQL Query berikut:
Jika ini tidak berhasil, (yaitu Anda masih mendapatkan kesalahan dengan Z diemsnion), harap perbarui pertanyaan dengan versi PostGis, dan Buat Pernyataan di tabel Anda.
sumber
geojson Anda harus memiliki nilai UTM, Anda dapat mengubahnya dengan Proj atau alat online lainnya, tetapi Anda dapat melakukannya dengan mudah dan langsung dengan postgis sebelum memasukkannya ke dalam tabel Anda, coba ini (belum diuji):
sumber
ERROR: transform: couldn't project point (9.25253e-302 6.08985e+159 1.18576e-322): latitude or longitude exceeded limits (-14)
hilang "'"
sumber