r - 追加/合并形状文件

标签 r gis shapefile

我想执行一个非常简单的操作:合并两个形状文件。具体来说,我有美国每个州的人口普查区域形状文件,我想将它们合并到一个形状文件中。最终,我想获取组合的形状文件并在一组经纬度坐标上执行叠加,以确定我的坐标属于哪个人口普查区。

我看到很多关于此的讨论 (Combining bordering shapefiles in R)。但是,所有讨论都已过时,我希望与此同时对软件包进行改进。

我正在使用的文件位于:ftp://ftp2.census.gov/geo/tiger/TIGER2010/TRACT/2010/

下面的代码可用于重新创建我正在使用的文件。它需要下载两个文件,总共大约 11 兆字节。运行时间应该只有一分钟。

非常感谢任何帮助。这似乎是一项微不足道的操作。也许如果我在地理空间映射方面有更多经验,我可以更好地利用可用的文档。

以下是我尝试过的一些方法:

### Insert your file path here
FPATH <- './data'

### Set up library
require(rgeos)
require(maptools)
require(RCurl)
require(parallel)
cl <- makeCluster(detectCores())

### Download files... (~11,000 KB total for this example)
ftp <- 'ftp://ftp2.census.gov/geo/tiger/TIGER2010/TRACT/2010/'
files <- getURLContent(ftp, dirlistonly = T)
files <- unlist(strsplit(files, split = '\r\n', fixed = T))
files <- grep('2010_[[:digit:]]{2}_', files, value = T)[1:2]  # Only grab two files for this example
clusterMap(cl, download.file, url = paste0(ftp, files), destfile = paste0(FPATH, files))

### Unzip shape files
files <- list.files(FPATH, full.names = T)
clusterMap(cl, unzip, zipfile = files, exdir = FPATH)

### Read in shape files
files <- list.files(FPATH, pattern = "shp$", full.names = T)
a <- readShapePoly(fn = files[1])
b <- readShapePoly(fn = files[2])

### Attempt to join two shape files
spRbind(a, b)  # Error in spRbind(as(obj, "SpatialPolygons"), as(x, "SpatialPolygons")) : non-unique polygon IDs
gUnion(a, b)   # Error in RGEOSBinTopoFunc(spgeom1, spgeom2, byid, id, "rgeos_union")   : geos_geospolygon2SpatialPolygons: ng > length(IDs)

感谢您的宝贵时间。

最佳答案

您有重复的多边形 ID。您可以手动更改它们,或使用 taRifx.geo:

library(devtools)
install_git("git://github.com/gsk3/taRifx.geo.git")
library(taRifx.geo)
rbind(a,b, fix.duplicated.IDs=TRUE)

可供查阅的代码here .

关于r - 追加/合并形状文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19961898/

相关文章:

r - 如何计算数据框中的元素出现在另一个数据框中的次数

c++ - 如何使用 .Call 将 3D 数组从 R 传递到 C++

在 R 中具有多个特征数据集的 readOGR .gdb

sql - 如何递归查找两个表之间的相交地理

r - 从点创建凸包多边形并另存为shapefile

r - 如何转换多个数据框中的列格式?

r - Bookdown 中的图编号消失

r - 计算R中多边形的经度和纬度范围

Python: Bokeh 未按预期生成世界国家 map