[英]Intersect two shapefiles with R
我想我想做一些非常基础的事情,但是我似乎找不到关于如何做的文章。 如果我错了,并且已经有关于此主题的帖子,我深表歉意!
我有两个shapefile,可以通过此链接找到:
setwd("~/where you saved your data")
nuts <- readOGR(".", layer = "NUTS_RG_60M_2010")
aqueduct <- readOGR(".", layer = "aqueduct_global_dl_20150409")
老实说,现在我已经被困住了。 我想将渡槽shapefile的所有变量的值添加到nuts文件的相交的nuts3区域中。
我尝试了gIntersection,相交,提取...,但是没有成功。 有人可以帮我弄清楚交叉点吗? 最终结果是一个螺母形状文件,其中包含渡槽形状文件的所有变量。
非常感谢你!
这是两个多边形层的空间连接。 除非螺母中的每个特征都与渡槽的一个特征完全相交,否则就没有直接/单一的方式进行空间连接。
相反,您可以从渡槽的属性表中获取与螺母的每个特征相对应的行列表 -
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.