我想我想做一些非常基本的事情,但我似乎找不到关于如何做的帖子。如果我错了并且已经有关于这个主题的帖子,我道歉!
我有两个shapefile,你可以通过这个link找到:
setwd("~/where you saved your data")
nuts <- readOGR(".", layer = "NUTS_RG_60M_2010")
aqueduct <- readOGR(".", layer = "aqueduct_global_dl_20150409")
说实话,现在我已经卡住了。 我想将aqueduct shapefile的所有变量的值添加到nuts文件的相交nuts3区域。
我尝试过gIntersection,交叉,提取......但没有成功。有人可以帮我把交叉点弄正确吗?最终结果是一个带有aqueduct-shapefile的所有变量的nut-shapefile。
非常感谢!
答案 0 :(得分:1)
这是两个多边形图层的空间连接。除非 nuts 中的每个特征与渡槽的一个特征完全相交,否则没有直接/单一的方式来进行空间连接。
相反,您可以从与坚果的每个功能相对应的渡槽属性表中获取行的列表 -
nuts_over1 = over(nuts, aqueduct, returnList = TRUE)
或者用函数汇总特定属性,在这种情况下,结果可以连接回 nuts 的属性表。例如,渡槽与六个第一特征相交的国家如下 -
nuts_over2 = over(
nuts,
aqueduct[, "COUNTRY"],
fn = function(x) paste(x, collapse = ", ")
)
head(nuts_over2)
COUNTRY
1 Austria, Hungary, Austria, Hungary
2 Austria, Hungary, Austria, Hungary, Slovakia, Austria, Slovakia
3 Austria, Austria, Hungary, Austria, Hungary
4 Austria
5 Austria, Austria, Austria, Austria, Austria
6 Austria, Austria
此信息可以连接回坚果的属性表,如下所示 -
nuts@data = cbind(nuts@data, nuts_over2)
head(nuts@data)
NUTS_ID STAT_LEVL_ SHAPE_Leng SHAPE_Area
0 AT111 3 1.089017 0.08091455
1 AT112 3 2.257319 0.20926007
2 AT113 3 2.002492 0.17728455
3 AT121 3 3.158370 0.40147321
4 AT122 3 2.956927 0.42675504
5 AT123 3 2.010415 0.14145865
COUNTRY
0 Austria, Hungary, Austria, Hungary
1 Austria, Hungary, Austria, Hungary, Slovakia, Austria, Slovakia
2 Austria, Austria, Hungary, Austria, Hungary
3 Austria
4 Austria, Austria, Austria, Austria, Austria
5 Austria, Austria