Dynamic World V1

GOOGLE/DYNAMICWORLD/V1
数据集可用性
2015-06-27T00:00:00Z–2025-02-16T12:43:48Z
数据集提供程序
Earth Engine 代码段
ee.ImageCollection("GOOGLE/DYNAMICWORLD/V1")

说明

Dynamic World 是一个分辨率为 10 米的近乎实时 (NRT) 土地利用/土地覆盖 (LULC) 数据集,包含九个类别的类别概率和标签信息。

Dynamic World 预测适用于 2015 年 6 月 27 日至今的 Sentinel-2 L1C 集合。Sentinel-2 的再访频率介于 2-5 天之间,具体取决于纬度。系统会为 CLOUDY_PIXEL_PERCENTAGE 小于等于 35% 的 Sentinel-2 L1C 图像生成 Dynamic World 预测结果。系统会使用 S2 云概率、云位移指数和方向距离转换组合来遮盖预测结果,以移除云和云阴影。

“动态世界”集合中的图片的名称与其派生自的各个 Sentinel-2 L1C 资产名称相匹配,例如:

ee.Image('COPERNICUS/S2/20160711T084022_20160711T084751_T35PKT')

具有名称为 ee.Image('GOOGLE/DYNAMICWORLD/V1/20160711T084022_20160711T084751_T35PKT') 的匹配动态世界图片。

除“标签”带之外,所有概率带的总和为 1。

如需详细了解“动态世界”数据集,并查看生成复合图、计算地区统计数据和处理时间序列的示例,请参阅 Dynamic World 简介教程系列。

鉴于动态世界类估算是使用小型移动窗口中的空间上下文从单张图片派生的,因此如果预测的土地覆盖类型在一定程度上由一段时间内的覆盖类型(例如农作物)定义,那么在没有明显区别特征的情况下,前 1 个“概率”可能会相对较低。干燥气候下的高反射率表面、沙子、阳光反射等也可能会出现这种现象。

如需仅选择可靠地属于“动态世界”类的像素,建议通过对前 1 个预测的估计“概率”进行阈值化来屏蔽“动态世界”输出。

频段

像素大小
10 米

乐队

名称 最小值 最大值 说明
water 0 1

估计的完全被水覆盖的概率

trees 0 1

树木完全遮盖的估算概率

grass 0 1

草完全覆盖的估算概率

flooded_vegetation 0 1

洪灾植被完全覆盖的估算概率

crops 0 1

农作物完全覆盖的估算概率

shrub_and_scrub 0 1

灌木和灌丛完全覆盖的估算概率

built 0 1

通过 build 实现完全覆盖的估算概率

bare 0 1

仅使用原始设备时完全覆盖的估算概率

snow_and_ice 0 1

雪和冰完全覆盖路面的估算概率

label 0 8

估算概率最高的频段的编号

标签类表

颜色 说明
0 #419bdf
1 #397d49
2 #88b053
3 #7a87c6 flooded_vegetation
4 #e49635 农作物
5 #dfc35a shrub_and_scrub
6 #c4281b 构建
7 #a59b8f bare
8 #b39fe1 snow_and_ice

图片属性

图片属性

名称 类型 说明
dynamicworld_algorithm_version STRING

用于唯一标识用于生成图片的动态世界模型和推理过程的版本字符串。

qa_algorithm_version STRING

用于唯一标识用于生成图片的云遮盖处理流程的版本字符串。

使用条款

使用条款

此数据集已获得 CC-BY 4.0 许可,且需要提供以下归属声明:“此数据集由 Google 与 National Geographic Society 和 World Resources Institute 合作为动态世界项目制作。”

包含经修改的 2015 年至今的哥白尼哨兵卫星数据。请参阅 Sentinel Data 法律通知

引用

引用:
  • Brown, C.F., Brumby, S.P., Guzder-Williams, B. et al. Dynamic World, Near-real-time global 10 m land use land cover mapping. Sci Data 9, 251 (2022). doi:10.1038/s41597-022-01307-4

DOI

使用 Earth Engine 进行探索

Code Editor (JavaScript)

// Construct a collection of corresponding Dynamic World and Sentinel-2 for
// inspection. Filter by region and date.
var START = ee.Date('2021-04-02');
var END = START.advance(1, 'day');

var colFilter = ee.Filter.and(
    ee.Filter.bounds(ee.Geometry.Point(20.6729, 52.4305)),
    ee.Filter.date(START, END));

