GEE数据集:2001年-2019年全球土地覆被估算(GLanCE)

 目录

简介

数据集说明

空间信息

代码1

代码2

代码链接

APP链接

结果

引用

许可

网址推荐

知识星球

机器学习


简介

全球土地覆被估算(GLanCE)

全球土地覆被估算(GLanCE)数据集利用 30 米空间分辨率的大地遥感卫星图像,提供了 2001 年至 2019 年期间每年土地覆被和土地覆被变化的高质量长期记录。 该数据集涵盖除南极洲以外的全球所有陆地区域,包括 10 个科学数据集(SDS),用于跟踪土地覆被、土地覆被变化和绿化动态。 连续变化探测和分类(CCDC)算法用于根据所有可用的、清晰的大地遥感卫星观测数据识别土地覆被和变化。

GLanCE SDS分为三类:土地覆被和变化: 四个 SDS 提供与以下方面有关的信息

(1)土地覆被等级,(2)与土地覆被等级相关的估计质量,(3)发生变化的地方以前的土地覆被,(4)变化的大致年日(DOY)。

绿化动态: 四个 SDS 使用增强植被指数 (EVI2) 描述年度绿度特征,包括 (1) 中值、(2) 振幅、(3) 变化率(如果存在)和 (4) 发生变化的像素的 EVI2 中值变化幅度。

叶片类型和物候学: 第一版数据包括七个图层及其相应的波段名称。 请注意,这些波段名称与 LP DAAC 网站用户指南中列出的波段名称略有不同。 本表显示了第一版数据中的图层名称及其对应的波段名称。

数据集说明

目前的数据集包括美洲、欧洲和大洋洲的数据,非洲和亚洲的数据将于 2025 年初发布。 非洲和亚洲的数据将于 2025 年初发布。 土地覆被质量保证层将在下一个地图版本(如 v1.1)中提供。 谷歌地球引擎数据集使用不同的平铺系统,旨在简化平台并提高效率,并使用 1984 年世界大地坐标系(EPSG:4326)存储,与用于生成数据集的基础 CCDC 数据集相匹配。 相比之下,LP-DAAC 中存储的数据集是从 GEE 中导出的,使用的是基于大陆网格(150 x 150 平方公里)和投影(大陆兰伯特方位角等面积投影)的定制平铺系统。

空间信息

Layer NameBand Name
Land Cover ClassLC
Previous ClassprevClass
Change DatechangeDate
EVI2 MedianEVI2median
EVI2 AmplitudeEVI2amplitude
EVI2 RateEVI2rate
Change EVI2 MedianchangeMag

代码1

/** 
 * Example GEE Script for Exploring Global Land Cover mapping and Estimation (GLANCE) 
 * Catalog -- Example 1: Loading datasets for a time range
 * 
 * Preliminary citation: 
 * 
 * Friedl, M.A., Woodcock, C.E., Olofsson, P., Zhu, Z., Loveland, T., 
 * Stanimirova, R., Arévalo, P., Bullock, E., Hu, K.-T., Zhang, Y., Turlej, K., 
 * Tarrio, K., McAvoy, K., Gorelick, N., Wang, J.A., Barber, C.P., Souza, C., 2022. 
 * Medium Spatial Resolution Mapping of Global Land Cover and Land Cover Change 
 * Across Multiple Decades From Landsat. Frontiers in Remote Sensing 3. 
 * https://doi.org/10.3389/frsen.2022.894571
 * 
 * User guide: https://lpdaac.usgs.gov/documents/1567/GLanCE_User_Guide_v1.pdf 
 * 
 * Authors: 
 *         Yingtong Zhang | zhangyt@bu.edu
 *         Paulo Arévalo  | parevalo@bu.edu 
 */


var GLANCE = ee.ImageCollection("projects/GLANCE/DATASETS/V001")
var palettes = require('users/gena/packages:palettes')

