GEE代碼實例教程詳解:年度和月度土地覆蓋變化分析

簡介

在本篇博客中,我們將使用Google Earth Engine (GEE) 對土地覆蓋變化進行年度和月度的分析。通過Google的Dynamic World數據集,我們可以識別2023年至2024年間土地覆蓋的類型和變化。

背景知識

Google Dynamic World數據集

Google/DYNAMICWORLD/V1數據集提供了高分辨率的土地覆蓋數據,這些數據可以用來分析土地覆蓋類型和變化。

土地覆蓋變化分析

土地覆蓋變化分析是環境監測和土地管理的重要組成部分,有助于了解地表覆蓋和利用模式的轉變。

完整代碼

// 定義研究點坐標
var cor = [49.349581955929196, 37.390543498162955];
var loc = ee.Geometry.Point(cor);// 加載FAO GAUL數據集并篩選研究區域
var roi = ee.FeatureCollection("FAO/GAUL/2015/level1").filterBounds(loc);
Map.centerObject(roi);
Map.addLayer(roi);// 加載Google Dynamic World土地覆蓋數據集
var map = ee.ImageCollection("GOOGLE/DYNAMICWORLD/V1").filterDate('2023', '2024').filter(ee.Filter.calendarRange(1, 12, 'month')).filterBounds(roi);// 計算年度土地覆蓋
var annual_map = map.select('label').mode();
var VIS_PALETTE = ['419bdf', '397d49', '88b053', '7a87c6', 'e49635', 'dfc35a', 'c4281b','a59b8f', 'b39fe1'
];Map.addLayer(annual_map.clip(roi), {min: 0, max: 8, palette: VIS_PALETTE}, 'map2013', false);// 導出年度土地覆蓋圖像
Export.image.toDrive({image: annual_map.clip(roi),description: 'annual_map',scale: 30,maxPixels: 1e13,region: roi,crs: annual_map.getInfo().crs
});// 定義時間序列集合函數
function temporal_collection(collection, start, count, interval, unit) {var seq = ee.List.sequence(0, ee.Number(count).subtract(1));var origin_date = ee.Date(start);return ee.ImageCollection(seq.map(function (i) {var start_date = origin_date.advance(ee.Number(interval).multiply(i), unit);var end_date = origin_date.advance(ee.Number(interval).multiply(ee.Number(i).add(1)), unit);return collection.filterDate(start_date, end_date).mode().set('system:time_start', start_date.millis()).set('system:time_end', end_date.millis());}));
}// 創建月度土地覆蓋集合
var monthly = temporal_collection(map.select('label'), '2023', 12, 1, 'month');Map.addLayer(monthly.toBands().clip(roi), [], 'monthly_map', false);// 更新月度土地覆蓋圖像的波段名稱
var monthly_updated = monthly.map(function (img) {var date = img.date().format('YYYY-MM-dd');return img.rename(date);
});print(monthly_updated.toBands());// 導出月度土地覆蓋圖像
Export.image.toDrive({image: monthly_updated.toBands().clip(roi),description: 'monthly_lc',scale: 30,maxPixels: 1e13,region: roi,crs: monthly_updated.toBands().getInfo().crs
});

代碼詳解

1. 定義研究點

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

2. 加載FAO GAUL數據集

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

3. 加載Google Dynamic World土地覆蓋數據集

加載指定時間范圍內的Google Dynamic World土地覆蓋數據。

4. 計算年度土地覆蓋

使用mode方法計算2023年的土地覆蓋類型。

5. 導出年度土地覆蓋圖像

將年度土地覆蓋圖像導出到Google Drive。

6. 定義時間序列集合函數

定義temporal_collection函數,用于生成時間序列的土地覆蓋圖像集合。

7. 創建月度土地覆蓋集合

使用temporal_collection函數創建2023年的月度土地覆蓋集合。

8. 更新月度土地覆蓋圖像的波段名稱

將每個月份的圖像波段重命名,以反映對應的日期。

