ESRI shapefile의 일부만 R로 읽기


10

나는 매우 큰 ESRI shapefile (> 8000 폴리곤, .shp 파일은> 32MB 임)을 가지고 있으며 Windows 7에서 R로 읽으려고합니다.

rgdal과 readOGR ()에 익숙합니다. 그러나이 크기의 shapefile을 사용하면 전체 shapefile을 메모리로 읽는 과정이 매우 느립니다. 또한, shapefile에 포함 된 8,000 개 중 일부 클러스터 다각형 (<100)에만 관심이 있습니다. 이 작업을 수행해야하는 프로세스는 매우 반복적입니다. 즉, shapefile을 여러 번로드해야하므로 현재 매우 느립니다.

따라서 프로세스를 가속화하기 위해 shapefile의 일부만 읽을 수 있는지 궁금합니다. 이러한 방대한 양의 데이터를로드 한 다음 대부분을 버리는 것은 실용적이지 않은 것 같습니다.


어떤 플랫폼을 사용하고 있습니까? ArcGIS에 액세스 할 수 있으면 ArcPy에서 하위 세트를 선택한 다음 파이썬 스크립트에서 R 프로세스를 실행하는 스크립트를 작성할 수 있다고 가정합니다. 이것은 확실히 가능합니다 ... 파이썬에서 R 코드를 실행하기 위해 Google 검색을 실행하십시오.
GeoJohn

3
아마도 당신에게 중요한 데이터 부분을 새로운 형태 파일로 내보내고 R에서 작업 해보십시오.
ami

아마 sf와 함께 작동 할 것입니다. 그러나 saveRDS를 사용하여 R 작업 공간 형식으로 저장하십시오. 이 SQLite는 또는 유사한에서 일반적으로 저장하는 방법이 있습니다,하지만 난 그 필요 의심
mdsumner

답변:


8

염두에 두어야 할 것은 새로운 "sfr"라이브러리와 서브셋에 관련된 간단한 기능 클래스를 활용하는 것입니다. SFR 라이브러리는 GitHub의에서 현재 사용할 수 있으며 여기입니다 튜토리얼 이 시작하는가.

그러나 서브 세트 쿼리를 기반으로 데이터를 스트리밍 할 수 있다고 생각하지는 않습니다. 이로 인해 읽기 시간이 상당히 빨라지고 R 공간 클래스미래 일 것입니다 .

다른 옵션은 공간 데이터를 데이터베이스 (예 : PostGIS)에 저장하고 데이터베이스에서 쿼리하는 것입니다. 이는 대용량 데이터를 처리하는 매우 효율적인 방법 일 수 있습니다.


2
sf패키지 버전 0.2 (2016년 10월 26일) 이후 크랑로 볼 수 있습니다 : cran.r-project.org/web/packages/sf/index.html
RCS

1

QGIS와 같은 GIS를 사용하고 필요한 기능을 선택하는 것이 좋은 방법이라고 생각합니다.
결과를 다시 병합해야하는 경우 처리하지 않으려는 7900 다각형으로 하나의 파일을 작성한 다음 100 다각형을 처리 한 후 처리 후 다시 참여할 수 있습니다.


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