// -------------- SET GLOBAL VIZ PROPERTIES
Map.setOptions('HYBRID')
// Land cover Palette
var LCPalette = ['#386cb0', 'white', 'red', '#68666B', '#336600', '#28A765', '#ffff99']
var classes = ['Water', 'Snow/Ice', 'Developed', 'Bare', 'Forest', 'Shrub', 'Herbaceous']
var LCpal = {min: 1, max: 7, palette: LCPalette}

// EVI Palette
var eviPal = {palette: palettes.matplotlib.viridis[7], min:-100, max: 4000}
var eviRatePal = {palette: palettes.matplotlib.viridis[7], min:-700, max: 700}
// Change Palette
var doyPal = {palette: palettes.matplotlib.viridis[7], min:1, max: 365}


// Load the data for a certain year; can also be filtered by other properties
var filtered = GLANCE.filterDate('2015-01-01', '2016-01-01').mosaic()

// -------------- LAND COVER --------------
Map.addLayer(filtered.select('LC'), LCpal,'LC')

// -------------- EVI2--------------
Map.addLayer(filtered.select('EVI2median'), eviPal, "EVI2median",0)
Map.addLayer(filtered.select('EVI2amplitude'), eviPal, "EVI2amplitude",0)
Map.addLayer(filtered.select('EVI2rate'), eviRatePal, "EVI2rate",0)

// -------------- CHANGE --------------
Map.addLayer(filtered.select('changeDate'), doyPal, "Change day",0)
Map.addLayer(filtered.select('changeMag'), eviPal, "Change magnitude",0)
Map.addLayer(filtered.select('prevClass'), LCpal, "Previous class",0)

Map.setCenter(-52.9496, -6.1690, 11)

代码2

/** 
 * Example GEE Script for Exploring Global Land Cover mapping and Estimation (GLANCE) 
 * Catalog -- Example 2: Year of change and EVI2 change  
 * 
 * Preliminary citation: 
 * 
 * Friedl, M.A., Woodcock, C.E., Olofsson, P., Zhu, Z., Loveland, T., 
 * Stanimirova, R., Arévalo, P., Bullock, E., Hu, K.-T., Zhang, Y., Turlej, K., 
 * Tarrio, K., McAvoy, K., Gorelick, N., Wang, J.A., Barber, C.P., Souza, C., 2022. 
 * Medium Spatial Resolution Mapping of Global Land Cover and Land Cover Change 
 * Across Multiple Decades From Landsat. Frontiers in Remote Sensing 3. 
 * https://doi.org/10.3389/frsen.2022.894571
 * 
 * User guide: https://lpdaac.usgs.gov/documents/1567/GLanCE_User_Guide_v1.pdf 
 * 
 * Authors: 
 *         Yingtong Zhang | zhangyt@bu.edu
 *         Paulo Arévalo  | parevalo@bu.edu
 */

var GLANCE = ee.ImageCollection("projects/GLANCE/DATASETS/V001")
var palettes = require('users/gena/packages:palettes')


// -------------- SET GLOBAL VIZ PROPERTIES
Map.setOptions('HYBRID')

// EVI Palette
var eviChangePal = {palette: palettes.matplotlib.viridis[7], min:-1000, max: 1000}
var eviPal = {palette: palettes.matplotlib.viridis[7], min:2000, max: 3000}

// Change Palette
var changePalette = ['#ffffcc','#ffeda0','#fed976','#feb24c','#fd8d3c','#fc4e2a',
  '#e31a1c','#bd0026','#800026']
var changePal = {palette: changePalette, min:2005, max: 2020}


// -------------- FILTER AND SELECT DATASETS
var filteredCol = GLANCE.filterDate('2005-01-01', '2020-01-01')
var changeDate = filteredCol.select('changeDate')
var EVI2change = filteredCol.select('changeMag')
var EVI2median = filteredCol.select('EVI2median')

// --------------  CREATE ANNUAL MOSAICS

// Extract list of available years from image id. 
// Keep in mind change layers are only available from 2002
var imageIds = changeDate.aggregate_array('id')

var years = ee.List(imageIds.map(function(value){
  return ee.String(value).split("-").get(0)
})).distinct()

// Create constant image with years, useful for indexing
var dateDictImg = ee.Dictionary.fromLists(
  years, years.map(function(x){return ee.Number.parse(x)})).toImage()

// Function to retrieve annual mosaics per dataset
var getYearlyStack = function(imgCol, yearsStr){
  return ee.ImageCollection.fromImages(
    yearsStr.map(function(y) {
      // Get the list of image IDs for the current year
      return imgCol.filter(ee.Filter.stringContains('system:index', y)).mosaic()
    })
  ).toBands()
}

// Generate annual mosaics of change date, and retrieve year of first change
var changeYear = dateDictImg
  .updateMask(getYearlyStack(changeDate, years))
  .reduce(ee.Reducer.firstNonNull())

// Generate annual mosaics of EVI2 change, and retrieve value for year of first change
var EVI2firstChange = getYearlyStack(EVI2change, years)
  .updateMask(changeYear)
  .reduce(ee.Reducer.firstNonNull())

// --------------  VISUALIZE -------------- 

// Year of first change and magnitude of EVI2 change for that year
Map.addLayer(changeYear, changePal, "Change year")
Map.addLayer(EVI2firstChange, eviChangePal, "First EVI2 change", 0)


// Average EVI2 median 3 years before and after the first change
var EVI2medianStack = getYearlyStack(EVI2median, years)
var yearWindow = 3
var beforeChange = dateDictImg
  .lt(changeYear)
  .and(dateDictImg.gte(changeYear.subtract(yearWindow)))
var afterChange = dateDictImg
  .gt(changeYear)
  .and(dateDictImg.lte(changeYear.add(yearWindow)))

Map.addLayer(EVI2medianStack.updateMask(beforeChange).reduce(ee.Reducer.mean()), 
  eviPal, "EVI2 before change", 0)
Map.addLayer(EVI2medianStack.updateMask(afterChange).reduce(ee.Reducer.mean()),
  eviPal, "EVI2 after change", 0)


// Function to automate the creation of a legend
function createLegend(viz){
  var lon = ee.Image.pixelLonLat().select('longitude')
  var gradient = lon.multiply((viz.max-viz.min)/100.0).add(viz.min)
  var legendImage = gradient.visualize(viz)
  var params = {bbox:'0,0,100,10', dimensions:'200x10'}
  var thumbnail = ui.Thumbnail({
    image: legendImage,
    params: params,
  })
  
  var panel = ui.Panel([
    ui.Label(viz['min']), thumbnail,  ui.Label(viz['max']),
  ], ui.Panel.Layout.Flow('horizontal'))
  
  return panel
}

// Print legends to the console
print("Change Year", createLegend(changePal))
print("EVI2 Change Magnitude x10,000", createLegend(eviChangePal))
print("EVI2 median", createLegend(eviPal))

Map.setCenter(-61.9446, -21.6216, 11)

代码链接

https://code.earthengine.google.com/?scriptPath=users/sat-io/awesome-gee-catalog-examples:global-landuse-landcover/GLANCE-VISUALIZATION

https://code.earthengine.google.com/?scriptPath=users/sat-io/awesome-gee-catalog-examples:global-landuse-landcover/GLANCE-INDICES

APP链接

https://glance.earthengine.app/view/datasetviewer 

结果

引用

Friedl, M.A., Woodcock, C.E., Olofsson, P., Zhu, Z., Loveland, T., Stanimirova, R., Arévalo, P., Bullock, E., Hu, K.-T., Zhang, Y., Turlej, K.,
Tarrio, K., McAvoy, K., Gorelick, N., Wang, J.A., Barber, C.P., Souza, C., 2022. Medium Spatial Resolution Mapping of Global Land Cover and Land
Cover Change Across Multiple Decades From Landsat. Frontiers in Remote Sensing 3. https://doi.org/10.3389/frsen.2022.894571

Arévalo, P., R. Stanimirova, E. Bullock, Y. Zhang, K. Tarrio, K. Turlej, K. Hu, K. McAvoy, V. Pasquarella, C. Woodcock, P. Olofsson, Z. Zhu, N.
Gorelick, T. Loveland, C. Barber, M. Friedl. Global Land Cover Mapping and Estimation Yearly 30 m V001. 2022, distributed by NASA EOSDIS Land
Processes Distributed Active Archive Center, https://doi.org/10.5067/MEaSUREs/GLanCE/GLanCE30.001. Accessed YYYY-MM-DD.

