很短的幾句代碼,可是我卻花了很長(zhǎng)的時(shí)間才寫出來(lái),因?yàn)閍rray那里的除法運(yùn)算結(jié)果老是不對(duì),正常在-1-1之間的。從別的資料摘來(lái)處理NDVI計(jì)算的array代碼處,出現(xiàn)了很多問題,可能它用了什么優(yōu)化計(jì)算的函數(shù),但是結(jié)果不對(duì),果斷放棄了。
直接硬算,影像波段是整數(shù),轉(zhuǎn)成浮點(diǎn)型數(shù)字就行,然后再參與運(yùn)算得出了正確的結(jié)果范圍。
這個(gè)效率還是不行,用c++&&GDAL計(jì)算速率快得多了。
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實(shí)現(xiàn)NDVI的計(jì)算方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/qq_14906811/article/details/75136637