Conversione di GeoJSON in Shapefile utilizzando ogr2ogr?


24

Ho un file GeoJson che voglio convertire in Shapefile ESRI usando ogr2ogr in FWTools.

Ho provato a usare

ogr2ogr -F "ESRI Shapefile" filename.shp geojsonfile.json OGRGeoJSON

Ho ottenuto l'output

ERRORE 6: Impossibile creare campi di tipo StringList su layer shapefile. ERRORE 1: Tentativo di scrivere geometria non poligonale (POINT) per digitare shapefile. ERRORE 1: interruzione anticipata della traduzione dopo la traduzione non riuscita del layer OGRGeoJSON

L'input di GeoJSON che stiamo fornendo è in formato geojson standard.

il contenuto di geojson è come {per condividere ho preso solo una parte dall'array di funzionalità}

{"id":1223,
"properties":{"name":"3","level":2},
"map_version":11,"type":"FeatureCollection","x_id":1234,"obj_type":"LevelGeometry",
"features":[

{
"my_area":[131.40093253528894,33.58879853190332,6.515867411008615,3.490549810987222,-0.6237271428108215],
"id":1984791,
"location":{"type":"Point","coordinates":[131.4009325,33.5887985]},
"properties":{"display_name":"xyz"},
"type":"Feature",
"geometry":{"type":"Polygon","coordinates":[[[131.4009508,33.5888314],[131.4008895,33.5887946],[131.4009148,33.5887653],[131.4009761,33.5888020],[131.4009508,33.5888314]]]},
"obj_type":"Geometry"
}

]
}

2
Benvenuti nel forum SE.GIS. Dai una
Sunil

Grazie per l'accoglienza :) Avevo attraversato quel link prima di pubblicare. Non voglio usare FME, voglio farlo usando FWTools per Linux. In precedenza avevo convertito wkt in shapefile che era abbastanza soddisfacente, ma ora ho gli stessi dati in formato geoJSON anziché wkt. e ho bisogno di avere il file shp, mentre provo a fare ottengo gli errori;
sidd.k,

Sto votando per tenerlo aperto, poiché la domanda collegata non risponde a questa domanda.
Devdatta Tengshe,

La conversione dei tuoi dati di test funziona bene con me ogr2ogr versioni 1.9.2 e 1.10. Un file di forma con 1 poligono viene creato senza errori. Il tuo "FWTools per Linux" potrebbe essere troppo vecchio. Cosa ogr2ogr --versiondice?
Hermann,

1
L'opzione --version non esisteva ancora nella versione di ogr2ogr che era stata distribuita con FWTools 2.0.6. Suppongo anche che non supportasse GeoJSON. 2.0.6 è davvero vecchio (~ 2006), c'è un motivo per cui non puoi usare una versione moderna di GDAL?
DavidF

Risposte:


28

Devi forzare il tipo di geometria SHP (perché il tipo di geometria di GeoJSON Geometry Collection non è supportato negli SHP) e utilizzare l' -skipfailuresopzione:

ogr2ogr -nlt POINT -skipfailures points.shp geojsonfile.json OGRGeoJSON    
ogr2ogr -nlt LINESTRING -skipfailures linestrings.shp geojsonfile.json OGRGeoJSON
ogr2ogr -nlt POLYGON -skipfailures polygons.shp geojsonfile.json OGRGeoJSON

(Testato con GDAL 1.10.0, rilasciato il 2013/04/24)


2
Per ottenere il massimo dal Geojson, suggerirei di eseguire lo stesso anche per i punti (e le linee, se ne hai nel Geojson). In questo modo ottieni due o tre shapefile da un Geojson.
AndreJ,

@AndreJoost Sono d'accordo con te, questo è solo un esempio. Aggiornamento la risposta considerando il tuo suggerimento. Grazie.
Antonio Falciano,

2
non è una soluzione, ma ho avuto fortuna usando uno strumento online creato con ogr2ogr: ogre.adc4gis.com
JasonBK,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.