Я новичок в GeoJSON. У меня есть коллекция объектов GeoJSON, как показано, и я хотел бы сохранить ее в таблице postgres (testtable). Моя таблица postgres имеет серийный идентификатор и столбец геометрии.
{
"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
]
]
]
}
}
]
}
Я хотел бы вставить данные GeoJSON в таблицу тестов.
Как мне это сделать?
Я использую Postgres версии 9.3.5 с Postgis версии 2.1.3
Я был направлен на ранее заданные вопросы, которые отвечают, как хранить одну особенность, например, точку или многоугольник. Мой вопрос спрашивает, как сохранить несколько объектов в файле GeoJSON. Под несколькими объектами я подразумеваю сочетание точек, линий и типов объектов полигонов в одном файле.
Ответы:
Предполагая, что у вас есть по крайней мере PostgreSQL версии 9.3, вы можете использовать несколько функций и операторов JSON для извлечения соответствующих частей спецификации GeoJSON, требуемой ST_GeomFromGeoJSON для создания геометрий.
Попробуйте следующее, где вы можете заменить JSON в верхней части:
Находит три геометрии.
geom
Столбец имеет геометрический объект, иgid
это номер функции. ВST_AsText
функции показывает WKT эквивалент каждой геометрии. Я также включилproperties
атрибуты or, которые могут быть определены для каждой геометрии, как показано в спецификации.Вы должны назначить SRID для геометрии, используя ST_SetSRID.
Или, если вам просто нужна одна гетерогенная GEOMETRYCOLLECTION, вы можете сделать ее такой компактной:
См. Также Создание коллекций объектов GeoJSON с помощью функций JSON и PostGIS из журнала Postgres OnLine, который делает обратное.
источник