一、植被覆盖度计算方法

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

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

  1. 基于像元二分模型的植被覆盖度反演--像元二分法

    一.理论部分 1.植被覆盖度 是指植被(包括叶.茎.枝)在地面的垂直投影面积占统计区总面积的百分比.常用于植被变化.生态环境研究.水土保持.气候等方面. 2.像元二分法模型 像元二分模型是一种简单实用 ...

  2. Python遥感图像处理应用篇(九):使用NDVI指数数据批量计算植被覆盖度FVC

    1.植被覆盖度相关概念 植被覆盖度( Fractional Vegetation Cover,FVC)指植被(包括叶.茎.枝)在地面的垂直投影面积占统计区总面积的百分比.通常采用像元二分模型计算: 计 ...

  3. 【Envi风暴】Envi 5.1平台下植被覆盖度(VFC)的遥感估算

    [导读]植被覆盖度是指植被(包括叶.茎.枝)在地面的垂直投影面积占统计区面积的百分比.常用的计算方法有:经验模型法.植被指数法.像元分解模型法.FCK模型法.决策树分类法和神经网络法.本文利用像元二分 ...

  4. 基于GEE平台提取水体

    本文主要介绍如何利用GEE平台与哨兵2号影像提取水体.水体的提取主要是基于NDWI指数进行,当然,通过改变波段运算,也可以根据MNDWI进行提取.主要代码如下: 下面展示一些 内联代码片. //首先对 ...

  5. 基于ArcGIS 使用NDVI数据批量计算植被覆盖度FVC

    在以前的学习中http://t.csdn.cn/ikz9Z,学会了使用重分类的方法手动搜集NDVI 不同的置信度下的值.除了使用重分类方法外,还可以使用函数:slice和一些工具里面的percenti ...

  6. 基于GEE平台土地类型分类

    GEE可以进行大尺度的地物类型分类,主要原理就是根据不同地物类型的光谱反射率的不同,目前地物分类的算法有很多种,比如随机森林算法等等,本文章主要基于随机森林算法进行大尺度地物分类,代码如下所示: va ...

  7. 基于Python根据置信度区间计算植被覆盖度

    "把别人的经验变成自己的,他的本事就大了" 1 简述 大概九天前,我发了篇记录,大致是讲用Python计算Landsat8遥感生态指数RSEI,也就是下篇 "基于Pyth ...

  8. 环评图件制作 (生态影响评价)项目区位置图、工程平面图、调查样方样线点位断面等布设图、土地利用现状图、地表水系图、植被类型图、植被覆盖度图、归一化植被指数图、生态系统类型图、土壤侵蚀图、物种适宜生境图

    一.ArcGIS10.2软件安装和汉化 1.1.ArcGIS软件安装 1.1.1 介绍ArcGIS软件安装过程以及汉化过程 二.遥感概述 2.1.基本概念 2.1.1. 空间滤波 2.1.2. 非监督 ...

  9. ENVI提取NDVI与植被覆盖度估算

    公众号原文链接,欢迎关注 gENVI提取NDVI与植被覆盖度估算ENVI中NDVI计算与植被覆盖度提取https://mp.weixin.qq.com/s/Uc_14ObiYKKafQrtKqFjvg ...

最新文章

  1. AngularJS学习笔记二:AngularJS指令
  2. 理解WebKit和Chromium: Chromium for Android
  3. sql 导航函数 lag
  4. php 游标 上移,jQuery点击input使光标移动到最后或指定位置
  5. SLAM无人车通过上摄像头扫描二维码重定位
  6. 拓端tecdat|R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数
  7. 深入理解计算机系统第四版_技术干货 |深入理解计算机系统之链接
  8. 模拟铁路12306售票系统的设计与实现
  9. 基于Matlab的数字水印设计—基于DCT域的水
  10. Java毕业设计-社区疫情管理小程序
  11. [大忌(。_。)]清明节外出
  12. python3.5安装tensorflow_win10下python3.5.2和tensorflow安装环境搭建教程
  13. IIS8.5安装urlrewrite2.0 后C:\Windows\system32\inetsrv\rewrite.dll 不能加载
  14. 33岁想从头学做网页设计_从头到头的10位客户我如何设计和推出saas产品
  15. Echarts地图制作介绍
  16. java比较两个json文件的差异
  17. 嵌入式课程设计总结(三)
  18. outlook 发送 html,在Outlook中发送给Internet收件人时,如何将RTF格式更改为HTML?
  19. OpenStack 云平台流量监控插件tap-as-a-service(Taas)代码解析(二):
  20. 送外卖优先级_入职20天成单王,月入1万7,外卖小哥:必须感谢它

热门文章

  1. CEvent,CSemaphore,CCriticalSection,CMutex
  2. Emacs之高阶用法global(gtags)+cflow函数调用树(七十八)
  3. 前端跨域的场景及解决方法
  4. OC底层原理-alloc流程
  5. java 键盘鼠标交互_人机交互多样性-7种不需要鼠标和键盘的设备
  6. 04741计算机网络原理2018年版-第二章 网络应用 知识要点
  7. 实战打靶集锦-021-glasgowsmile
  8. threejs使用traverse递归修改模型材质和颜色
  9. linux shell中 '' ``的区别
  10. 新手一定要看的嵌入式学习方法