Conversione del file GeoJSON di SimpleGeo Places in shapefile?


15

SimpleGeo ha recentemente reso disponibile gratuitamente il suo set di dati "Luoghi", che è GRANDE, perché ora possiamo usarlo per i nostri scopi, anche offline. Quindi ho iniziato a scaricare il set di dati da 2 GB , che contiene file di paesi zippati in formato GeoJSON.

Qui è dove inizia il mio problema ... quando provo a caricare un file di paese (* .geojson) direttamente in QGIS o addirittura a convertirlo in file di forma utilizzando ogr2ogr, finisco con una funzione da 1 punto.

Chiaramente ci sono più dati disponibili in questi file che non sono in grado di "vedere" o recuperare, quindi cosa sto facendo di sbagliato? Qualcuno può darmi qualche suggerimento su come trasformare questi file in funzionalità GIS utilizzabili?

Domanda aggiornata: Voglio davvero convertire il file geojson in uno shapefile (o un formato GIS standard simile) per l'uso in un software GIS desktop.

Snippet dal blog SimpleGeo del 1 agosto 2011 :

"Il set di dati di Luoghi Pubblici di SimpleGeo è ora disponibile per il download gratuito. Se desideri mettere le mani su 21 milioni di POI che coprono 63 paesi, siamo pronti a consegnartelo in un unico file. Il file è circa 2 GB in formato .ZIP e ricorda, con la licenza CC0, questi dati diventano tuoi - liberi e chiari - per fare quello che vuoi. Speriamo che tu possa fare cose fantastiche con esso! Puoi scaricarli ora cliccando qui. "

Aggiornamento: 12 gennaio 2012: Dopo che SimpleGeo è stata acquisita da Urban Airship nell'ottobre 2011, Urban Aiship ha dichiarato: "riduci la disponibilità delle versioni correnti di [SimpleGeo's] Luoghi, contesto e spazio di archiviazione nei prossimi mesi." ... La data obiettivo per staccare la spina ufficialmente sarà il 31 marzo 2012. Link


3
+1. Ho ascoltato Matt Galligan di SimpleGeo qualche tempo fa dicendo che i dati di localizzazione sono un dato di fatto e dovrebbero essere disponibili gratuitamente. È il contesto che dovrebbe essere venduto. Bello vedere "loro" significava. Anche desideroso di sfruttare questi dati.
Erick,

Risposte:


10

Prova a racchiudere le funzionalità in quanto segue:

{"type":"FeatureCollection","features":[ 

****ALL THE DATA HERE -- COMMA SEPARATED****

]}

e separando ogni funzione con una virgola.

Ad esempio, ecco le prime due funzionalità del set di dati IE:

{"geometry": {"type": "Point", "coordinates": [-6.422587, 53.293363]}, "type": "Feature", "id": "SG_41u80gC4971D4Gc0Fv1p8q_53.293363_-6.422587@1308163237", "properties": {"website": "http://www.buongiorno.com", "city": "Dublin", "name": "Buongiorno", "tags": ["mobile", "vas", "community", "social-networking", "connected-devices", "android", "tablets", "smartphones"], "country": "IE", "classifiers": [{"category": "Professional", "type": "Services", "subcategory": "Computer Services"}], "href": "http://api.simplegeo.com/1.0/features/SG_41u80gC4971D4Gc0Fv1p8q_53.293363_-6.422587@1308163237.json", "address": "Lake Drive City West Digital Park", "owner": "simplegeo", "postcode": "3050"}}
{"geometry": {"type": "Point", "coordinates": [-6.250848, 53.339347]}, "type": "Feature", "id": "SG_1dnWbWIg8hX3VyfUKIDRz9_53.339347_-6.250848@1308163237", "properties": {"website": "http://www.simchronise.com", "city": "Dublin", "name": "SIMchronise", "tags": ["mobile-solutions", "mobile-data", "data-synchronisation", "mobile-security", "backup", "restore", "mobile-contacts", "web-2.0-addressbook", "phonebackup"], "country": "IE", "classifiers": [{"category": "Professional", "type": "Services", "subcategory": "Computer Services"}], "href": "http://api.simplegeo.com/1.0/features/SG_1dnWbWIg8hX3VyfUKIDRz9_53.339347_-6.250848@1308163237.json", "address": "78 Merrion Square", "owner": "simplegeo", "postcode": "Dublin2"}}

... ed eccoli come FeatureCollection GeoJSON:

