基于C语言实现NDVI处理
现以一组遥感监测数据为例,结合 NDVI 计算公式,通过 C 语言编程工具实现其图像化的数据分析和处理,其核心步骤如下:
在对应遥感监测网站下载相关的遥感数据进行初步处理,将处理后的数据以文件形式存在对应文件夹下;
使用 c 语言编程对文件中的数据进行处理。打开文件 infilename,读取通道数据,分别读取红光波段数据集和近红外波段数据集,代码如下:
hid_t file_id,dataset_id1,dataset_id2;
// 打开输入的 HDF 文件 infilename
file_id = H5Fopen(infilename,H5F_ACC_RDONLY,H5P_DEFAULT);
// 打开红光波段数据集 SDSname1
dataset_id 1= H5Dopen(file_id,SDSname1,H5P_DEFAULT);
// 读取红光通道数据到 data1
H5D 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);
// 打开近红外波段数据集 SDSname2
dataset_id 2= H5Dopen(file_id,SDSname2,H5P_DEFAULT);
// 读取近红外通道数据到 data2
H5D 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;
// 打开二进制格式的海陆模板文件 landseamask
fp=fopen(landseamask,"rb");
// 读取数据到 tmpland
fread(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;
else
NDVIdata[i*Width+j] =(data2[i*Width+j]-data1[i*Width+j])/(data2[i*Width+j]+data1[i*Width+j
]);
}
}
更多遥感知识,关注我的个人微信公众号:遥感加油站!谢谢!
基于C语言实现NDVI处理相关推荐
- 基于Erlang语言的视频相似推荐系统 | 深度
作者丨gongyouliu 来源 | 转载自大数据与人工智能(ID:ai-big-data) [导语]:作者在上一篇文章<基于内容的推荐算法>中介绍了基于内容的推荐算法的实现原理.在本篇文 ...
- livechart 只显示 y 值_基于Python语言的SEGY格式地震数据读取与显示编程
敬请关注<地学新视野> 摘要:本文简单介绍了SEG-Y地震数据文件格式,以及如何用Python语言编写读写SEG-Y格式的地震数据并绘制地震剖面,其中用到了Segyio和matplotli ...
- 数控机床编程用c语言,基于C语言数控机床智能后置处理程序的制作-(1).pdf
基于C语言数控机床智能后置处理程序的制作 陈德存 (温州职业技术学院机械工程系,浙江温州325035) 摘要:介绍了UGCLS文件中的信息,再结合实际的业务要求,利用C语言对UG后处理文件的编辑,实 ...
- 实现统计一个字符串中的每个单词出现的次数--基于Go语言
实现统计一个字符串中的每个单词出现的次数–基于Go语言 package mainimport ("fmt""strings" )func main() {//统 ...
- Leetcode刷题第1题:两数之和(基于Java语言)
** Leetcode刷题第1题:两数之和(基于Java语言) ** 题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标 ...
- Leetcode刷题 463题:岛屿的周长(基于Java语言)
** Leetcode刷题 463题:岛屿的周长(基于Java语言) ** 一. 题目描述: 给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域. 网格中的格子水平和垂直方向相 ...
- Bleve:来自Couchbase、基于Go语言的全文索引与检索库
Bleve是一个由Couchbase 团队基于Go语言开发的索引/检索库,它支持常用的检索和索引功能,如索引.检索.过滤.排序.聚合.高亮等.Bleve包括常见的文本分析组件,且能够使用现有的K/V存 ...
- 基于Java语言构建区块链(一)—— 基本原型
最终内容请以原文为准:https://wangwei.one/posts/df1... 引言 区块链技术是一项比人工智能更具革命性的技术,人工智能只是提高了人类的生产力,而区块链则将改变人类社会的生产 ...
- java 计算移动平均线_基于Java语言开发的个性化股票分析技术:移动平均线(MA)...
基于Java语言开发的个性化股票分析技术:移动平均线(MA) 基于 Java 语言开发的个性化股票分析技术:移动平均线(MA)移动平均线(MA)是以道·琼斯的"平均成本概念"为理论 ...
- c语言编写订货系统,学位论文_基于c语言的仓库订货系统的仿真.doc
学位论文_基于c语言的仓库订货系统的仿真 本科毕业论文(设计.创作) 题目: 基于C语言的仓库订货系统的仿真 学生姓名: 学号: 所在系院: 信息与通信技术系 专业: 电子信息工程 入学时间: 201 ...
最新文章
- Java单元测试-快速上手Junit
- 【Matlab】绘制不同颜色线条
- llinux 调整swap方法
- Net Core集成Exceptionless分布式日志功能以及全局异常过滤
- HTML中button怎么填充GIF,css3给按钮添加背景渐变动画
- clion 引用dll_用CLion实现本地方法并给java调用
- JSP实例-彩色验证码
- 学生群体中奖励制度的马太效应
- 怎么看电脑配置高不高_辣椒产量高不高?关键看播种前的种子处理,你知道怎么做吗?...
- matlab path路径定义文件,MATLAB基本操作(七):有关文件路径的几个函数在编程中的作用...
- 腾讯技术运营岗实习面试面经
- bzoj 2751: [HAOI2012]容易题(easy)
- matplotlib科研绘图---Times New Roman字体设置
- Fullcalendar 日历控件的基本使用
- pyton对Quoted-printable进行编码和解码
- 成年人的崩溃,是从借钱开始的
- Redis Lua 列表批量操作
- 非常好的Linux编译内核详解 - -
- DANN困扰解决-交替训练数据
- Scrum:产品负责人责任
热门文章
- matlab电气常用工具箱,matlab电气工具箱实验指导书
- mybatis连接池
- java 读fdb文件_如何真正理解java中的NIO?
- tsm linux文件备份命令,IBM TSM简单使用文档
- python设置excel的格式_python 操作Excel 设置格式
- chrome windows安装包_谷歌团队揭示了零日Windows漏洞
- Go基础:不同数据类型作为函数参数传递值传递/地址(引用)传递判断
- LeetCode:每日一题(2020.4.7)
- PS使用:利用PS制作旋转水晶球gif图
- Javascript:简单的表单验证更改样式