基于GEE平台的植被覆盖度(FVC)像元二分法计算

2023-11-13

一、植被覆盖度计算方法

        植被覆盖度FVC(Fractional Vegetation Cover)定义为单位面积内绿色植被冠层垂直投影面积所占比例。FVC是衡量地表植被状况的重要指标之一,也是区域生态系统环境变化的重要指示,对水文、生态、区域变化等都具有重要意义。

        像元二分模型主要对规则、均匀、单一的像元进行植被覆盖度提取。其原理是判定一个单位像元由植被与非植被两部分组成,而遥感影像中光谱波段组合由这两个组成部分权重线性合成,各因子的权重等于总像元中所占的比例,总像元中植被权重的集合与植被覆盖度具有很强的相关性。

        基于遥感影像得到的全部像元信息S由地表植被覆盖信息Sveg和地表土壤覆盖信息Ssoil两部分组成,公式:

S = Sveg + Ssoil                          

        该像元单位中植被覆盖的像元比例大小公式:

Sveg = fc × Sveg(端元)                        

        式中,fc表示在此遥感影像的一个像元中地表植被覆盖信息所占的比例大小。

        该单位像元中非植被覆盖度信息公式:

Ssoil = (1-fc)× Ssoil(端元)                  

        式中,1-fc表示单位像元中的非植被覆盖信息比例。

S = fc×Sveg + (1-fc)×Ssoil              

        即有像元二分模型中的植被覆盖度(FVC)公式:

FVC = (S - Ssoil) / (Sveg - Ssoil)     

        通常,像元二分法的植被覆盖度提取会基于NDVI数据计算,即NDVI代替S,公式:

FVC = (NDVI - NDVIsoil) / (NDVIseg - NDVIsoil)

        通常情况下,NDVIsoil取值与NDVI累计5%值最接近,NDVIveg取值与NDVI累计95%值最接近。不同区域针对不同植被状况可适当调整置信区间。

二、FVC计算代码

// import Puer SHP
var roi = ee.FeatureCollection("users/chuanbaojiangpr/puer_merge");
Map.centerObject(roi,10);
// Area Display
var style ={color:"red",fillColor:"00000000"};
Map.addLayer(roi.style(style),{},"geometry");

// remove cirrus cloud shadow and cloud
function maskS2clouds(image)
{
  var qa  =image.select("QA60");
  var cloudBitMask = 1<<10;
  var cirrusBitMask = 1<<11;
  var mask = qa.bitwiseAnd(cloudBitMask).eq(0).and(qa.bitwiseAnd(cirrusBitMask).eq(0));
  return image.updateMask(mask).divide(10000);
}
// S2 SR_data
var startTime = "2018-11-01";
var endTime = "2019-04-30";
var S2 = ee.ImageCollection("COPERNICUS/S2_SR")
           .filterDate(startTime,endTime)
           .filterBounds(roi)
           .filter(ee.Filter.lt("CLOUDY_PIXEL_PERCENTAGE",10))
           .map(maskS2clouds)
           .select("B2","B3","B4","B8")
           .median()
           .clip(roi);
// min\max:experience threshold
var RGBvis = {min:0,max:0.5,bands:["B4","B3","B2"]};
Map.addLayer(S2,RGBvis,"S2");

// ndvi
var NDVI = S2.expression("(NIR-R)/(NIR+R)",
                        {"R":S2.select(["B4"]),"NIR":S2.select(["B8"])});
// sort pixels(downSample,because maxPixels allows only 10000000)
var threshold = NDVI.reduceRegion({
                     reducer:ee.Reducer.percentile([5,95]),
                     geometry:roi.geometry().bounds(),
                     // must downsample , in order to caculate online
                     scale:110
                    // maxPixels:1e13
});
// debug and get the valName-B8
// print(threshold)
var NDVI_5 = ee.Number(threshold.get("B8_p5"));
var NDVI_95 = ee.Number(threshold.get("B8_p95"));
// var RGBvis = {min:-0.5,max:1};
// Map.addLayer(NDVI,RGBvis,"NDVI");

// FVC
var imgFVC = ((NDVI.subtract(ee.Image(NDVI_5))).divide(ee.Image(NDVI_95).subtract(ee.Image(NDVI_5)))).float();
// normalize FVC 0-1
var FVC = (imgFVC.lt(0).multiply(0))
          .add((imgFVC.gt(0).and(imgFVC.lte(1))).multiply(imgFVC))
          .add(imgFVC.gt(1).multiply(1));
// rank and colormap
var FVC_rank = FVC.where(FVC.lt(0.2),1)
                  .where((FVC.gte(0.2).and(FVC.lt(0.4))),2)
                  .where((FVC.gte(0.4).and(FVC.lt(0.6))),3)
                  .where((FVC.gte(0.6).and(FVC.lt(0.8))),4)
                  .where(FVC.gt(0.8),5);