许可

本作品采用知识共享 署名 4.0 国际许可协议进行许可。 您可以自由复制并以任何媒介或格式重新发布这些材料,也可以出于任何目的(甚至是商业目的)改造和利用这些材料。 您必须适当注明出处,提供许可证链接,并说明是否进行了更改。 创建和编辑:Friedl 等人 2022 年 关键词:土地覆被,土地覆被变化,绿度,EVI2,CCDC,全球,Landsat,NASA MEaSUREs 在 GEE 中的最后更新时间:2024-09-25

网址推荐

知识星球

知识星球 | 深度连接铁杆粉丝,运营高品质社群,知识变现的工具 (zsxq.com)

机器学习

https://www.cbedai.net/xg 

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

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

相关文章

【拯救头痛大作战!有效应对焦虑引发的“脑内风暴”】

在这个快节奏、高压力的时代,焦虑似乎成了许多人难以摆脱的“隐形伴侣”。它不仅悄无声息地侵蚀着我们的心理健康,还可能引发一系列生理反应,其中最常见也最让人苦恼的便是——焦虑导致的头疼。今天,就让我们一起探索如何有效应对…

Linux介绍及常用命令

Linux 系统简介 1969 年,AT&T 公司的⻉尔实验室P MIT 合作开发的 Unix,在于创建⼀个⽤于⼤型、并⾏、多⽤户的操作系统Unix 的推⼴:从学校⾛进企业Unix 的版本要两个: AT&T System V ——就是俗称的 系统 5Berkley Soft…

【数据结构】-数组

数组 特点: 数组的地址连续,可以通过下标获取数据。 1. 数组扩容 步骤: $1. 创建一个比原来数组更长的新数组 $2. 让原来数组当中的数据依次复制到新数组当中 $3. 让arr指向新数组,原数组空间释放 2. 数组插入 2.1 最后位置…

kotlin 入门总结

目录 1、构造函数 2、数据类 data class, 3、object 单例类,相当于java线程安全的懒加载 4、companion object 伴生对象,类似于包装静态值的一个区域块 5、解构 6、空安全 7、条件语句 8、集合 9 属性和支持属性 属性 支持属性 10 …

HarmonyOS Next模拟器异常问题及解决方法

1、问题1:Failed to get the device apiVersion. 解决方法:关闭模拟器清除用户数据重启

【java】数组(超详细总结)

目录 一.一维数组的定义 1.创建数组 2.初始化数组 二.数组的使用 1.访问数组 2.遍历数组 3.修改数据内容 三.有关数组方法的使用 1.toString 2. copyOf 四.查找数组中的元素 1.顺序查找 2.二分查找binarySearch 五.数组排序 1.冒泡排序 2.排序方法sort 六.数组逆置…

redis的配置文件解析

我的后端学习大纲 我的Redis学习大纲 1.1.Redis的配置文件: 1.Redis的配置文件名称是:redis.conf 2.在vim这个配置文件的时候,默认是不显示行号的,可以编辑下面这个文件,末尾加上set nu,就会显示行号: 1.…

React源码03 - React 中的更新

03 - React 中的更新 React 中创建更新的方式: 初次渲染:ReactDOM.render、ReactDOM.hydrate 后续更新:setState、forceUpdate 1. ReactDOM.render() 先创建 ReactRoot 顶点对象然后创建 FiberRoot 和 RootFiber创建更新,使应用进…

Qt | http获取网页文件(小项目)

点击上方"蓝字"关注我们 ctrl+r 运行 URL可以自己替换一个试一试 【源码获取】 链接:https://pan.baidu.com/s/1QzHKZPXjkpx2p5TWUS_acA?pwd=5xsd 提取码:5xsd 01、QProgressDialog >>> QProgressDialog 是 Qt 框架中的一个类,主要用于显示一个进…