{"type":"FeatureCollection","features":[ 
{"geometry": {"type": "Point", "coordinates": [-6.422587, 53.293363]}, "type": "Feature", "id": "SG_41u80gC4971D4Gc0Fv1p8q_53.293363_-6.422587@1308163237", "properties": {"website": "http://www.buongiorno.com", "city": "Dublin", "name": "Buongiorno", "tags": ["mobile", "vas", "community", "social-networking", "connected-devices", "android", "tablets", "smartphones"], "country": "IE", "classifiers": [{"category": "Professional", "type": "Services", "subcategory": "Computer Services"}], "href": "http://api.simplegeo.com/1.0/features/SG_41u80gC4971D4Gc0Fv1p8q_53.293363_-6.422587@1308163237.json", "address": "Lake Drive City West Digital Park", "owner": "simplegeo", "postcode": "3050"}},
{"geometry": {"type": "Point", "coordinates": [-6.250848, 53.339347]}, "type": "Feature", "id": "SG_1dnWbWIg8hX3VyfUKIDRz9_53.339347_-6.250848@1308163237", "properties": {"website": "http://www.simchronise.com", "city": "Dublin", "name": "SIMchronise", "tags": ["mobile-solutions", "mobile-data", "data-synchronisation", "mobile-security", "backup", "restore", "mobile-contacts", "web-2.0-addressbook", "phonebackup"], "country": "IE", "classifiers": [{"category": "Professional", "type": "Services", "subcategory": "Computer Services"}], "href": "http://api.simplegeo.com/1.0/features/SG_1dnWbWIg8hX3VyfUKIDRz9_53.339347_-6.250848@1308163237.json", "address": "78 Merrion Square", "owner": "simplegeo", "postcode": "Dublin2"}}
]}

Dopo il tuo post ho capito che non avevo chiarito la mia domanda, quindi l'ho modificata. Vorrei davvero convertire i dati in shapefile o in altri formati GIS standard da utilizzare in un GIS desktop. Ci scusiamo per la domanda scarsamente formulata, ma grazie per la risposta @fod.
RyanKDalton,

2
La risposta di Fod ti porterà a metà strada. Sarà necessario preelaborare tutti questi dump per racchiudere le funzionalità in FeatureCollection come suggerito da fod e separarle con virgole. Un modo semplice per farlo è sostituire tutte le nuove righe con a, + newline (cioè \ n con, \ n) e quindi racchiuderle in FeatureCollection, tramite uno script o manualmente con un editor di testo. Dopo aver corretto tutti i file come GeoJSON corretto, è possibile utilizzare ogr2ogr v1.8.0 o successivo per convertire GeoJSON in shapefile.
Sasa Ivetic,

Eccellente! Non mi rendevo conto che era quello che sarebbe stato necessario per renderli "leggibili". Utilizzando il metodo sopra descritto, sono stato in grado di rendere il file direttamente leggibile tramite QGIS. Grazie mille! Ho usato il set di dati del Messico come un buon esempio, perché aveva solo dimensioni di file 9k. Ora per affrontare "cerca e sostituisci" per il file USA a 7,4 GB.
RyanKDalton,

Scuse: non ho avuto il tempo di dare seguito prima, ma, FYI, puoi aprire i file GeoJSON direttamente in QGIS - non è necessario convertirli in shapefile. Quindi, se vuoi davvero un file di forma, puoi esportare il livello in quel formato (Livello-> Salva con nome ...).
fod

La prima cosa che ho provato è stata l'apertura diretta dei file in QGIS. Il problema era che tutti i dati erano "racchiusi" in un record, e quindi in un punto. Avevo bisogno di seguire le istruzioni che hai lasciato sopra per consentire a QGIS di riconoscere ogni singola caratteristica nel set di dati.
RyanKDalton,

4

Grazie mille a @fod e @Sasa Ivetic per avermi messo sulla buona strada! Ho dovuto abbandonare questo progetto per un po ', ma finalmente sono tornato su di esso oggi e volevo trasmettere i miei risultati per aiutare chiunque potesse aver lottato con questo.

Usando le informazioni fornite nella risposta di @fod, ho scritto questo script Python per convertire i file di dump nel formato "corretto" di geojson. Questo script py convertirà i dati in un formato leggibile da ogr2ogr, quindi puoi convertirlo nel formato che desideri.

infile = sys.argv[1]
outfile = sys.argv[2]


## Prepare the input/output for read/write of files
fin = open(infile, 'r')
fout = open(outfile, 'w')


##Prepend the new file with approriate header info
fout.write('{"type":"FeatureCollection","features":[' + '\n')


## Read each line from the input and write to the output
for line in fin:
    ##write each line in the table, and replace carriage returns with "," + carriage return
    fout.write(line.replace("\n",",\n"))

##Append the new file with approriate footer info
fout.write(']}')

##Close the input and output files to release file locking
fin.close()
fout.close()

Nota: potresti riscontrare problemi nella conversione dei file geojson convertiti tramite ogr2ogr, a causa delle limitazioni della memoria del sistema operativo. Dai un'occhiata a questa domanda correlata: gis.stackexchange.com/questions/16307/…
RyanKDalton,

Grande ! Microsoft ha limitazioni di memoria

1

Puoi provare FME a farlo. Legge GeoJSON e scrive Shape e, cosa ancora più importante, ha un sacco di "trasformatori" per la gestione di JSON (JSONExploder, JSONFlattener, JSONExtractor). Quindi penso che aiuterebbe a distribuire il contenuto in un formato utilizzabile.

Ha anche una prova gratuita disponibile!

NB: Lavoro per Safe Software, creatori di FME.


ci sono aree di lavoro di esempio che mostrano come scrivere da geojson a shp?
kflaw,
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.