У меня есть один большой шейп-файл, который мне нужно разделить по атрибутам (сгруппированным значениям) на несколько. В ArcGIS эта функция вызывает Split By Attribute
Давайте прочитаем nc
массив данных из библиотеки sf
в качестве примера
library(tidyverse)
library(sf)
nc = st_read(system.file("shape/nc.shp", package="sf"))
nc
Simple feature collection with 100 features and 14 fields
geometry type: MULTIPOLYGON
dimension: XY
bbox: xmin: -84.32385 ymin: 33.88199 xmax: -75.45698 ymax: 36.58965
epsg (SRID): 4267
proj4string: +proj=longlat +datum=NAD27 +no_defs
First 10 features:
AREA PERIMETER CNTY_ CNTY_ID NAME FIPS FIPSNO CRESS_ID
1 0.114 1.442 1825 1825 Ashe 37009 37009 5
2 0.061 1.231 1827 1827 Alleghany 37005 37005 3
3 0.143 1.630 1828 1828 Surry 37171 37171 86
Я хочу разделить это на 100 шейп-файлов согласно NAME
переменная. Итак, я собираюсь group_by
, nest
и walk
вот так.
nc %>%
mutate(group = as.character(NAME)) %>%
group_by(group) %>%
nest() %>%
mutate(data = map(data, ~st_as_sf(.x))) %>%
walk2(.x = data, .y = group,
~st_write(obj = .x,
dsn = paste0(.y,
".shp")))
Этот красивый канал возвращает мне следующую ошибку:
Ошибка: может преобразовать grouped_df/tbl_df/tbl/data.frame
объект в функцию