r - 如何使用 UTM 坐标获取 RGB 光栅图像

标签 r spatial raster utm rastervis

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

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

最佳答案

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

我将举例说明如何使用 rasterVis::levelplot 完成此操作,使用raster自带的3 channel R标志光栅数据.

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

使用 levelplot 绘制三 channel RGB 栅格

创建一个空 raster具有与砖相同的尺寸和范围。
r <- raster(b)

计算RGB channel 值对应的十六进制颜色,并强制为factor .
cols <- factor(rgb(b[], maxColorValue=255))

将这些因子值分配给栅格的像元。
r[] <- cols

levelplot 绘图,从 cols 的级别中提取十六进制颜色并将它们传递给 col.regions .
levelplot(r, col.regions=as.character(levels(cols)), colorkey=FALSE)

enter image description here

添加指北针和比例尺

对于指北针和比例尺,我们将查看@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 ),以 map 单位表示。

enter image description here

关于r - 如何使用 UTM 坐标获取 RGB 光栅图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16093802/

相关文章:

r - stringdist 包中的 Jaccard 相似度来匹配字符串中的单词

postgis - 从 Postgis 获取投影限制

Mysql 空间扩展。如何检查线串是否包含一个点?

R - 如何下载 ascii 光栅并解压缩?

R - 通过光栅图像(迷宫)寻找成本最低的路径?

R:使用条件将垂直数据转换为水平格式

r - 如何在 R 中为 Leaflet 使用 addGeoJSON() 功能?

r - 如何按顺序编码多列并删除 tidyverse 中的重复数据

php - 距离查询

r - 在栅格计算函数中评估文本