NDVI = (NIR - Red) / (NIR + Red)
其中 NIR 指近红外光, Red 指红光。
负值表示地面覆盖为云、水、雪等,对可见光高反射;
0表示有岩石或裸土等,NIR和R近似相等;
正值,表示有植被覆盖,且随覆盖度增大而增大。
实现的整体流程如下:
ndvi计算的代码如下:
需要根据你的遥感影像数据集中的波段顺序来获取正确的红光波段和近红外波段。
import org.gdal.gdal.Band;
import org.gdal.gdal.Dataset;
import org.gdal.gdal.gdal;
import org.gdal.gdalconst.gdalconst;
import org.gdal.osr.SpatialReference;
public class NDVI {
public static void main(String[] args) {
// 注册GDAL驱动
gdal.AllRegister();
// 打开遥感影像数据集
Dataset ds = gdal.Open("input_image.tif", gdalconst.GA_ReadOnly);
// 获取红光波段和近红外波段
Band redBand = ds.GetRasterBand(1);
Band nirBand = ds.GetRasterBand(2);
// 获取影像宽度和高度