4 votos

Cómo reasignar pequeños polígonos a su vecino más cercano en R (similar a la función gdal_sieve.py)?

He creado un espacio polígono archivo desde un clasificado de cuadrícula conjunto de datos mediante el grid2polygons función en R. ahora me gustaría tomar ese polígono de archivo y la combinación de todos los polígonos que contienen menos de 6 píxeles, con su más cercano vecino más grande. En el enlace de la imagen de abajo, puedes ver un ejemplo de pequeños polígonos rodeado en azul. Me gustaría que las personas que se fusionó con el mayor polígono envolvente. Alternativamente, si hay una forma de crear un umbral mínimo de 6 agruparon los píxeles antes de la conversión a polígono etapa, alguna sugerencia para que el método sería genial también.

Polygon Image

Hay una función en Gdal: gdal_sieve.py que puede hacer exactamente esto (http://www.gdal.org/gdal_sieve.html) si a usted le gustaría tener una idea de exactamente lo que me gustaría hacer. ¿Alguien sabe de una forma de hacer esto en R?

3voto

obrl_soil Puntos 53

Usted puede llamar a gdal_sieve utilizando sistema2() en R si usted tiene su sistema de variables de entorno configurado correctamente, por ejemplo:

system2('gdal_sieve', args = c('-st', 6, infile.tif, outfile.tif))

luego vectorise la salida con

system2('gdal_polygonize', args = c(outfile.tif, '-f', 'GPKG', 'outfile.gpkg'))

Usted puede hacer todo esto con la ayuda de PASTO a través de R. El proceso es un poco más complicado, pero usted tiene más control sobre algunos aspectos, y se encarga de no-áreas de datos correctamente. He blogs aquí , pero en resumen:

  • leer su trama en la HIERBA
  • uso de la r.a.vect a vectorise la trama
  • utilice v. limpieza con herramienta 'rmarea' y un umbral adecuado para eliminar extraños pequeños polígonos
  • si quieres algo con más suave de los límites, de convertir los resultados de este proceso de nuevo en una trama, a continuación, convertir al vector utilizando de nuevo la bandera de la 's'.

Ser conscientes de que la topología de la resultante de las salidas puede ser problemático y que no hay soluciones fáciles parecen existir (caramba, me encantaría estar equivocado acerca de esto). Así que las salidas pueden ser buenos para un uso interactivo, pero las posteriores operaciones geométricas como se cruzan y se disuelven puede fallar a menos que hacer algunas ediciones manuales.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X