Я пытаюсь использовать ggmap для создания карты охраняемых территорий, над которыми я работаю, со спутниковым изображением из Google Earth внизу. Я могу сделать очень удовлетворительное изображение, за исключением того, что на нем отсутствует стрелка севера и масштабная линейка:
Я знаю, что есть очень длинные способы добавления этих элементов (например, здесь ), но наверняка должен быть более экономный способ сделать это!
Я пробовал использовать map.scale
и north.arrow
, но оба они дают мне:
Error in polygon(xb + arrow.x * s, yb + arrow.y * s, ...) :
plot.new has not been called yet
Я могу заставить и map.scale
, и north.arrow
работать в базе R, используя plot
, но тогда я не могу правильно построить свой спутниковый снимок. Я также могу получить то, что хочу, используя arrows
и text
в базе R, но опять же, в ggmap это не сработает.
Код, который я использую, приведен ниже. У вас не будет многоугольника (поэтому я не буду включать его в код), но вы сможете загрузить изображение Google Earth и воспроизвести ошибку.
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 без использования сотен строк кода?
ggsn
у вас не работал? (cran.rstudio.com/web/packages/ggsn) Кроме того, если вы действительно заботится о краткости, "сжатый" - это на 3 символа меньше и $ BIGWORD. - person hrbrmstr   schedule 21.08.2016