Saya baru mengenal GeoJSON. Saya memiliki koleksi fitur GeoJSON seperti yang ditunjukkan dan ingin menyimpannya di tabel postgres (testtable). Tabel postgres saya memiliki id seri dan kolom geometri.
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
2565453.1826721914,
-3835048.659760314
]
}
},
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[
2727584.7219710173,
-3713449.1942418693
],
[
2732476.691781269,
-3992291.473426192
]
]
}
},
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
2442627.9025405287,
-3705499.954308534
],
[
2425506.008204649,
-3886502.837287831
],
[
2425506.008204649,
-3886502.837287831
],
[
2555143.2081763083,
-3910962.686339088
],
[
2442627.9025405287,
-3705499.954308534
]
]
]
}
}
]
}
Saya ingin memasukkan data GeoJSON ke dalam tabel testtable.
Bagaimana saya melakukannya?
Saya menggunakan postgres versi 9.3.5 dengan postgis versi 2.1.3
Saya telah diarahkan ke pertanyaan sebelumnya yang menjawab bagaimana cara menyimpan fitur tunggal misalnya titik atau poligon. Pertanyaan saya menanyakan bagaimana cara menyimpan banyak fitur dalam file GeoJSON. Dengan beberapa fitur yang saya maksud adalah campuran dari titik, garis dan tipe fitur poligon dalam satu file.
Jawaban:
Dengan asumsi Anda memiliki setidaknya PostgreSQL versi 9.3, Anda dapat menggunakan beberapa fungsi dan operator JSON untuk mengekstrak bagian relevan dari spesifikasi GeoJSON yang diperlukan oleh ST_GeomFromGeoJSON untuk membuat geometri.
Coba yang berikut, di mana Anda dapat mengganti JSON di bagian atas:
Menemukan tiga geometri. The
geom
kolom memiliki objek geometri, dangid
adalah nomor fitur. TheST_AsText
Fungsi menunjukkan yang WKT setara dengan masing-masing geometri. Saya juga menyertakanproperties
atribut atau yang dapat didefinisikan untuk setiap geometri, seperti yang ditunjukkan dalam spesifikasi.Anda harus menetapkan SRID untuk geometri, menggunakan ST_SetSRID.
Atau jika Anda hanya membutuhkan satu GEOMETRI heterogen, Anda dapat membuatnya kompak seperti ini:
Lihat juga Membuat Koleksi Fitur GeoJSON dengan fungsi JSON dan PostGIS dari Postgres OnLine Journal, yang melakukan sebaliknya.
sumber