ogr2ogr가 GeoJson 파일> 200MB를 변환하지 못함


15

이전 질문 ( SimpleGeo Places GeoJSON 파일을 shapefile으로 변환) 에 대한 후속 조치로 , 나는 ogr2ogr "메모리"제한이 될 수 있다고 생각하는 것에 어려움을 겪고 있지만 확실하지는 않습니다. SimpleGeo 덤프 파일을 적절한 geojson 파일 (QGIS에서 직접 읽을 수있는 것으로 확인)로 변환했습니다.

이제이 데이터를 SHP 또는 다른 형식 (SQLite, PostGIS)으로 변환하려고합니다. 더 작은 파일에서 다음 명령을 성공적으로 실행하고 있습니다 ( "places_fr.gejson"의 파일 크기는 ~ 118MB 임).

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

340MB 인 geojson 파일로이 동일한 명령을 실행하려고하면 ogr2ogr이 다음 두 가지 방법 중 하나로 충돌합니다.

  1. "lh_table_new : calloc 실패"( 첫 번째 시도 )
  2. Windows가 "ogr2ogr.exe이 (가) 작동을 중지했습니다. 프로그램을 닫으십시오." ( 후속 시도 )

8GB의 RAM이 설치된 Windows 7 환경 듀얼 코어 (4GB 사용 가능, 12GB 가상 메모리 사용 가능)에서 FWTools를 통해 ogr 명령을 실행하고 있습니다. 이 데이터 세트를 변환하는 ogr2ogr에 대한 메모리 제한이 있습니까? 또한 동일한 결과로 SQLite로 변환을 시도했지만 이것이 SHP 변환 문제라고 생각하지 않습니다. 감사.


이 작업을 수행 한 적이 있습니까? 나는 또한 simpleGeo Places geojson 파일을 shp로 변환하려고합니다. 원본 게시물에서 스크립트를 보았지만 읽을 수 있고 쓸 수있는 파일 형식 측면에서 infile 및 outfile이 무엇인지 확실하지 않습니까?
kflaw

nevermind 내가 지금 일하고 나는 shp로 변환에 갇혀있어
kflaw

답변:


8

미리 경고 : 시스템에보고하는 메모리가 충분하지 않으면 64 비트 Windows 빌드를 사용한다고 가정합니다. 그렇지 않은 경우이 솔루션은 적용되지 않습니다.

Windows의 모든 32 비트 응용 프로그램에 대한 메모리 제한 (Windows 버전에 관계없이 64 비트 Windows에도 적용됨)은 2GB입니다. ogr2ogr 실행을 확인하고 작업 관리자에서 메모리 사용량을 확인하기 위해이 한계에 도달했을 수 있습니다.

메모리 문제로 인해 문제가 발생한 경우 다음 두 가지 작업을 수행 할 수 있습니다.

  1. 64 비트 버전의 GDAL을 직접 빌드하십시오 (이용 가능한 바이너리는 찾을 수 없습니다)

  2. :이 도구를 ogr2ogr.exe 패치 http://ntcore.com/4gb_patch.php . 패치 후 (물론 백업 사본을 만드십시오) 바이너리 총 4GB를 처리 할 수 있어야 합니다.


3
리소스 모니터를보고 메모리가 2GB에 도달하자마자 ogr2ogr 프로세스가 중단되었습니다. 32 비트 앱으로 컴파일 되었기 때문에 ogr2ogr / fwtools 내에서 2GB의 메모리 제한이 분명했습니다. 나는 당신이 제안한 도구로 ogr2ogr.exe를 패치했으며 그것은 매력처럼 작동했습니다. 물론 7GB 미국 장소 파일과 같이 사용할 수없는 한계는 여전히 있지만 최소한 ogr2ogr이 실패한 이유에 대한 설명이 있습니다. 감사!
RyanKDalton

7GB 미국 파일을 처리 한 적이 있습니까?
kflaw

3

문제가있는 경우 OGR 자체가 아니라 OGR geojson 드라이버 에만 해당 됩니다. 새로운 바이너리 ( OSGeo4W 의 바이너리와 같은 ) 또는 64 비트 버전을 사용하십시오. 죄송합니다. 컴파일하지 않는 한 Windows 용 64 비트 바이너리를 어디서 구할 수 있는지 모르겠습니다. Ubuntu LinuxMac KyngChaos 바이너리는 64 비트입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.