【问题标题】:R Merging Map ShapeFiles TogetherR将地图ShapeFiles合并在一起
【发布时间】:2019-04-22 01:28:37
【问题描述】:

我正在尝试在 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(如下所示),我得到错误:相同的 CRS(dots) 不是 TRUE。

rbind(US_counties, carribbean, makeUniqueIDs = TRUE)

使用联合,我在 as.vector(x) 中出现错误:没有方法可以将此 S4 类强制转换为向量。

union(US_counties, carribbean)

提前致谢!

【问题讨论】:

    标签: r shapefile


    【解决方案1】:

    首先,使用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)
    

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

    【讨论】:

    • 感谢朱利叶斯的回答!当我尝试复制您的代码时,我从联合方法调用中收到此错误: as.vector(x) 中的错误:没有将这个 S4 类强制为向量的方法。是因为我缺少一个包裹吗?
    • @Alan,查看更新。实际上更多的是关于太多的包而不是缺少一些东西。
    猜你喜欢
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 2020-12-26
    相关资源
    最近更新 更多