基于C语言实现NDVI处理

41 篇文章 15 订阅

 

 

 

现以一组遥感监测数据为例,结合 NDVI 计算公式,通过 C 语言编程工具实现其图像化的数据分析和处理,其核心步骤如下:

 

在对应遥感监测网站下载相关的遥感数据进行初步处理,将处理后的数据以文件形式存在对应文件夹下;

 

使用 c 语言编程对文件中的数据进行处理。打开文件 infilename,读取通道数据,分别读取红光波段数据集和近红外波段数据集,代码如下:

 

hid_t file_id,dataset_id1,dataset_id2;// 打开输入的 HDF 文件 infilenamefile_id  =  H5Fopen(infilename,H5F_ACC_RDONLY,H5P_DEFAULT);// 打开红光波段数据集 SDSname1dataset_id  1=  H5Dopen(file_id,SDSname1,H5P_DEFAULT);// 读取红光通道数据到 data1H5D r e a d ( d a t a s e t _ i d1, H5T _ N A T I V E _USHORT,memspace,dataspace,H5P_DEFAULT,data1);// 打开近红外波段数据集 SDSname2dataset_id  2=  H5Dopen(file_id,SDSname2,H5P_DEFAULT);// 读取近红外通道数据到 data2H5D r e a d ( d a t a s e t _ i d2, H5T _ N A T I V E _USHORT,memspace,dataspace,H5P_DEFAULT,data2);// 关闭数据集和文件H5Dclose(dataset_id1);H5Dclose(dataset_id2);H5Fclose(file_id);

完成对海陆模板数据的读取,代码如下:
FILE *fp;// 打开二进制格式的海陆模板文件 landseamaskfp=fopen(landseamask,"rb");// 读取数据到 tmplandfread(tmpland,  LAND_SEA_LON*LAND_SEA_LAT*sizeof(unsigned char),1,fp);依据读取到的数据以及 NDVI 计算公式,逐点循环计算并进行水体的判识,代码如下:
for(int i = 0 ; i< Height ; i++){for(int j= 0 ; j< Width ; j++){If(tmpland[i*Width+j]  !=  1)  // 对水体进行判识,fillwater 为水体填充值NDVIdata[i*Width+j] = fillwater;elseNDVIdata[i*Width+j]  =(data2[i*Width+j]-data1[i*Width+j])/(data2[i*Width+j]+data1[i*Width+j]);}}

 

更多遥感知识,关注我的个人微信公众号:遥感加油站!谢谢!

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值