Получение значений растра по точечным профилям

Обсуждение материалов сайта: вопросы, замечания, предложения
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Получение значений растра по точечным профилям

Сообщение Александр Мурый » 07 дек 2015, 08:49

Что-то мне подсказывает, что лучше строчку

Код: Выделить всё

# -*- coding: utf-8 -*-
унести под строчку

Код: Выделить всё

#!/usr/bin/env python
Теперь о грустном: скрипт не находит растры при простом запуске.

Код: Выделить всё

$ extract_values.py extpoint.shp pr7kn1.tif 
Found GDAL version: 1.11.3 

No input rasters selected.
Если запускать с флагом "-rl", то работает, поля добавляет, но вместо значений там null.
Редактор материалов, модератор форума

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Получение значений растра по точечным профилям

Сообщение Александр Мурый » 07 дек 2015, 10:31

Растр при простом запуске находится, если после строк

Код: Выделить всё


elif inShapeName is None:
inShapeName = arg

добавить

Код: Выделить всё


elif arg != '-d' and arg != '-rl':
inRasters.append(args)


Другое наблюдение: при повторных запусках скрипта в новые поля таблицы вносятся значения "null". Т.е. в первый раз отрабатывает нормально, затем с тем же растром вносит "null".
Редактор материалов, модератор форума

gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение gornak » 07 дек 2015, 10:31

использую:скрипт в каталоге с данными 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

gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение gornak » 07 дек 2015, 10:38

Александр Мурый писал(а):Другое наблюдение: при повторных запусках скрипта в новые поля таблицы вносятся значения "null".
запустил повторно указанным выше способом (флаги -d,-e первый растр из каталога удалил), результат верный: поле значений первого растра сохранилось, добавилось поле второго растра со значениями

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Получение значений растра по точечным профилям

Сообщение Александр Мурый » 07 дек 2015, 10:42

gornak писал(а): запустил повторно указанным выше способом (первый растр из каталога удалил), результат верный: поле значений первого растра сохранилось, добавилось поле второго растра со значениями
А если оставить те же растры (или один тот же растр), и запускать несколько раз, то вносятся "null". Не принципиально, т.к. скрипт скорее для одноразового применения, но немного некорректное поведение, по-моему.
Редактор материалов, модератор форума

gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение gornak » 07 дек 2015, 10:58

Александр Мурый писал(а):А если оставить те же растры (или один тот же растр), и запускать несколько раз, то вносятся "null". Не принципиально, т.к. скрипт скорее для одноразового применения, но немного некорректное поведение, по-моему.
у меня при последующих запусках с одним растром значения от первого запуска остаются, но добавляется поле вида [имя первого растра]_[1,2...] с значениями "0"
также выдается сообщение типа Warning 6: Normalized/laundered field name: 'clip_b3' to 'clip_b3_1'
в принципе-нормальный ход событий

gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение gornak » 07 дек 2015, 11:09

запустил "чистый" вектор с флагом -rl - несколько растров- скрипт отработал отлично
по-моему наиболее удобный способ использования, в таком виде можно пользоваться и не "одноразово", а работать со списками растров и вектров

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение Максим Дубинин » 07 дек 2015, 17:40

пока работайте с флагами -rl или -d, они самые отлаженные так как я сам их каждый день использую. С аргументами сейчас там из-за попытки научиться и с каталогами и со списком растров и т.д. каша образовалась и вполне возможно, что остальное поломалось, посмотрю.

с нулями тоже посмотрю

coding под /usr/... перенес

залил скрипт на гитхаб, ишьюсы неплохо бы там тоже оставлять и патчи патчи)
https://github.com/nextgis/extract_values
пристегивайтесь, турбулентность прямо по курсу

gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение gornak » 04 янв 2016, 22:37

в статье заявлен флаг -с, но в коде я его признаков не обнаружил, может он был в старых версиях и его удалили за ненадобностью?, но мне понадобился- попробовал добавить, с гитхабом пока не очень дружу,как действовать не знаю, поэтому прикладываю дополненный скрипт,
да пришлось добавить import numpy!
Вложения
extract_values3.py
(17.52 КБ) 665 скачиваний

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение Максим Дубинин » 04 янв 2016, 23:22

Прежде всего спасибо.

с -с магическая история, он точно был, но из-за того, что я тогда тоже "не очень дружил" с гитхабом, я где-то посеял ту версию и так и не смог восстановить.

Дальше, я все-таки предлагаю вам немного познакомиться с гитхабом и внести правки через него, это обеспечит и сохранение истории и более удобную работу с изменениями для меня и много чего еще. Я написал небольшой текстик с шагами как это сделать, попробуйте, обсудить это можно отдельно вот тут. Я с удовольствием помогу вам разобраться что там к чему, если что-то не до конца непонятно.
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение Максим Дубинин » 05 янв 2016, 20:17

обновления:

- добавил тихий режим -q
- добавил систему тестов (там пока три штуки, можно развивать потихоньку, а то подустал от поломок)
- влил в код поддержку -c, спасибо gornak. Для начала пойдет, но было лучше, сейчас в результаты попадает только FID и значения, нужно чтобы и остальное из шейпа перетаскивалось. И numpy юзать только для создания пустого массива это как-то не айс, починим как-нибудь.
пристегивайтесь, турбулентность прямо по курсу

gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение gornak » 05 янв 2016, 21:32

Максим Дубинин писал(а):но было лучше
- не сомневаюсь :wink:
только FID оставил специально(и т.к. не было более подробного описания, что писать в csv) чтобы проще было потом извлечь значения пикселей, для последующей обработки, например построения гистограмм
numpy использовал, потому что опыта не хватает- взял проверенный вариант, + минимум изменения кода,будет время попробую от него избавиться, хотя по-моему установка gdal на python подразумевает наличие numpy,так что проблем не должно быть

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение Максим Дубинин » 05 янв 2016, 21:58

главное что работает

если будет желание доработать, то я думаю надо бы в идеале переносить все поля со значениями из шейп файла + видимо координаты + экстрагированные значения
пристегивайтесь, турбулентность прямо по курсу

gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение gornak » 24 янв 2016, 17:40

написал небольшой скрипт, работающий с 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
fig.png (588.42 КБ) 9964 просмотра
Вложения
create_plot.py
(5.32 КБ) 641 скачивание
create_plot.7z
(32.89 КБ) 403 скачивания
Последний раз редактировалось Александр Мурый 24 янв 2016, 23:05, всего редактировалось 1 раз.
Причина: в несколько раз уменьшена картинка

Ответить

Вернуться в «Материалы сайта»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей