2014-02-19 123 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) 
} 
相關問題