python - 使用 Python 计算 NDVI

标签 python arcpy

我知道NDVI方程是

NDVI = (NIR — VIS)/(NIR + VIS)

我正在尝试使用 python 计算它。到目前为止我已经知道了:

inRaster = ('Landsat.tif')
out_NDVI_file = ('NDVI.tif')

red = arcpy.Describe(inRaster+'/Band_3')
NIR = arcpy.Describe(inRaster+'/Band_4')

num = arcpy.sa.Float(NIR-red)
denom = arcpy.sa.Foat(NIR+red)
NDVI = arcpy.sa.Divide(num, denom)

NDVI.Save(out_NDVI_file)

但我收到此错误消息,

Traceback (most recent call last):
  File "F:\abc\def.py", line 32, in <module>
    num = arcpy.sa.Float(NIR-red)
TypeError: unsupported operand type(s) for -: 'geoprocessing describe data object' and 'geoprocessing describe data object'

对我做错了什么有什么想法吗?

最佳答案

如果你更换

red = arcpy.Describe(inRaster+'/Band_3')
NIR = arcpy.Describe(inRaster+'/Band_4')

red = arcpy.sa.Raster(inRaster+'/Band_3')
NIR = arcpy.sa.Raster(inRaster+'/Band_4')

您的脚本应该按预期工作。

关于python - 使用 Python 计算 NDVI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16411468/

相关文章:

python - 生成字符串中所有可能的字符组合

python - 如何在 Python 中向值表 (ArcPy) 添加行?

python - 将变量名称分配给 if 语句 python 中的列表

python - 如何从 Python 中的负纪元创建日期时间

python - arcpy:程序在相交时崩溃

python - 计算 Pandas 数据框中的年龄

python - mysql_exceptions.OperationalError : (1054, "Unknown column ' xxx'在 'field list'“)

gis - 在 PostGIS/Netezza/任何其他开源中寻找 ArcGIS 等效函数

python - 在python中的类中创建对象

python - 如何为 TensorFlow 变量赋值?