生成GeoTIFF色彩地图

6

我正在生成2D统计地图,希望也能生成并保存图像的颜色映射。均值大小图像的数据类型为float32。以下示例修改自在线源代码:

with rasterio.open(name,'w',**profile) as dst:
    dst.write(data.astype(np.float32), 1)
    dst.write_colormap(
        1, {
            0: (255, 0, 0, 255),
            255: (0, 0, 255, 255) })
    cmap = dst.colormap(1)
    print (cmp)

无法工作,调用colormap(1)返回空表并终止程序。

将数据类型更改为uint8或uint16后,它可以勉强工作,但我无法找到有关如何更改浮点和整数数据类型的颜色表和映射的示例。

是否有人能够提供一个片段,显示如何为浮点图像生成不同的colormaps、colorinterps和/或color pallets?虽然我目前正在使用rasterio,但如果有人可以发布解决方案,我也可以转换为GDAL。

2个回答

2
你的程序崩溃的原因几乎可以确定是你在文件仍然打开的情况下读取了它。你的颜色表格的格式和语法都是正确的。以下代码将退出第一个上下文管理器以关闭文件,然后重新打开。请尝试:
with rasterio.open(name,'w',**profile) as dst:
    dst.write(data.astype(np.float32), 1)
    dst.write_colormap(
        1, {
            0: (255, 0, 0, 255),
            255: (0, 0, 255, 255) })

with rasterio.open(name) as dst:
    cmap = dst.colormap(1)
    print (cmp)

我不再能够访问那个工作项目,所以无法根据原始问题检查答案。我将尝试在其他地方复现该问题,但这需要一些时间。顺便说一下,我给了您一个+1,因为这是我一年半以来解决问题的第一个线索。谢谢。 - EBo

0
到目前为止,使用rasteriogdal都无法存储浮点值的颜色表。Rasterio的write_colormap方法仅针对uint8数据类型(uint16可以使用,但是超过255的值将被跳过;在rasterio 1.2.10中进行了测试)。存储颜色信息的可行方法可能是提供一个外部的.sld样式文件,并为浮点值定义值范围。如果您使用QGIS进行可视化,则可以添加与栅格文件同名的.qld文件,当在QGIS中打开文件时,该文件将被加载和解释。

1
目前你的回答写得不太清楚。请编辑并添加更多细节,以帮助其他人理解这如何回答问题。你可以在帮助中心找到更多有关如何编写好答案的信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接