Ler apenas parte de um shapefile da ESRI no R


9

Eu tenho um arquivo de formato ESRI muito grande (> 8000 polígonos, o arquivo .shp é> 32 MB), que eu quero ler no R no Windows 7.

Estou familiarizado com rgdal e readOGR (). No entanto, com esse tamanho de arquivo de forma, a leitura de todo o arquivo de forma na memória é um processo muito lento. Além disso, estou interessado apenas em alguns polígonos agrupados (<100) dos 8.000 que estão contidos no shapefile. O processo para o qual eu preciso fazer isso é altamente repetitivo, ou seja, o shapefile precisa ser carregado várias vezes, portanto, atualmente, é muito lento.

Por isso, estou me perguntando se é possível ler apenas uma parte do shapefile para acelerar o processo. Parece impraticável carregar uma quantidade tão grande de dados e depois descartar a maioria deles.


Qual plataforma você está usando? Se você tiver acesso ao ArcGIS, suponho que você possa criar um script no ArcPy que faça a seleção do subconjunto e depois execute um processo R a partir do script python. Definitivamente, isso é possível ... Execute uma pesquisa no Google para executar o código R a partir de python.
GeoJohn

3
Talvez tente exportar para o novo shapefile a parte de seus dados que é importante para você e depois trabalhá-la em R.
ami

provavelmente funcionará com sf. Mas salve-o no formato da área de trabalho R com saveRDS. Existem maneiras de armazenar genericamente em SQLite ou similar, mas eu duvido que é necessário
mdsumner

Respostas:


7

A única coisa que vem à mente é aproveitar a nova biblioteca "sfr" e sua classe de recurso simples associada para o subconjunto. A biblioteca sfr está atualmente disponível no GitHub e aqui está um tutorial para você começar.

Eu não acredito que você pode transmitir dados com base em uma consulta subconjunto No entanto, isso em velocidade lease-se tempos de leitura consideravelmente e é supostamente o futuro das classes espaciais R .

Outra opção seria armazenar seus dados espaciais em um banco de dados (por exemplo, PostGIS) e consultar o banco de dados. Essa pode ser uma maneira extremamente eficiente de lidar com grandes dados.


2
O sfpacote está disponível no CRAN desde a versão 0.2 (26/10/2016): cran.r-project.org/web/packages/sf/index.html
rcs

1

Eu acho que usar um GIS como o QGIS e selecionar os recursos necessários seria uma boa abordagem.
Se você precisar mesclar novamente os resultados, poderá criar um arquivo com os 7900 polígonos que não deseja processar, em seguida, processe os 100 polígonos e volte a participar após o processamento.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.