Страница 1 из 3
как правильно написать функцию NDVI
Добавлено: 22 июн 2010, 21:48
zlo717
я еще совсем неопытный пользователь данной материи, но порывшись в нэте нашел вот такую функцию:
FUNCTION_NDVI cala.b1,b2
NDVI_float=(float(b1)-b2)/(float(b1)+b2)
b1=BYTSCL(NDVI_float,min= -1.0, max= 1.0)
RETURN, b1
END
пробовал вставить -ничего не получается - значит неправильная функция
напишите пожалуйста,как она правильно пишется, и если можно подскажите литературу или сайт , где можно глянуть примеры написания формул под индексы!!!
Re: как правильно написать функцию NDVI
Добавлено: 22 июн 2010, 23:31
zlo717
ну или какуе нибудь другие функции для определения индекса растительности
Re: как правильно написать функцию NDVI
Добавлено: 23 июн 2010, 11:15
alexandr cherepanov
NDVI можно рассчитать через стандартные инструменты
Transform -> NDVI
Spectral -> Vegetation Analysis -> Vegetation Index Calculator
либо просто через band math выражение (float(b4)-b3)/(float(b4)+b3), где b4 - ближняя ИК зона, b3 - красная зона
необходимости в написание функции здесь нету
если же вам все таки нужна функция то ту, которую вы пытались запустить, можно записать в виде:
FUNCTION NDVI_byte, b3, b4
NDVI_float=(float(b4)-b3)/(float(b4)+b3)
NDVI_byte=BYTSCL(NDVI_float, min= -1.0, max= 1.0)
RETURN, NDVI_byte
END
Запускается через Band Math выражением
NDVI_byte(b3, b4)
Просто NDVI
FUNCTION NDVI_float, b3, b4
NDVI_float=(float(b4)-b3)/(float(b4)+b3)
RETURN, NDVI_float
END
Запускается через Band Math выражением
NDVI_float(b3, b4)
Re: как правильно написать функцию NDVI
Добавлено: 23 июн 2010, 21:02
zlo717
а как настроить вот это : Spectral -> Vegetation Analysis -> Vegetation Index Calculator?
выдает какие то ошибки, и никак не хочет работать
Re: как правильно написать функцию NDVI
Добавлено: 14 мар 2011, 14:47
olgagolubeva
у меня аналогичная ситуация, выдает ошибку: 'Wavelenghs must be defined to calculate vegetation indeces'
снимок сделан со спутника WorldView
Re: как правильно написать функцию NDVI
Добавлено: 14 мар 2011, 15:24
Boris
снимок с обычного WV не может быть использован для расчета NDVI, т.к. в нем всего 1 канал, а нужно что бы их было 2 - красный и инфракрасный. Судя по нумерации каналов в примере, он создан для данных Landsat, т.к. именно в нем каналы 3 и 4 соотвествуют К и ИК.
Ошибка 'Wavelenghs must be defined to calculate vegetation indeces" означает именно то, что в ней написано - у каналов не проставлен спектральный диапазон длин волн, вернее их средняя (а может медиана, точного описания не встречал). Из-за этого стандартная функция не знает какие два канала надо взять расчетов.
Re: как правильно написать функцию NDVI
Добавлено: 14 мар 2011, 16:11
Lilu_GIS
Здравствуйте, при расчете NDVI с помощью функции band math по формуле ((float(b1)-float(b2))/(b1+b2)), значения индекса получаются намного выше и ниже единицы. не подскажите с чем это может быть связано??? и как избавиться от этих значений?
Re: как правильно написать функцию NDVI
Добавлено: 14 мар 2011, 16:41
nadiopt
а чево это за b1 и b2?
формула должна быть (float(b4)-b3)/(b4+b3) у вас там флоатов явно перебор
Re: как правильно написать функцию NDVI
Добавлено: 14 мар 2011, 16:54
alexandr cherepanov
float много не бывает
В общем ошибка с этим выражением возникает при использование байтовых величин.
То есть если вы считаете индекс по сырым данным Ландсат, то сумма Красного и БИК для некоторых объектов вполне может перевалить за 255 и получается ошибка в расчете значения для этого пиксела.
Во избежание проблем вернемся к старому длинному написанию с перестраховкой
(float(b4)-float(b3))/(float(b4)+float(b3))
или можно более короткий вариант
(float(b4)-b3)/(float(b4)+b3)
Ветку я щас подправлю.
Re: как правильно написать функцию NDVI
Добавлено: 14 мар 2011, 17:47
olgagolubeva
я вложила рисунок, и судя по Available band list в этом снимке вроде бы 4 канала!?
Что тогда нужно сделать предварительно (и каким образом), чтоб расчитать NDVI, сделанный со спутника WV
И еще вопрос: расчет индекса NDVI со спутников WorldView и QuickBird будет по одинаковому принципу
Re: как правильно написать функцию NDVI
Добавлено: 16 мар 2011, 01:41
Boris
так что за WV? и какие его каналы вам достались? числом их действительно 4, но почему же тогда у них нет спектральных характеристик?
Должны вот так выглядеть:

- 001.jpg (83.16 КБ) 16838 просмотров
Re: как правильно написать функцию NDVI
Добавлено: 16 мар 2011, 08:21
olgagolubeva
Может быть, дело в том, что режим съемки со спутника WorldView происходит в панхроматическом режиме, а не в мультиспектральном?
Re: как правильно написать функцию NDVI
Добавлено: 16 мар 2011, 11:52
nadiopt
если панхром, так там один канал черно-белый, где вы четыре взяли?
читаем здесь:
http://www.worldview.ru/worldview2.html
Re: как правильно написать функцию NDVI
Добавлено: 16 мар 2011, 16:15
Boris
так по ссылке из вообще 8!

Re: как правильно написать функцию NDVI
Добавлено: 16 мар 2011, 17:07
Aerial_mapper
В стандартной поставке WorldView-2 действительно четыре канала. Восемь поставляется по запросу. Но на рисунке olgagolubeva не видно какие именно каналы использованы.