GEE代碼實例教程詳解:植被狀況指數(VCI)與干旱監測

簡介

在本篇博客中,我們將使用Google Earth Engine (GEE) 進行植被狀況指數(Vegetation Condition Index, VCI)的計算和干旱監測。通過MODIS NDVI數據,我們可以評估2001年至2024年間的植被狀況和干旱等級。

背景知識

MODIS NDVI數據集

MODIS/061/MOD13A2數據集提供了MODIS的歸一化植被指數(NDVI)數據,這些數據可以用來評估植被覆蓋和健康狀況。

植被狀況指數(VCI)

VCI是一種基于NDVI的指標,用于評估植被狀況和監測干旱。VCI的計算公式為:
[ VCI = \left(\frac{(NDVI - NDVI_{min})}{(NDVI_{max} - NDVI_{min})}\right) \times 100 ]

完整代碼

// 定義研究點坐標
var cor = [52.91994991092, 33.56756085477778];
var point = ee.Geometry.Point(cor);// 加載FAO GAUL數據集并篩選研究區域
var feature = ee.FeatureCollection("FAO/GAUL/2015/level0");
var roi = feature.filterBounds(point);
Map.centerObject(roi);
Map.addLayer(roi);// 定義時間范圍
var time_start = '2001', time_end = '2003';// 加載MODIS NDVI數據集
var ndvi = ee.ImageCollection("MODIS/061/MOD13A2").select(['NDVI']).filterDate(time_start, time_end);// 計算VCI
var ndvi_min = ndvi.min().multiply(0.0001);
var ndvi_max = ndvi.max().multiply(0.0001);var vci = ndvi.map(function (img) {var band = img.multiply(0.0001);var index = band.expression('((ndvi - min)/(max - min))*100.0', {'ndvi': band,'min': ndvi_min,'max': ndvi_max}).rename('vci');return index.copyProperties(img, ['system:time_start', 'system:time_end']);
});// 計算VCI中值
var vci_median = vci.median();
Map.addLayer(vci_median.clip(roi), [], 'vci_median', false);// 打印VCI直方圖
print(ui.Chart.image.histogram(vci_median, roi, 1000)
);// VCI分類
var cons = ee.Image.constant(0);var extreme = cons.where(vci_median.gte(0).and(vci_median.lt(10)), 1);
var severe = extreme.where(vci_median.gte(10).and(vci_median.lt(20)), 2);
var moderate = severe.where(vci_median.gte(20).and(vci_median.lt(30)), 3);
var light = moderate.where(vci_median.gte(30).gte(vci_median.lt(40)), 4);
var no1 = light.where(vci_median.gte(40).and(vci_median.lt(60)), 5);
var no2 = no1.where(vci_median.gte(60).and(vci_median.lt(80)), 6);
var no3 = no2.where(vci_median.gte(80), 7);Map.addLayer(moderate.clip(roi), {min: 1, max: 7}, 'drought_map', false);// VCI時間序列分類
var time_start = '2001', time_end = '2024';
var ndvi2 = ee.ImageCollection("MODIS/061/MOD13A2").select(['NDVI']).filterDate(time_start, time_end);var ndvi_min2 = ndvi2.min().multiply(0.0001);
var ndvi_max2 = ndvi2.max().multiply(0.0001);var vci2 = ndvi2.map(function (img) {var band = img.multiply(0.0001);var index = band.expression('((ndvi - min)/(max - min))*100.0', {'ndvi': band,'min': ndvi_min2,'max': ndvi_max2}).rename('vci');return index.copyProperties(img, ['system:time_start', 'system:time_end']);
});// 修正:vci_class 應使用 vci2 而不是 vci_median
var vci_class = vci2.map(function (img) {var vci_value = img.select('vci');return img.expression('extreme + severe + moderate + light + no1 + no2 + no3',{'extreme': vci_value.gte(0).and(vci_value.lt(10)).multiply(1),'severe': vci_value.gte(10).and(vci_value.lt(20)).multiply(2),'moderate': vci_value.gte(20).and(vci_value.lt(30)).multiply(3),'light': vci_value.gte(30).and(vci_value.lt(40)).multiply(4),'no1': vci_value.gte(40).and(vci_value.lt(60)).multiply(5),'no2': vci_value.gte(60).and(vci_value.lt(80)).multiply(6),'no3': vci_value.gte(80).multiply(7)}).rename('class');
});var vci_map = vci_class.mode();Map.addLayer(vci_map.clip(roi), {palette: ['black', 'brown', 'red', 'orange', 'yellow', 'lightgreen', 'darkgreen'],min: 1,max: 7
}, 'vci_mode', false);// 導出VCI分類圖
Export.image.toDrive({image: vci_map.clip(roi),description: 'vci_map',region: roi,maxPixels: 1e13,crs: 'EPSG:4326',folder: 'drought',scale: 1000
});// 計算干旱面積
var drought_area = (ee.Image.pixelArea().divide(1e6)).addBands(vci_map);print(ui.Chart.image.byClass(drought_area, 'constant',roi, ee.Reducer.sum(), 1000, ['nan', 'extreme drought', 'severe drought', 'moderate drought', 'light drought', 'no drought1', 'nodrought2', 'no drought3'])
);