9. 導出月度土地覆蓋圖像

將月度土地覆蓋圖像導出到Google Drive。

結論

本教程展示了如何使用GEE對Google Dynamic World數據集進行年度和月度土地覆蓋變化分析。通過這些分析,我們可以了解土地覆蓋類型的分布和隨時間的變化。

進一步探索

GEE提供了多種工具和方法來進行土地覆蓋變化分析。在后續的教程中,我們將繼續探索GEE在不同領域的應用。

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

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

相關文章

百川工作手機實現銷售管理微信監控系統

在瞬息萬變的商業戰場中,每一分效率的提升都是企業制勝的關鍵。傳統銷售管理模式已難以滿足現代企業對精準、高效、合規的迫切需求。今天,讓我們一同探索如何利用工作手機這一創新工具,為您的銷售團隊裝上智能翅膀,開啟銷售管理的…

基于springboot+vue實現的廚藝交流平臺(文末源碼+Lw)093

93基于SpringBootVue的實現的廚藝交流平臺(源碼數據庫萬字Lun文流程圖ER圖結構圖演示視頻軟件包) 系統功能: 這次開發的廚藝交流平臺功能有個人中心,食材分類管理,用戶管理,菜品分類管理,菜譜信…

解鎖敦煌網成功秘籍:批量注冊買家號測評的高效策略

敦煌網(DHgate)作為一個跨境電商平臺,搭建境外本土網絡環境并實現批量注冊買家號下單,需要遵循一系列嚴謹的步驟和考慮多個關鍵因素。以下是一個概括性的指南: 一、環境要求 國外服務器:首先,…

HumbleBundle7月虛幻捆綁包30件軍事題材美術模型沙漠自然環境大逃殺模塊化建筑可定制武器包二戰現代坦克飛機道具喪尸士兵角色模型20240705

HumbleBundle7月虛幻捆綁包30件軍事題材美術模型沙漠自然環境大逃殺模塊化建筑可定制武器包二戰現代坦克飛機道具喪尸士兵角色模型202407051607 這次HumbleBundle捆綁包是UE虛幻軍事題材的,內容非常多。 有軍事基地、賽博朋克街區、灌木叢景觀環境等 HB捆綁包虛幻…

7-打包安裝程序

接下來假設我們想要將我們的項目分發給其他人,以便他們可以使用它。我們希望在各種平臺上提供二進制和源代碼發行版。這與我們之前在安裝和測試中所做的安裝略有不同,在安裝中我們安裝了從源代碼構建的二進制文件。在本例中,我們將構建支持二…

C# 構造函數依賴注入 使用out向外傳遞參數

天真目前解決方法 天真 using System;namespace forCode20191 {class Program {static void Main(string[] args) {bool flag false;Tmp tt new Tmp(out flag);Console.WriteLine(flag); // 將輸出 falsett.Doit();Console.WriteLine(flag); // 將輸出 trueConsole.ReadKey(…

“DDoS攻擊的最新防御策略:從檢測到緩解的全方位方案“

DDoS攻擊的最新防御策略 DDoS攻擊(分布式拒絕服務攻擊)是網絡安全領域的重大威脅,它通過大量的惡意流量淹沒目標服務器或網絡,導致服務不可用。為了有效防御DDoS攻擊,最新的策略強調從檢測到緩解的全方位方案。 多層防…

深度學習的數學PDF

鏈接: https://pan.baidu.com/s/1_jScZ7dcyAWGqbrad6bbCQ?pwd9gj9 提取碼: 9gj9 復制這段內容后打開百度網盤手機App,操作更方便哦

【蒼穹外賣】Day2 手把手敲完細節

目錄 1. 新增員工 1.1 需求分析和設計 1.2 代碼開發 ①定義DTO類:(在sky-pojo里) ②EmployeeController中創建新增員工方法save() ③EmployeeService里聲明save方法(altenter) ④EmployeeServiceImpl中實現save方法 ⑤在E…

頂刊文獻閱讀及代碼復現

前提:每個無人機都有 (i)自己的機載計算機,用于執行控制其自身動作所需的計算 (ii)自己的傳感器系統,用于測量相對位置和速度, (iii)自己的通信設備,用于與相鄰代理進行數據交換。 模型:短期的排斥力、中間范圍的速度一致性和長距離的吸引力

通過PLC地址來切換威綸通觸摸屏界面

Step 1 元件-PLC控制 Step 2 新增 選擇設備 選擇切換基本窗口功能 選擇觸發地址 Step 3 離線仿真測試 在數值框中輸入對應的頁面號 可以看到頁面可以正常切換 分享創作不易,請多多支持,點贊、收藏、關注! Ending~

昇思Mindspore25天學習打卡Day20:DCGAN生成漫畫頭像

昇思Mindspore25天學習打卡Day20:DCGAN生成漫畫頭像 1 GAN基礎原理2 DCGAN原理3 數據準備與處理數據處理 4 構造網絡4.1 生成器4.2 判別器 5 模型訓練損失函數優化器訓練模型 6 結果展示7 訓練結束打上標簽和時間 在下面的教程中,我們將通過示例代碼說明…

為什么裁員先裁技術人員?網友給答復

網友1:技術崗本身就是項目制的,項目完成,后續項目運營的收益與技術無關。之前是項目多,所以收益持續走高,現在都在減項目,自然先減技術崗。 網友2:房子蓋起來了,還需要農民工么? …

基于STM主題模型的主題提取分析-完整代碼數據

直接看結果: 代碼: import re from collections import defaultdict import random import matplotlib.pyplot as plt import numpy as npimport pandas as pd import numpy as np import re from sklearn.feature_extraction.text import CountVectorizer from nltk.corpus…

在Morelogin中使用IPXProxy海外代理IP的設置指南

Morelogin指紋瀏覽器是市場上較受歡迎的指紋瀏覽器,允許用戶管理多個賬號并進行自動化操作。它提供免費環境供用戶進行體驗,并且操作起來非常簡單。大多數人都會將Morelogin指紋瀏覽器和海外代理IP進行使用,來應用于多種場景,如電…

用ce修改植物大戰僵尸雜交版銀幣

第一步打開游戲 用ce打開圖中進程 第二步 輸入你原始銀幣 點首次搜索 第三步 找到這個地址 把地址拖下來 第四步 雙擊直接修改下面數值即可 金幣 鉆石 都和這個方法一樣 不一樣的是首次搜索可能會有很多地址 我們改變游戲里面的值 然后再次搜索游戲被改變的值即可準確找到地址

MySQL中字段的實際長度

在MySQL中,字段的實際長度(即存儲數據的實際字節數)可能因數據類型和存儲的具體內容而異。對于字符類型(如CHAR, VARCHAR, TEXT等)字段,實際長度取決于存儲的字符串長度以及字符集的編碼方式(如…

新加坡工作和生活指北:租房篇

本文首發于公眾號 Keegan小鋼 前段時間已經分享了工作篇,現在接著聊聊生活篇。因為生活這塊涉及到多個方面,內容比較多,所以我再細分了一下,本篇先聊聊租房。 先來看看新加坡的地區分布圖,如下: 上圖將新加…

使用Python繪制累積直方圖并分析數據

使用Python繪制累積直方圖并分析數據 在這篇博客中,我們將探討如何使用Python中的pandas庫和matplotlib庫來繪制累積直方圖,并分析數據文件中的內容。累積直方圖是一種常用的圖表類型,用于展示數據的累積分布情況。 數據: 鏈接…

(C++鏈表01) 移除鏈表元素

203、移除鏈表元素 不帶頭節點 class Solution { public:ListNode* removeElements(ListNode* head, int val) {while(head ! NULL && head->val val) {ListNode* tem head;head head->next;delete tem;}ListNode* cur head;while(cur ! NULL && c…