var dwCol = ee.ImageCollection('GOOGLE/DYNAMICWORLD/V1').filter(colFilter);
var s2Col = ee.ImageCollection('COPERNICUS/S2_HARMONIZED');

// Link DW and S2 source images.
var linkedCol = dwCol.linkCollection(s2Col, s2Col.first().bandNames());

// Get example DW image with linked S2 image.
var linkedImg = ee.Image(linkedCol.first());

// Create a visualization that blends DW class label with probability.
// Define list pairs of DW LULC label and color.
var CLASS_NAMES = [
    'water', 'trees', 'grass', 'flooded_vegetation', 'crops',
    'shrub_and_scrub', 'built', 'bare', 'snow_and_ice'];

var VIS_PALETTE = [
    '419bdf', '397d49', '88b053', '7a87c6', 'e49635', 'dfc35a', 'c4281b',
    'a59b8f', 'b39fe1'];

// Create an RGB image of the label (most likely class) on [0, 1].
var dwRgb = linkedImg
    .select('label')
    .visualize({min: 0, max: 8, palette: VIS_PALETTE})
    .divide(255);

// Get the most likely class probability.
var top1Prob = linkedImg.select(CLASS_NAMES).reduce(ee.Reducer.max());

// Create a hillshade of the most likely class probability on [0, 1];
var top1ProbHillshade =
    ee.Terrain.hillshade(top1Prob.multiply(100))
    .divide(255);

// Combine the RGB image with the hillshade.
var dwRgbHillshade = dwRgb.multiply(top1ProbHillshade);

// Display the Dynamic World visualization with the source Sentinel-2 image.
Map.setCenter(20.6729, 52.4305, 12);
Map.addLayer(
    linkedImg, {min: 0, max: 3000, bands: ['B4', 'B3', 'B2']}, 'Sentinel-2 L1C');
Map.addLayer(
    dwRgbHillshade, {min: 0, max: 0.65}, 'Dynamic World V1 - label hillshade');

Python 设置

如需了解 Python API 以及如何使用 geemap 进行交互式开发,请参阅 Python 环境页面。

import ee
import geemap.core as geemap

Colab (Python)

# Construct a collection of corresponding Dynamic World and Sentinel-2 for
# inspection. Filter by region and date.
START = ee.Date('2021-04-02')
END = START.advance(1, 'day')

col_filter = ee.Filter.And(
    ee.Filter.bounds(ee.Geometry.Point(20.6729, 52.4305)),
    ee.Filter.date(START, END),
)

dw_col = ee.ImageCollection('GOOGLE/DYNAMICWORLD/V1').filter(col_filter)
s2_col = ee.ImageCollection('COPERNICUS/S2_HARMONIZED');

# Link DW and S2 source images.
linked_col = dw_col.linkCollection(s2_col, s2_col.first().bandNames());

# Get example DW image with linked S2 image.
linked_image = ee.Image(linked_col.first())

# Create a visualization that blends DW class label with probability.
# Define list pairs of DW LULC label and color.
CLASS_NAMES = [
    'water',
    'trees',
    'grass',
    'flooded_vegetation',
    'crops',
    'shrub_and_scrub',
    'built',
    'bare',
    'snow_and_ice',
]

VIS_PALETTE = [
    '419bdf',
    '397d49',
    '88b053',
    '7a87c6',
    'e49635',
    'dfc35a',
    'c4281b',
    'a59b8f',
    'b39fe1',
]

# Create an RGB image of the label (most likely class) on [0, 1].
dw_rgb = (
    linked_image.select('label')
    .visualize(min=0, max=8, palette=VIS_PALETTE)
    .divide(255)
)

# Get the most likely class probability.
top1_prob = linked_image.select(CLASS_NAMES).reduce(ee.Reducer.max())

# Create a hillshade of the most likely class probability on [0, 1]
top1_prob_hillshade = ee.Terrain.hillshade(top1_prob.multiply(100)).divide(255)

# Combine the RGB image with the hillshade.
dw_rgb_hillshade = dw_rgb.multiply(top1_prob_hillshade)

# Display the Dynamic World visualization with the source Sentinel-2 image.
m = geemap.Map()
m.set_center(20.6729, 52.4305, 12)
m.add_layer(
    linked_image,
    {'min': 0, 'max': 3000, 'bands': ['B4', 'B3', 'B2']},
    'Sentinel-2 L1C',
)
m.add_layer(
    dw_rgb_hillshade,
    {'min': 0, 'max': 0.65},
    'Dynamic World V1 - label hillshade',
)
m
在代码编辑器中打开