2017-02-10 93 views
0

我想我想做一些非常基本的事情,但我似乎没有找到关于如何做的文章。如果我错了,并且已经有关于这个主题的帖子,我很抱歉!与R相交两个形状文件

我有两个shape文件,你可以通过这个link发现:

setwd("~/where you saved your data") 
nuts <- readOGR(".", layer = "NUTS_RG_60M_2010") 
aqueduct <- readOGR(".", layer = "aqueduct_global_dl_20150409") 

而且说实话,现在我已经卡住。 我想将渡槽shapefile的所有变量的值添加到螺母文件的相交的nuts3区域。

我尝试了gIntersection,intersect,extract ...但没有成功。有人能帮我让交点正确吗?最终结果是带有渡槽形文件的所有变量的坚果形文件。

非常感谢!

回答

1

这是两个多边形图层的空间连接。除非螺母中的每个特征与渡槽的一个特征完全相交,否则没有简单/单一的方式来进行空间连接。

相反,你可以获取从渡槽的属性表对应的坚果每个功能行的列表 -

nuts_over1 = over(nuts, aqueduct, returnList = TRUE) 

或汇总具有特定功能的属性,在这种情况下,结果可以连接回属性表螺母。举例来说,如果导水管相交的六个第一特征的国家如下 -

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 

此信息可以如下接合回坚果的属性表 -

[email protected] = cbind([email protected], nuts_over2) 
head([email protected]) 
    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