Обсудить в форуме Комментариев 58Редактировать в вики
Описание скрипта для получения значений растра по точечным профилям.
Задача получения данных из растра (серии растров) по некоторому набору точечных объектов не редкость. Это необходимо при построении спектральных профилей, количественной оценке точности растровых данных, анализе изменений, при подготовке тренировочных наборов для классификации и т.д.
На сайте уже присутствует похожий инструмент, но он разработан для ArcView и имеет ряд ограничений.
Для работы скрипта необходимо иметь сам скрипт, интерпретатор Python версии 2.5 или выше, библиотеку GDAL и ее привязки (bindings) к Python.
Наиболее простым способом получить необходимые компоненты в ОС Windows является использование установщика OSGeo4W:
Пользователи OC Linux должны установить необходимые пакеты при помощи пакетного менеджера своего дистрибутива.
Архив со скриптом необходимо распаковать, и файл extract_values.py поместить в любой удобный каталог, например, в C:\Tools\GIS. Запускать скрипт нужно из командной строки OSGeo4W.
Разработка скрипта ведется на Github. Там же лучше оставлять замечания по работе.
Скрипт запускается из командной строки и принимает несколько параметров
extract_values.py [-q] [-c] [-r] [-g] [-f] point_shapefile [raster_file(s)] [-d directory_with_rasters] [-rl list,of,rasters] [-e extension]
RASTER;NEWFIELD;BAND
. Файл удобно использовать для дальнейшего восстановления оригинальных названий полей. Это может понадобится так как DBF в ESRI Shape не может хранить названия полей длиннее чем 10 символов и GDAL их оптимизирует.Скрипт работает с одно- и многоканальными растровыми данными GDAL-совместимых форматов. Для каждого одноканального растрового слоя в точечном слое будет создано поле с названием, равным названию растрового слоя, а в случае многоканального растра к названию слоя добавится номер канала. ВАЖНО! Необходимо помнить, что название поля в формате DBF ограничено 10 символами, поэтому длинные названия будут обрезаться.
Ниже показан результат извлечения данных из 6-канального фрагмента Landsat (тип данных Byte, название файла снимка — clearcuts_174016.tiff), открытый в QGIS. К исходным двум полям shape-файла (id, taxon) добавились поля clearcut_1 - clearcut_6 (видим, что имена полей обрезаны чтобы удовлетворять требованиям формата DBF) со значениями соответствующих каналов в каждой точке.
Получить значения растра after.tiff по точечному shape-файлу poi.shp (скрипт и файлы находятся в одном каталоге)
extract_values.py poi.shp after.tiff
Получить значения растра after.tiff по точечному shape-файлу poi2.shp и записать их во внешний файл
extract_values.py -с poi2.shp after.tiff
Получить значения растра after.tiff по точечному shape-файлу poi2.shp, система координат которого отличается от системы координат растра
extract_values.py -r poi2.shp after.tiff
Получить значения растров before.tiff и after.tiff по точечному shape-файлу points.shp
extract_values.py points.shp before.tiff after.tiff
Получить значения всех растров каталога по точечному shape-файлу points.shp
extract_values.py points.shp -d D:\data\rasters_veg
Получить значения всех растров каталога с расширением *.tif по точечному shape-файлу points.shp использовать при этом gdalallocinfo.
extract_values.py -g points.shp -d D:\data\rasters_veg -e tif
Получить значения из нескольких растров лежащих в разных местах:
extract_values.py -g points.shp -rl D:\data1\input1.tif,D:\data2\input2.tif
Получить значения из нескольких папок растров в разных местах:
extract_values.py -g points.shp -d D:\data1\,D:\data2\
Обсудить в форуме Комментариев 58Редактировать в вики
Последнее обновление: 2016-01-05 18:25
Дата создания: 13.07.2011
Автор(ы): Александр Бруй, Максим Дубинин
© GIS-Lab и авторы, 2002-2021. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов. (подробнее).