Java使用dom4j生成kml(xml)文件遇到No such namespace prefix: xxx is in scope on:问题解决

介绍addAttribute和addNamepsace: addAttribute 方法 addAttribute 方法用于给XML元素添加属性。属性(Attributes)是元素的修饰符,提供了关于元素的额外信息,并且位于元素的开始标签中。属性通常用于指定元素的行为或样式&#…

Golang | Leetcode Golang题解之第497题非重叠矩形中的随机点

题目: 题解: type Solution struct {rects [][]intsum []int }func Constructor(rects [][]int) Solution {sum : make([]int, len(rects)1)for i, r : range rects {a, b, x, y : r[0], r[1], r[2], r[3]sum[i1] sum[i] (x-a1)*(y-b1)}return Sol…

ReactOS系统中搜索给定长度的空间地址区间中的二叉树

搜索给定长度的空间地址区间 //搜索给定长度的空间地址区间 MmFindGap MmFindGapTopDown PVOID NTAPI MmFindGap(PMADDRESS_SPACE AddressSpace,ULONG_PTR Length,ULONG_PTR Granularity,BOOLEAN TopDown );PMADDRESS_SPACE AddressSpace,//该进程用户空间 ULONG_PTR Length,…

JavaScript入门中-流程控制语句

本文转载自:https://fangcaicoding.cn/article/52 大家好!我是方才,目前是8人后端研发团队的负责人,拥有6年后端经验&3年团队管理经验,截止目前面试过近200位候选人,主导过单表上10亿、累计上100亿数据…

echart改变最后一个节点的图标

需求 在折线图的最后一个节点增加一个gif动图表示增长 一、静态图的使用 采用symbol属性进行设置,结果就是只能展示静态图 无法插入gif series: [{data: [150, 230, 224, 218, 135, 147, {value:200,symbol:image://https://ylxstatic.storage.ylingxin.com/va…

PostgreSQL数据库查看shared buffer配置

哈喽,大家好,我是木头左! PostgreSQL是一个功能强大的开源关系型数据库管理系统,广泛应用于各种规模的应用程序。在PostgreSQL中,shared buffer是一个重要的性能调优参数,它直接影响到数据库查询的性能。本…

【信息论基础第六讲】离散无记忆信源等长编码包括典型序列和等长信源编码定理

一、信源编码的数学模型 我们知道信源的输出是消息序列,对于信源进行编码就是用码字集来表示消息集,也就是要进行从消息集到码字集的映射。 根据码字的特征我们又将其分为D元码,等长码,不等长码,唯一可译码。 我们通过…

使用Yolov10和Ollama增强OCR

1. 训练自定义 Yolov10 数据集 利用物体检测增强 OCR 的第一步是在数据集上训练自定义 YOLO 模型。YOLO(只看一遍)是一种功能强大的实时对象检测模型,它将图像划分为网格,使其能够在一次前向传递中识别多个对象。这种方法非常适合…

Redis遇到Hash冲突怎么办?

这是小伙伴之前遇到的一个面试题,感觉也是一个经典八股,和大伙分享下。 一 什么是 Hash 冲突 Hash 冲突,也称为 Hash 碰撞,是指不同的关键字通过 Hash 函数计算得到了相同的 Hash 地址。 Hash 冲突在 Hash 表中是不可避免的&am…

eNSP网络基本配置

1.配置设备名称 网络上一般不会配属一台设备,管理员需要对这些设备进行统一管理。在进行设备调试的时候,首要任务是配置设备名称,设备名称用来唯一标识一台设备。 例如通过以下操作将设备名称设置为testA ? //可以查看用户视图…

AnaTraf | 提升网络性能:深入解析网络关键指标监控、TCP重传与TCP握手时间

AnaTraf 网络性能监控系统NPM | 全流量回溯分析 | 网络故障排除工具 在当今的数字化时代,网络的稳定性和性能对企业的运营效率至关重要。无论是内部通信、应用程序的运行,还是对外提供服务,网络都发挥着关键作用。对于网络工程师或IT运维人员…