0

我有一些相邻政府区的多边形叠加,我想在单独的地图上显示这些区的数据,但由于底图的边界框小于多边形,后者被扭曲:

地图输出

我用于此的代码是

#basemap bounds
minmaxx <- c(-0.48384, -0.29955)
minmaxy <- c(51.2904, 51.41771)
mymapextent <- cbind(minmaxx, minmaxy)

districtboundary<- fortify(readShapePoly("maps/districts84/districts84.shp"))
pdistrictboundary<-geom_polygon(data=districtboundary, aes(x=long, y=lat, group=group), colour= "red", fill=NA)

map1 <- ggmap(get_map(location= bbox(mymapextent),  source='osm', color='bw'))
map1 <- map1 + geom_point(data=pointstestlatlong, aes(Longitude_Decimal, Latitude_Decimal, colour=CasualtySeverity))
map1 <-  map1 + pdistrictboundary

print(map1)

有没有办法可以将多边形剪辑到边界框?

4

1 回答 1

0

根据 Josh 上面的提示,这个函数应该可以工作。它接受bb边界框或栅格范围对象作为参数:

clip_spdf <- function(shp, bb, byid = T){
  if(class(bb)[1] == "Extent") e <- bbox(bb) else bb <- e
  e <- rgeos::readWKT(paste('POLYGON((',e[1,1],e[2,1],',',e[1,1],e[2,2],',',e[1,2],e[2,2],',',e[1,2],e[2,1],',',e[1,1],e[2,1],'))',collapse=' '))
  e@proj4string <- shp@proj4string
  rgeos::gIntersection(shp, e, byid=byid)
}
于 2014-06-09T19:56:34.873 回答