Infelizmente, o JSON é muito parecido com o XML, pouco adequado para o processamento de fluxo, então quase todas as implementações exigem que todo o conjunto de dados seja carregado na memória. Embora isso seja bom para conjuntos pequenos no seu caso, não há outra opção além de dividir o conjunto de dados em blocos menores e gerenciáveis.
Melhorando a solução de Pablo, aqui está uma que não exige que você abra e carregue o arquivo em um editor e divida manualmente, mas tenta automatizar o máximo possível todo o processo.
Copie o arquivo json em um host Unix (linux, osx) ou instale as ferramentas cygwin no Windows. Em seguida, abra um shell e use o vim para remover a primeira e a última linha do arquivo:
$ vim places.json
digite dd para remover a primeira linha e, em seguida, SHIFT-G para mover o final do arquivo, digite dd novamente para remover a última linha. Agora digite : wq para salvar as alterações. Isso deve demorar apenas alguns minutos.
Agora vamos aproveitar o poder total do unix para dividir o arquivo em partes mais gerenciáveis. No tipo de shell:
$ split -l 10000 places.json places-chunks-
Vá pegar uma cerveja. Isso dividirá o arquivo em muitos arquivos menores, cada um contendo 10000 linhas. Você pode aumentar o número de linhas, desde que o mantenha pequeno o suficiente para que o ogr2gr possa gerenciá-lo.
Agora vamos enfiar a cabeça e o rabo em cada um dos arquivos:
$ echo '{"type":"FeatureCollection","features":[' > head
$ echo ']}' > tail
$ for f in places-chunks-* ; do cat head $f tail > $f.json && rm -f $f ; done
Vá pegar uma cobra. Os dois primeiros comandos simplesmente criam um arquivo de cabeçalho e rodapé com o conteúdo correto (apenas por conveniência), enquanto o último adiciona cabeçalho e rodapé a cada um dos blocos divididos acima e remove o bloco sem cabeçalho / rodapé (para economizar espaço) )
Neste ponto, esperamos que você possa processar os muitos arquivos places-chunks - *. Json com ogr2ogr:
$ for f in places-chunks-*.json ; do ogr2ogr -your-options-here $f ; done