ogr2ogr no puede convertir el archivo GeoJson> 200 MB

15

Como continuación de mi pregunta anterior ( Conversión de archivos GeoJSON de SimpleGeo Places a shapefile ), ahora estoy luchando con lo que percibo podría ser una limitación de "memoria" de ogr2ogr, pero no estoy seguro. He convertido con éxito los archivos de volcado de SimpleGeo en archivos geojson adecuados (verificado que son legibles directamente en QGIS).

Ahora quiero convertir estos datos a SHP u otros formatos (SQLite, PostGIS). Estoy ejecutando el siguiente comando con éxito en archivos más pequeños (donde "places_fr.gejson" tiene un tamaño de archivo de ~ 118MB):

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

Cuando intento ejecutar este mismo comando exacto con un archivo geojson de 340 MB, ogr2ogr se bloquea de una de dos maneras:

  1. "lh_table_new: calloc falló" ( primer intento )
  2. Windows arroja un "ogr2ogr.exe ha dejado de funcionar. Cierre el programa". ( intentos posteriores )

Estoy ejecutando el comando ogr a través de FWTools en un entorno dual de Windows 7 con 8 GB de RAM instalada (4 GB disponibles, 12 GB de memoria virtual disponible). ¿Existe un límite de memoria para que ogr2ogr convierta estos conjuntos de datos? También he intentado convertir a SQLite con los mismos resultados, por lo que no creo que sea un problema de conversión de SHP. Gracias.

RyanKDalton
fuente
¿Alguna vez conseguiste que esto funcionara? También estoy tratando de convertir el archivo geojson simple de Geos Places a shp, vi su script en la publicación original, pero no estoy seguro de cuál es el archivo y el archivo, en términos del formato de archivo que se puede leer y escribir.
kflaw
no importa que haya funcionado ahora, estoy atascado en la conversión a shp
kflaw

Respuestas:

8

Advertencia : dada la cantidad de memoria que está informando en su sistema, supongo que está utilizando una compilación de Windows de 64 bits. Si no, esta solución no se aplica.

El límite de memoria para todas las aplicaciones de 32 bits en Windows (independientemente de la versión de Windows, por lo que también es cierto para Windows de 64 bits) es de 2 GB. Es posible que esté alcanzando ese límite, para confirmar ejecutar ogr2ogr y verificar el uso de memoria con el administrador de tareas.

Si el problema se debe realmente a un problema de memoria, puede hacer dos cosas:

  1. construya una versión de GDAL de 64 bits (no pude encontrar binarios disponibles)

  2. parche ogr2ogr.exe con esta herramienta: http://ntcore.com/4gb_patch.php . Después de parchar (hacer una copia de seguridad, por supuesto), el binario debería estar disponible para abordar un total de 4 GB

unicoletti
fuente
3
Observé el monitor de recursos y, tan pronto como la memoria alcanzó los 2 GB, el proceso ogr2ogr se bloqueó. Definitivamente era una limitación de memoria de 2 GB dentro de ogr2ogr / fwtools, probablemente porque se compiló como una aplicación de 32 bits. Parcheé el ogr2ogr.exe con la herramienta que sugirió y funcionó de maravilla. Por supuesto, todavía hay un límite en el que no se puede usar (como con los archivos de lugares de EE. UU. De 7 GB), pero al menos hay una explicación de por qué falla ogr2ogr. ¡Gracias!
RyanKDalton
¿alguna vez pudiste procesar el archivo de 7GB de EE. UU.?
kflaw
3

Si hay un problema, lo más probable es que sea específico para el controlador geojson de OGR y no para el propio OGR. Intente usar un binario más nuevo (como el de OSGeo4W ) o incluso mejor, una versión de 64 bits. Lo siento, a menos que lo esté compilando, no sé dónde puede obtener un binario de 64 bits para Windows; sin embargo, los binarios de Ubuntu Linux y Mac KyngChaos serán de 64 bits.

Ragi Yaser Burhum
fuente