Je suis nouveau sur GeoJSON. J'ai une collection de fonctionnalités GeoJSON comme indiqué et je voudrais la stocker dans le tableau postgres (table de test). Ma table postgres a un identifiant série et une colonne de géométrie.
{
"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
]
]
]
}
}
]
}
Je voudrais insérer les données GeoJSON dans la table de test de la table.
Comment dois-je procéder?
J'utilise la version 9.3.5 de postgres avec la version 2.1.3 de postgis
J'ai été dirigé vers des questions posées précédemment qui répondent à la façon de stocker une seule entité, par exemple un point ou un polygone. Ma question demande comment enregistrer plusieurs fonctionnalités dans le fichier GeoJSON. Par plusieurs entités, j'entends un mélange de points, de lignes et de types d'entités surfaciques dans un seul fichier.
Réponses:
En supposant que vous avez au moins PostgreSQL version 9.3, vous pouvez utiliser quelques fonctions et opérateurs JSON pour extraire les parties pertinentes de la spécification GeoJSON requises par ST_GeomFromGeoJSON pour créer des géométries.
Essayez ce qui suit, où vous pouvez remplacer le JSON dans la partie supérieure:
Trouve trois géométries. La
geom
colonne contient l'objet géométrique et legid
numéro d'entité. LaST_AsText
fonction affiche l' équivalent WKT de chaque géométrie. J'ai également inclus lesproperties
attributs ou qui peuvent être définis pour chaque géométrie, comme indiqué dans la spécification.Vous devez attribuer un SRID à la géométrie, à l'aide de ST_SetSRID.
Ou si vous avez simplement besoin d'une seule GEOMETRYCOLLECTION hétérogène, vous pouvez la rendre compacte comme ceci:
Voir aussi Création de collections d'entités GeoJSON avec les fonctions JSON et PostGIS du Postgres OnLine Journal, qui fait le contraire.
la source