ogr2ogr ne parvient pas à convertir le fichier GeoJson> 200 Mo

15

Pour faire suite à ma question précédente ( Conversion du fichier GeoJSON de SimpleGeo Places en fichier de formes ), je me bats maintenant avec ce que je perçois comme une limitation de «mémoire» ogr2ogr, mais je ne peux pas en être sûr. J'ai réussi à convertir les fichiers de vidage SimpleGeo en fichiers geojson appropriés (vérifiés qui sont directement lisibles dans QGIS).

Maintenant, je veux convertir ces données en SHP ou en d'autres formats (SQLite, PostGIS). J'exécute la commande suivante avec succès sur des fichiers plus petits (où "places_fr.gejson" a une taille de fichier de ~ 118 Mo):

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

Lorsque j'essaie d'exécuter cette même commande exacte avec un fichier geojson de 340 Mo, ogr2ogr se bloque de deux manières:

  1. "lh_table_new: calloc a échoué" ( première tentative )
  2. Windows lance un "ogr2ogr.exe a cessé de fonctionner. Veuillez fermer le programme." ( tentatives ultérieures )

J'exécute la commande ogr via FWTools dans un environnement dual core Windows 7 avec 8 Go de RAM installée (4 Go disponibles, 12 Go de mémoire virtuelle disponibles). Y a-t-il une limite de mémoire pour ogr2ogr convertir ces ensembles de données? J'ai également essayé de convertir en SQLite avec les mêmes résultats, donc je ne pense pas que ce soit un problème de conversion SHP. Merci.

RyanKDalton
la source
Avez-vous déjà obtenu ceci pour travailler? J'essaie également maintenant de convertir le fichier geojson de simpleGeo places en shp - j'ai vu votre script dans le message d'origine mais je ne suis pas sûr de ce que sont le fichier et le fichier externe - en termes de format de fichier qui peut être lu et écrit?
kflaw
peu importe que je travaille maintenant, je suis bloqué sur la conversion en shp
kflaw

Réponses:

8

Avertissement : étant donné la quantité de mémoire que vous signalez sur votre système, je suppose que vous utilisez une version 64 bits de Windows. Sinon, cette solution ne s'applique pas.

La limite de mémoire pour toutes les applications 32 bits sur Windows (quelle que soit la version de Windows, il est donc vrai également pour Windows 64 bits) est de 2 Go. Vous atteignez peut-être cette limite pour confirmer l'exécution de ogr2ogr et vérifier l'utilisation de la mémoire avec le gestionnaire de tâches.

Si le problème est en effet dû à un problème de mémoire, vous pouvez faire deux choses:

  1. construisez-vous une version 64 bits de GDAL (je n'ai pas pu trouver de binaires facilement disponibles)

  2. patch ogr2ogr.exe avec cet outil: http://ntcore.com/4gb_patch.php . Après avoir patché (faites une copie de sauvegarde bien sûr), le binaire devrait être disponible pour répondre à un total de 4 Go

unicoletti
la source
3
J'ai regardé le moniteur de ressources et dès que la mémoire a atteint 2 Go, le processus ogr2ogr s'est écrasé. Il s'agissait certainement d'une limitation de mémoire de 2 Go dans ogr2ogr / fwtools, probablement parce qu'elle a été compilée en tant qu'application 32 bits. J'ai corrigé le ogr2ogr.exe avec l'outil que vous avez suggéré et cela a fonctionné comme un charme. Bien sûr, il y a toujours une limite où il ne peut pas être utilisé (comme avec les fichiers de 7 Go aux États-Unis), mais au moins il y a une explication pour laquelle ogr2ogr échoue. Merci!
RyanKDalton
avez-vous déjà pu traiter le fichier américain de 7 Go?
kflaw
3

S'il y a un problème, il serait très probablement spécifique au pilote geojson OGR et non à OGR lui-même. Essayez d'utiliser un binaire plus récent (comme celui d' OSGeo4W ) ou encore mieux, une version 64 bits de celui-ci. Désolé, sauf si vous le compilez, je ne sais pas où vous pouvez obtenir un binaire 64 bits pour Windows - les binaires Ubuntu Linux et Mac KyngChaos seront cependant 64 bits.

Ragi Yaser Burhum
la source