¿Cómo generalizar los polígonos espaciales y conservar la topología en R?

18

Me gustaría generalizar a SpatialPolygonsDataFrame en R para hacer que el trazado sea más eficiente. Los polígonos que tengo dan como resultado enormes trazados en PDF que son lentos de cargar y difíciles de integrar en un documento.

Intenté usar la gSimplifyfunción del rgeospaquete, pero desafortunadamente no conserva la topología de los polígonos.

¿Hay alguna alternativa que pueda usar?

tapa amarilla
fuente
no es realmente una solución, pero ¿podrías trazar en ráster (jpg / png) en su lugar? Esta pregunta de stackoverflow que analiza la reducción de pdfsize puede ser útil: stackoverflow.com/questions/8521299/…
djq
trazar los mapas como una imagen ráster es una opción, pero siempre que sea posible me gustaría usar gráficos vectoriales. La calidad de imagen es mejor cuando se usan gráficos vectoriales, especialmente cuando se mira la versión digital de los documentos.
yellowcap
gSimplify()tiene un parámetro opcional topologyPreserveque por defecto es FALSE. ¿Has intentado configurar eso TRUE?
krlmlr

Respuestas:

7

Hay una discusión sobre esto en r-sig-geo . Para obtener una respuesta definitiva, debe preguntar allí, porque hay personas que conocen las ideas de R. espacial

Pero también puede hacerlo en aplicaciones de escritorio SIG (exporte la forma usando el comando writeOGR desde rgdal o writePolyShape () desde maptools) como QuantumGIS, GRASS o SAGA.

Para QuantumGIS use Vector / Geometry Tools / Simplify geometries (he probado y no conserva la topología, pero aplicado al archivo de forma admin1 de Rumania, se ve bien con 2000 nodos).

Para GRASS use v.generalize (lea el manual para obtener información sobre los algoritmos, hay algunos).

Para SAGA, primero debe convertir el polígono en línea (Formas - Líneas / Convertir polígonos en líneas), luego simplificar las líneas (Formas Líneas / Simplificación de línea) y finalmente convertir las líneas en polígonos (Formas - Polígonos / Convertir líneas en polígonos). He probado esto y los resultados conservan la topología.

Saludos y buena suerte.

Niculita Mihai
fuente
Mientras tanto, también he encontrado un servicio en línea que realiza la simplificación y conserva las topologías: mapshaper.org . Lo he usado como alternativa, ya que parece que no es posible en R directamente (QGis no es realmente conservador de topología y no conozco los otros paquetes de software)
yellowcap
1
Probé su observación con Saga 2.0.8, ¡y el resultado no tiene la topología preservada!
Fabian Zeindl
2

Ahora está el maravilloso rmapshaperpaquete de Andy Teucher que incluye una función de simplificación que "realiza una simplificación de múltiples polígonos con reconocimiento topológico".

De su repositorio de Github, un ejemplo de uso:

states_simp <- ms_simplify(states_sp)

donde states_spes un spatialPolygons*objeto

Consulte el paquete README para obtener más información: https://github.com/ateucher/rmapshaper

Phil
fuente
0

eso debería ayudar:

  • gSimplify(..., topologyPreserve=T)del GEOSpaquete
Petermeissner
fuente
2
desafortunadamente, la opción de preservación de topología en gSimplifyrealidad no conserva la topología en varios polígonos. Creo que se relaciona más con la topología de solos o multipolígonos. Para un archivo de forma con muchos polígonos, la topología no se conserva.
yellowcap