TM3、4波段GeoTiff数据计算NDVI
源码:
1: PRO TIFF_NDVI,F1,F2,FOUT
2: F1 = DIALOG_PICKFILE(TITLE = 'B4 TIFF',FILTER='*.TIF',/READ)
3: F2 = DIALOG_PICKFILE(TITLE = 'B3 TIFF',FILTER='*.TIF',/READ)
4: FOUT =DIALOG_PICKFILE(TITLE = 'RESULT PATH',FILTER='*.TIF',/WRITE)
5: IF(FILE_TEST(F1) GT 0 AND FILE_TEST(F2) GT 0) THEN BEGIN
6: B1 = READ_TIFF(F1,GEOTIFF=GE1)
7: B2 = READ_TIFF(F2,GEOTIFF=GE2)
8: HELP,B1,B2
9: C = 0.001
10: WRITE_TIFF,FOUT,-1.0>( (FLOAT(B1)-FLOAT(B2))/(FLOAT(B1)+FLOAT(B2) + C) )<1.0,/FLOAT,GEOTIFF=GE2
11: PRINT,'OK
12: ENDIF
13: END
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
解释:
1> IDL是解释型语言,声明一个函数可以用“Pro或Function空格函数名,参数”的形式,函数块以End结束;如“PRO TIFF_NDVI,F1,F2,FOUT”,其中pro是声明符,TIFF_NDVI是函数名,f1,f2,fout是函数的参数。pro和function暂且都称为函数,除了声明符不同,在调用时也要注意。如下
pro test ,a
a = 2print,a
end
functiontest,a
a = 4
print,a
return,a
end
IDL> a = 0
IDL> print,a
0
IDL> test,a
2
IDL> g = test(a)
4
IDL> print,g
4
即function函数会return值,在调用function时函数参数都要用小括号括起来,同时需要有一个变量接收返回值
注意:IDL虽然对大小写不敏感,但建议将变量名小写,函数和参数名大写
2> IDL的函数调用完毕,会改变传入参数的值,类似于“传址调用”,上面代码:
IDL> a = 0
IDL> print,a0
IDL> test,a
2
可以发现a在调用test函数后,值发生了改变,这个很值得注意。
3> F1 = DIALOG_PICKFILE(TITLE = 'B4 TIFF',FILTER='*.TIF',/READ) 这一句就是调用 DIALOG_PICKFILE函数返回tiff文件的路径,下两句也是获取tiff文件路径
4> IF(FILE_TEST(F1) GT 0 AND FILE_TEST(F2) GT 0) THEN BEGIN
选择分支if语句一般形式为
if statement then begin....
endif else begin
....
endelse
FILE_TEST(F1) GT0 ,FILE_TEST是一个function,用来检测文件是否已存在,存在返回1,否则返回0值
5> B1 = READ_TIFF(F1,GEOTIFF=GE1): 一句用READ_TIFF 这一function来读取tiff文件中的数据,geotiff参数用来提取tiff文件的地理信息,下一句作用类似;
6> HELP,B1,B2用来查询变量的维数信息,print函数用来输出变量值,如果变量不是数组,那么用help可直接输出变量的值。注意help一个结构体变量需加参数“/struct”
7> WRITE_TIFF,FOUT,-1.0>( (FLOAT(B1)-FLOAT(B2))/(FLOAT(B1)+FLOAT(B2) + C) )<1.0,/FLOAT,GEOTIFF=GE2这一句用来计算ndvi并保存为geotiff文件
WRITE_TIFF函数是一个pro,需要至少2个顺序参数,第一位是保存路径,第二位是数据变量;其他用“=”相连的参数顺序可随意,/float表示输出浮点型数据,geotiff用来追加地理信息。
-1.0>( (FLOAT(B1)-FLOAT(B2))/(FLOAT(B1)+FLOAT(B2) + C) )<1.0是计算ndvi的算式,可理解2步运算
x = (float(b1) – float(b2) )/ (float(b1) + float(b2) + c) 计算ndvix = -1.0> x<1.0,将x与-1.0比较取大值,接着与1.0比较取小值,换句话说,就是将ndvi限定在[-1,1]区间。<是求小运算符,>是求大运算符
TM3、4波段GeoTiff数据计算NDVI的更多相关文章
- 【270】IDL处理GeoTIFF数据
参考:将原GeoTIFF数据的投影坐标信息赋值到新创建的文件上 pro tiff_projection ;启动ENVI e = ENVI(/HEADLESS) ;打开文件 file = 'D:\01- ...
- 大数据计算平台Spark内核解读
1.Spark介绍 Spark是起源于美国加州大学伯克利分校AMPLab的大数据计算平台,在2010年开源,目前是Apache软件基金会的顶级项目.随着 Spark在大数据计算领域的暂露头角,越来越多 ...
- 大数据计算:如何仅用1.5KB内存为十亿对象计数
大数据计算:如何仅用1.5KB内存为十亿对象计数 Big Data Counting: How To Count A Billion Distinct Objects Using Only 1.5K ...
- Octave Tutorial(《Machine Learning》)之第三课《数据计算》
第三课 Culculating Data 数据计算 矩阵计算 1.简单的四则运算 2.相乘除,乘方运算(元素位运算) ".*"为对应元素的相乘计算 "./"为对 ...
- 阿里云大数据计算服务 - MaxCompute (原名 ODPS)
MaxCompute 是阿里EB级计算平台,经过十年磨砺,它成为阿里巴巴集团数据中台的计算核心和阿里云大数据的基础服务.去年MaxCompute 做了哪些工作,这些工作背后的原因是什么?大数据市场进入 ...
- 大数据计算框架Hadoop, Spark和MPI
转自:https://www.cnblogs.com/reed/p/7730338.html 今天做题,其中一道是 请简要描述一下Hadoop, Spark, MPI三种计算框架的特点以及分别适用于什 ...
- 高分一号计算NDVI
1.准备工作 如果想要ENVI友好一点,请下载ENVI5.3,并且安装China satellites 补丁(参考博客:ENVI扩展工具:中国国产卫星支持工具) App Store for ENVI下 ...
- 流式大数据计算实践(1)----Hadoop单机模式
一.前言 1.从今天开始进行流式大数据计算的实践之路,需要完成一个车辆实时热力图 2.技术选型:HBase作为数据仓库,Storm作为流式计算框架,ECharts作为热力图的展示 3.计划使用两台虚拟 ...
- 大数据计算平台Spark内核全面解读
1.Spark介绍 Spark是起源于美国加州大学伯克利分校AMPLab的大数据计算平台,在2010年开源,目前是Apache软件基金会的顶级项目.随着Spark在大数据计算领域的暂露头角,越来越多的 ...
随机推荐
- NOIP2012-普及组复赛-第一题-质因数分解
题目描述 Description 已知正整数n是两个不同的质数的乘积,试求出两者中较大的那个质数. 输入输出格式 Input/output 输入格式:输入只有一行,包含一个正整数n.输出格式:输出只 ...
- 第2章 熟悉Eclipse开发工具---- System.out.println("sum="+(a+b));
- discuz论坛小记
客服要改sitemap.php要展示最新的回帖内容,但是我不懂discuz,对数据库和php不是特别熟练,PHP后台开发的程序猿太忙了!!~没办法硬着头皮上~ 哎呀数据库对应的是哪个啊?让我看看con ...
- 关于oracle数据库(4)数据类型
数据类型 字符数据类型char:固定长度字符串,最大可以存放2000字节 字符串varchar2:可变长度字符串,最大可以存放2GB数值类型数据 数字number:可以存放整数.浮点数.实数 numb ...
- 关于oracle数据库(1)
兼容性的设置 cmd.exe是微软Windows系统的命令行程序,类似于微软的DOS操作系统.cmd.exe是一个16/32位的命令行程序,运行在Windows NT/2000/XP/2003/Vis ...
- 《Windows驱动开发技术详解》之驱动程序的同步处理
中断请求级 中断请求被分为软件中断和硬件中断两种,这些中断都映射成不同级别的中断请求级.每个中断请求都有各自的优先级别,正在运行的线程随时都可以被中断打断,进入到中断处理程序.优先级高的中断来临时,处 ...
- 高级CSS
target="_black"新窗口打开,且打开第二个链接出来的页面覆盖第一个页面 .ui-pg-table td[dir="ltr"]{*width:94px ...
- JQuery中常用方法备忘
本文转载自博客园,原文地址 http://www.cnblogs.com/xzf158/archive/2008/10/14/logan.html 1.Window.onload 的JQuery方法 ...
- Ubuntu基本命令--apt, dpkg
一.Ubuntu中软件安装方法 1.APT方式 (1)普通安装:apt-get install softname1 softname2 …; (2)修复安装:apt-get -f install so ...
- 发现在看完objc基本语法之后,还是看Apple文档比较有用。
现在已经停止找中文资料了,因为很多例子已经过时,运行不出来. 看完objc基本语法以后,Apple的资料也看得懂了. 还是应该跟着Apple的入门指南开始学,今后也应该以Apple的文档为主.