ogr2ogr kann GeoJson-Datei> 200 MB nicht konvertieren

15

Im Anschluss an meine vorherige Frage ( Konvertieren der SimpleGeo Places-GeoJSON-Datei in ein Shapefile ) habe ich jetzt Probleme mit einer meiner Ansicht nach möglicherweise ogr2ogr- "Speicher" -Einschränkung, bin mir jedoch nicht sicher. Ich habe die SimpleGeo-Dump-Dateien erfolgreich in richtige Geojson-Dateien konvertiert (überprüft, ob sie direkt in QGIS lesbar sind).

Jetzt möchte ich diese Daten in SHP oder andere Formate (SQLite, PostGIS) konvertieren. Ich führe den folgenden Befehl mit Erfolg für kleinere Dateien aus (wobei "places_fr.gejson" eine Dateigröße von ~ 118 MB hat):

ogr2ogr -f "ESRI Shapefile" places_fr.shp places_fr.geojson

Wenn ich versuche, denselben exakten Befehl mit einer 340 MB großen Geojson-Datei auszuführen, stürzt ogr2ogr auf zwei Arten ab:

  1. "lh_table_new: calloc failed" ( erster Versuch )
  2. Windows wirft ein "ogr2ogr.exe funktioniert nicht mehr. Bitte schließen Sie das Programm." ( nachfolgende Versuche )

Ich führe den Befehl ogr über FWTools in einer Windows 7-Umgebung mit zwei Kernen und 8 GB installiertem RAM aus (4 GB verfügbar, 12 GB virtueller Speicher verfügbar). Gibt es eine Speicherbeschränkung für die ogr2ogr-Konvertierung dieser Datensätze? Ich habe auch versucht, in SQLite mit den gleichen Ergebnissen zu konvertieren, so denke ich nicht, dass es ein SHP-Konvertierungsproblem ist. Vielen Dank.

RyanKDalton-OffTheGridMaps
quelle
Hast du das jemals zum Laufen gebracht? Ich versuche jetzt auch, die simpleGeo Places-Geojson-Datei in shp zu konvertieren. Ich habe Ihr Skript im Originalbeitrag gesehen, bin mir aber nicht sicher, wie die Datei und die Outfile lauten - in Bezug auf das Dateiformat, das gelesen und geschrieben werden kann.
Kflaw
vergiss nicht, dass ich jetzt arbeite, ich bin fest in der Umstellung auf shp
kflaw 18.03.15

Antworten:

8

Vorwarnung : Angesichts der Speicherkapazität, die Sie auf Ihrem System melden, verwenden Sie vermutlich einen 64-Bit-Build von Windows. Wenn nicht, trifft diese Lösung nicht zu.

Das Speicherlimit für alle 32-Bit-Anwendungen unter Windows (unabhängig von der Windows-Version, also auch für 64-Bit-Windows) beträgt 2 GB. Möglicherweise überschreiten Sie dieses Limit, um die Ausführung von ogr2ogr zu bestätigen und die Speichernutzung mit dem Task-Manager zu überprüfen.

Wenn das Problem tatsächlich auf ein Speicherproblem zurückzuführen ist, können Sie zwei Dinge tun:

  1. Bauen Sie sich eine 64-Bit-Version von GDAL (ich konnte keine verfügbaren Binärdateien finden)

  2. Patchen Sie ogr2ogr.exe mit diesem Tool: http://ntcore.com/4gb_patch.php . Nach dem Patchen (eine Sicherungskopie natürlich) die binären sollte vorhanden sein , um eine 4GB Grandtotal zu adressieren

unicoletti
quelle
3
Ich habe mir den Ressourcenmonitor angesehen und als der Speicher 2 GB erreichte, stürzte der ogr2ogr-Prozess ab. Es war definitiv eine Speicherbeschränkung von 2 GB innerhalb von ogr2ogr / fwtools, wahrscheinlich, weil es als 32-Bit-App kompiliert wurde. Ich habe die ogr2ogr.exe mit dem von Ihnen vorgeschlagenen Tool gepatcht und es hat wie ein Zauber funktioniert. Natürlich gibt es immer noch ein Limit, in dem es nicht verwendet werden kann (wie bei den 7 GB US-Places-Dateien), aber zumindest gibt es eine Erklärung, warum ogr2ogr fehlschlägt. Vielen Dank!
RyanKDalton-OffTheGridMaps
Konnten Sie jemals die 7-GB-US-Datei verarbeiten?
kflaw
3

Wenn es ein Problem gibt, ist es höchstwahrscheinlich spezifisch für den OGR-Geojson-Treiber und nicht für OGR selbst. Versuchen Sie es mit einer neueren Binärdatei (wie der von OSGeo4W ) oder noch besser mit einer 64-Bit-Version. Entschuldigung, es sei denn, Sie kompilieren es, ich weiß nicht, wo Sie eine 64-Bit-Binärdatei für Windows bekommen können - die Ubuntu Linux- und Mac KyngChaos- Binärdateien werden jedoch 64-Bit sein.

Ragi Yaser Burhum
quelle