4 votos

Eliminación de las partes alargadas y "finas" de las formas mediante R

Tengo un conjunto de datos con muchos polígonos, de los cuales algunos tienen una forma larga y delgada (ver imagen). Me gustaría eliminar sus "extremidades".

¿Existe una herramienta/método para eliminar las partes finas de un polígono en R?

En el ejemplo, las formas alargadas varían en forma y grosor

  • He pensado en utilizar una relación de forma (por ejemplo, perímetro/área, como se describe aquí ), pero eso sólo me permite eliminar polígonos completos, mientras que en algunos casos me gustaría conservar la parte "redonda" de un polígono.
  • Me gustaría poder experimentar con los umbrales para encontrar un ajuste adecuado para la "redondez".
  • Eliminación de rectángulos finos de un polígono con forma parece un problema similar, pero prefiero no usar shapely

example of polygons with elongated shapes

6voto

Anton8000 Puntos 165

Pruebe a utilizar el búfer

  1. Buffer con una distancia negativa, por ejemplo -50
  2. Tampón con +60
  3. Recorta los topes con tus polígonos originales

3voto

Mikael Puntos 101

Amortiguar con la distancia negativa y luego la distancia positiva (más algo extra para tener en cuenta la pérdida de detalle) como se sugiere en esta respuesta se puede realizar con este código (en R):

BUFFER_WIDTH = 10

# negative buffer removes parts of the polygons
poly = raster::buffer(poly, width= - BUFFER_WIDTH )

# positive buffer recreates shape from the remainders
poly = raster::buffer(poly, width=   BUFFER_WIDTH + (BUFFER_WIDTH * 0.1))

Observaciones:

  • esto también funcionará como un alisado operación
  • la intersección de los topes con los polígonos originales sólo es necesaria si se desea el contorno original (más detallado)
  • puede querer filtrar pequeñas áreas (rojas), que podrían ser creadas por restos de artefactos después de la amortiguación negativa. En R: poly_new <- drop_crumbs(poly, threshold = AREA_THRESH)

Resultado : Polígono original azul, polígono resultante verde/rojo. Blue original polygon, green/red resulting polygon after removing elongated parts.

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