ogr2ogr falha ao converter o arquivo GeoJson> 200MB

15

Como acompanhamento da minha pergunta anterior ( Convertendo o arquivo GeoJSON do SimpleGeo Places em shapefile ), agora estou lutando com o que percebo ser uma limitação de "memória" do ogr2ogr, mas não tenho certeza. Eu converti com êxito os arquivos de despejo do SimpleGeo em arquivos geojson adequados (verificados que são diretamente legíveis no QGIS).

Agora eu quero converter esses dados para SHP ou outros formatos (SQLite, PostGIS). Estou executando o seguinte comando com êxito em arquivos menores (onde "places_fr.gejson" tem um tamanho de arquivo de ~ 118 MB):

ogr2ogr -f "ESRI Shapefile" places_fr.shp places_fr.geojson

Quando tento executar esse mesmo comando exato com um arquivo geojson de 340 MB, o ogr2ogr falha de uma das duas maneiras:

  1. "lh_table_new: calloc falhou" ( primeira tentativa )
  2. O Windows lança um "ogr2ogr.exe parou de funcionar. Por favor, feche o programa." ( tentativas subseqüentes )

Estou executando o comando ogr via FWTools em um ambiente Windows 7 dual core com 8 GB de RAM instalada (4 GB disponíveis, 12 GB de memória virtual disponível). Existe um limite de memória para ogr2ogr converter esses conjuntos de dados? Eu também tentei converter para SQLite com os mesmos resultados, então não acho que seja um problema de conversão de SHP. Obrigado.

RyanKDalton
fonte
Você já conseguiu fazer isso funcionar? Agora também estou tentando converter o arquivo geojson do simpleGeo places para shp - vi seu script na postagem original, mas não tenho certeza do que são infile e outfile - em termos do formato do arquivo que pode ser lido e gravado?
kflaw
deixa pra lá eu tenho que trabalhar agora eu estou preso sobre a conversão para shp
kflaw

Respostas:

8

Aviso prévio : dada a quantidade de memória que você está relatando em seu sistema, suponho que você esteja usando uma compilação de 64 bits do Windows. Caso contrário, esta solução não se aplica.

O limite de memória para todos os aplicativos de 32 bits no Windows (independentemente da versão do Windows, portanto também é válido para o Windows de 64 bits) é de 2 GB. Você pode estar atingindo esse limite para confirmar a execução do ogr2ogr e verificar o uso de memória com o gerenciador de tarefas.

Se o problema é realmente devido a um problema de memória, você pode fazer duas coisas:

  1. Crie uma versão de 64 bits do GDAL (não consegui encontrar binários prontamente disponíveis)

  2. corrija ogr2ogr.exe com esta ferramenta: http://ntcore.com/4gb_patch.php . Após o patch (faça uma cópia de backup, é claro), o binário deve estar disponível para endereçar um grandioso total de 4 GB

unicoletti
fonte
3
Eu assisti o monitor de recursos e, assim que a memória atingiu 2 GB, o processo ogr2ogr travou. Definitivamente, era uma limitação de memória de 2 GB no ogr2ogr / fwtools, provavelmente porque foi compilado como um aplicativo de 32 bits. Corrigi o ogr2ogr.exe com a ferramenta que você sugeriu e funcionou como um encanto. Obviamente, ainda há um limite em que ele não pode ser usado (como nos arquivos de local de 7 GB dos EUA), mas pelo menos há uma explicação para o motivo pelo qual ogr2ogr está falhando. Obrigado!
RyanKDalton
você já conseguiu processar o arquivo de 7 GB nos EUA?
kflaw
3

Se houver um problema, provavelmente será específico para o driver geojson do OGR e não para o próprio OGR. Tente usar um binário mais recente (como o da OSGeo4W ) ou, melhor ainda, uma versão de 64 bits. Desculpe, a menos que você o esteja compilando, não sei onde você pode obter um binário de 64 bits para Windows - os binários Ubuntu Linux e Mac KyngChaos terão 64 bits.

Ragi Yaser Burhum
fonte