使用 ggsn 添加指北针和比例尺
Add North arrow and scalebar using ggsn
我正在寻找一种使用 ggsn
包生成包括指北针和比例尺的地图的方法。
我已成功添加指北针,但还需要添加标量。
这是我到目前为止所做的:
mg <- get_map(bbox(extent(geit_mb[[1]])*2), source="google", zoom=13)
bbox(extent(geit_mb[[1]])*2)
min max
s1 21.17131 21.25476
s2 69.85586 69.90750
maps <- ggmap(mg) +
geom_path(data = geit_4237, aes(x=location.long, y=location.lat)) +
scalebar(geit_4237, dist = 5, dd2km = TRUE, model = 'WGS84')
north2(maps, .75,.90)
我收到以下错误:
Warning message: Removed 2 rows containing missing values (geom_text).
我错过了什么?
但是 运行 单独使用比例尺我收到了这些警告:
Warning messages:
1: In max(data$long) : no non-missing arguments to max; returning -Inf
2: In min(data$lat) : no non-missing arguments to min; returning Inf
3: In max(data$lat) : no non-missing arguments to max; returning -Inf
4: In min(data$lat) : no non-missing arguments to min; returning Inf
5: In max(data$lat) : no non-missing arguments to max; returning -Inf
6: In min(data$lat) : no non-missing arguments to min; returning Inf
7: In sin(lat) : NaNs produced
8: In cos(phi) : NaNs produced
9: In sin(phi) : NaNs produced
10: In sin(phi) : NaNs produced
11: In sin(lat) : NaNs produced
12: In cos(phi) : NaNs produced
13: In sin(phi) : NaNs produced
14: In sin(phi) : NaNs produced
输出:
dput(bbox(extent(geit_mb[[1]])*2))
structure(c(21.17130645, 69.8558596, 21.25475825, 69.9075024), .Dim = c(2L, 2L), .Dimnames = list(c("s1", "s2"), c("min", "max")))
如何将比例尺添加到 ggmap 不是很明显。这是我在阅读代码的帮助下管理的内容。
获取地图并加载库
library("ggmap")
library("ggsn")
map <- get_googlemap(center =c(23.89, 52.74), zoom = 12, maptype = "hybrid")
获取地图的边界框并将其重新格式化为 data.frame
for scalebar
bb <- attr(map, "bb")
bb2 <- data.frame(long = unlist(bb[c(2, 4)]), lat = unlist(bb[c(1,3)]))
将比例尺添加到 ggmap
ggmap(map) +
scalebar(data = bb2, dist = 1, dd2km = TRUE, model = "WGS84",
location = "topleft",
anchor = c(
x = bb$ll.lon + 0.1 * (bb$ur.lon - bb$ll.lon),
y = bb$ll.lat + 0.9 * (bb$ur.lat - bb$ll.lat)
)
)
data
是地图的边界框。
dist
给出比例尺每段的长度
dd2km
应该为 TRUE,因为地图数据采用十进制度数(但代码只是检查该值不为空)
model
给出 google 地图的基准 - WGS84。
我发现单独设置 location
会使刻度非常靠近边缘,以至于图例或条形图丢失。因此,我使用 anchor
将比例尺从左侧定位 10%,向上定位 90%。我仍然需要设置 location
,因为这与比例尺相对于锚点的定位方向有关。