我正在尝试将R中的两个shapefile合并在一起进行绘图。
我从here下载了加勒比海地区政治边界的ShapeFile格式,并从link下载了美国县界的ShapeFile。
我已经使用
读取了两个文件US_counties <- shapefile("~/us_county_shp_files/tl_2017_us_county.shp")
carribbean <- shapefile("~/pol6bg/pol6bg.shp")
通过查看其他帖子,我尝试同时使用union和rbind方法。
使用rbind(如下所示)时,出现错误:sameCRS(dots)不是TRUE。
rbind(US_counties, carribbean, makeUniqueIDs = TRUE)
通过并集,我在as.vector(x)中遇到错误:没有将这种S4类强制转换为向量的方法。
union(US_counties, carribbean)
谢谢!
答案 0 :(得分:2)
首先,使用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)
现在可以使用,并且不显示警告。