Я пытаюсь использовать пакет sf и рабочий процесс piped / tidyverse для создания ограничивающих рамок на основе групп, определенных в другом столбце.Я думаю, что это должно работать, как показано ниже, но кажется, что st_bbox не относится к группам.
Я ожидаю получить три многоугольных записи, которые представляют ограничивающие рамки вокруг оттисков от a, b и c, но вместо этого я получаю три многоугольных записи, которые представляют ограничивающие рамки для всех точек.
library(dplyr)
library(sf)
a <- data.frame(group=rep('a',100), lon=rnorm(100,11,.2), lat=rnorm(100,53,.2))
b <- data.frame(group=rep('b',100), lon=rnorm(100,11.5,.2), lat=rnorm(100,53.5,.2))
c <- data.frame(group=rep('c',100), lon=rnorm(100,12,.2), lat=rnorm(100,54,.2))
dat <- rbind(a,b,c)
pts <- dat %>% st_as_sf(coords=c('lon','lat'),crs=4326)
pts %>%
group_by(group) %>%
summarize(geometry = st_as_sfc(st_bbox(geometry)))
Это возвращает:
Simple feature collection with 3 features and 1 field
geometry type: POLYGON
dimension: XY
bbox: xmin: 10.34313 ymin: 52.43993 xmax: 12.54254 ymax: 54.54012
epsg (SRID): 4326
proj4string: +proj=longlat +datum=WGS84 +no_defs
# A tibble: 3 x 2
group geometry
<fct> <POLYGON [°]>
1 a ((10.34313 52.43993, 12.54254 52.43993, 12.54254 54.54012, 10.34313 54.54012, 10.34313 52...
2 b ((10.34313 52.43993, 12.54254 52.43993, 12.54254 54.54012, 10.34313 54.54012, 10.34313 52...
3 c ((10.34313 52.43993, 12.54254 52.43993, 12.54254 54.54012, 10.34313 54.54012, 10.34313 52...