// Map.addLayer(FVC_rank,{min:1,max:5,palette:["DCDCDC","FFEBCD","99B718","529400","011301"]},"FVC_rank")

// Export FVC_rank
Export.image.toDrive({
  image:FVC_rank,
  description:"FVC_dry_2018",
  folder:"users/chuanbaojiangpr/DataGET/Image",
  fileFormat:"GeoTIFF",
  region:roi,
  scale:110,
  crs:"EPSG:4326"
});

三、计算过程遇到的问题与解决方法

(一)计算像素数超限

         解决方法:①在统计整幅NDVI影像的NDVIsoil、NDVIveg近似值时,采用分块计算处理方法[4];②采用重采样统计处理,降低计算像素的空间分辨率,使其重采样后最大像素在1e13数量内(存在较大误差)。

(二)导出影像数据像素大小(空间分辨率)无法与Sentinel-2 MSI 可见光-近红外10m保持一致

        解决方法:重采样,将影像10m空间分辨率降低至110m。

参考资料:

[1] GEE项目代码整理篇(GEE快速入门) - 知乎

[2] https://developers.google.com/earth-engine/apidocs

[3] 百度百科

[4] GEE:内存超限?将研究区划分成规则的小块运算_gee分块计算__养乐多_的博客-CSDN博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于GEE平台的植被覆盖度(FVC)像元二分法计算 的相关文章

  • 【S5P6818】最小文件系统制作

    00 目录 文章目录 00 目录 01 BusyBox概述 02 下载BusyBox 03 编译BusyBox 04 最小文件系统制作 05 设置开发板参数 06 讨论 07 附录 01 BusyBox概述 BusyBox 是一个集成了三百
  • 2019年9月25日星期三(STM32 ucos3)

    一 UCOS 1 概念 uc OS III Micro C OS Thee 微型C语言编写的操作系统第三版 是一个可升级 可固化 多任务基于优先级的可抢占式实时内核 ucos的任务个数不限制 实现了操作系统所需求的大部分功能 资源管理 同步
  • C++ 左值引用 和 右值引用

    C 左值引用 和 右值引用 左值 右值是什么 左值引用 右值引用 参考 总结 左值 右值是什么 表达式的分类图 mermaid svg eHEtnhMOW8UctFkd label font family trebuchet ms verd
  • StringBuffer内容清空效率比较

    在开发程序的时候 经常使用StringBuffer来进行字符串的拼接 如果在循环中来反复的做字符串拼接时 会清空Stringbuffer中的内容 然后再拼接新的字符串信息 例如 StringBuffer sb new StringBuffe
  • 刺激战场服务器无响应ios,绝地求生刺激战场IOS系统更新后玩不了 绝地求生刺激战场苹果手机更新后进不去...

    导 读 相信有不少的绝地求生刺激战场的IOS玩家们在本次的IOS系统更新后玩不了 这可让许多的苹果党们大为的苦恼 因此下面就来为各位针对绝地求生刺激战场苹果手机更新后进不去的问题做一个解决方案 希望能够帮到各 相信有不少的绝地求生刺激战场的
  • 基于VGG-Face的年龄估计(论文总结与代码解释)

    目录 1 本文改进 2 模型结构 3 训练模型 4 预测数据 5 实验结果 6 模型比较 7 结论分析 8 数据集分析 9 完整代码 1 本文改进 本文主要是使用VGG Face模型 卷积层不变 改变全连接层 在Adience数据库上进行年
  • 项目规模估计方法介绍

    项目成本估算是对完成项目工作所需要的 费用进行估计和计划 是 项目计划中的一个重要组成部分 要实行 成本控制 必须先估算 费用 费用估算过程实际上是确定完成项目全部工作活动所需要的资源的一个费用估计值 这是一个近似值 既可以用货币单位表示
  • http1 & http2 发展与特性

    Http http协议已经被广泛应用在web应用中 常用于一下几种场景 聊天 全双工 客户端和服务器实时通信 推送 服务器主动向客户端通信 应答 传统模式 客户端发起请求 服务器响应 长连接 TCP Http协议本身就是基于请求 应答模式的
  • Node.js(二十五)

    Node js 连接 MongoDB MongoDB是一种文档导向数据库管理系统 由C 撰写而成 本章节我们将为大家介绍如何使用 Node js 来连接 MongoDB 并对数据库进行操作 如果你还没有 MongoDB 的基本知识 可以参考
  • Oracle查询表占用的空间(表大小)

    Oracle查询表占用的空间 表大小 Oracle查询表占用的空间 表大小 一 方法一 使用dbms space包的object space usage函数来查表大小情况 二 方法二 查dba extents视图 三 方法三 查dba se
  • Android实现空间不够,自动换行

    复制粘贴修改文件名即可用 自己新建MyFlowLayout的java文件 package com example myapplication view import android content Context import androi
  • 前端Gzip优化

    gZip GZIP是网站压缩加速的一种技术 对于开启后可以加快我们网站的打开速度 原理是经过服务器压缩 客户端浏览器快速解压的原理 可以大大减少了网站的流量 在 http 1 0 协议中关于服务端发送的数据可以配置一个 Content En
  • DMNet复现(二)之模型篇:Density map guided object detection in aerial image

    以前用Swin Transformer Tiny训练了40epoch的 官方用的Faster RCNN 这里先用Swin Transformer Tiny进行测试 模型训练 采用基于MMDetection的框架Swin Transforme
  • I2C的C语言实现

    I2C的C语言实现 起始信号 停止信号 应答信号ACK与非应答信号NACK 等待ACK信号 发送一个字节 读取一个字节 单字节写入 读取 连续写入 读取 起始信号 当SCL为高期间 SDA由高到低的跳变 void I2C Start voi
  • 在Mac OS环境安装Composer

    简介 Composer 是 PHP 的一个依赖管理工具 安装流程 打开终端 输入下面指令 进入用户根目录 cd 执行安装指令 php r readfile https getcomposer org installer gt compose
  • 2023年数学建模:基于模拟退火算法的旅行商问题求解

    订阅专栏后9月比赛期间会分享思路及Matlab代码 目录 一 模拟退火算法的基本原理 二 实战案例 旅行商问题
  • YoloV8改进策略:新出炉的EMA注意力机制助力YoloV8更加强大

    本次改进使用最新的注意力机制EMA改进YoloV8 我们一起来看看效果吧 论文翻译 摘要 https arxiv org ftp arxiv papers 2305 2305 13563 pdf 在各种计算机视觉任务中 通道或空间注意力机制
  • Python3 数据挖掘系统搭建(四)

    上一节学习了数据清洗如何对内容去重 这一节继续学习一个完整的挖掘系统是怎么构建的 以搜索百度新闻数据为例 首先要建立评分系统需要创建一个数据表 起名为article吧 字段如下图 字段有company title href source d
  • 6-Mysql子查询,多表连接(内连接,外连接,交叉连接)

    子查询 select from 学生表 查询高技2班的学生信息 select from 班级表 1 子查询当做查询条件的一部分 select from 学生表 where 班级ID in select 班级ID from 班级表 where