代碼詳解

1. 定義研究點

創建一個點對象point,用于確定研究區域。

2. 加載FAO GAUL數據集

加載并篩選與研究點相交的區域roi

3. 加載MODIS NDVI數據集

加載指定時間范圍內的MODIS NDVI數據。

4. 計算VCI

基于NDVI的最小值和最大值計算VCI。

5. VCI分類

根據VCI值將圖像分類為不同的干旱等級。

6. 繪制VCI中值圖層

將VCI中值圖層添加到地圖上。

7. 打印VCI直方圖

打印VCI中值的直方圖,以了解VCI值的分布。

8. VCI時間序列分類

對整個時間序列的VCI進行分類,并計算每個干旱等級的頻率。

9. 導出VCI分類圖

將VCI分類圖導出到Google Drive。

10. 計算干旱面積

計算每個干旱等級的面積。

結論

本教程展示了如何使用GEE對MODIS數據進行VCI計算和干旱監測。通過VCI,我們可以評估植被狀況并識別干旱區域。

進一步探索

GEE提供了多種工具和方法來進行植被和干旱分析。在后續的教程中,我們將繼續探索GEE在不同領域的應用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/42119.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42119.shtml
英文地址,請注明出處:http://en.pswp.cn/web/42119.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++初階:從C過渡到C++的入門基礎

??所屬專欄:C?? ??作者主頁:嶔某?? C發展歷史 C的起源可以追溯到1979年,當時BjarneStroustrup(本賈尼斯特勞斯特盧普,這個翻譯的名字不同的地?可能有差異)在?爾實驗室從事計算機科學和軟件?程的研究?作。?對項?中復…

第4章 Vite模塊化與插件系統(二)

4.3 常用插件介紹 4.3.1 官方插件 vitejs/plugin-vue 用于支持 Vue.js 開發: npm install vitejs/plugin-vue --save-devimport vue from vitejs/plugin-vueexport default defineConfig({plugins: [vue()] })vitejs/plugin-react 用于支持 React 開發&#xf…

JavaDS —— 順序表ArrayList

順序表 順序表是用一段物理地址連續的存儲單元依次存儲數據元素的線性結構,一般情況下采用數組存儲。在數組上完成數據的增刪查改。在物理和邏輯上都是連續的。 模擬實現 下面是我們要自己模擬實現的方法: 首先我們要創建一個順序表,順序表…

關于Mars3d的入門

關于Mars3d的入門 一. 創建地球,加載瓦片圖層二 矢量圖層2.1 常用矢量圖層2.1.1 GraphicLayer2.1.2 GeoJsonLayer 2.2 矢量圖層的點擊事件 三 矢量數據四 事件機制 一. 創建地球,加載瓦片圖層 // 1. 創建地球let map new mars3d.Map("mars3dContai…

基于openStreetMap的路徑規劃ROS功能包

文章目錄 概要OSM是什么主要特點主要組成部分使用場景如何獲取OSM常規參數配置笛卡爾坐標系原點經緯度設置編譯和運行如何規劃演示效果概要 由于https://github.com/MichalDobis/osm_planner存在一些使用問題,不是那么方便,我對其進行了一些修改,便于進行起點到終點進行路徑…

數據如何查詢

分組查詢 分組查詢(Group By)是在關系型數據庫中用來對數據進行分組并對每個組應用聚合函數的一種操作。這種查詢通常結合聚合函數(如 COUNT、SUM、AVG、MAX、MIN 等)使用,用于在查詢結果中生成匯總信息 特點(聚合)&am…

從零開始做題:My_lllp

