gpt4 book ai didi

r - 向 ggmap 添加指北针和比例尺的简约方法

转载 作者:行者123 更新时间:2023-12-01 19:35:28 31 4
gpt4 key购买 nike

我正在尝试使用 ggmap 创建我正在工作的保护区的 map ,其中包含来自谷歌地球的卫星图像。我可以制作非常令人满意的图像,只是它缺少指北针和比例尺:

enter image description here

我知道添加这些元素的方法很冗长(例如 here ),但肯定有一种更简洁的方法来做到这一点!

我尝试过使用 map.scalenorth.arrow 但它们都给了我:

Error in polygon(xb + arrow.x * s, yb + arrow.y * s, ...) : 
plot.new has not been called yet

我可以使用 plotmap.scalenorth.arrow 在基本 R 中工作,但随后我无法得到我的卫星图像正确绘制。我还可以在基本 R 中使用 arrowstext 获得我想要的东西,但同样这些在 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.scalenorth.arrow 函数无法识别 ggmap 的窗口函数创建一个打开的图形窗口。我做了一些研究并试图解决这个问题,但没有任何效果。有谁能够建议一种方法来修复我收到的错误或在 ggmap 中获取比例尺和指北针而不使用数百行代码?

最佳答案

看起来map.scalenorth.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"))

enter image description here

关于r - 向 ggmap 添加指北针和比例尺的简约方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39067838/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com