ogr2ogr non riesce a convertire il file GeoJson> 200 MB


15

Come seguito alla mia domanda precedente ( Conversione del file GeoJSON di SimpleGeo Places in shapefile ), ora sto lottando con ciò che percepisco potrebbe essere un limite di "memoria" di ogr2ogr, ma non posso esserne sicuro. Ho convertito con successo i file di dump di SimpleGeo in file geojson appropriati (verificato che sono leggibili direttamente in QGIS).

Ora voglio convertire questi dati in SHP o altri formati (SQLite, PostGIS). Sto eseguendo il seguente comando con successo su file più piccoli (dove "places_fr.gejson" ha una dimensione del file di ~ 118 MB):

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

Quando provo a eseguire lo stesso comando esatto con un file geojson di 340 MB, ogr2ogr si arresta in modo anomalo in due modi:

  1. "lh_table_new: calloc failed" ( primo tentativo )
  2. Windows genera un "ogr2ogr.exe ha smesso di funzionare. Chiudi il programma." ( tentativi successivi )

Sto eseguendo il comando ogr tramite FWTools in un ambiente dual core di Windows 7 con 8 GB di RAM installata (4 GB disponibili, 12 GB di memoria virtuale disponibile). Esiste un limite di memoria a ogr2ogr che converte questi set di dati? Ho anche provato a convertire in SQLite con gli stessi risultati, quindi non penso che sia un problema di conversione SHP. Grazie.


L'hai mai fatto funzionare? Sto anche provando a convertire i file geojson di simpleGeo posti in shp - ho visto il tuo script nel post originale ma non sono sicuro di quale sia il file di output e il file di output - in termini di formato di file che può essere letto e scritto?
kflaw,

non ho capito che ora lavoro, sono bloccato sulla conversione in shp
kflaw

Risposte:


8

Premessa : vista la quantità di memoria che stai segnalando sul tuo sistema, suppongo che tu stia usando una build a 64 bit di Windows. In caso contrario, questa soluzione non si applica.

Il limite di memoria per tutte le applicazioni a 32 bit su Windows (indipendentemente dalla versione di Windows, quindi è vero anche per Windows a 64 bit) è di 2 GB. È possibile che si verifichi tale limite per confermare l'esecuzione di ogr2ogr e verificare l'utilizzo della memoria con il task manager.

Se il problema è effettivamente dovuto a un problema di memoria, puoi fare due cose:

  1. costruisci una versione a 64 bit di GDAL (non sono riuscito a trovare binari prontamente disponibili)

  2. patch ogr2ogr.exe con questo strumento: http://ntcore.com/4gb_patch.php . Dopo aver patchato (ovviamente una copia di backup), il binario dovrebbe essere disponibile per indirizzare un totale di 4 GB


3
Ho osservato il monitor delle risorse e non appena la memoria ha raggiunto i 2 GB, il processo ogr2ogr si è bloccato. È stato sicuramente un limite di memoria di 2 GB all'interno di ogr2ogr / fwtools, probabilmente perché è stato compilato come un'app a 32 bit. Ho patchato ogr2ogr.exe con lo strumento che hai suggerito e ha funzionato come un fascino. Naturalmente, c'è ancora un limite in cui non può essere utilizzato (come con i file di luoghi statunitensi da 7 GB), ma almeno c'è una spiegazione del perché ogr2ogr non funziona. Grazie!
RyanKDalton,

sei mai stato in grado di elaborare il file US da 7 GB?
kflaw,

3

Se c'è un problema, molto probabilmente sarebbe specifico per il driver geojson OGR e non per lo stesso OGR. Prova a utilizzare un binario più recente (come quello di OSGeo4W ) o, meglio ancora, una versione a 64 bit di esso. Mi dispiace, a meno che non lo stiate compilando, non so dove sia possibile ottenere un binario a 64 bit per Windows - i binari Ubuntu Linux e Mac KyngChaos saranno comunque a 64 bit.


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.