R合并地图ShapeFiles在一起

R Merging Map ShapeFiles Together

我正在尝试在 R 中将两个 shapefile 合并在一起进行绘图。

我已经从 here and the ShapeFile of U.S. county borders from this link 下载了加勒比海政治边界的 ShapeFile 格式。

我已经用

阅读了两个文件
US_counties <- shapefile("~/us_county_shp_files/tl_2017_us_county.shp")
carribbean <-  shapefile("~/pol6bg/pol6bg.shp")

通过查看其他帖子,我尝试同时使用 union 和 rbind 方法。

使用 rbind(如下所示),我得到错误:identicalCRS(dots) is not TRUE。

rbind(US_counties, carribbean, makeUniqueIDs = TRUE)

使用 union,我在 as.vector(x) 中遇到错误:没有将此 S4 class 强制转换为向量的方法。

union(US_counties, carribbean)

提前致谢!

首先,使用union时的错误似乎是由于包冲突引起的。特别是,没有调用正确的函数 union。使用

raster:::union(US_counties, carribbean)

给予

Warning message:
In union(US_counties, carribbean) : non identical CRS

这可能是一个重要的警告,与尝试使用 `rbind 时的警告相同。或许你比我更了解CRS(Coordinate Reference Systems),但问题是

proj4string(carribbean)
# [1] "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
proj4string(US_counties)
# [1] "+proj=longlat +datum=NAD83 +no_defs +ellps=GRS80 +towgs84=0,0,0"

所以,毫不奇怪,这两个形状文件的格式有些不同。在 this 有用的阅读的帮助下,我们发现统一这些格式并不难。例如,

library(sp)
carribbean <- spTransform(carribbean, proj4string(US_counties))

然后

rbind(US_counties, carribbean, makeUniqueIDs = TRUE)
# Error in rbind(deparse.level, ...) : 
#   numbers of columns of arguments do not match

仍然不起作用,但问题很明显,因为我们正在尝试绑定不同的变量

names(US_counties)
#  [1] "STATEFP"  "COUNTYFP" "COUNTYNS" "GEOID"    "NAME"     "NAMELSAD" "LSAD"     "CLASSFP" 
#  [9] "MTFCC"    "CSAFP"    "CBSAFP"   "METDIVFP" "FUNCSTAT" "ALAND"    "AWATER"   "INTPTLAT"
# [17] "INTPTLON"
names(carribbean)
# [1] "F_CODE"     "NAM"        "NA2"        "NA2_DESCRI" "NA3"        "NA3_DESCRI" "WFBPATHLN" 
# [8] "AREA"       "PERIMETER" 

然而,

raster:::union(US_counties, carribbean)

现在可以正常工作并且不显示任何警告。