Como generalizar SpatialPolygons e conservando a topologia em R?

18

Eu gostaria de generalizar a SpatialPolygonsDataFrame em R para tornar a plotagem mais eficiente. Os polígonos que resultam em enormes gráficos em PDF são lentos para carregar e difíceis de integrar em um documento.

Tentei usar a gSimplifyfunção do rgeospacote, mas infelizmente ela não conserva a topologia dos polígonos.

Existe uma alternativa que eu possa usar?

yellowcap
fonte
não é realmente uma solução, mas você poderia planejar a varredura (jpg / png)? Esta questão stackoverflow que discute redução pdfsize pode ser de uso: stackoverflow.com/questions/8521299/...
DJQ
plotar os mapas como imagem raster é uma opção, mas sempre que possível eu gostaria de usar gráficos vetoriais. A qualidade da imagem é melhor ao usar gráficos vetoriais, especialmente quando se olha a versão digital dos documentos.
yellowcap
gSimplify()possui um parâmetro opcional topologyPreservecujo padrão é FALSE. Você já tentou definir isso TRUE?
krlmlr

Respostas:

7

Há uma discussão sobre isso no r-sig-geo . Para uma resposta definitiva, você deve perguntar lá, porque existem pessoas que conhecem as idéias da R. espacial.

Mas você também pode fazer isso em aplicativos de área de trabalho GIS (exportar a forma usando o comando writeOGR de rgdal ou writePolyShape () de maptools) como QuantumGIS, GRASS ou SAGA.

Para o QuantumGIS, use as geometrias Vector / Geometry Tools / Simplify (eu testei e não preservo a topologia, mas aplicado ao arquivo de shapefile admin1 da Romênia, fica bem com 2000 nós).

Para o GRASS, use v.generalize (leia o manual para obter informações sobre os algoritmos, existem alguns).

Para o SAGA, você deve primeiro converter o polígono em linha (Formas - Linhas / Converter polígonos em linhas), depois simplificar as linhas (Formas Linhas / Simplificação de linha) e, finalmente, converter linhas em polígonos (Formas - Polígonos / Converter linhas em polígonos). Eu testei isso e os resultados têm a topologia preservada.

Felicidades e boa sorte,

Niculita Mihai
fonte
Enquanto isso, também encontrei um serviço online que simplifica e conserva topologias: mapshaper.org . Eu usei-o como alternativa, como parece que não é possível em R diretamente (QGIS não é realmente topologia conservação e eu não sei os outros pacotes de software)
yellowcap
1
Testei sua observação com o Saga 2.0.8, e o resultado não tem topologia preservada!
Fabian Zeindl
2

Agora existe o maravilhoso rmapshaperpacote de Andy Teucher, que inclui uma função simplify que "executa simplificação de vários polígonos com reconhecimento topológico".

No repositório do github, um exemplo de uso:

states_simp <- ms_simplify(states_sp)

Onde states_spestá um spatialPolygons*objeto.

Veja o pacote README para obter mais informações: https://github.com/ateucher/rmapshaper

Phil
fonte
0

isso deve ajudar:

  • gSimplify(..., topologyPreserve=T)do GEOSpacote
petermeissner
fonte
2
infelizmente, a opção de preservação de topologia gSimplifyrealmente não preserva a topologia em vários polígonos. Eu acho que se relaciona mais com a topologia de monopolígonos ou multipolígonos. Para um arquivo de forma com muitos polígonos, a topologia não é conservada.
yellowcap