Я новичок в ГИС.
У меня есть код, который преобразует инфракрасные изображения Марса в карты тепловой инерции, которые затем сохраняются в виде двумерных массивов. Я сохранял эти карты в виде файлов hdf5, но мне бы очень хотелось сохранить их как растровые изображения, чтобы я мог обработать их в QGIS. Я прошел несколько поисков, чтобы найти, как это сделать, но безуспешно. Я попытался следовать инструкциям в руководстве по адресу http://www.gis.usu.edu/~chrisg/python/, но файлы, которые я создаю с использованием его примера, открываются в виде простых серых рамок, когда я импортирую их в QGIS. Я чувствую, что если бы кто-то мог предложить простейшую возможную процедуру для упрощенного примера того, что я хотел бы сделать, тогда я мог бы добиться некоторого прогресса. У меня есть QGIS и GDAL, я был бы очень рад установить другие фреймворки, которые кто-нибудь мог бы порекомендовать. Я использую Mac OS 10.7.
Так что, если, например, у меня есть массив тепловых инерций, который выглядит следующим образом:
TI = ( (0.1, 0.2, 0.3, 0.4),
(0.2, 0.3, 0.4, 0.5),
(0.3, 0.4, 0.5, 0.6),
(0.4, 0.5, 0.6, 0.7) )
И для каждого пикселя у меня есть широта и долгота:
lat = ( (10.0, 10.0, 10.0, 10.0),
( 9.5, 9.5, 9.5, 9.5),
( 9.0, 9.0, 9.0, 9.0),
( 8.5, 8.5, 8.5, 8.5) )
lon = ( (20.0, 20.5, 21.0, 21.5),
(20.0, 20.5, 21.0, 21.5),
(20.0, 20.5, 21.0, 21.5),
(20.0, 20.5, 21.0, 21.5) )
Какую процедуру люди рекомендуют преобразовать эти данные в растровый файл, который я могу открыть в QGIS?
Ответы:
Одно из возможных решений вашей проблемы: преобразовать его в ASCII Raster, документация по которому находится здесь . Это должно быть довольно легко сделать с Python.
Итак, с вашими данными примера выше вы получите в файле .asc следующее:
Это успешно добавляет как в QGIS, так и в ArcGIS, а стилизовано в ArcGIS и выглядит так:
Приложение: Хотя вы можете добавить его в QGIS, как уже отмечалось, если вы попытаетесь зайти в свойства для него (чтобы стилизовать его), QGIS 1.8.0 зависает. Я собираюсь сообщить об этом как об ошибке. Если это случится и с вами, есть множество других бесплатных ГИС.
источник
Ниже приведен пример, который я написал для семинара, в котором используются модули Python numpy и gdal. Он считывает данные из одного файла .tif в пустой массив, выполняет переклассификацию значений в массиве и затем записывает их обратно в .tif.
Из вашего объяснения может показаться, что вам удалось записать действительный файл, но вам просто нужно обозначить его в QGIS. Если я правильно помню, когда вы впервые добавляете растр, он часто показывает все один цвет, если у вас нет уже существующей карты цветов.
источник
outDs = None
чтобы сохранить этоЯ наконец-то нашел это решение, которое я получил из этого обсуждения ( http://osgeo-org.1560.n6.nabble.com/gdal-dev-numpy-array-to-raster-td4354924.html ). Мне это нравится, потому что я могу перейти от простого массива к растровому файлу TIF. Буду очень признателен за комментарии, которые могут улучшить решение. Я опубликую это здесь в случае, если кто-то еще ищет подобный ответ.
источник
Есть также хорошее решение в официальной GDAL / OGR Cookbook для Python.
источник
Альтернативой подходу, предложенному в других ответах, является использование
rasterio
пакета. У меня были проблемы с их созданием,gdal
и я нашел этот сайт полезным.Предполагая, что у вас есть другой файл tif (
other_file.tif
) и массив numpy (numpy_array
), который имеет то же разрешение и размер, что и этот файл, для меня этот подход сработал:источник