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

news/2024/3/28 17:55:19/文章来源:https://blog.csdn.net/Jcb1906824038/article/details/130339183

一、植被覆盖度计算方法

        植被覆盖度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 onlinescale: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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_103443.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JUC概述

1. JUC是什么&#xff1f; 在 Java 5.0 提供了 java.util.concurrent(简称JUC)包&#xff0c;在此包中增加了在并发编程中很常用的工具类。此包包括了几个小的、已标准化的可扩展框架&#xff0c;并提供一些功能实用的类&#xff0c;没有这些类&#xff0c;一些功能会很难实现或…

【Daily Share】没有域名怎么破?手把手教你如何通过hosts配置域名(假域名)

目录 ❌前言&#x1f4c4;hosts文件&#x1f989;DNS解析步骤&#x1f44c;配置伪域名第一步 修改本机hosts配置第二步 配置服务器nginx &#x1f503;流程图 ❌前言 ip记不住&#xff1f;&#xff1f;&#xff1f; 域名不想买&#xff1f;&#xff1f;&#xff1f; 每次当我…

操作指南|如何创建x-chain DAO

DAO是一个去中心化组织&#xff0c;大体与任何其他组织一样&#xff0c;但它是由智能合约中编码的规则所管理&#xff0c;并使DApps等能够完全去中心化且自主运行。 &#x1f4c4; 查看MoonbeamDocs 这与通常的分步教程不同&#xff0c;该推文旨在分享关于运行去中心化自治组…

【剑指offer】(2)

系列文章目录 剑指offer系列是一本非常著名的面试题目集&#xff0c;旨在帮助求职者提升编程能力和应对面试的能力。 文章目录 系列文章目录[TOC](文章目录) 前言一、 用两个栈实现队列&#x1f525; 思路&#x1f308;代码 二、青蛙跳台阶问题&#x1f525; 思路&#x1f308…

ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局

第一章、生态安全评价理论及方法介绍 一、生态安全评价简介 ​ 二、生态服务能力简介 ​ 三、生态安全格局构建研究方法简介 ​ 第二章、平台基础一、ArcGIS Pro介绍1. ArcGIS Pro简介2. ArcGIS Pro基础3. ArcGIS Pro数据编辑4. ArcGIS Pro空间分析5. 模型构建器6. ArcGIS Pro…

论文综述——DORE: Document Ordered Relation Extraction based on Generative Framework

DORE: Document Ordered Relation Extraction based on Generative Framework 文章的主要目标是对文档级的关系抽取。以往的研究主要是基于分类的研究&#xff0c;生成式关系抽取研究较少而且性能不佳。 文档级相比于句子级的关系抽取存在序列长度过长&#xff0c;以及实体定位…

Python base64模块加密解密

一、为何使用base64加密解密 为了安全机制的系统&#xff0c;在用户登录的时候&#xff0c;会采用一系列措施保护用户信息&#xff0c;防止程序被攻击&#xff0c;比如&#xff1a;将用户输入的密码加密处理&#xff0c;在控制台看请求接口看到的密码是加密过的密码&#xff0c…

EventBus源码解析

文章目录 前言一、EventBus使用二、EventBus事件流程分析1.注册订阅者2.发布事件Event3.接收事件Event4.取消注册订阅者 三、发送粘性事件问答EventBus 以及它的优点EventBus原理 EventBus中设计模式为什么要使用 EventBus 来替代广播呢&#xff1f;说下 5 种线程模式的区别Eve…

node(express框架)连接mysql 基础篇

文章目录 电脑安装mysql配置mysql连接mysql 创建表 创建node文件启动node node 连接数据库连接数据库 电脑安装mysql 由于我的是mac 我就安装mac版本的 mysql 如已安装跳过此步骤 mysql官网选择版本安装配置 这里注意选择下面的 next输入mysql密码 点击finish 配置mysql 打…

【EasyPoi实战系列】Spring Boot使用EasyPoi的注解让表格更漂亮以及图片的导出 - 第468篇

历史文章&#xff08;文章累计460&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 【…

行业分析| 视频监控——AI自动巡检

随着视频监控的普及&#xff0c;现在很多社区、工地、车间、厂区、超市、商铺、酒店、餐馆等场所都安装了视频监控系统。当安装的视频监控出现故障时&#xff0c;我们该如何进行简单的视频故障识别呢&#xff1f;如果只依靠人工对视频故障识别排查&#xff0c;工作量是相当大的…

Pytorch 入门资源(一) annaconda3下安装pytorch2.0.0和python3.11,使用Pycharm编辑器环境配置

一、环境安装 用annaconda3-2023.03-windows_x86_64&#xff0c;安装上python3.11和pytorch2.0.0环境。 下载pycharm community版本&#xff0c;将pycharm环境选择到pytorch&#xff0c;就可以开始上手Pytorch了。 指路几个安装博客&#xff1a; 【ok】Anaconda3的安装配置…

Three.js教程:Face3对象定义Geometry的三角形面

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 其他系列工具&#xff1a; NSDT简石数字孪生 Face3对象定义Geometry的三角形面 几何体Geometry的三角面属性geometry.faces和缓冲类型几何体BufferGeometry顶点索引属性BufferGeometry.index类似都是顶点位置数据的索引值…

TCP 协议的低效实现

包括 Linux kernel 在内的各种 TCP 实现均使用类似 skb 的对象管理一个个 packet&#xff0c;使 TCP 失去了 “流” 特征。应用通过 syscall 每写入一批数据&#xff0c;协议栈都可能生成一个 skb&#xff1a; ​ 仅管理这些 skb 就是一笔大开销。除了 skb 数据结构本身的 cru…

物联仓储系统ZigBee组网原理

在嵌入式项目物联仓储系统中&#xff0c;使用cortexM0模拟仓库&#xff0c;cortex-A9模拟服务器&#xff0c;两块开发板之间使用ZigBee技术实现数据接收和发送&#xff0c;本文就介绍一下ZigBee组网的原理和相关步骤。 1.组网概述 组建一个完整的zigbee网状网络包括两个步骤&am…

《低代码PaaS驱动集团企业数字化创新白皮书》-未来展望

未来展望 低代码PaaS发展的机遇 低代码开发可以帮助企业灵活搭建数字化应用&#xff0c;满足企业各业务部门的个性化、碎片化需求。根据IDC调研结果显示&#xff0c;当前低代码开发主要应用于面向企业内部的应用&#xff0c;占该应用总量的比例达到 11.6%&#xff1b;其次是面…

android studio EditText用法

1.自定义文本框 选中状态&#xff1a; <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk/res/android"><!--指定形状内部颜色--><solid android:color"#ffffff"&g…

Databend 开源周报第 90 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 元数据优化 最…

Leetcodes刷题之删除链表的倒数N个结点和删除链表的中间的结点

吾心信其可行&#xff0c;则移山填海之难&#xff0c;终有成功之日。 --孙中山 目录 &#x1f349;一.删除链表的倒数N个结点 &#x1f33b;1.双指针 &#x1f341;2.求链表的长度 &#x1f338;二.删除链表的中间的结点 &#x1f349;一.删除链…

2023全球运维大会 | 智能运维中的数据管理和数据探索

GOPS 全球运维大会由高效运维社区&#xff08;GreatOPS&#xff09;、开放运维联盟&#xff08;OOPSA&#xff09;和 DevOps 时代社区联合主办&#xff0c;指导单位为云计算开源产业联盟、FinOps产业推进方阵。迄今为止&#xff0c;GOPS 已经举行了十九次&#xff0c;大会参会嘉…