如何从R中的另一个shapefile中获取包含多边形质心的shapefile的多边形?

时间:2016-03-04 20:32:50

标签: r gis

我正在使用R中的两个shapefile,我正在尝试选择其中一个包含另一个shp的质心的多边形。

我已经能够分别得到每个文件的质心(附图),但我找不到完成上述任务的方法。在这个例子中,假设我想在它们内部只获得带有蓝色质心(来自shp2)的多边形(shp1)。

example

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用 rgeos 包中的gCentroid()gContains()

library(raster) ## For data and functions used to make example SpatialPolygons objects
library(rgeos)  ## For topological operations on geometries

## Make a couple of example SpatialPolygons objects, p1 & p2
p1 <- shapefile(system.file("external/lux.shp", package="raster"))
r <- raster(extent(p1))
r[] <- 1:10
p2 <- rasterToPolygons(r, dissolve=TRUE)

## Find centroids of p2
cc <- gCentroid(p2, byid=TRUE)

## Select Polygons in p1 that contain at least one of centroids from p2
p3 <- p1[apply(gContains(p1, cc, byid=TRUE), 2, any),]

## Plot to check that that worked
ared <- adjustcolor("red", alpha=0.6)
plot(p1)
plot(p3, add=TRUE, col="wheat")
plot(p2, add=TRUE, border=ared)
points(cc, pch=16, col=ared)

enter image description here