现以一组遥感监测数据为例,结合 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处理相关推荐

  1. 基于Erlang语言的视频相似推荐系统 | 深度

    作者丨gongyouliu 来源 | 转载自大数据与人工智能(ID:ai-big-data) [导语]:作者在上一篇文章<基于内容的推荐算法>中介绍了基于内容的推荐算法的实现原理.在本篇文 ...

  2. livechart 只显示 y 值_基于Python语言的SEGY格式地震数据读取与显示编程

    敬请关注<地学新视野> 摘要:本文简单介绍了SEG-Y地震数据文件格式,以及如何用Python语言编写读写SEG-Y格式的地震数据并绘制地震剖面,其中用到了Segyio和matplotli ...

  3. 数控机床编程用c语言,基于C语言数控机床智能后置处理程序的制作-(1).pdf

    基于C语言数控机床智能后置处理程序的制作 陈德存 (温州职业技术学院机械工程系,浙江温州325035) 摘要:介绍了UGCLS文件中的信息,再结合实际的业务要求,利用C语言对UG后处理文件的编辑,实 ...

  4. 实现统计一个字符串中的每个单词出现的次数--基于Go语言

    实现统计一个字符串中的每个单词出现的次数–基于Go语言 package mainimport ("fmt""strings" )func main() {//统 ...

  5. Leetcode刷题第1题:两数之和(基于Java语言)

    ** Leetcode刷题第1题:两数之和(基于Java语言) ** 题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标 ...

  6. Leetcode刷题 463题:岛屿的周长(基于Java语言)

    ** Leetcode刷题 463题:岛屿的周长(基于Java语言) ** 一. 题目描述: 给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域. 网格中的格子水平和垂直方向相 ...

  7. Bleve:来自Couchbase、基于Go语言的全文索引与检索库

    Bleve是一个由Couchbase 团队基于Go语言开发的索引/检索库,它支持常用的检索和索引功能,如索引.检索.过滤.排序.聚合.高亮等.Bleve包括常见的文本分析组件,且能够使用现有的K/V存 ...

  8. 基于Java语言构建区块链(一)—— 基本原型

    最终内容请以原文为准:https://wangwei.one/posts/df1... 引言 区块链技术是一项比人工智能更具革命性的技术,人工智能只是提高了人类的生产力,而区块链则将改变人类社会的生产 ...

  9. java 计算移动平均线_基于Java语言开发的个性化股票分析技术:移动平均线(MA)...

    基于Java语言开发的个性化股票分析技术:移动平均线(MA) 基于 Java 语言开发的个性化股票分析技术:移动平均线(MA)移动平均线(MA)是以道·琼斯的"平均成本概念"为理论 ...

  10. c语言编写订货系统,学位论文_基于c语言的仓库订货系统的仿真.doc

    学位论文_基于c语言的仓库订货系统的仿真 本科毕业论文(设计.创作) 题目: 基于C语言的仓库订货系统的仿真 学生姓名: 学号: 所在系院: 信息与通信技术系 专业: 电子信息工程 入学时间: 201 ...

最新文章

  1. Java单元测试-快速上手Junit
  2. 【Matlab】绘制不同颜色线条
  3. llinux 调整swap方法
  4. Net Core集成Exceptionless分布式日志功能以及全局异常过滤
  5. HTML中button怎么填充GIF,css3给按钮添加背景渐变动画
  6. clion 引用dll_用CLion实现本地方法并给java调用
  7. JSP实例-彩色验证码
  8. 学生群体中奖励制度的马太效应
  9. 怎么看电脑配置高不高_辣椒产量高不高?关键看播种前的种子处理,你知道怎么做吗?...
  10. matlab path路径定义文件,MATLAB基本操作(七):有关文件路径的几个函数在编程中的作用...
  11. 腾讯技术运营岗实习面试面经
  12. bzoj 2751: [HAOI2012]容易题(easy)
  13. matplotlib科研绘图---Times New Roman字体设置
  14. Fullcalendar 日历控件的基本使用
  15. pyton对Quoted-printable进行编码和解码
  16. 成年人的崩溃,是从借钱开始的
  17. Redis Lua 列表批量操作
  18. 非常好的Linux编译内核详解 - -
  19. DANN困扰解决-交替训练数据
  20. Scrum:产品负责人责任

热门文章

  1. matlab电气常用工具箱,matlab电气工具箱实验指导书
  2. mybatis连接池
  3. java 读fdb文件_如何真正理解java中的NIO?
  4. tsm linux文件备份命令,IBM TSM简单使用文档
  5. python设置excel的格式_python 操作Excel 设置格式
  6. chrome windows安装包_谷歌团队揭示了零日Windows漏洞
  7. Go基础:不同数据类型作为函数参数传递值传递/地址(引用)传递判断
  8. LeetCode:每日一题(2020.4.7)
  9. PS使用:利用PS制作旋转水晶球gif图
  10. Javascript:简单的表单验证更改样式