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)
现在可以正常工作并且不显示任何警告。
我正在尝试在 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)
现在可以正常工作并且不显示任何警告。