Leider ist JSON, ähnlich wie XML, für die Stream-Verarbeitung schlecht geeignet, sodass bei fast allen Implementierungen das gesamte Dataset in den Arbeitsspeicher geladen werden muss. Dies ist zwar für kleine Mengen in Ihrem Fall in Ordnung, es gibt jedoch keine andere Möglichkeit, als den Datensatz in kleinere, handhabbare Teile aufzuteilen.
In der folgenden Lösung von Pablo müssen Sie die Datei nicht unbedingt öffnen und in einen Editor laden und von Hand teilen, sondern versuchen, den gesamten Prozess so weit wie möglich zu automatisieren.
Kopieren Sie die JSON-Datei auf einen Unix-Host (Linux, OSX) oder installieren Sie die Cygwin-Tools unter Windows. Öffnen Sie dann eine Shell und entfernen Sie mit vim die erste und letzte Zeile aus der Datei:
$ vim places.json
Geben Sie dd ein , um die erste Zeile zu entfernen, und drücken Sie UMSCHALT-G , um das Ende der Datei zu verschieben. Geben Sie dd erneut ein, um die letzte Zeile zu entfernen. Geben Sie nun Folgendes ein: wq , um die Änderungen zu speichern. Dies sollte höchstens ein paar Minuten dauern.
Jetzt werden wir die Leistungsfähigkeit von Unix nutzen, um die Datei in handlichere Teile aufzuteilen. In der Shell-Typ:
$ split -l 10000 places.json places-chunks-
Geh ein Bier holen. Dadurch wird die Datei in viele kleinere Dateien mit jeweils 10000 Zeilen aufgeteilt. Sie können die Anzahl der Zeilen erhöhen, solange Sie sie klein genug halten, damit ogr2gr sie verwalten kann.
Jetzt werden wir Kopf und Schwanz an jede der Dateien kleben:
$ echo '{"type":"FeatureCollection","features":[' > head
$ echo ']}' > tail
$ for f in places-chunks-* ; do cat head $f tail > $f.json && rm -f $f ; done
Geh und schnapp dir eine Schlange. Die ersten beiden Befehle erstellen einfach eine Kopf- und Fußzeilendatei mit dem richtigen Inhalt (nur aus praktischen Gründen), während der letzte Befehl jedem der oben aufgeteilten Blöcke Kopf- und Fußzeilen hinzufügt und den Block ohne Kopf- und Fußzeilen entfernt (um Platz zu sparen) ).
Zu diesem Zeitpunkt können Sie hoffentlich die vielen Places-Chunks - * .json-Dateien mit ogr2ogr verarbeiten:
$ for f in places-chunks-*.json ; do ogr2ogr -your-options-here $f ; done