![](/img/trans.png)
[英]How can I project a raster in lat-long coordinates to UTM, for plotting in tmap?
[英]How to get RGB raster image with UTM coordinates
我有一个三层栅格,其中有红色,绿色和蓝色通道值。 我可以使用raster::plotRGB
绘制图像,但是我需要添加具有UTM坐标的轴。 可以使用axes=TRUE
添加axes=TRUE
,但是axes=TRUE
在空间中浮动并且看上去很差。 我想获得坐标显示在使用raster
plot
方法创建的plot
的坐标,或者更好的是使用rasterVis::levelplot
时显示的rasterVis::levelplot
。
最终,我需要创建一个具有UTM坐标,比例尺和向北箭头的栅格图像。 这需要使用R的raster
包中的plotRGB
函数或具有类似功能的东西来完成,因为我需要手动分配每个像素的颜色(无色带)。
这是一篇古老的文章,但这是一个好问题,所以我给它一个答案。
我给这如何可能会做一个例子rasterVis::levelplot
,使用自带的3槽R标志栅格数据raster
。
library(rasterVis)
b <- brick(system.file("external/rlogo.grd", package="raster"))
创建一个具有与砖相同尺寸和范围的空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
您自己来计算与矩形的宽度(以地图单位为单位)关联的真实距离(传递给grid.text
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.