Jestem nowy w GeoJSON. Mam kolekcję funkcji GeoJSON, jak pokazano i chciałbym ją przechowywać w tabeli postgres (tabela testowa). Moja tabela postgres ma numer seryjny i kolumnę geometrii.
{
"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
]
]
]
}
}
]
}
Chciałbym wstawić dane GeoJSON do tabeli testowej tabeli.
Jak mam to zrobić?
Korzystam z wersji Postgres 9.3.5 z wersją Postgis 2.1.3
Zostałem skierowany do wcześniej zadanych pytań, które odpowiadają, jak przechowywać pojedynczą cechę, np. Punkt lub wielokąt. Moje pytanie dotyczy sposobu zapisywania wielu funkcji w pliku GeoJSON. Przez wiele obiektów rozumiem mieszankę typów punktów, linii i wielokątów w jednym pliku.
Odpowiedzi:
Zakładając, że masz przynajmniej PostgreSQL w wersji 9.3, możesz użyć kilku funkcji JSON i operatorów, aby wyodrębnić odpowiednie części specyfikacji GeoJSON wymaganej przez ST_GeomFromGeoJSON do tworzenia geometrii.
Spróbuj wykonać następujące czynności, w których możesz wymienić JSON w górnej części:
Znajduje trzy geometrie.
geom
Kolumna ma geometrię obiektu, agid
jest liczbą funkcji. DoST_AsText
funkcji pokazuje WKT odpowiadające każdej geometrii. Dołączyłem równieżproperties
atrybuty lub, które można zdefiniować dla każdej geometrii, jak pokazano w specyfikacji.Powinieneś przypisać SRID do geometrii, używając ST_SetSRID.
Lub jeśli potrzebujesz tylko jednej heterogenicznej KOLEKCJI GEOMETRII, możesz uczynić ją kompaktową w następujący sposób:
Zobacz także Tworzenie kolekcji obiektów GeoJSON za pomocą funkcji JSON i PostGIS z Postgres OnLine Journal, co robi odwrotnie.
źródło