【问题标题】:How to get RGB raster image with UTM coordinates如何获取具有 UTM 坐标的 RGB 光栅图像
【发布时间】:2013-04-12 04:59:58
【问题描述】:

我有一个三层栅格,其中包含红色、绿色和蓝色通道值。我可以使用raster::plotRGB 绘制图像,但我需要添加带有 UTM 坐标的轴。可以使用axes=TRUE 添加坐标,但它们在空间中浮动,看起来很糟糕。我想获得使用raster plot 方法创建的绘图中显示的坐标,或者更好的是使用rasterVis::levelplot 时出现的坐标。

最终,我需要创建一个带有 UTM 坐标、比例尺和指北针的光栅图像。这需要使用 R 的 raster 包中的 plotRGB 函数或具有类似功能的函数来完成,因为我需要手动分配每个像素的颜色(无色带)。

【问题讨论】:

  • 提供一个小例子,包含可重复的数据,展示你到目前为止得到了什么以及你不喜欢它的什么?
  • 您能否向我们提供有关您的数据来源和文件格式的更多详细信息?
  • @klar, this post 可能对你有用。

标签: r spatial raster utm rastervis


【解决方案1】:

这是一个古老的帖子,但这是一个很好的问题,所以我会给它一个答案。

我将举例说明如何使用 rasterVis::levelplot 完成此操作,使用 raster 附带的 3 通道 R 徽标栅格数据。

library(rasterVis)
b <- brick(system.file("external/rlogo.grd", package="raster"))

使用 levelplot 绘制三通道 RGB 栅格

创建一个空的raster,其尺寸和范围与砖块相同。

r <- raster(b)

计算RGB通道值对应的十六进制颜色,并强制转换为factor

cols <- factor(rgb(b[], maxColorValue=255))

将这些因子值分配给栅格像元。

r[] <- cols

使用levelplot 绘图,从cols 的级别中提取十六进制颜色并将它们传递给col.regions

levelplot(r, col.regions=as.character(levels(cols)), colorkey=FALSE)

添加指北针和比例尺

对于指北针和比例尺,我们将查看@OscarPerpiñán 的docs

levelplot(r, col.regions=as.character(levels(cols)), colorkey=FALSE) +
  layer(SpatialPolygonsRescale(layout.north.arrow(), offset = c(5, 10), scale = 10)) +
  layer({
    xs <- seq(5, 25, by=5)
    grid.rect(x=xs, y=5,
              width=5, height=2,
              gp=gpar(fill=rep(c('transparent', 'black'), 2)),
              default.units='native')
    grid.text(x=xs-2.5, y=8, seq(0, 400, by=100),
              gp=gpar(cex=0.7),
              default.units='native')
  })

我将由您来计算与矩形的宽度相关的真实距离(传递给grid.text),以地图单位表示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-16
    • 2016-11-09
    • 2022-11-19
    • 2021-06-22
    • 2010-11-02
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    相关资源
    最近更新 更多