Страница 4 из 4
Re: Получение значений растра по точечным профилям
Добавлено: 07 дек 2015, 08:49
Александр Мурый
Что-то мне подсказывает, что лучше строчку
унести под строчку
Теперь о грустном: скрипт не находит растры при простом запуске.
Код: Выделить всё
$ extract_values.py extpoint.shp pr7kn1.tif
Found GDAL version: 1.11.3
No input rasters selected.
Если запускать с флагом "-rl", то работает, поля добавляет, но вместо значений там null.
Re: Получение значений растра по точечным профилям
Добавлено: 07 дек 2015, 10:31
Александр Мурый
Растр при простом запуске находится, если после строк
Код: Выделить всё
elif inShapeName is None:
inShapeName = arg
добавить
Код: Выделить всё
elif arg != '-d' and arg != '-rl':
inRasters.append(args)
Другое наблюдение: при повторных запусках скрипта в новые поля таблицы вносятся значения "null". Т.е. в первый раз отрабатывает нормально, затем с тем же растром вносит "null".
Re: Получение значений растра по точечным профилям
Добавлено: 07 дек 2015, 10:31
gornak
использую:скрипт в каталоге с данными cmd- полный путь к вектору, потом флаг-d [путь каталога], потом -e tif,
отработал на ура,
а при простейшем запуске: скрипт в одном каталоге с данными, имя вектора, имя растра- с самого начала писал
No input rasters selected. Usage: extract_values.py [-r] [-g] [-f] point_shapefile [raster_file(s)] [-d directory_with_rasters] [-rl list,of,rasters] [-e extension], поэтому стал использовать -d и -e
Re: Получение значений растра по точечным профилям
Добавлено: 07 дек 2015, 10:38
gornak
Александр Мурый писал(а):Другое наблюдение: при повторных запусках скрипта в новые поля таблицы вносятся значения "null".
запустил повторно указанным выше способом (флаги -d,-e первый растр из каталога удалил), результат верный: поле значений первого растра сохранилось, добавилось поле второго растра со значениями
Re: Получение значений растра по точечным профилям
Добавлено: 07 дек 2015, 10:42
Александр Мурый
gornak писал(а):
запустил повторно указанным выше способом (первый растр из каталога удалил), результат верный: поле значений первого растра сохранилось, добавилось поле второго растра со значениями
А если оставить те же растры (или один тот же растр), и запускать несколько раз, то вносятся "null". Не принципиально, т.к. скрипт скорее для одноразового применения, но немного некорректное поведение, по-моему.
Re: Получение значений растра по точечным профилям
Добавлено: 07 дек 2015, 10:58
gornak
Александр Мурый писал(а):А если оставить те же растры (или один тот же растр), и запускать несколько раз, то вносятся "null". Не принципиально, т.к. скрипт скорее для одноразового применения, но немного некорректное поведение, по-моему.
у меня при последующих запусках с одним растром значения от первого запуска остаются, но добавляется поле вида [имя первого растра]_[1,2...] с значениями "0"
также выдается сообщение типа Warning 6: Normalized/laundered field name: 'clip_b3' to 'clip_b3_1'
в принципе-нормальный ход событий
Re: Получение значений растра по точечным профилям
Добавлено: 07 дек 2015, 11:09
gornak
запустил "чистый" вектор с флагом -rl - несколько растров- скрипт отработал отлично
по-моему наиболее удобный способ использования, в таком виде можно пользоваться и не "одноразово", а работать со списками растров и вектров
Re: Получение значений растра по точечным профилям
Добавлено: 07 дек 2015, 17:40
Максим Дубинин
пока работайте с флагами -rl или -d, они самые отлаженные так как я сам их каждый день использую. С аргументами сейчас там из-за попытки научиться и с каталогами и со списком растров и т.д. каша образовалась и вполне возможно, что остальное поломалось, посмотрю.
с нулями тоже посмотрю
coding под /usr/... перенес
залил скрипт на гитхаб, ишьюсы неплохо бы там тоже оставлять и патчи патчи)
https://github.com/nextgis/extract_values
Re: Получение значений растра по точечным профилям
Добавлено: 04 янв 2016, 22:37
gornak
в статье заявлен флаг -с, но в коде я его признаков не обнаружил, может он был в старых версиях и его удалили за ненадобностью?, но мне понадобился- попробовал добавить, с гитхабом пока не очень дружу,как действовать не знаю, поэтому прикладываю дополненный скрипт,
да пришлось добавить import numpy!
Re: Получение значений растра по точечным профилям
Добавлено: 04 янв 2016, 23:22
Максим Дубинин
Прежде всего спасибо.
с -с магическая история, он точно был, но из-за того, что я тогда тоже "не очень дружил" с гитхабом, я где-то посеял ту версию и так и не смог восстановить.
Дальше, я все-таки предлагаю вам немного познакомиться с гитхабом и внести правки через него, это обеспечит и сохранение истории и более удобную работу с изменениями для меня и много чего еще. Я написал
небольшой текстик с шагами как это сделать, попробуйте, обсудить это можно отдельно вот
тут. Я с удовольствием помогу вам разобраться что там к чему, если что-то не до конца непонятно.
Re: Получение значений растра по точечным профилям
Добавлено: 05 янв 2016, 20:17
Максим Дубинин
обновления:
- добавил тихий режим -q
- добавил систему тестов (там пока три штуки, можно развивать потихоньку, а то подустал от поломок)
- влил в код поддержку -c, спасибо gornak. Для начала пойдет, но было лучше, сейчас в результаты попадает только FID и значения, нужно чтобы и остальное из шейпа перетаскивалось. И numpy юзать только для создания пустого массива это как-то не айс, починим как-нибудь.
Re: Получение значений растра по точечным профилям
Добавлено: 05 янв 2016, 21:32
gornak
Максим Дубинин писал(а):но было лучше
- не сомневаюсь
только FID оставил специально(и т.к. не было более подробного описания, что писать в csv) чтобы проще было потом извлечь значения пикселей, для последующей обработки, например построения гистограмм
numpy использовал, потому что опыта не хватает- взял проверенный вариант, + минимум изменения кода,будет время попробую от него избавиться, хотя по-моему установка gdal на python подразумевает наличие numpy,так что проблем не должно быть
Re: Получение значений растра по точечным профилям
Добавлено: 05 янв 2016, 21:58
Максим Дубинин
главное что работает
если будет желание доработать, то я думаю надо бы в идеале переносить все поля со значениями из шейп файла + видимо координаты + экстрагированные значения
Re: Получение значений растра по точечным профилям
Добавлено: 24 янв 2016, 17:40
gornak
написал небольшой скрипт, работающий с CSV данными получаемыми extract_values
основная идея - быстрая визуализация радиометрически откалиброванных значений извлекаемых по
точечному shp файлу(файлам) из загруженных (не обработанных пользователем) данных Landsat 8,7,5 ТМ,4 ТМ... из архива USGS
радиометрическая калибровка
по алгоритмам из статьи http://wiki.gis-lab.info/w/[u]Коррекция ... ов_Landsat[/u]
на данный момент:
на выходе- построение спектральных профилей по 1 или нескольким точечным shp на одном графике
-построение гистограмм распределения значений 1 или нескольких растров для 1 или нескольких точечных shp на одном графике
-возможность отражать значения DN и reflectance(необходим MTL)
необходимы numpy и matplotlib
пример результата на картинке:
слева направо, сверху вниз
-синтез 321 ландсат 7 с двумя точечными shp- вода и лес
reflectance
-спектр 1-го и 2-го shp на одном графике
-гистограмма 1-го shp(6 каналов)
-гистограмма 4-го канала 1-го и 2-го shp на одном графике
тестовые данные и скрипт в приложении
просьба,вопросы к участникам :
1)считаете ли вы "полезным" данный скрипт?
если да, то
2)по- возможности оценить корректность результатов
3)куда поместить(оставить в данной или создать новую тему)
4)какие есть предложения-замечания для дальнейшего развития идеи
- fig.png (588.42 КБ) 9967 просмотров