行走的蓑衣客

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

  本节主要利用python 和 GDAL来计算一些常用的遥感指数,如,NDVI(归一化植被指数)、RVI(比值植被指数)、NDWI (归一化水体指数)、SAVI(土壤调节植被指数)。

1.读取波段数据

复制代码
import numpy as np
from osgeo import gdal
in_ds = gdal.Open(r"D:\data\test.tif")  # 打开样本文件
xsize = in_ds.RasterXSize  # 获取行列数
ysize = in_ds.RasterYSize
bands = in_ds.RasterCount  # 获取波段数
geotransform = in_ds.GetGeoTransform() # 获取投影信息
projection = in_ds.GetProjectionRef()
block_data = in_ds.ReadAsArray(0,0,xsize,ysize).astype(np.float32)# 获取影像信息
B = block_data[0, :, :]
G = block_data[1,:, :]
R = block_data[2,:, :]
NIR = block_data[3,:, :]
    
复制代码

2.表达式计算

复制代码
#归一化植被指数
NDVI=(NIR-R)/(NIR+R)
#归一化水体指数
NDWI=(G-NIR)/(G+NIR)
#比值植被指数
RVI=NIR/R
#土壤调节植被指数
L=0.5 #L是随着植被密度变化的参数,取值范围从0-1,当植被覆盖度很高时为0,很低时为1。一般取0.5
SAVI=(NIR-R)*(1+L)/(NIR+R+L)
复制代码

3.保存成果

#以NDVI为例
driver = gdal.GetDriverByName('GTiff')
out_dataset=driver.Create("NDVI.tif",xsize,ysize,1,gdal.GDT_Float32)
out_band1 = out_dataset.GetRasterBand(1)
out_band1.WriteArray(NDVI)
out_dataset.SetGeoTransform(geotransform)  # 写入仿射变换
out_dataset.SetProjection(projection)

 

posted on   行走的蓑衣客  阅读(1210)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
 
点击右上角即可分享
微信分享提示