На жаль, JSON, як і XML, погано підходить для обробки потоку, тому майже всі реалізації вимагають завантаження всього набору даних у пам'ять. Хоча для невеликих наборів це нормально, у вашому випадку немає іншого вибору, крім розбиття набору даних на менші, керовані фрагменти.
Вдосконалюється рішення Pablo, ось такий, який не вимагає, щоб ви фактично відкривали та завантажували файл у редактор і розділяли вручну, але намагаються максимально автоматизувати весь процес.
Скопіюйте файл json на хост Unix (Linux, osx) або встановіть інструменти cygwin у Windows. Потім відкрийте оболонку та використовуйте vim для видалення першого та останнього рядка з файлу:
$ vim places.json
введіть dd, щоб видалити перший рядок, потім SHIFT-G для переміщення кінця файлу, введіть dd ще раз, щоб видалити останній рядок. Тепер введіть : wq, щоб зберегти зміни. Це займе всього пару хвилин.
Тепер ми будемо використовувати абсолютну силу Unix, щоб розділити файл на більш керовані шматки. У типі оболонки:
$ split -l 10000 places.json places-chunks-
Іди схопи пиво. Це розділить файл на багато менших файлів, кожен з яких містить 10000 рядків. Ви можете збільшити кількість рядків до тих пір, поки ви будете тримати його досить малим, щоб ogr2gr міг керувати ним.
Тепер ми будемо приклеювати голову та хвіст до кожного з файлів:
$ echo '{"type":"FeatureCollection","features":[' > head
$ echo ']}' > tail
$ for f in places-chunks-* ; do cat head $f tail > $f.json && rm -f $f ; done
Іди схоплюй закуску. Перші дві команди просто створюють файл заголовка та нижнього колонтитулу з правильним вмістом (просто для зручності), тоді як остання додасть колонтитул та колонтитул до кожного з фрагментів, які ми розділили вище, та видалить безголовий / нижній колонтитул (щоб заощадити місце ).
У цей момент ви можете сподіватися, що обробити безліч файлів - *. Json з ogr2ogr:
$ for f in places-chunks-*.json ; do ogr2ogr -your-options-here $f ; done