随机推荐

  • java heap space默认值_java heap space解决方法

    java heap space解决方法 在JVM中如果98 的时间是用于GC Garbage Collection 且可用的 Heap size 不足2 的时候将抛出异常信息 java lang OutOfMemoryError Java
  • OpenGL 7.测试框架,批渲染

    测试功能基类 本节搭建一个简单的测试框架 实现在窗口上显示一个菜单栏 点击不同的选项 进入不同的功能 附加目录中添加src 方便添加头文件 新建目录如下 测试基类 Test h 测试菜单TestMenu 用于管理所有的测试 pragma o
  • matlab 波形仿真,MATLAB仿真波形的处理

    MATLAB仿真波形的处理 由会员分享 可在线阅读 更多相关 MATLAB仿真波形的处理 14页珍藏版 请在人人文库网上搜索 1 示波器波形的处理1 示波器介绍首先介绍示波器的基本功能 对Simulink Model 搭建的模型 进行仿真之
  • C#知识系列:paritial class必须是同一个程序集,否则引用别的程序集的paritial class会报错

    C 知识系列 paritial class必须是同一个程序集 否则引用别的程序集的paritial class会报错 提示 A程序集的xxxx cs与B程序集的xxxx cs冲突 请使用A程序集的xxxx cs
  • RTK系列【1】小日子RTKLIB 2.4.3 b34 源码与算法研究(单点定位调试)

    小日子RTKLIB源码研究 1 VS2017下发现的一些bug 1 1 SPP 单点定位 1 1 1 问题描述 Run Time Check Failure 3 The variable dion is being used without
  • 客户下单软件

    一 订货系统后台能否通过手机进行操作 问 订货系统后台能否通过手机进行操作 我们购买订货系统后能不能通过手机操作订货企业后台 答 订货系统有手机版本和APP 可通过手机操作 二 订货系统企业后台能否及时了解到客户的欠款信息 小程序公司订单管
  • cocosCreator IOS 微信授权

    官方文档 iOS接入指南 微信开放文档 1 把你的项目构建ios版包 使用Xcode 打开 2 首先呢 我们进入微信开发者平台 选择到官方的ios 接入指南项 点击 资源下载页 下载 demo 然后把demo 中的SDKexport 文件直
  • 一起学nRF51xx 16 -  adc

    前言 nRF51的ADC设计得比较简单 它有几个可配置的部分 1 PSEL pinselection nRF51系列芯片有8个模拟输入通道 并且这几个脚是固定的 不能像GPIO那样可以重新映射 PSEL用来选择需要采集模拟电压的通道 当该通
  • C语言实现动态通讯录(附带文件保存)

    作者简介 嵌入式入坑者 与大家一起加油 希望文章能够帮助各位 个人主页 rivencode的个人主页 系列专栏 玩转C语言 推荐一款模拟面试 刷题神器 从基础到大厂面试题 点击跳转刷题网站进行注册学习 C语言实现动态通讯录 一 动态通讯录的
  • 「第五篇」全国电子设计竞赛-电源题设计方案总结

    点击上方 大鱼机器人 选择 置顶 星标公众号 福利干货 第一时间送达 0 前言 许多朋友给我留言说 有没有电源题目的一些文章可以参考 为了给大家找更多的关于电赛相关的经验贴 我在网上疯狂游泳 不断筛选 终于在知乎上看到一位优秀的大佬 刘阳
  • 新一代MacBook Pro外观、屏幕、性能全面升级

    去年十一月 苹果正式推出了搭载M1自研处理器的MacBook Pro 13 3 M1设备的的出色性能饱受消费者赞赏 有业内人士称 苹果将会在近两年的时间将自家的PC产品全部更换为自研处理器 近日 就有媒体曝光了一款2021款MacBook
  • Ubuntu—vi编辑器的使用一

    vi编辑器 vi是Linux中最基本的编辑器 但vi编辑器在系统管理 服务器配置工作中永远都是无可替代的 vi编辑器的使用 vi有以下三种模式 命令行模式 用户在用vi编辑文件时 最初进入的是该模式 可以进行复制 粘贴等操作 插入模式 进行
  • Python 将CSV文件数据存入Mysql数据库

    我们有一个名为student csv的文件 里面包含有学生的学号 姓名 性别等信息 想要基于Python将CSV文件中的信息写入MySQL数据库的student info表中 下面给出具体实现代码 首先引入所需要的库 import pand
  • Linux下Git安装、配置及使用

    文章目录 1 Git的安装 2 Git的配置 3 Git的使用 之前写过一篇文章是关于如何在Windows下使用Git 详见 Git及TortoiseGit安装 配置及使用 下面记录一下我在Ubuntu下使用版本控制工具Git的过程 1 G
  • 谷歌的AI芯片设计

    机器学习最近经常出现在新闻中 一些早期的炒作已经平息 但 这种趋势仍然存在 现在它已经真正开始在芯片设计界掀起波澜 芯片设计中的机器学习和人工智能是一个如此庞大的领域 我开始迷失在所有的研究中 所以我想进入芯片设计领域的最新突破 平面规划
  • 什么是即时通讯?即时通讯的发展

    一 即时通讯是什么 即时通讯是通过技术来体现在线聊天 交流的软件 有两种架构 一种是C S架构 采用客户端 服务器形式 用户使用过程中需要下载安装客户端软件 比如 微信 QQ 陌陌 钉钉 企业微信 飞书等等通讯软件 采用B S架构 浏览器
  • 小智AI ChatGPT的优点和局限性:

    自然度高 ChatGPT能够生成非常自然的语言 让用户感觉像是在和一个真实的人进行交流 多功能性 ChatGPT可以用于很多不同的场景 比如智能客服 聊天机器人 文本生成 语音合成等等 知识储备 ChatGPT在其训练过程中已经接触到了大量
  • 1024程序员节,庆祝上海csdn嘉年华的圆满结束,也庆祝CDC的诞生,也很开心看到理智偶像三太子傲丙

    前言 1024程序员节 庆祝10月23号 上海csdn嘉年华的圆满结束 也庆祝CDC的诞生 也很开心看到理智偶像三太子傲丙 哦耶 1 现场签到 2 很幸运能拿到csdn的嘉宾证 并参与这次嘉年华活动 3 收到了官方给我们的小礼物 很开心 也
  • 无显卡也能AI作画

    经典碎碎念 事情起因是这样的 我之前写了如何在linux上用Stable Diffusion WebUI 里边提到我迟迟没有弄webui是因为我笔记本A卡 台式机显卡带不动 所以无奈只能使用学校服务器搭一个 当时有人说我 你自己电脑不行怎么
  • 基于GEE平台的植被覆盖度(FVC)像元二分法计算

    一 植被覆盖度计算方法 植被覆盖度FVC Fractional Vegetation Cover 定义为单位面积内绿色植被冠层垂直投影面积所占比例 FVC是衡量地表植被状况的重要指标之一 也是区域生态系统环境变化的重要指示 对水文 生态 区