R 从州组创建区域lat长数据帧

R 从州组创建区域lat长数据帧,r,sf,R,Sf,我一直在使用urbnmapr制作地图,它包含了用于绘制美国各州地图的漂亮边界。我现在需要几个州的外部边界来制作一个区域地图,并且正在寻找一种方法来过滤数据框,以便只包括外部边界 我将使用此外边框遮罩光栅图像。我工作的地区是 filter(urbnmapr::states, state_name %in% c("South Dakota", "Nebraska", "Iowa", "Minnesota",

我一直在使用
urbnmapr
制作地图,它包含了用于绘制美国各州地图的漂亮边界。我现在需要几个州的外部边界来制作一个区域地图,并且正在寻找一种方法来过滤数据框,以便只包括外部边界

我将使用此外边框遮罩光栅图像。我工作的地区是

filter(urbnmapr::states, state_name %in% c("South Dakota", "Nebraska", "Iowa", "Minnesota",
                                              "Missouri", "Michigan", "Indiana", "Illinois",
                                              "Wisconsin", "Kansas", "Ohio", "North Dakota"))

欢迎任何能给我一个对象的想法,我可以用它来遮罩这个地区的光栅。

使用
urbnmapr
sf

在sf对象上使用
st_union()
,只有您想要的状态才会给出外部边界

我认为
sf
对象可用于遮罩/裁剪光栅对象

库(urbnmapr)
图书馆(tidyverse)
图书馆(sf)
#>链接到GEOS 3.8.0、GDAL 3.0.4、项目6.3.1
表示为1个特征设置的所有几何图形
#>几何图形类型:多多边形
#>尺寸:XY
#>bbox:xmin:-340177.8 ymin:-950695.4 xmax:1627432 ymax:498098.3
#>投影CRS:美国国家地图集等面积
#>多边形((1422979-227154.21423979-225。。。
ggplot(我的州)+
geom_sf(填充=NA)

由(v0.3.0)于2020年12月10日创建


下面是一些示例数据,首先是光栅/sp

library(raster)
us <- getData("GADM", level=1, country="USA")
us <- us[!(us$NAME_1 %in% c("Alaska", "Hawaii")), ]
r <- raster(us, res=1)
values(r) <- 1:ncell(r)
states <- c("South Dakota", "Nebraska", "Iowa", "Minnesota", "Missouri", "Michigan", "Indiana", "Illinois", "Wisconsin", "Kansas", "Ohio", "North Dakota")

s <- us[us$NAME_1 %in% states, ]
m <- mask(r, s)
plot(m)
lines(us)
lines(s, col="red", lwd=2)
库(光栅)
我们
library(raster)
us <- getData("GADM", level=1, country="USA")
us <- us[!(us$NAME_1 %in% c("Alaska", "Hawaii")), ]
r <- raster(us, res=1)
values(r) <- 1:ncell(r)
states <- c("South Dakota", "Nebraska", "Iowa", "Minnesota", "Missouri", "Michigan", "Indiana", "Illinois", "Wisconsin", "Kansas", "Ohio", "North Dakota")

s <- us[us$NAME_1 %in% states, ]
m <- mask(r, s)
plot(m)
lines(us)
lines(s, col="red", lwd=2)
d <- aggregate(s)
lines(d, col="blue", lwd=3) 
#remotes::install_github("UrbanInstitute/urbnmapr")
library(urbnmapr)
library(sf) 
us2 <- get_urbn_map(map="states", sf = TRUE)
us2 <- sf::st_transform(us2, crs(r))
s2 <- subset(us2, state_name %in% states)
r <- raster(us, res=1)
values(r) <- 1:ncell(r)

m2 <- mask(r, s2)
plot(m2)
lines(as(us2, "Spatial"))
lines(as(s2, "Spatial"), col="red")