Sfortunatamente, JSON è molto simile a XML, non è adatto per l'elaborazione di flussi, quindi quasi tutte le implementazioni richiedono che l'intero set di dati venga caricato in memoria. Mentre questo è ok per piccoli insiemi nel tuo caso, non c'è altra opzione che suddividere il set di dati in blocchi più piccoli e gestibili.
Migliorando la soluzione di Pablo, eccone uno che non richiede di aprire e caricare il file in un editor e dividerlo manualmente, ma cerca di automatizzare il più possibile l'intero processo.
Copia il file json su un host Unix (linux, osx) o installa gli strumenti cygwin su Windows. Quindi apri una shell e usa vim per rimuovere la prima e l'ultima riga dal file:
$ vim places.json
digitare dd per rimuovere la prima riga, quindi MAIUSC-G per spostare la fine del file, digitare nuovamente dd per rimuovere l'ultima riga. Ora digita : wq per salvare le modifiche. Questo dovrebbe richiedere solo un paio di minuti al massimo.
Ora sfrutteremo la pura potenza di unix per dividere il file in blocchi più gestibili. Nel tipo di shell:
$ split -l 10000 places.json places-chunks-
Vai a prendere una birra. Questo dividerà il file in molti file più piccoli, ognuno contenente 10000 righe. È possibile aumentare il numero di righe, purché lo si mantenga abbastanza piccolo da consentire a ogr2gr di gestirlo.
Ora atteniamo testa e coda a ciascuno dei file:
$ echo '{"type":"FeatureCollection","features":[' > head
$ echo ']}' > tail
$ for f in places-chunks-* ; do cat head $f tail > $f.json && rm -f $f ; done
Vai a prendere uno snak. I primi due comandi creano semplicemente un file di intestazione e piè di pagina con il contenuto corretto (solo per praticità in realtà), mentre l'ultimo aggiungerà intestazione e piè di pagina a ciascuno dei blocchi che abbiamo diviso sopra e rimuoverà il pezzo di intestazione / footerless (per risparmiare spazio ).
A questo punto si spera di poter elaborare i molti file di luoghi-blocchi - *. Json con ogr2ogr:
$ for f in places-chunks-*.json ; do ogr2ogr -your-options-here $f ; done