Создание цветовых карт GeoTIFF

Я создаю 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, он работает по моде, но я не смог найти примеров того, как изменить таблицы цветов и карты для типов данных с плавающей запятой и целых чисел.

Может ли кто-нибудь предоставить фрагмент, показывающий, как создавать различные цветовые карты, цветовые переходы и / или цветовые поддоны для изображений с плавающей запятой? Хотя в настоящее время я использую растерио, я также могу конвертировать этот GDAL, если кто-то может опубликовать решение.

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)

На данный момент невозможно сохранить таблицу цветов для значений с плавающей запятой, ни с, ни с gdal. write_colormapметод rasterio предназначен только для uint8тип данных ( uint16можно использовать, но значения выше 255 пропускаются; проверено с rasterio1.2.10). Возможный способ хранения информации о цвете, вероятно, заключается в предоставлении внешнего .sldфайл стилей и определить диапазоны значений для значений с плавающей запятой. Если вы используете QGIS для визуализации, вы можете добавить .qldфайл с тем же именем, что и у растра, который будет загружен и интерпретирован при открытии файла в QGIS.

Другие вопросы по тегам