我使用代码为西孟加拉邦班库拉区生成了一个 voronoi 镶嵌,
India <- getData("GADM", country = "India", level = 2)
wb1 <- subset(India, NAME_1 == "West Bengal")
bankura <- subset(wb1,NAME_2=="Bankura")
voronoipolygons <- function(x, poly) {
library(deldir)
if (.hasSlot(x, 'coords')) {
crds <- x@coords
} else crds <- x
bb = bbox(poly)
rw = as.numeric(t(bbox(poly)))
z <- deldir(crds[,1], crds[,2],rw=rw)
w <- tile.list(z)
polys <- vector(mode='list', length=length(w))
require(sp)
for (i in seq(along=polys)) {
pcrds <- cbind(w[[i]]$x, w[[i]]$y)
pcrds <- rbind(pcrds, pcrds[1,])
polys[[i]] <- Polygons(list(Polygon(pcrds)), ID=as.character(i))
}
SP <- SpatialPolygons(polys)
SpatialPolygonsDataFrame(
SP, data.frame(data=data.frame(dummy = seq(length(SP)),
row.names=sapply(slot(SP, 'polygons'),
function(x) slot(x, 'ID')))))
}
tess_prim <- voronoipolygons(prim_school, bankura)
proj4string(tess_prim) <- proj4string(bankura)
final_prim <- gIntersection(bankura, tess_prim, byid=TRUE)
pal <- colorRampPalette(c("blue", "green", "red","yellow"))
plot(final_prim, col=pal(length(final_prim)), border="black")
points(prim_school, pch=20)
这里的文件prim_school是该区小学的经纬度信息。问题是文件中有 2336 个观察值。但是当我检查作为 voronoi 镶嵌的一部分创建的图块时,图块的数量是 2309。为什么会发生这种情况?为什么多边形的数量少于观察的数量?