R将地图ShapeFile合并在一起

时间:2018-11-19 16:24:42

标签: r shapefile

我正在尝试将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)

谢谢!

1 个答案:

答案 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)

现在可以使用,并且不显示警告。