Получение значений пикселей по полигонам
-
- Активный участник
- Сообщения: 168
- Зарегистрирован: 08 апр 2009, 14:44
- Репутация: 18
- Откуда: Кострома
Получение значений пикселей по полигонам
Здравствуйте, уважаемые ГРАССоведы!!!
На сайте Гис-Лаба есть замечательная статья: "Получение значений пикселей по полигональным профилям из многоканальных растровых данных в Arcview"
Собственно вопрос - можно ли получить такой же результат средствами GRASS ???
Может кто-нить уже решал подобную задачу и готов поделиться решением ...
Заранее спасибо!!!
На сайте Гис-Лаба есть замечательная статья: "Получение значений пикселей по полигональным профилям из многоканальных растровых данных в Arcview"
Собственно вопрос - можно ли получить такой же результат средствами GRASS ???
Может кто-нить уже решал подобную задачу и готов поделиться решением ...
Заранее спасибо!!!
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Получение значений пикселей по полигонам
Первое, что пришло в голову
1) Конвертировать векторные полигоны в растр: v.to.rast
2) Замасковать исходный растр: r.mask
3) Вытащить значения исходного растра в точечный вектор: r.to.vect
4) Экспортировать значения: db.out.ogr
Вышеописанный алгоритм действует только для одной категории вектора и для одного растра (канала снимка).
Далее автоматизируйте сами, через python или GUI.
1) Конвертировать векторные полигоны в растр: v.to.rast
2) Замасковать исходный растр: r.mask
3) Вытащить значения исходного растра в точечный вектор: r.to.vect
4) Экспортировать значения: db.out.ogr
Вышеописанный алгоритм действует только для одной категории вектора и для одного растра (канала снимка).
Далее автоматизируйте сами, через python или GUI.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: Получение значений пикселей по полигонам
Можно придумать много способов, например тот, который предложил rhot, но многое зависит от того, в каком виде нужно получить результат.
Смущает сама постановка вопроса: в GRASS удобно работать работать с растрами напрямую, есть большое количество модулей в том числе для анализа ДЗЗ, поэтому не очень понятно, зачем вам нужно сделать именно так, как в той статье. Единственное предположение -- для экспорта данных в другое ПО, но в этом случае тем более хочется подробностей о формате выходных данных.
Резюме: сделать так, как вы просите, не трудно. Но вы уверены, что вы хотите именно этого ))? Если вам нужно решить определенную задачу, то лучше описать саму задачу, а если вам нужно экспортировать данные, то лучше описать формат выходных данных.
Смущает сама постановка вопроса: в GRASS удобно работать работать с растрами напрямую, есть большое количество модулей в том числе для анализа ДЗЗ, поэтому не очень понятно, зачем вам нужно сделать именно так, как в той статье. Единственное предположение -- для экспорта данных в другое ПО, но в этом случае тем более хочется подробностей о формате выходных данных.
Резюме: сделать так, как вы просите, не трудно. Но вы уверены, что вы хотите именно этого ))? Если вам нужно решить определенную задачу, то лучше описать саму задачу, а если вам нужно экспортировать данные, то лучше описать формат выходных данных.
-
- Активный участник
- Сообщения: 168
- Зарегистрирован: 08 апр 2009, 14:44
- Репутация: 18
- Откуда: Кострома
Re: Получение значений пикселей по полигонам
Задача: имеется n-ое количество полигонов (в одном шейп-файле) и серия обработанных изображений.Если вам нужно решить определенную задачу, то лучше описать саму задачу
Необходимо: получить значения всех пикселей попадающих в каждый полигон по канально (по серийно).
действительное, мне необходимо экспортировать данные по полигонам для дальнейшей стат. обработки.а если вам нужно экспортировать данные, то лучше описать формат выходных данных
Как я себе представляю результат экспорта: для каждого полигона отдельный числовой файл следующей структуры:
снимок 1|снимок 2| снимок 3 | . . . . . . .| - заголовок
значение|значение|значение | . . . . . . . | - значения
значение|значение|значение | . . . . . . . | - значения
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Почему ГРАСС: дело в том, что вся подготовка и обработка изображений ведется в ГРАСС, поэтому не хотелось "бегать" ("прыгать") между программами.
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Получение значений пикселей по полигонам
ну вот, сохраняйте в один вектор, для каждого канала задавая отдельный атрибут (параметр column).
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: Получение значений пикселей по полигонам
Так под словами "описать задачу" я и имел в виду описать необходимую стат.обработку (возможно ее можно сделать напрямую в GRASS или в считать данные напрямую из GRASS в R, а уж там -- все что душе угодно). Но не буду вас мучить вопросами, лучше расширю рекомендацию rhot (код на bash, если нужен python или еще что-то --- легко переписать на ваш язык):xen87 писал(а): мне необходимо экспортировать данные по полигонам для дальнейшей стат. обработки.
Код: Выделить всё
# Предполагаем, что нам нужны данные по растрам B10,B20,B30
BANDS=B10,B20,B30
# Полигоны лежат в растре test
v.to.rast input=test output=test use=cat
# Цикл по категориям
for CATEGORY in $(v.db.select -c map=test col=cat)
do
r.mask input=test maskcat=$CATEGORY
r.to.vect input=test output=tmp feature=point --o
# Пробегаем по всем пикселям, пишем в файл данные с растров
for COORDS in $(v.out.ascii tmp fs=, | cut -d, -f1,2)
do
r.what input=$BANDS east_north=$COORDS
done > RESULT_$CATEGORY.txt
g.remove rast=MASK
done
-
- Активный участник
- Сообщения: 168
- Зарегистрирован: 08 апр 2009, 14:44
- Репутация: 18
- Откуда: Кострома
Re: Получение значений пикселей по полигонам
Большое спасибо rhot за предложенный алгоритм решения задачи!!!
Большое спасибо Дмитрию за приведенный код!!! Потихоньку буду его разбирать, но боюсь, что без помощи уважаемых форумчан мне не справиться )) Поэтому тему пока не закрываю ...
Большое спасибо Дмитрию за приведенный код!!! Потихоньку буду его разбирать, но боюсь, что без помощи уважаемых форумчан мне не справиться )) Поэтому тему пока не закрываю ...
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 27 гостей