題目 給出一張png圖片 解題 ┌──(holyeyes?kali2023)-[~/Misc/題目/zulu/My_lllp] └─$ python2 lsb.py extract my_lllp.png out.txt my_lllp [] Image size: 1080x1079 pixels. [] Written extracted data to out.txt. ┌──(holyeyes?kali2023)-[~/Misc/題目/zul…

python的線程池和進程池

Python 3.2 就已經引入了 concurrent.futures 模塊,提供了線程池(ThreadPoolExecutor)和進程池(ProcessPoolExecutor),用于簡化并發編程的管理和調度。 ThreadPoolExecutor 在ThreadPoolExecutor 是 conc…

簡易Qt串口助手

界面顯示如下 關于串口類 初始化 設置串口號 設置波特率 打開串口 發送按鈕功能實現 接收數據顯示在控件中 關閉串口

使用 MFA 保護對企業應用程序的訪問

多因素身份驗證(MFA)是在授予用戶訪問特定資源的權限之前,使用多重身份驗證來驗證用戶身份的過程,僅使用單一因素(傳統上是用戶名和密碼)來保護資源,使它們容易受到破壞,添加其他身份…

springboot非物質文化遺產管理系統-計算機畢業設計源碼16087

目錄 摘要 1 緒論 1.1 選題背景與意義 1.2國內外研究現狀 1.3論文結構與章節安排 2系統分析 2.1 可行性分析 2.2 系統流程分析 2.2.1系統開發流程 2.2.2 用戶登錄流程 2.2.3 系統操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 刪除信息流程 2.3 系統功能…

前端開發過程中經常遇到的問題以及對應解決方法 (持續更新)

我的朋友已經工作了 3 年,他過去一直擔任前端工程師。 不幸的是,他被老板批評了,因為他在工作中犯了一個錯誤,這是一個非常簡單但容易忽視的問題,我想也是很多朋友容易忽視的一個問題。 今天我把它分享出來&#xff…

Linux三劍客(grep、awk和sed)操作及與管道結合使用

1. 總覽 grep、sed和awk被稱為Linux三劍客,是因為它們在文本處理和數據操作方面極其強大且常用。 Linux三劍客在文件處理中的作用: grep(數據查找定位):文本搜索工具,在文件中搜索符合正則表達式的文本內容…

Redis原理-數據結構

Redis原理篇 1、原理篇-Redis數據結構 1.1 Redis數據結構-動態字符串 我們都知道Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。可見字符串是Redis中最常用的一種數據結構。 不過Redis沒有直接使用C語言中的字符串,因為C語言字符串存…

【大模型LLM面試合集】大語言模型架構_attention

1.attention 1.Attention 1.1 講講對Attention的理解? Attention機制是一種在處理時序相關問題的時候常用的技術,主要用于處理序列數據。 核心思想是在處理序列數據時,網絡應該更關注輸入中的重要部分,而忽略不重要的部分&…

BJT的結構(晶體管電壓/電流+β+晶體管特性曲線/截止與飽和+直流負載線(Q點))+單片機數碼管基礎

2024-7-8,星期一,20:23,天氣:晴,心情:晴。今天沒有什么特殊的事情發生,周末休息了兩天,周一回來繼續學習啦,加油加油!!! 今日完成模電…

視頻號矩陣管理系統:短視頻內容營銷的智能助手

隨著短視頻行業的蓬勃發展,視頻號矩陣管理系統應運而生,為內容創作者和品牌提供了一站式的短視頻管理和營銷解決方案。本文將深入探討視頻號矩陣管理系統的核心功能,以及它如何助力用戶在短視頻營銷領域取得成功。 視頻號矩陣管理系統概述 …

在PyTorch中使用TensorBoard

文章目錄 在PyTorch中使用TensorBoard1.安裝2.TensorBoard使用2.1創建SummaryWriter實例2.2利用add_scalar()記錄metrics2.3關閉Writer2.4啟動TensorBoard 3.本地連接服務器使用TensorBoard3.1方法一:使用SSH命令進行本地端口轉發3.2方法二:啟動TensorBo…

Python 全棧體系【三階】(二)

第一章 Django 五、模板 1. 概述 Django中的模板是指可以動態生成任何基于文本格式文件的技術(如HTML、CSS等)。 Django中內置了自己的模板系統,稱為DTL(Django Template Language), Django模板語言。 2. 配置 settings.py中關于模板的…

如何將資源前端通過 Docker 部署到遠程服務器

作為一個程序員,在開發過程中,經常會遇到項目部署的問題,在現在本就不穩定的大環境下,前端開發也需要掌握部署技能,來提高自己的生存力,今天就詳細說一下如何把一個前端資源放到遠程服務器上面通過docker部…