Malheureusement, JSON est, tout comme XML, mal adapté au traitement de flux, donc presque toutes les implémentations nécessitent que l'ensemble de données soit chargé en mémoire. Bien que cela soit acceptable pour les petits ensembles dans votre cas, il n'y a pas d'autre option que de diviser l'ensemble de données en morceaux plus petits et gérables.
En améliorant la solution de Pablo, en voici une qui ne vous oblige pas à ouvrir et à charger le fichier dans un éditeur et à le diviser à la main, mais essaie d'automatiser autant que possible l'ensemble du processus.
Copiez le fichier json sur un hôte Unix (linux, osx) ou installez les outils cygwin sous Windows. Ouvrez ensuite un shell et utilisez vim pour supprimer la première et la dernière ligne du fichier:
$ vim places.json
tapez dd pour supprimer la première ligne, puis MAJ-G pour déplacer la fin du fichier, tapez à nouveau dd pour supprimer la dernière ligne. Tapez maintenant : wq pour enregistrer les modifications. Cela ne devrait prendre que quelques minutes au maximum.
Nous allons maintenant exploiter la puissance d'Unix pour diviser le fichier en morceaux plus faciles à gérer. Dans le type de shell:
$ split -l 10000 places.json places-chunks-
Allez prendre une bière. Cela divisera le fichier en de nombreux fichiers plus petits, chacun contenant 10000 lignes. Vous pouvez augmenter le nombre de lignes, tant que vous le gardez suffisamment petit pour que ogr2gr puisse le gérer.
Maintenant, nous allons coller tête et queue à chacun des fichiers:
$ echo '{"type":"FeatureCollection","features":[' > head
$ echo ']}' > tail
$ for f in places-chunks-* ; do cat head $f tail > $f.json && rm -f $f ; done
Allez prendre un snak. Les deux premières commandes créent simplement un fichier d'en-tête et de pied de page avec le contenu correct (juste pour plus de commodité), tandis que la dernière ajoutera un en-tête et un pied de page à chacun des morceaux que nous séparons ci-dessus et supprimera le morceau sans en-tête / pied de page (pour économiser de l'espace ).
À ce stade, nous espérons pouvoir traiter les nombreux fichiers place-chunks - *. Json avec ogr2ogr:
$ for f in places-chunks-*.json ; do ogr2ogr -your-options-here $f ; done