SimpleGeo Places GeoJSON-Datei in Shapefile konvertieren?


15

SimpleGeo hat kürzlich den Datensatz "Orte" frei verfügbar gemacht, was GROSSARTIG ist, da wir ihn jetzt auch offline für unsere eigenen Zwecke verwenden können. Also habe ich mir den 2-GB-Datensatz heruntergeladen, der komprimierte Länderdateien im GeoJSON-Format enthält.

Hier beginnt mein Problem ... Wenn ich versuche, eine Länderdatei (* .geojson) direkt in QGIS zu laden oder sie sogar mit ogr2ogr in ein Shapefile zu konvertieren, habe ich nur 1 Punkt.

In diesen Dateien sind eindeutig mehr Daten verfügbar, die ich nicht "sehen" oder abrufen kann. Was mache ich also falsch? Kann mir jemand Vorschläge machen, wie ich diese Dateien in brauchbare GIS-Funktionen verwandeln kann?

Aktualisierte Frage: Ich möchte die Geojson-Datei wirklich in ein Shapefile (oder ein ähnliches Standard-GIS-Format) für die Verwendung in einer Desktop-GIS-Software konvertieren .

Ausschnitt aus dem SimpleGeo-Blog vom 1. August 2011 :

"Der CC0 Places-Datensatz von SimpleGeo kann jetzt kostenlos heruntergeladen werden. Wenn Sie 21 Millionen Sonderziele in über 63 Ländern in den Händen halten möchten, können Sie den Datensatz in einer Datei erhalten. Bei der Datei handelt es sich um eine Datei 2GB in .ZIP - Format, und denken Sie daran, mit der CC0 - Lizenz, diese Daten bei Ihnen wird - frei und klar -. zu tun , was Sie wollen Wir hoffen , dass Sie mit ihm ehrfürchtige Dinge tun! Sie es jetzt , indem Sie hier herunterladen können. "

Update: 12. Januar 2012: Nachdem SimpleGeo im Oktober 2011 von Urban Airship übernommen wurde, sagte Urban Aiship: „Reduzieren Sie die Verfügbarkeit der aktuellen Versionen von [SimpleGeo] Places, Context und Storage in den nächsten Monaten.“ ... Das Zieldatum für das offizielle Ziehen des Steckers ist der 31. März 2012. Link


3
+1. Matt Galligan von SimpleGeo hat vor einiger Zeit gehört, dass Standortdaten eine Selbstverständlichkeit sind und frei verfügbar sein sollten. Es ist der Kontext, der verkauft werden sollte. Gut zu sehen, dass sie es so gemeint haben. Auch bestrebt, diese Daten zu nutzen.
Erick

Antworten:


10

Versuchen Sie, die Funktionen in den folgenden Zeilen zusammenzufassen:

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

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

]}

und Trennen jedes Features mit einem Komma.

Hier sind zum Beispiel die ersten beiden Funktionen aus dem IE-Dataset:

{"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"}}

... und hier sind sie als GeoJSON FeatureCollection:

{"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"}}
]}

Nach Ihrem Posting wurde mir klar, dass ich meine Frage wirklich nicht klar gestellt habe, also habe ich sie bearbeitet. Ich möchte die Daten wirklich in Shapefile oder ein anderes Standard-GIS-Format für die Verwendung in einem Desktop-GIS konvertieren. Entschuldigung für die schlecht formulierte Frage, aber danke für die Antwort @fod.
RyanKDalton-OffTheGridMaps

2
fods antwort bringt dich auf halbem weg dorthin. Sie müssen alle diese Speicherauszüge vorverarbeiten, um die Features in einer FeatureCollection wie in fod vorgeschlagen zu verpacken und durch Kommas zu trennen. Ein einfacher Weg, dies zu tun, besteht darin, alle Zeilenumbrüche durch, + newline (dh \ n mit, \ n) zu ersetzen und sie entweder über ein Skript oder manuell mit einem Texteditor in FeatureCollection einzuschließen. Nachdem Sie alle Dateien für GeoJSON repariert haben, können Sie mit ogr2ogr v1.8.0 oder höher GeoJSON in Shapefile konvertieren.
Sasa Ivetic

Ausgezeichnet! Ich wusste nicht, dass dies nötig ist, um sie "lesbar" zu machen. Mit der oben beschriebenen Methode konnte ich die Datei direkt über QGIS lesbar machen. Vielen Dank! Ich habe den Mexico-Datensatz als gutes Beispiel verwendet, da er nur 9 KB groß war. Jetzt geht es um "Suchen & Ersetzen" für die US-Datei mit 7,4 GB.
RyanKDalton-OffTheGridMaps

Entschuldigung - Ich hatte keine Zeit, mich früher anzumelden, aber zu Ihrer Information können Sie GeoJSON-Dateien direkt in QGIS öffnen - Sie müssen nicht in Shapefile konvertieren. Wenn Sie dann wirklich ein Shapefile möchten, können Sie die Ebene in diesem Format exportieren (Ebene-> Speichern unter ...).
fod 20.08.11

Als erstes habe ich versucht, die Dateien direkt in QGIS zu öffnen. Das Problem war, dass alle Daten in einem Datensatz und damit in einem Punkt "zusammengefasst" wurden. Ich musste den Anweisungen folgen, die Sie oben hinterlassen haben, damit QGIS jedes einzelne Merkmal im Datensatz erkennen konnte.
RyanKDalton-OffTheGridMaps

4

Vielen Dank an @fod & @Sasa Ivetic, die mich auf den richtigen Weg gebracht haben! Ich musste dieses Projekt für eine Weile zurückstellen, kam aber heute wieder darauf zurück und wollte meine Ergebnisse weitergeben, um allen anderen zu helfen, die möglicherweise damit zu kämpfen hatten.

Mit den Informationen, die sie in @ fods Antwort angegeben haben, habe ich dieses Python-Skript geschrieben, um die Dump-Dateien in das "richtige" Geojson-Format zu konvertieren. Dieses Py-Skript konvertiert die Daten in ein Format, das von ogr2ogr gelesen werden kann. Anschließend können Sie sie in ein beliebiges Format konvertieren.

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()

Hinweis: Aufgrund von Speicherbeschränkungen des Betriebssystems können beim Konvertieren der konvertierten Geojson-Dateien über ogr2ogr Probleme auftreten. Schauen Sie sich diese verwandte Frage an: gis.stackexchange.com/questions/16307/…
RyanKDalton-OffTheGridMaps

Groß ! Microsoft hat Speicherbeschränkungen

1

Versuchen Sie es mit FME . Es liest GeoJSON und schreibt Shape und - was noch wichtiger ist - hat eine Reihe von "Transformern" für die Handhabung von JSON (JSONExploder, JSONFlattener, JSONExtractor). Ich denke, es würde helfen, den Inhalt in ein brauchbares Format zu bringen.

Es steht auch eine kostenlose Testversion zur Verfügung!

NB: Ich arbeite für Safe Software, Hersteller von FME.


Gibt es einige Beispielarbeitsbereiche, die zeigen, wie man von Geojson zu SHP schreibt?
kflaw
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.