Saltar al contenido

Convertir puntos a polígonos por grupo

Si encuentras algún problema en tu código o trabajo, recuerda probar siempre en un entorno de testing antes aplicar el código al proyecto final.

Solución:

Necesitas summarise despues de ti group_by declaración entonces su enfoque funciona perfectamente bien. Directamente desde PUNTOS –> POLÍGONO, y manteniendo el crs (si lo hay).

set.seed(999)
xy = data.frame(x=runif(24), y=runif(24))
xy$ID = rep(1:6, each = 4)
head(xy)

xys = st_as_sf(xy, coords=c("x","y"))

polys = xys %>% 
  dplyr::group_by(ID) %>% 
  dplyr::summarise() %>%
  st_cast("POLYGON")

plot(polys)

ingrese la descripción de la imagen aquí

Si quieres el polígono exterior puedes añadir st_convex_hull()

polys = polys %>% 
  st_convex_hull()

plot(polys)

ingrese la descripción de la imagen aquí

Haga un ejemplo reproducible:

> set.seed(999)
> xy = data.frame(x=runif(24), y=runif(24))
> xy$ID = rep(c(1:6), rep(4,6))
> head(xy)
           x         y ID
1 0.38907138 0.8260703  1
2 0.58306072 0.8195141  1
3 0.09466569 0.5684927  1
4 0.85263123 0.6196068  1
5 0.78674676 0.8308805  2
6 0.11934226 0.4588336  2

Convierta el marco de datos en un sf marco de datos:

> xys = st_as_sf(xy, coords=c("x","y"))

Luego agrega por ID, combina los puntos y lanza a POLYGON, convierte todo en un sf marco de datos. En una sola línea:

> polys = st_sf(
  aggregate(
    xys$geometry,
    list(xys$ID),
    function(g)
       st_cast(st_combine(g),"POLYGON")
    
   ))

> polys
Simple feature collection with 6 features and 1 field
geometry type:  POLYGON
dimension:      XY
bbox:           xmin: 0.03014558 ymin: 0.01902308 xmax: 0.9875201 ymax: 0.8690149
epsg (SRID):    NA
proj4string:    NA
  Group.1                       geometry
1       1 POLYGON ((0.3890714 0.82607...
2       2 POLYGON ((0.7867468 0.83088...
3       3 POLYGON ((0.3907724 0.52724...
4       4 POLYGON ((0.03014558 0.8162...
5       5 POLYGON ((0.1665847 0.10961...
6       6 POLYGON ((0.9074913 0.35951...

Se ve bastante horrible, pero esos son datos aleatorios para ti…

ingrese la descripción de la imagen aquí

Si posees algún titubeo y capacidad de aclararse nuestro post te recordamos dejar una interpretación y con gusto lo estudiaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *