GEE代碼實例教程詳解:湖泊面積分析

GEE代碼實例教程詳解:湖泊面積分析

完整代碼

// 定義研究區域的坐標點
var coordinates = [[42.000552219688586, 38.18969302118053],[43.868228000938586, 38.18969302118053],[43.868228000938586, 39.209978258633186],[42.000552219688586, 39.209978258633186],[42.000552219688586, 38.18969302118053]
];// 創建多邊形區域
var roi = ee.Geometry.Polygon(coordinates);// 將多邊形添加到地圖上
Map.addLayer(roi, {color: 'red'});// 定義時間范圍
var time_start = '2013-01-01';
var time_end = '2021-12-31';// 創建Landsat 8圖像集合并篩選數據
var landsat = ee.ImageCollection('LANDSAT/LC08/C01/T1').filterDate(time_start, time_end).filter(ee.Filter.lt('CLOUD_COVER', 10)).filter(ee.Filter.calendarRange(6, 9, 'month')) // 篩選夏季月份.filterBounds(roi); // 應用地理范圍// 計算NDWI
var ndwi = landsat.map(function(img) {var green = img.select('B4').multiply(0.0001).subtract(0.1); // 綠色波段var nir = img.select('B5').multiply(0.0001).subtract(0.1); // 近紅外波段var ndwi = green.normalizedDifference(nir).rename('ndwi');return img.addBands(ndwi);
}).median().select('ndwi');// 應用閾值并創建水體掩膜
var water_mask = ndwi.gte(0.1); // NDWI大于等于0.1的像素被認為是水體// 將水體掩膜添加到地圖上
Map.addLayer(water_mask, {min: 0, max: 1, palette: ['0000FF']}, 'Water Mask');// 計算水體像素面積(單位:平方米)
var pixel_area = water_mask.multiply(ee.Image.pixelArea());// 將像素面積添加到地圖上
Map.addLayer(pixel_area.clip(roi), {min: 0, max: 1000, palette: ['00FF00']}, 'Pixel Area');// 計算湖泊面積(單位:平方公里)
var scale = 30; // 定義分析的尺度
var lake_area = pixel_area.reduceRegion({reducer: ee.Reducer.sum(),geometry: roi,scale: scale,bestEffort: true
}).get('ndwi');// 將面積從平方米轉換為平方公里
var lake_area_km2 = lake_area / 1e6 / 1e6 * scale * scale;// 打印湖泊面積
print('Lake Area (square kilometers):', lake_area_km2);

代碼詳解

1. 定義研究區域

我們首先定義了一個多邊形區域(Region of Interest, ROI),這是分析湖泊面積的地理范圍。坐標點列表表示多邊形的頂點,我們使用ee.Geometry.Polygon來創建這個多邊形。

2. 添加圖層到地圖

使用Map.addLayer函數將ROI添加到地圖上,使用紅色邊界線可視化多邊形區域。

3. 定義時間范圍

設置時間范圍time_starttime_end,用于篩選Landsat 8圖像集合中的圖像。

4. 創建和篩選圖像集合

使用ee.ImageCollection獲取Landsat 8圖像,并應用多個篩選條件:

  • filterDate:根據時間范圍篩選圖像。
  • filter:選擇云量覆蓋小于10%的圖像。
  • filterBounds:將圖像集合限制在ROI內。

5. 計算NDWI

使用map函數遍歷圖像集合,對每張圖像進行處理:

  • 選擇綠色波段(B4)和近紅外波段(B5),并進行輻射校正。
  • 計算NDWI,使用normalizedDifference函數。

6. 應用閾值和創建掩膜

使用gte函數(greater than or equal)設置閾值0.1,創建水體掩膜。

7. 可視化水體掩膜

將水體掩膜添加到地圖上,使用藍色可視化水體區域。

8. 計算像素面積

使用multiply函數將水體掩膜與每個像素的面積相乘,得到每個水體像素的面積(單位:平方米)。

9. 可視化像素面積

將計算得到的像素面積添加到地圖上,使用綠色可視化。

10. 計算湖泊面積

使用reduceRegion函數和ee.Reducer.sum對ROI內的像素面積求和,得到湖泊的總面積(單位:平方米)。然后將面積轉換為平方公里。

11. 打印結果

使用print函數打印湖泊的面積。

結論

本教程通過一個具體的代碼實例,詳細解釋了如何在GEE中進行湖泊面積分析。從定義研究區域到計算和可視化結果,我們逐步介紹了每個步驟及其代碼實現。希望這個教程能幫助你更好地理解GEE的功能,并激發你在地理空間數據分析領域的探索。

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

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

相關文章

C++ --> 類和對象(一)

歡迎來到我的Blog,點擊關注哦💕 前言 前面講到了C的入門需要學習的知識,是為了后面更好的學習。學習是不斷深入的,內容是不斷復雜的。篤定信心。 一、面向對象編程(OOP)和面向過程編程(POP)的認識 面向過程編程(Proc…

力扣-貪心算法4

406.根據身高重建隊列 406. 根據身高重建隊列 題目 假設有打亂順序的一群人站成一個隊列,數組 people 表示隊列中一些人的屬性(不一定按順序)。每個 people[i] [hi, ki] 表示第 i 個人的身高為 hi ,前面 正好 有 ki 個身高大于或…

MyBatis的簡介與使用

Mybatis JDBC操作數據庫的缺點 存在大量的冗余代碼。手工創建 Connection、Statement 等,效率低下。手工將結果集封裝成實體對象。查詢效率低,沒有對數據訪問進行優化。 Mybatis框架 簡介 MyBatis 本是 apache 的一個開源項目 iBatis, 2010年這個項目由…

imx6ull/linux應用編程學習(14) MQTT基礎知識

什么是mqtt? 與HTTP 協議一樣, MQTT 協議也是應用層協議,工作在 TCP/IP 四層模型中的最上層(應用層),構建于 TCP/IP協議上。 MQTT 最大優點在于,可以以極少的代碼和有限的帶寬,為連接…

網絡資源模板--Android Studio 外賣點餐App

目錄 一、項目演示 二、項目測試環境 三、項目詳情 四、完整的項目源碼 原創外賣點餐:基于Android studio 實現外賣(點)訂餐系統 非原創奶茶點餐:網絡資源模板--基于 Android Studio 實現的奶茶點餐App報告 一、項目演示 網絡資源模板--基于Android …

在AvaotaA1全志T527開發板上使用AvaotaOS 部署 Docker 服務

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然后發布到任何流行的 Linux或Windows操作系統的機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。 準備…

dolphinscheduler-springboot集成

springboot集成dolphinscheduler 說明 為了避免對DolphinScheduler產生過度依賴,實踐中通常不會全面采用其內置的所有任務節點類型。相反,會選擇性地利用DolphinScheduler的HTTP任務節點功能,以此作為工作流執行管理的橋梁,對接…

信息技術課上的紀律秘訣:營造有序學習環境

信息技術課是學生們探索數字世界的樂園,但同時也是課堂紀律管理的挑戰場。電腦、網絡、游戲等元素可能分散學生的注意力,影響學習效果。本文將分享一些有效的策略,幫助教師在信息技術課上維持課堂紀律,確保教學活動順利進行。 制…

幾何建模基礎-樣條曲線和樣條曲面介紹

1.概念介紹 1.1 樣條曲線的來源 樣條的英語單詞spline來源于可變形的樣條工具,那是一種在造船和工程制圖時用來畫出光滑形狀的工具:富有彈性的均勻細木條/金屬條/有機玻璃條,它圍繞著按指定位置放置的重物或者壓鐵做彈性彎曲,以…

JS實現一個簡單的模糊匹配

1、示例數據如下: // 示例數據 const data [ { name: ‘Alice’, age: 25 }, { name: ‘Bob’, age: 30 }, { name: ‘Charlie’, age: 35 }, { name: ‘David’, age: 40 }, { name: ‘Eve’, age: 45 } ]; 2、模糊匹配函數 // 模糊匹配函數 function fuzzyMatch(…

基于LangChain的RAG開發教程(二)

v1.0官方文檔:https://python.langchain.com/v0.1/docs/get_started/introduction/ 最新文檔:https://python.langchain.com/v0.2/docs/introduction/ LangChain是一個能夠利用大語言模型(LLM,Large Language Model)能…

植物大戰僵尸融合嫁接版 MAC 版本下載安裝詳細教程

繼植物大戰僵尸雜交版火了之后,PVZ改版可謂是百花齊放,最近又有一個非常好玩的模式被開發出來了,他們稱為《植物大戰僵尸融合嫁接版》 該版本并沒有對植物卡牌做改動,而是可以將任意兩種植物疊放到一起進行融合,產生新…

思路打開!騰訊造了10億個角色,驅動數據合成!7B模型效果打爆了

世界由形形色色的角色構成,每個角色都擁有獨特的知識、經驗、興趣、個性和職業,他們共同制造了豐富多元的知識與文化。 所謂術業有專攻,比如AI科學家專注于構建LLMs,醫務工作者們共建龐大的醫學知識庫,數學家們則偏愛數學公式與定…

lvgl 本地化

生成語言包文件: lv_i18n compile -t en-GB.yml -o ui 正則匹配中文 "[\u4e00-\u9fa5]" _("[\u4e00-\u9fa5]") https://www.cnblogs.com/jerryqi/p/9604828.html 查找多個漢字體的 ("[\u4e00-\u9fa5]"[)]) _($1) "科室:"…

數據分析與挖掘實戰案例-電商產品評論數據情感分析

數據分析與挖掘實戰案例-電商產品評論數據情感分析 文章目錄 數據分析與挖掘實戰案例-電商產品評論數據情感分析1. 背景與挖掘目標2. 分析方法與過程2.1 評論預處理1. 評論去重2. 數據清洗 2.2 評論分詞1. 分詞、詞性標注、去除停用詞2. 提取含名詞的評論3. 繪制詞云查看分詞效…

昇思25天學習打卡營第12天 | LLM原理和實踐:MindNLP ChatGLM-6B StreamChat

1. MindNLP ChatGLM-6B StreamChat 本案例基于MindNLP和ChatGLM-6B實現一個聊天應用。 ChatGLM-6B應該是國內第一個發布的可以在消費級顯卡上進行推理部署的國產開源大模型,2023年3月就發布了。我在23年6月份的時候就在自己的筆記本電腦上部署測試過,當…

UI自動化測試框架:PO 模式+數據驅動(超詳細)

1. PO 設計模式簡介 什么是 PO 模式? PO(PageObject)設計模式將某個頁面的所有元素對象定位和對元素對象的操作封裝成一個 Page 類,并以頁面為單位來寫測試用例,實現頁面對象和測試用例的分離。 PO 模式的設計思想與…

Python學習中進行條件判斷(if, else, elif)

條件判斷是編程中必不可少的一部分,它讓程序可以根據不同的條件執行不同的代碼塊。在Python中,主要使用if、elif和else語句來實現條件判斷。 基本語法 在Python中,條件判斷的基本語法如下: if condition:# 當condition為True時…

一篇讀懂128陷阱

128陷阱 128陷阱的概念包裝器類自動裝箱自動拆箱128陷阱 Intager源碼equals 128陷阱的概念 首先想要清楚什么是128陷阱,需要了解一些概念 包裝器類 包裝器類(Wrapper classes)是Java中的一組類,它們允許將基本數據類型&#xf…

NCCL 中的一些輔助debug 知識點

1&#xff0c;調試nccl 啟動kernel的方法 ncclLaunchKernel cuLaunchKernelEx ncclStrongStreamLaunchKernel cudaLaunchKernel ncclLaunchOneRank cudaLaunchKernel 在 nccl lib 中&#xff0c;不存在使用<<<grid, block,,>>> 這種類似方式啟…