2014-02-19 59 views
0

我有一些毗邻政府区AA多边形叠加,我想表明在不同的地图各区数据,但作为底图边框比多边形后者失真更小:是否可以将多边形剪切到基础地图的边界框?

map output

我使用该代码,这是

#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) 

有没有一种方法可以让我夹多边形边界框?

+0

对于一般的溶液,[请参见此处](http://stackoverflow.com/questions/13982773/crop-for-spatialpolygonsdataframe/13986029# 13986029)。我对ggplot的空间映射命令一无所知,但是它看起来像是先按照链接答案中的配方进行剪辑,然后'fortify',你应该没问题。 –

+0

谢谢,我仍然得到这个错误。现在我已经修剪了边界层,我将试着通过玩弄它来解决它。 – Dave

回答

0

符合乔希的提示上面这个函数应该工作。它接受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=' ')) 
    [email protected] <- [email protected] 
    rgeos::gIntersection(shp, e, byid=byid) 
} 
相关问题