我想在openstreetmap中绘制点。要为地图确定合适的范围,我要使用min()
和max()
并将尺寸增加10%:
library(OpenStreetMap)
coords <- data.frame(cbind(c(-2.121821, -2.118570, -2.124278),
c(51.89437, 51.90330, 51.90469)))
topleft <- c(max(coords[,2]) + 0.1 * max(coords[,2]),
min(coords[,1]) - 0.1 * min(coords[,1]))
bottomright <- c(min(coords[,2]) - 0.1 * min(coords[,2]),
max(coords[,1]) + 0.1 * max(coords[,1]))
map <- openproj(openmap(topleft, bottomright, zoom = "16", type="osm"))
当我现在尝试创建地图时,R会占用我所有的资源,我必须终止这个过程。有没有更好的方法来实现这一目标?
R version 3.0.1 (2013-05-16)
Platform: x86_64-unknown-linux-gnu (64-bit)
other attached packages:
[1] ggplot2_0.9.3.1 OpenStreetMap_0.3.1 rgdal_0.8-14 raster_2.2-12 sp_1.0-14
[6] rJava_0.9-6
答案 0 :(得分:1)
您错误地扩展了范围,因为您会看到是否查看了topleft
和bottomright
的计算值。
一个不易出错的方法可能会使用函数extendrange()
(许多R绘图函数使用它在图中最极端点附近添加一点缓冲区)。
xx <- extendrange(coords[[1]], f=0.10)
yy <- extendrange(coords[[2]], f=0.10)
tl <- c(max(yy), min(xx))
br <- c(min(yy), max(xx))
map <- openproj(openmap(tl, br, zoom="16", type="osm"))
plot(map)