【问题标题】:Subset spatial points with a polygon使用多边形子集空间点
【发布时间】:2018-09-30 11:03:03
【问题描述】:

我有一个 SpatialPolygonsDataFrame (spolydf) 和一个 SpatialPointsDataFrame (spointdf)。这些图层具有不同的范围,但重叠。

我可以选择落在多边形内的点

fall.within.poly <- spointdf[spolydf,]

如何选择多边形之外的点?试过了

fall.outside.poly <- spointdf[-spolydf,]

但不起作用。我缺少一些简单的东西-请提供任何帮助。

【问题讨论】:

  • 您可能想使用函数over 来查找哪些点落在多边形中。
  • 谢谢,但我正在寻找多边形之外的点。
  • 是的,我知道,但两个答案都是相关的。如果您使用sp::over,您将保留所有积分。那些超过多边形的将有多边形信息,其他的将有 NA。然后就可以过滤了。如果没有您提供可重现的示例,我无法向您展示。

标签: r spatial sp


【解决方案1】:

有点晚了,但我今天遇到了同样的问题,所以我想我会使用 rgeos 包中的 gDifference() 发布我的解决方案:

require(rgeos)
require(sp)

##create spdf
coords=expand.grid(seq(150,151,0.1),seq(-31,-30,0.1))
spdf=data.frame("lng"=coords[,1],"lat"=coords[,2])
coordinates(spdf) = ~lng+lat
proj4string(spdf)<- CRS("+init=epsg:4326")
plot(spdf)

##create poly
poly1 = SpatialPolygons(list(Polygons(list(Polygon(cbind(c(150.45,150.45,150.75,150.75,150.45),c(-30.75,-30.45,-30.45,-30.75,-30.75)))),ID=1)))
proj4string(poly1)<- CRS("+init=epsg:4326")
lines(poly1)

##get difference
out = gDifference(spdf,poly1)
points(out,col="red",pch=16)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-15
    • 2019-02-22
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    相关资源
    最近更新 更多