2014-06-20 30 views
2

任何人都可以在R中的OpenStreetMap圖上繪製一個框? box不適合於地圖本身,而rect根本不會繪製任何東西..R中的OSM圖塊附近的框

require(OpenStreetMap)  
m = openmap(c(52,-1), c(51,1), zoom=8, type='osm') 
par(mai=rep(.2,4)) 
plot(m, removeMargin=F) 
box() 
rect(-1, 51, 1, 52, border='black', lwd=2) 

回答

4

box()情節圍繞整個小區面積,這顯然包括一些空白框。

rect的問題是座標不符合您的預期:請通過向圖中添加一些軸來檢查此問題。正確的邊界座標可以從m對象本身獲得:m$bbox,請參見str(m)。使用這些來繪製你的矩形像這樣:

require(OpenStreetMap)  
m = openmap(c(52,-1), c(51,1), zoom=8, type='osm') 
# par(mai=rep(.2,4)) 

plot(m, removeMargin=F) 

# add axes to check coordinates, uncomment to see for yourself 
# axis(1); axis(2) 

p1 = m$bbox$p1 # bottom left 
p2 = m$bbox$p2 # top right 
rect(xleft=p1[1], ybottom=p1[2], xright=p2[1], ytop=p2[2], xpd=NA, lwd=2, border='red') 
+1

D'oh。當然座標是在墨卡託。因此'projectMercator(c(51,52),c(-1,1))'也應該得到bbox,儘管你的方法可能更可靠。謝謝koekenbakker。 – geotheory

+0

不知道projectMercator,很高興知道! – koekenbakker