基于C语言实现NDVI处理

Posted 遥感加油站

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于C语言实现NDVI处理相关的知识,希望对你有一定的参考价值。

现以一组遥感监测数据为例,结合 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]);}}


以上是关于基于C语言实现NDVI处理的主要内容,如果未能解决你的问题,请参考以下文章

Python遥感图像处理应用篇(二十一):Python+GDAL 批量计算遥感图像NDVI指数

Python遥感图像处理应用篇(二十一):Python+GDAL 批量计算遥感图像NDVI指数

基于SAT的数独游戏求解程序,求C语言代码

C语言精华知识:表驱动法编程实践

如何实现C语言的多处理器并行计算

oc语言关闭指定程序