很短的几句代码,可是我却花了很长的时间才写出来,因为array那里的除法运算结果老是不对,正常在-1-1之间的。从别的资料摘来处理NDVI计算的array代码处,出现了很多问题,可能它用了什么优化计算的函数,但是结果不对,果断放弃了。
直接硬算,影像波段是整数,转成浮点型数字就行,然后再参与运算得出了正确的结果范围。
这个效率还是不行,用c++&&GDAL计算速率快得多了。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
from osgeo import gdal_array as ga
import gdal, ogr, os, osr
import numpy as np
b3 = r 'C:\Users\suns\Desktop\b4.TIF'
b4 = r 'C:\Users\suns\Desktop\b5.TIF'
arr = ga.LoadFile(b3)
arr1 = ga.LoadFile(b4)
ga.numpy.seterr( all = "ignore" )
ndvi = ((arr1 - arr) * 1.0 ) / ((arr1 + arr) * 1.0 )
ndvi1 = ga.numpy.nan_to_num(ndvi)
target = r 'C:\Users\suns\Desktop\ndvi1.tif'
out = ga.SaveArray(ndvi1,target, format = "GTiff" ,prototype = b4)
out = None
|
以上这篇Python&&GDAL实现NDVI的计算方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_14906811/article/details/75136637