我想使用>>地理参考栅格图像<<(tif文件)的原始
很不幸,这并没有按预期工作。生成的图像除了白色和典型的ggplot灰色之外,并没有显示任何颜色,通常在未定义自定义值时会出现。目前,我有点不知道实际上出了什么问题。我假设存储在中的基础波段值是颜色表的索引。这可能是错误的。如果它是错误的,那么波段值如何与相关联呢?即使我的假设是正确的:我给的参数仍然应该产生更多彩色的图形,不是吗?我检查了独特的值是什么:
显然,并非所有256个成员都使用了,这让我想起颜色并不总是需要反映底层波段数据分布(尤其是包含多个波段时)。
希望我的最后思考没有让您对目标产生困惑。
感谢您的帮助!
colortable
作为ggplot/ggplot2绘制的地图的彩色刻度。由于找不到更简单的解决方案,我通过访问已加载的栅格图像(object)raster1
的legend
属性中的colortable
槽来实现此目的。请注意,应保留HTML标签。raster1 <- raster(paste(workingDir, "/HUEK200_Durchlaessigkeit001_proj001.tif", sep="", collapse=""))
raster1.pts <- rasterToPoints(raster1)
raster1.df <- data.frame(raster1.pts)
colTab <- attr(raster1, "legend")@colortable
好的,目前为止都很好。现在我只需要将colortable
应用为我的现有绘图的彩色比例尺:
(ggplot(data=raster1.df)
+ geom_tile(aes(x, y, fill=raster1.df[[3]]))
+ scale_fill_gradientn(values=1:length(colTab), colours=colTab, guide=FALSE)
+ coord_fixed(ratio=1)
)
很不幸,这并没有按预期工作。生成的图像除了白色和典型的ggplot灰色之外,并没有显示任何颜色,通常在未定义自定义值时会出现。目前,我有点不知道实际上出了什么问题。我假设存储在中的基础波段值是颜色表的索引。这可能是错误的。如果它是错误的,那么波段值如何与相关联呢?即使我的假设是正确的:我给的参数仍然应该产生更多彩色的图形,不是吗?我检查了独特的值是什么:
sort(unique(raster1.df[[3]]))
这会输出:
[1] 0 1 2 3 4 5 6 7 8 9 10 11 12
显然,并非所有256个成员都使用了,这让我想起颜色并不总是需要反映底层波段数据分布(尤其是包含多个波段时)。
希望我的最后思考没有让您对目标产生困惑。
感谢您的帮助!
scale_fill_gradientn
函数的values
参数只接受0到1之间的值。我必须手动为colortable
中所有唯一颜色进行缩放。完成后我会将其发布为答案。但是还有一个问题尚未解决:栅格数据瓦片后面的栅格数据值并不完全反映所有使用的颜色,因为tif图像使用白色作为无值和黑色来轮廓化区域。必须有一种方法可以获取每个栅格像素/瓦片的原始颜色值。 - Florian R. Klein