R将点保持在一个多边形内

时间:2014-04-17 11:00:32

标签: r overlay spatial

我有两个对象:

pts=readOGR(dsn="overpass-turbo/shp/",layer="amenity")
poly=readOGR(dsn="overpass-turbo/shp/",layer="polygons")

喜欢

points in polygon

因此,我会得到一个包含polgygon中所有点的空间数据框... 我找到了一些in this post,但它并没有按照我的意愿行事!

a<-over(pts, poly)

但不是Sp数据框!!

我知道!!我总是遇到过度困扰的麻烦...

2 个答案:

答案 0 :(得分:3)

我找到了更多的东西: - )

pts_in<-pts[!is.na(over(pts,poly)),]

enter image description here

它只保留多边形中的点(来源:http://cran.r-project.org

答案 1 :(得分:0)

不完全确定您的确切需求,但我认为poly是您选择的空间数据框架。 如果您想计算多边形中的点数,我认为您必须执行以下操作:

pts_in=over(SpatialPolygons(poly@polygons,SpatialPoints(pts),
                returnlist=TRUE)
poly$npoints<-unlist(lapply(pts_in,length)

另一方面,如果要为每个点指定相应的多边形,请执行以下操作:

pts$nrow=over(SpatialPoints(pts),SpatialPolygons(poly@polygons),
          returnlist=TRUE)

您还可以查看this reference以获取一些有用的提示。