我有一个SpatialPolygonsDataFrame(spolydf)和一个SpatialPointsDataFrame(spointdf)。这些层具有不同的范围,但重叠。
我可以使用
选择落在多边形内的点fall.within.poly <- spointdf[spolydf,]
如何选择多边形外的点?试过了
fall.outside.poly <- spointdf[-spolydf,]
但不起作用。我想要一些简单的东西 - 请帮忙。
答案 0 :(得分:1)
有些晚了,但是我今天遇到了同样的问题,所以我虽然会使用gDifference()
包中的rgeos
发布我的解决方案:
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)