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) 的调用返回一个 NULL 表并终止程序。

将数据类型更改为 uint8 或 uint16,它以某种方式工作,但我一直无法找到有关如何更改浮点和整数数据类型的颜色表和映射的示例。

有人可以提供一个片段来展示如何为浮点图像生成不同的颜色图、颜色解析和/或颜色托盘吗?虽然我目前正在使用 rasterio,但如果有人可以发布解决方案,我也可以转换此 GDAL。

4

2 回答 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)
于 2020-02-14T19:10:48.623 回答
0

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

于 2022-02-21T08:13:02.383 回答