Читать только часть шейп-файла ESRI в R


10

У меня есть очень большой шейп-файл ESRI (> 8000 полигонов, файл .shp> 32 МБ), который я хочу прочитать в R в Windows 7.

Я знаком с rgdal и readOGR (). Однако при таком размере шейп-файла считывание всего шейп-файла в память является очень медленным процессом. Кроме того, меня интересуют только несколько кластерных полигонов (<100) из 8000, которые содержатся в шейп-файле. Процесс, для которого мне нужно это сделать, является очень повторяющимся, то есть шейп-файл должен загружаться много раз, поэтому в настоящее время он очень медленный.

Поэтому мне интересно, можно ли читать только часть шейп-файла, чтобы ускорить процесс. Кажется непрактичным загружать такое огромное количество данных, а затем отбрасывать большую их часть.


Какую платформу вы используете? Если у вас есть доступ к ArcGIS, я полагаю, вы могли бы написать скрипт в ArcPy, который делает выбор подмножества, а затем выполняет процесс R из скрипта python. Это определенно возможно ... Запустите поиск Google для выполнения кода R из python.
GeoJohn

3
Возможно, попытайтесь экспортировать в новый шейп-файл ту часть ваших данных, которая важна для вас, а затем поработайте с ней в R.
ami

это, вероятно, будет работать с SF. Но сохраните его в формате рабочей области R с помощью saveRDS. Существуют способы хранения в целом в SQLite или аналогичные, но я сомневаюсь, что это требуется
mdsumner

Ответы:


8

Единственное, что приходит на ум, - это использовать новую библиотеку "sfr" и связанный с ней простой класс пространственных объектов для поднабора. Библиотека sfr в настоящее время доступна на GitHub, и вот руководство для начала.

Я не верю, что вы можете выполнять потоковую передачу данных на основе подмножества запросов, однако это значительно сократит время чтения и, возможно, является будущим для R пространственных классов .

Другим вариантом будет сохранение ваших пространственных данных в базе данных (например, PostGIS) и запрос из базы данных. Это может быть чрезвычайно эффективным способом работы с большими данными.


2
sfПакет доступен на CRAN начиная с версии 0.2 (2016-10-26): cran.r-project.org/web/packages/sf/index.html
RCS

1

Я думаю, что использование ГИС, такой как QGIS, и выбор необходимых вам функций было бы хорошим подходом.
Если вам нужно объединить результаты, вы можете создать один файл с 7900 полигонами, которые вы не хотите обрабатывать, затем обработать 100 полигонов и вернуться после обработки.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.