精华内容
下载资源
问答
  • 使用Matlab软件对NDVI进行最大值合成
    千次阅读
    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:35
    GEE实践NDVI年最大值合成思路实践影像下载Onedrive下载百度云下载遇到的问题 NDVI年最大值合成 思路 目的是计算研究区的年NDVI,基本实现逻辑如下: 实践 拼凑代码如下: // 创建一个函数用来掩模云层以及云阴影 ...

    GEE基础-实现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"]);
    }
    

    出来的结果是这样的
    在这里插入图片描述

    展开全文
  • %计算水文极端,年最大,年连续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
    展开全文
  • NDVI效果如下图所示: 所用数据集为: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();
    
    展开全文
  • 文章目录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 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) ...
  • 中的12个月份的月最大合成(mvc)数据放在“F:\\Vegetation Change\\Data\\GIMMS Data\\1MVC\\",数据名称格式为mvc_198801,mvc_198802........mvc_198812。处理年份为1981-2006,代码为: import arcpy arcpy....
  • 8天数据使用最大值法合成年数据 以下代码为转载IDL大神成果,表示敬意! pro max_value COMPILE_OPT IDL2 ENVI, /RESTORE_BASE_SAVE_FILES ENVI_BATCH_INIT, /NO_STATUS_WINDOW file_dir = 'G:\modis\lst2015\...
  • excel中的MAX函数,就是计算最大值函数,常用来查找所选单元格区域中的最大值。其语法结构为MAX(numberl,number2,…),numberl,number2,…表示要筛选的1到30个数值或引用。下面使用MAX最大值函数计算excel表格...
  • Excel表格中如何通过函数判断数据中的最大值腾讯视频/爱奇艺/优酷/外卖 充值4折起Excel是我们常用的一款数据处理软件,深受大家的欢迎,是我们学习办公的助手,有的朋友想知道怎么通过函数判断数据中的最大值,小编...
  • MySQL中int最大值深入讲解

    千次阅读 2021-04-25 00:36:35
    MySQL中int最大值深入讲解导语前两天看到的问题,展开写一下。字节我们都知道计算机是以二进制为基础。存储的基本单位是 Bit,也称为比特、二进制位。1bit 可以表示 0 或者 1 两个数字,是可能存在的最小的信息量,...
  • Python查找出列表最大值

    千次阅读 2021-11-18 19:23:11
    功能:查找出列表最大值 作者: 日期:202111月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('...
  • 某月某日,老师给我们布置了一个极其笨拙的方法用来求三个数中的最大值,还在最后让我们找其他方法,这就让我瞬间上了头! 第一种-使用三元运算符如名字表示的三元运算符需要三个操作数。语法为:条件表达式?...
  • C语言——计算最大值

    千次阅读 2020-08-06 12:16:57
    C语言——计算最大值的函数实现 计算最大值 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:40
    C语言判断最大值和最小值 有一些较为好理解的一句,也有一些在新手看来很秀的语句。 后面的文章会有对此程序的逐步完善忘关注[狗头保命] /********************************************************************* ...
  • maximum:合集中的最大值; range:从最小值到最大值的范围。 离中趋势度量(也称为离散程度度量),例如range,可以帮助我们确定值的分布情况。 01 确定三个值中的最小值 我们来编写程序确定三个值中的最小值。...
  • 三目运算符求三个数最大值

    千次阅读 2021-02-03 21:37:44
    三目运算符 对于条件表达式b ? x : y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,...三目运算符求三个数的最大值 package com.etime; /** * * @author haier * * 创建时间:20212月3日 下午9:39
  • java一维数组中找最大值和最小值

    千次阅读 2019-08-17 00:26:06
    /** * @author 大杨 *@date 20198月13日 上午11:07:10 */ public class LinearArray { ...//定义一维数组,并初始化,找到数组中的最大值和最小值 int[]array=new int[10]; for(int i=0;i<array.length...
  • 爬虫俱乐部将于201910月2日至10月5日在湖北武汉举行Python编程技术培训,本次培训采用理论与案例相结合的方式,旨在帮助零基础学员轻松入门Python,由浅入深学习和掌握Python编程技术,尤其是爬虫技术和文本分析...
  • 我这是处理一年的,要是多年的,需要对数据的名称进行统一格式,方便循环语句的编写 import arcpy arcpy.CheckOutExtension("spatial") str="H:\\1999monthNDVI\\"+"NDVI" a1 = str+"01.tif" a2 = str+"02.tif" ...
  • 目的:利用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进行效验,使最小值不可大于最大值最大值不可小于最小值 刚开始的验证还是没事的,符合正常的验证规则 再把不符合规则的最大值改变,现在最小值已经比最大值小了...
  • 问题扩展:如何在图上标出最大值和最小值点5. 说明 编码目标 假设通过爬虫你获取到了北京20163,10月份每天白天的最高气温(分别位于列表a,b),那么此时如何寻找出气温和随时间(天)变化的某种规律? a = [11,17,16,11...
  • 数据库分组查询最大值的问题

    千次阅读 2017-11-07 14:21:23
    需求:从transResTimeNum中按照transName分组找到各自的最大值对应的runningTime   解决办法: 1、先分组查询找到不同transName对应的最大值; 2、然后根据最大值找到对应的runningTime   Sql语句如下: 先分组...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 562,392
精华内容 224,956
关键字:

年最大值