У меня есть очень большой шейп-файл ESRI (> 8000 полигонов, файл .shp> 32 МБ), который я хочу прочитать в R в Windows 7.
Я знаком с rgdal и readOGR (). Однако при таком размере шейп-файла считывание всего шейп-файла в память является очень медленным процессом. Кроме того, меня интересуют только несколько кластерных полигонов (<100) из 8000, которые содержатся в шейп-файле. Процесс, для которого мне нужно это сделать, является очень повторяющимся, то есть шейп-файл должен загружаться много раз, поэтому в настоящее время он очень медленный.
Поэтому мне интересно, можно ли читать только часть шейп-файла, чтобы ускорить процесс. Кажется непрактичным загружать такое огромное количество данных, а затем отбрасывать большую их часть.
Ответы:
Единственное, что приходит на ум, - это использовать новую библиотеку "sfr" и связанный с ней простой класс пространственных объектов для поднабора. Библиотека sfr в настоящее время доступна на GitHub, и вот руководство для начала.
Я не верю, что вы можете выполнять потоковую передачу данных на основе подмножества запросов, однако это значительно сократит время чтения и, возможно, является будущим для R пространственных классов .
Другим вариантом будет сохранение ваших пространственных данных в базе данных (например, PostGIS) и запрос из базы данных. Это может быть чрезвычайно эффективным способом работы с большими данными.
источник
sf
Пакет доступен на CRAN начиная с версии 0.2 (2016-10-26): cran.r-project.org/web/packages/sf/index.htmlЯ думаю, что использование ГИС, такой как QGIS, и выбор необходимых вам функций было бы хорошим подходом.
Если вам нужно объединить результаты, вы можете создать один файл с 7900 полигонами, которые вы не хотите обрабатывать, затем обработать 100 полигонов и вернуться после обработки.
источник
Вы можете создать подмножество шейп-файла с помощью
org2ogr
команды, как показано здесь:ogr2ogr выбор объектов по атрибутам
Вам нужно будет выяснить условие для выбора функций, которые вы хотите, хотя.
источник