Попробуйте это:
Использование пакета sf
, который позволяет объединять точки группы (например, состояния) в MULTIPOINT
или POLYGON
. В вашем файле некоторые состояния имеют только одну точку, поэтому я могу преобразовать ее в MULTIPOINT
.
А затем сохраните sf-класс как geojson.
library(geojsonio)
library(sf)
library(tidyverse)
data<- data[,c("State", "lat", "lon")]
sf_data <- st_as_sf(data, coords = c("lon", "lat"))
sf_data %>%
group_by(State) %>%
summarise(geometry = st_combine(geometry)) %>%
st_cast("POLYGON") -> res_sfdata
geojson_write(res_sfdata, file = "yourpath/res_sfdata.geojson")
Однако вам придется удалить другие столбцы. Потому что у вас есть разная информация в каждой точке, которую вы хотите объединить.
РЕДАКТИРОВАТЬ : Если вы хотите сгруппировать по нескольким столбцам:
data<- data[,c("State", "PC_Name", "lat", "lon")]
sf_data <- st_as_sf(data, coords = c("lon", "lat"))
sf_data %>%
group_by(State, PC_Name) %>%
summarise(geometry = st_combine(geometry)) %>%
st_cast("POLYGON") %>%
group_by(State) %>%
summarise(geometry = st_combine(geometry))
st_cast("MULTIPOLYGON") -> res_sfdata