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?


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,


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


0

isso deve ajudar:

  • gSimplify(..., topologyPreserve=T)do GEOSpacote

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
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.