【问题标题】:Adding scale bar to map made with ggRGB将比例尺添加到使用 ggRGB 制作的地图
【发布时间】:2021-08-15 01:46:42
【问题描述】:

我使用 RStoolbox 包中的ggRGB() 制作了卫星图像的 RGB 合成图像。我想在图像上添加一个比例尺,但我不知道如何做到这一点。在 R 中使用 ggmaps() 时,我通常会使用 ggsn 包中的 scalebar(),但它看起来不能像 ggRGB() 所需的输入那样处理 RasterBrick 对象。

这是一个例子:

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")

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

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

【问题讨论】:

  • 空白()错误:找不到函数“空白”

标签: r satellite-image


【解决方案1】:

你可以使用包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"))

如果你想对外观进行更精细的控制,这个答案https://stackoverflow.com/a/39069955/2761575也给出了一个稍微冗长但高度可定制的方法

【讨论】:

    猜你喜欢
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 2015-10-21
    • 1970-01-01
    相关资源
    最近更新 更多