将比例尺添加到使用 ggRGB 制作的地图

Adding scale bar to map made with ggRGB

我使用 RStoolbox 包中的 ggRGB() 制作了卫星图像的 RGB 合成图像。我想为图像添加一个比例尺,但我不知道该怎么做。在 R 中使用 ggmaps() 时,我通常会使用 ggsn 包中的 scalebar(),但它看起来不像可以处理 RasterBrick 对象,因为 ggRGB() 需要像这样的输入。

这是一个例子:

library(raster)
library(ggplot2)
library(RStoolbox)

data(lsat)

ggRGB(img = lsat,
      r = 3,
      g = 2,
      b = 1,
      stretch = 'hist') +
  blank() # eliminate x and y axes

这会生成以下图像:

我想在右上角添加一个比例尺。这是我尝试过的:

ggRGB(img = lsat,
      r = 3,
      g = 2,
      b = 1,
      stretch = 'hist') +
  blank() +
  ggsn::scalebar(lsat, dist = 2, dist_unit = "km",
                 transform = TRUE, model = "WGS84", location = "upperright")

这 returns 一个错误:“.local(x, ...) 中的错误:图层名称无效”

如有任何帮助,我们将不胜感激。如果可能的话,我想坚持使用 ggRGB(),但如果我可以在图像上放置比例尺,我愿意接受其他绘图方法。

您可以使用包 ggspatial

ggRGB(img = lsat,
      r = 3,
      g = 2,
      b = 1,
      stretch = 'hist') +
  theme_void() +
  ggspatial::annotation_scale(location = "tr", width_hint =0.5, pad_x = unit(0.7, "cm"))

如果你想对外观进行更精细的控制,这个答案中也给出了一个稍微冗长但高度可定制的方法