我试图创建一个 map 与县一级的数据在美国几个州.由于我包含了Alaska,所以我不能使用maps::map()函数,而 Select 使用usmap::us_map()函数.其结果是一个df,产生一个可爱的 map .
df<-usmap::us_map('counties')%>%
filter(abbr %in% c('AK','CO','ID','MT','UT','OR','WA','WY','ND','SD'))%>%
rename(state=abbr)
usmap::plot_usmap(regions='counties', include=c('AK','CO','ID','MT','UT','OR','WA','WY','ND','SD'))
然而,usmap包中存在的绘图选项并不完全是我所需要的.我想将其转换为SF对象.我使用了下面的代码,
MtWc <- lapply(split(df, list(df$county,df$piece),drop=T), function(x) st_polygon(list(cbind(x$x, x$y))))
MtW <- st_sfc(MtWc, crs = usmap_crs()@projargs)
MtW <- st_sf(data.frame(fips = unique(d$fips), county = names(MtWc), geometry = MtW))
尽管它只适用于某些州(例如科罗拉多州),但它并不适用于所有州,并导致以下错误:
MtrxSet中出错(x,dim,type="Polygon",NeedClosed=True): 未(全部)闭合的多边形
我try 了各种方法来避免这种情况,包括
df<-cleangeo::clgeo_Clean(df)
基本上,有没有人知道a)如何获取包含所列区域的县级多边形的SF对象,或者b)如何关闭这些多边形以使其工作?
仅供参考,我 Select 按县和块分开,因 for each 县都有多个部分,通常是岛屿.