-
2021-01-19 21:00:52
教程照片及其他详细信息请关注微信公众号:夫也的笔记
公众号内容包含:ArcGIS、ENVI、MATLAB、Python和R语言教程和实际案例分享理论知识
最大合成法:最大合成,就是将来多幅相同的栅格图叠加,每个栅格单元值取多幅中最大的那个,最后合成一幅。
归一化植被指数【NDVI=(NIR-R)/(NIR+R)】
1、检测植被生长状态、植被覆盖度和消除部分辐射误差。
2、-1<=NDVI<=1,负值表示地面覆盖为云、水、雪等,对可见光高反射;0表示有岩石或裸土等,NIR和R近似相等;正值,表示有植被覆盖,且随覆盖度增大而增大;
3、NDVI的局限性表现在,用非线性拉伸的方式增强了NIR和R的反射率的对比度。对于同一幅图象,分别求RVI和NDVI时会发现,RVI值增加的速度高于NDVI增加速度,即NDVI对高植被区具有较低的灵敏度。
4、NDVI能反映出植物冠层的背景影响,如土壤、潮湿地面、雪、枯叶、粗糙度等,且与植被覆盖有关。
NDVI的获取一方面,可以在NASA的官方网站上直接下载成品数据,数据的分辨率分别为250米、500米、1000米,根据应用目的的不同用户自行选择。另一方面,可以下载遥感影像,根据NDVI=(NIR-R)/(NIR+R)进行波段运算,不过这对遥感影像的质量要求比较高,需要影像上的云量比较少,必要的话还需要进行去云处理。
NDVI(近红外区与红光区的反射率差值/近红外区与红光区的反射率和值)是最常用的植被指数,虽然NDVI对土壤背景的变化较为敏感,但由于NDVI可以消除大部分与仪器定标、太阳角、地形、云阴影和大气条件有关辐照度的变化,增强了对植被的响应能力,是目前已有的40多种植被指数中应用最广的一种。采用最大合成法将月数据NDVI合成年数据NDVI,本文以SPOT的月NDVI为例进行,利用Matlab平台,代码如下所示:
%author
[a,R]=geotiffread(‘F:\项目\data\spot_月ndvi\ndvi200001.tif’);%先投影信息
info=geotiffinfo(‘F:\项目\data\spot_月ndvi\ndvi200001.tif’);
for i=2000:2015
datasum=zeros(size(a,1)*size(a,2),12); %size(a,1)和size(a,2)分别是进行合成的图像的行列号
for j=1:12
if j<10
data=importdata(strcat(‘F:\项目\data\spot_月ndvi\ndvi’,int2str(i),‘0’,int2str(j),’.tif’));
else
data=importdata(strcat(‘F:\项目\data\spot_月ndvi\ndvi’,int2str(i),int2str(j),’.tif’));
end
data=reshape(data,size(a,1)*size(a,2),1);
datasum(:,j)=data;
end
maxndvi=zeros(size(a,1),size(a,2))+NaN;
for n=1:length(datasum)
data=datasum(n,:);
datamax=max(data);
if datamax>-1
maxndvi(n)=datamax;
end
end
filenameet=strcat(‘F:\项目\data\2000-2015年NDVI\spot_ndvi_’,int2str(i),’.tif’);
geotiffwrite(filenameet,maxndvi,R,‘GeoKeyDirectoryTag’,info.GeoTIFFTags.GeoKeyDirectoryTag);
end欢迎关注、转发、点赞、打赏
更多相关内容 -
GEE基础-实现NDVI年最大值合成
2021-06-02 18:58:35GEE实践NDVI年最大值合成思路实践影像下载Onedrive下载百度云下载遇到的问题 NDVI年最大值合成 思路 目的是计算研究区的年NDVI,基本实现逻辑如下: 实践 拼凑代码如下: // 创建一个函数用来掩模云层以及云阴影 ...思路
目的是计算研究区的年NDVI,基本实现逻辑如下:
实践
拼凑代码如下:
// 创建一个函数用来掩模云层以及云阴影 var cloudMask = function(image) { var qa = image.select('pixel_qa'); //云层表示为第五位,云层置信度为6-7位,云阴影为第三位 //选择出有云并且云层置信度为中等,以及有云阴影覆盖的像元。 var cloud = qa.bitwiseAnd(1 << 5) .and(qa.bitwiseAnd(1 << 7)) .or(qa.bitwiseAnd(1 << 3)) // 移除边界像元 var mask2 = image.mask().reduce(ee.Reducer.min()); //将检测有关云像元置为0,掩模保留位置不为0的数据。 return image.updateMask(cloud.not()).updateMask(mask2); }; //创建一个函数用来计算NDVI function NDVI(img) { var ndvi = img.normalizedDifference(["B5","B4"]); return ndvi; } // 选择Landsat8地表反射率数据进行去云处理,并计算NDVI var collection = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR') .filterDate('2020-05-01', '2020-9-30') .filterBounds(myl) .map(cloudMask) .map(NDVI) //取影像数据集最大值 var NDVI_2020 = collection.max(); var visParam = { min: -0.2, max: 0.8, palette: 'FFFFFF, CE7E45, DF923D, F1B555, FCD163, 99B718, 74A901, 66A000, 529400,' + '3E8601, 207401, 056201, 004C00, 023B01, 012E01, 011D01, 011301' }; var result = NDVI_2020.clip(myl) Map.addLayer(NDVI_2020.clip(myl), visParam, 'ndvi'); print(result) //导出到谷歌云盘 Export.image.toDrive({ image: result, description: 'NDVI2020_1', scale: 30, region: myl, maxPixels:10e10, });
遇到的问题
通过搜罗CSDN上各路去云方法,发现最后的nodata的结果是不一样的!
上面的去云函数出来的结果是这样的:
而使用下面这个去云函数//创建一个函数进行去云掩膜处理 function maskL8sr(image) { //<<表示二进制左移几位 // 二进制第三位表示有云阴影,第五位表示有云。 var cloudShadowBitMask = 1 << 3; var cloudsBitMask = 1 << 5; // 选择质量评估波段 var qa = image.select('pixel_qa'); // 按位与运算,将检测出云以及云阴影像元值为0 var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0) .and(qa.bitwiseAnd(cloudsBitMask).eq(0)); // 掩膜云以及云阴影,并选择波段1-9将单位变为0-1之间,并复制影像时间属性。 return image.updateMask(mask).divide(10000) .select("B[0-9]*") .copyProperties(image, ["system:time_start"]); }
出来的结果是这样的
-
利用MATLAB计算水文极值(年最大值,年连续5日最大,连续干/湿日,连续极端径流低值日数)
2018-05-15 20:18:44%计算水文极端,年最大,年连续5日最大,连续干日,连续极端径流低值日数%wqianghy@163.com%南京大学流域水文过程模拟实验室datapath=strcat(filepath,filename);data=dlmread(datapath);data(1)=[];datalength=...[filename,filepath]=uigetfile('*.*','请选择文件');
%计算水文极端,年最大,年连续5日最大,连续干日,连续极端径流低值日数
%wqianghy@163.com
%南京大学流域水文过程模拟实验室
datapath=strcat(filepath,filename);
data=dlmread(datapath);
data(1)=[];
datalength=length(data);
numyear=datalength/365;
AM1X=zeros(numyear,1); %求年最大值
for i=1:numyear
tmin=365*(i-1)+1;
tmax=365*i;
AM1X(i)=max(data(tmin:tmax));
end
AM5X=zeros(numyear,1); %求连续5日最大
data5x=zeros(datalength,1);
for i=1:datalength
if i<5
data5x(i)=mean(data(1:5));
else
tmi=i-5+1;
tmx=i;
data5x(i)=mean(data(tmi:tmx));
end
end
for i=1:numyear
tmin=365*(i-1)+1;
tmax=365*i;
AM5X(i)=max(data5x(tmin:tmax));
end
CDD=zeros(numyear,1); %求连续干日
datacdd=zeros(datalength,1);
for i=1:datalength
if data(i)<=1 %判断是否为干日
datacdd(i)=1;
end
end
for i=1:numyear
tmin=365*(i-1)+1;
tmax=365*i;
cdnum1=[];
lfind=find(datacdd(tmin:tmax)==0);
for j=1:length(lfind)-1
cdnum1(j)=lfind(j+1)-lfind(j)-1;
end
cdnum1(length(lfind))=365-lfind(length(lfind));
CDD(i)=max(cdnum1);
end
sortdata=sort(data); %连续极端低值日数
per10=sortdata(round(datalength*0.1));
CDS=zeros(numyear,1); %求连续干日
datacds=zeros(datalength,1);
for i=1:datalength
if data(i)<per10 %判断是否为低值
datacds(i)=1;
end
end
for i=1:numyear
tmin=365*(i-1)+1;
tmax=365*i;
cdsnum1=[];
lfind=find(datacds(tmin:tmax)==0);
for j=1:length(lfind)-1
cdsnum1(j)=lfind(j+1)-lfind(j)-1;
end
cdsnum1(length(lfind))=365-lfind(length(lfind));
CDS(i)=max(cdsnum1);
end -
GEE:批量下载NDVI数据,按年最大值合成,GIMMS NDVI from AVHRR Sensors (3rd Generation)
2021-04-23 17:16:40NDVI效果如下图所示: 所用数据集为:GIMMS NDVI from AVHRR Sensors (3rd Generation) 这个数据集有1981年到2013年每个月的NDVI数据。源代码:
https://code.earthengine.google.com/f3f5c1ed2bc4dc30a678857bb5074d6d?noload=true
批量下载按月合成数据代码:
https://blog.csdn.net/qq_35591253/article/details/115301314
NDVI效果如下图所示:
print(image1) var HY = table.filterBounds(point).geometry(); for(var i = 1993;i<=2012;i++){ var data_collection = image1.filterDate(i+'-01-01',i+'-12-28').filterBounds(table); var HY_collection = data_collection.max().clip(HY) print(data_collection); Map.addLayer(HY_collection,{},i+'year'); Export.image.toDrive({ image: HY_collection, description: i+'year', crs: "EPSG:32649", scale: 30, region: table, maxPixels: 1e13, folder: 'ShanXi' }) } Map.addLayer(table,{},'hengyang Boundary');
所用数据集为:GIMMS NDVI from AVHRR Sensors (3rd Generation)
这个数据集有1981年到2013年每个月的NDVI数据。
二、一键导出
第一步:生成导出任务,显示了运行按钮。
第二步:按F12进入控制台,然后将这些脚本粘贴到其中,然后按输入。
第三步:所有任务都将自动启动。function runTaskList() { var tasklist = document.getElementsByClassName('awaiting-user-config'); for (var i = 0; i < tasklist.length; i++) tasklist[i].children[2].click(); } function confirmAll() { var ok = document.getElementsByClassName('goog-buttonset-default goog-buttonset-action'); for (var i = 0; i < ok.length; i++) ok[i].click(); } runTaskList(); confirmAll();
三、一键取消所有上传任务
使用GEE导出运算结果到drive中,如果代码有误需要取消上传任务,下面的代码可以部分实现一键取消所有上传任务 。
function runTaskList() { var tasklist = document.getElementsByClassName('indicator'); for (var i = 0; i < tasklist.length; i++) tasklist[i].click(); } function confirmAll() { var ok = document.getElementsByClassName('goog-buttonset-default goog-buttonset-action'); for (var i = 0; i < ok.length; i++) ok[i].click(); } runTaskList(); confirmAll();
-
【ArcGIS|空间分析】求年度NDVI最大值图像和NDVI最大值出现日期图像
2018-09-30 13:12:11文章目录1. 求年度NDVI最大值图像1.1数据1.2原理1.3工具1.4结果2. 求NDVI最大值出现日期图像2.1数据2.2. 原理2.3. 模型2.4. 叠加2.5. 符号化2.6. 结果3. 其他3.1. 覆盖问题3.2. 叠加方法3.3. 模型输出数据命名3.4. ... -
pandas数组获取最大值索引的方法-argmax和idxmax
2019-09-29 16:48:40pandas Series的argmax方法和idxmax方法用于获取Series的最大值的索引值: 举个栗子: 有一个pandas Series,它的索引是国家名,数据是就业率,要找出就业率最高的国家: import pandas as pd countries = [ '... -
python求最大值
2020-11-24 07:25:58广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!代码示例 import torch a=torch.randn((3,5)) atensor(, , ]) _,pre=a.topk(1,dim=1,largest=true) ... -
【ArcGIS遇上Python】ArcGIS Python实现Modis NDVI批量求年最大值
2014-08-29 21:45:00一年中的12个月份的月最大合成(mvc)数据放在“F:\\Vegetation Change\\Data\\GIMMS Data\\1MVC\\",数据名称格式为mvc_198801,mvc_198802........mvc_198812。处理年份为1981-2006,代码为: import arcpy arcpy.... -
IDL处理MODIS 地表温度数据(MOD11A2)最大值法
2020-03-06 19:48:158天数据使用最大值法合成年数据 以下代码为转载IDL大神成果,表示敬意! pro max_value COMPILE_OPT IDL2 ENVI, /RESTORE_BASE_SAVE_FILES ENVI_BATCH_INIT, /NO_STATUS_WINDOW file_dir = 'G:\modis\lst2015\... -
使用MAX最大值函数计算excel表格中学生成绩的最大值
2021-07-17 02:04:44excel中的MAX函数,就是计算最大值函数,常用来查找所选单元格区域中的最大值。其语法结构为MAX(numberl,number2,…),numberl,number2,…表示要筛选的1到30个数值或引用。下面使用MAX最大值函数计算excel表格... -
Excel表格中如何通过函数判断数据中的最大值
2021-07-13 02:29:17Excel表格中如何通过函数判断数据中的最大值腾讯视频/爱奇艺/优酷/外卖 充值4折起Excel是我们常用的一款数据处理软件,深受大家的欢迎,是我们学习办公的助手,有的朋友想知道怎么通过函数判断数据中的最大值,小编... -
MySQL中int最大值深入讲解
2021-04-25 00:36:35MySQL中int最大值深入讲解导语前两天看到的问题,展开写一下。字节我们都知道计算机是以二进制为基础。存储的基本单位是 Bit,也称为比特、二进制位。1bit 可以表示 0 或者 1 两个数字,是可能存在的最小的信息量,... -
Python查找出列表最大值
2021-11-18 19:23:11功能:查找出列表最大值 作者: 日期:2021年11月18日 ''' nums = [45, 23, -56, 78, 124, 45, 10] max_value = nums[0] for i in range(1, len(nums)): if max_value < nums[i]: max_value = nums[i] print('... -
三个数中寻找最大值的5种方法-C语言实现
2021-05-22 10:16:55某年某月某日,老师给我们布置了一个极其笨拙的方法用来求三个数中的最大值,还在最后让我们找其他方法,这就让我瞬间上了头! 第一种-使用三元运算符如名字表示的三元运算符需要三个操作数。语法为:条件表达式?... -
C语言——计算最大值
2020-08-06 12:16:57C语言——计算最大值的函数实现 计算最大值 1.生活中的例子 *找出某网站最有影响力的博主 *某年的高考理科状元 *某球场进球最多的球员 2.计算最大值的方法 *先假设这组数据中的第一个数为当前最大值 *其余数依次与... -
java8 stream取出 最大值/最小值
2020-12-29 04:45:48这里直接用取出多个对象中某个值 最大/最小 来进行举例直接看代码/*** 时间测试类*/class TimeTest {private Date time;public Date getTime() {return time;}public void setTime(Date time) {this.time = time;}}... -
C语言判断最大值和最小值
2021-03-17 22:46:40C语言判断最大值和最小值 有一些较为好理解的一句,也有一些在新手看来很秀的语句。 后面的文章会有对此程序的逐步完善忘关注[狗头保命] /********************************************************************* ... -
手把手教你用Python求最大值和最小值
2021-05-10 00:05:34maximum:合集中的最大值; range:从最小值到最大值的范围。 离中趋势度量(也称为离散程度度量),例如range,可以帮助我们确定值的分布情况。 01 确定三个值中的最小值 我们来编写程序确定三个值中的最小值。... -
三目运算符求三个数最大值
2021-02-03 21:37:44三目运算符 对于条件表达式b ? x : y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,...三目运算符求三个数的最大值 package com.etime; /** * * @author haier * * 创建时间:2021年2月3日 下午9:39 -
java一维数组中找最大值和最小值
2019-08-17 00:26:06/** * @author 大杨 *@date 2019年8月13日 上午11:07:10 */ public class LinearArray { ...//定义一维数组,并初始化,找到数组中的最大值和最小值 int[]array=new int[10]; for(int i=0;i<array.length... -
stata最大值最小值命令_用Stata实现数据标准化
2020-11-21 16:41:27爬虫俱乐部将于2019年10月2日至10月5日在湖北武汉举行Python编程技术培训,本次培训采用理论与案例相结合的方式,旨在帮助零基础学员轻松入门Python,由浅入深学习和掌握Python编程技术,尤其是爬虫技术和文本分析... -
Arcpy处理月NDVI,最大合成法合成年NDVI
2019-07-11 10:03:16我这是处理一年的,要是多年的,需要对数据的名称进行统一格式,方便循环语句的编写 import arcpy arcpy.CheckOutExtension("spatial") str="H:\\1999monthNDVI\\"+"NDVI" a1 = str+"01.tif" a2 = str+"02.tif" ... -
NDVI最大值法MVC合成之ArcGIS Cell Statistics 实现
2014-05-03 23:27:28目的:利用ArcGIS自带工具Cell Statistics实现多个栅格图层最大值法合成NDVI年或月的最大值。 工具:ArcToolbox>>Spatial Analyst Tools>>Local>>Cell Statistics 问题:NDVI栅格影像值为-1~1之间的float浮点型,... -
输入三个整数,输出最大值
2021-01-09 16:43:14问题描述:输入3个整数,输出其中的最大值 * 输入描述:输入3个整数. * 程序输出:输出其中的最大值 -
「postgre」INT最大值
2018-09-27 16:04:00一般现在时间戳用INTEGER整型即可,但INT最大长度为21多一点,也就是再过不到20年,就会溢出,所以建议时间戳用INT8类型,同样,数据量可能超过21亿的也应该使用INT8自增,如下:-- DROP TABLE IF EXISTS location;... -
bootstrapValidator验证最大值最小值范围限制
2019-02-27 15:36:21录入该值的最大值与最小值 bootstrapValidator进行效验,使最小值不可大于最大值,最大值不可小于最小值 刚开始的验证还是没事的,符合正常的验证规则 再把不符合规则的最大值改变,现在最小值已经比最大值小了... -
matplotlib.pyplot绘制多个折线图,并标注最大值和最小值
2020-09-06 09:50:45问题扩展:如何在图上标出最大值和最小值点5. 说明 编码目标 假设通过爬虫你获取到了北京2016年3,10月份每天白天的最高气温(分别位于列表a,b),那么此时如何寻找出气温和随时间(天)变化的某种规律? a = [11,17,16,11... -
数据库分组查询最大值的问题
2017-11-07 14:21:23需求:从transResTimeNum中按照transName分组找到各自的最大值对应的runningTime 解决办法: 1、先分组查询找到不同transName对应的最大值; 2、然后根据最大值找到对应的runningTime Sql语句如下: 先分组...