Niestety JSON, podobnie jak XML, źle nadaje się do przetwarzania strumieniowego, więc prawie wszystkie implementacje wymagają załadowania całego zestawu danych do pamięci. Chociaż w twoim przypadku jest to w porządku dla małych zestawów, nie ma innej opcji niż rozbicie zestawu danych na mniejsze, łatwe do zarządzania fragmenty.
Ulepszając rozwiązanie Pablo, oto takie, które nie wymaga faktycznego otwierania i wczytywania pliku do edytora i dzielenia go ręcznie, ale próbuje zautomatyzować w jak największym stopniu cały proces.
Skopiuj plik json na hosta uniksowego (linux, osx) lub zainstaluj narzędzia cygwin w systemie Windows. Następnie otwórz powłokę i użyj vima, aby usunąć pierwszy i ostatni wiersz z pliku:
$ vim places.json
wpisz dd, aby usunąć pierwszy wiersz, a następnie SHIFT-G, aby przenieść koniec pliku, wpisz dd ponownie, aby usunąć ostatni wiersz. Teraz wpisz : wq, aby zapisać zmiany. Powinno to zająć najwyżej kilka minut.
Teraz wykorzystamy czystą moc unixa, aby podzielić plik na łatwiejsze do zarządzania części. W typie powłoki:
$ split -l 10000 places.json places-chunks-
Idź napij się piwa. Spowoduje to podzielenie pliku na wiele mniejszych plików, każdy zawierający 10000 linii. Możesz zwiększyć liczbę linii, o ile utrzymujesz ją na tyle małą, aby ogr2gr mógł nią zarządzać.
Teraz przykleimy głowę i ogon do każdego z plików:
$ echo '{"type":"FeatureCollection","features":[' > head
$ echo ']}' > tail
$ for f in places-chunks-* ; do cat head $f tail > $f.json && rm -f $f ; done
Idź złap węża. Pierwsze dwa polecenia po prostu tworzą plik nagłówka i stopki z poprawną zawartością (tak naprawdę dla wygody), a ostatnie dodają nagłówek i stopkę do każdej z części, które podzieliliśmy powyżej i usuwają fragment bez nagłówka / stopki (aby zaoszczędzić miejsce ).
W tym momencie możesz, mam nadzieję, przetworzyć wiele miejsc-fragmentów - plików * .json za pomocą ogr2ogr:
$ for f in places-chunks-*.json ; do ogr2ogr -your-options-here $f ; done