作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 ggmap 创建我正在工作的保护区的 map ,其中包含来自谷歌地球的卫星图像。我可以制作非常令人满意的图像,只是它缺少指北针和比例尺:
我知道添加这些元素的方法很冗长(例如 here ),但肯定有一种更简洁的方法来做到这一点!
我尝试过使用 map.scale
和 north.arrow
但它们都给了我:
Error in polygon(xb + arrow.x * s, yb + arrow.y * s, ...) :
plot.new has not been called yet
我可以使用 plot
让 map.scale
和 north.arrow
在基本 R 中工作,但随后我无法得到我的卫星图像正确绘制。我还可以在基本 R 中使用 arrows
和 text
获得我想要的东西,但同样这些在 ggmap 中不起作用。
我正在使用的代码如下。您不会拥有多边形(因此我不会将其包含在代码中),但您将能够加载谷歌地球图像并复制错误。
library(rgdal)
library(ggmap)
library(GISTools)
# Load satellite picture
map.centre <- c(lon = 35, lat = -2.5)
map <- get_map(location=map.centre, source="google", maptype="satellite", zoom = 8)
# Plot map
ggmap(map, extent= "device")
map.scale(xc= 34, yc= -3, len= 10, units= "Kilometers",
ndivs= 4, tcol= "black", scol= "black", sfcol="black")
north.arrow(xb= 35.5, yb= -1, len=100, lab="N")
通过阅读,似乎 map.scale
和 north.arrow
函数无法识别 ggmap
的窗口函数创建一个打开的图形窗口。我做了一些研究并试图解决这个问题,但没有任何效果。有谁能够建议一种方法来修复我收到的错误或在 ggmap 中获取比例尺和指北针而不使用数百行代码?
最佳答案
看起来map.scale
和north.arrow
被设计为与基本图形一起使用,但ggplot使用grid
图形。我对绘制空间数据不太熟悉,但作为指北针的快速破解,下面的代码包含两个不同的选项:
ggmap(map, extent= "device") +
geom_segment(arrow=arrow(length=unit(3,"mm")), aes(x=33.5,xend=33.5,y=-2.9,yend=-2.6),
colour="yellow") +
annotate(x=33.5, y=-3, label="N", colour="yellow", geom="text", size=4) +
geom_segment(arrow=arrow(length=unit(4,"mm"), type="closed", angle=40),
aes(x=33.7,xend=33.7,y=-2.7,yend=-2.6), colour=hcl(240,50,80)) +
geom_label(aes(x=33.7, y=-2.75, label="N"),
size=3, label.padding=unit(1,"mm"), label.r=unit(0.4,"lines"))
关于r - 向 ggmap 添加指北针和比例尺的简约方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39067838/
我是一名优秀的程序员,十分优秀!