首先,使用union 时的错误似乎是由于包冲突引起的。特别是,没有调用正确的函数union。使用
raster:::union(US_counties, carribbean)
给予
Warning message:
In union(US_counties, carribbean) : non identical CRS
这可能是一个重要的警告,与尝试使用 `rbind.也许你比我更了解 CRS(坐标参考系统),但问题是
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)
现在可以正常工作并且不显示任何警告。