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.
Respostas:
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.
fonte
sf
pacote está disponível no CRAN desde a versão 0.2 (26/10/2016): cran.r-project.org/web/packages/sf/index.htmlEu 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.
fonte
Você pode criar um subconjunto de um shapefile usando o
org2ogr
comando, como exemplificado aqui:ogr2ogr selecionando recursos por atributos
Você precisará descobrir uma condição para selecionar os recursos que deseja.
fonte