Google Earth Engine 和 Dynamic World
Google 利用其地球引擎(Earth Engine)和人工智能(AI)平台技术,推出了 Dynamic World 数据库,能够提供接近实时的全球土地环境数据。Dynamic World 是基于 Google Earth Engine 和 AI Platform 制作而成的一个近乎实时的 10 米分辨率全球土地利用和土地覆盖数据集。该数据集使用 Sentinel-2 影像并通过深度学习方法生成。
- 访问链接:
https://www.dynamicworld.app/
- 论文访问链接:
https://www.nature.com/articles/s41597-022-01307-4
- 《Nature Scientific Data》上的文章:Dynamic World, Near real-time global 10m land use land cover mapping。
Dynamic World 数据集简介
- Dynamic World 是一个近乎实时的 (NRT) 10米分辨率土地利用/土地覆盖 (LULC) 数据集,包括九个类别的分类概率和标签信息。
- Dynamic World 的预测适用于
2015-06-27
至今的 Sentinel-2 L1C 集合。根据纬度不同,Sentinel-2 的重访频率为 2-5 天。Dynamic World 预测适用于CLOUDY_PIXEL_PERCENTAGE <= 35%
的 Sentinel-2 L1C 图像。使用 S2 Cloud Probability、Cloud Displacement Index 和 Directional Distance Transform 的组合方法,去除云和云影以生成预测结果。 - Dynamic World 集合中的图像名称与其派生自的 Sentinel-2 L1C 资产名称相匹配,例如:
ee.Image('COPERNICUS/S2/20160711T084022_20160711T084751_T35PKT')
- 对应的 Dynamic World 图像名称为:
ee.Image('GOOGLE/DYNAMICWORLD/V1/20160711T084022_20160711T084751_T35PKT')
Dynamic World 波段信息表
波段名称 | 最小值 | 最大值 | 描述 |
---|---|---|---|
water | 0 | 1 | 估算完全被水覆盖的概率 |
trees | 0 | 1 | 估算完全被树覆盖的概率 |
grass | 0 | 1 | 估算完全被草覆盖的概率 |
flooded_vegetation | 0 | 1 | 估算完全被淹没植被覆盖的概率 |
crops | 0 | 1 | 估算完全被农作物覆盖的概率 |
shrub_and_scrub | 0 | 1 | 估算完全被灌木和灌丛覆盖的概率 |
built | 0 | 1 | 估算完全被建筑覆盖的概率 |
bare | 0 | 1 | 估算完全裸露的土地覆盖的概率 |
snow_and_ice | 0 | 1 | 估算完全被雪和冰覆盖的概率 |
label | 0 | 8 | 具有最高估算概率的波段的索引 |
label 类别表
值 | 颜色 | 描述 |
---|---|---|
0 | #419bdf | 水体 |
1 | #397d49 | 树木 |
2 | #88b053 | 草地 |
3 | #7a87c6 | 被淹没的植被 |
4 | #e49635 | 农作物 |
5 | #dfc35a | 灌木和灌丛 |
6 | #c4281b | 建筑物 |
7 | #a59b8f | 裸露地面 |
8 | #b39fe1 | 雪和冰 |
Dynamic World 的主要创新
现实世界如同塑造它的人类和自然过程一样动态。Dynamic World 是一个近乎实时的 10 米分辨率全球土地利用和土地覆盖数据集,使用深度学习技术生成,免费开放使用。它是 Google 和世界资源研究所(World Resources Institute)合作的成果,旨在创建一个地球表面物理材料的动态数据集。Dynamic World 旨在作为一个数据产品,供用户添加自定义规则来分配最终的分类值,从而生成派生的土地覆盖地图。
- 近实时数据:每天生成超过 5000 张 Dynamic World 图像,而传统的土地覆盖数据构建方法可能需要数月或数年才能完成。借助一种基于 Sentinel-2 Top of Atmosphere 的新型深度学习方法,Dynamic World 提供每 2-5 天根据位置进行一次全球土地覆盖更新。
- 每个像素的 9 种土地覆盖类别概率:AI 驱动方法的一个主要优势是,模型会查看传入的 Sentinel-2 卫星图像,并对图像中的每个像素进行估计,例如树木覆盖程度、特定区域的建成情况或是否有积雪覆盖(如近期有暴风雪)。
- 十米分辨率:由于欧盟委员会的哥白尼计划使欧洲航天局的 Sentinel 数据免费和公开可用,Dynamic World 等产品能够提供 10 米分辨率的土地覆盖数据。这一点非常重要,因为更高分辨率的数据量化能够更准确地反映地球表面的真实情况。
GEE 应用案例
- 案例网址:
https://www.dynamicworld.app/explore
示例代码
// Construct a collection of corresponding Dynamic World and Sentinel-2 for
// inspection. Filter the DW and S2 collections 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').filter(colFilter);
// Join corresponding DW and S2 images (by system:index).
var DwS2Col = ee.Join.saveFirst('s2_img').apply(dwCol, s2Col,
ee.Filter.equals({leftField: 'system:index', rightField: 'system:index'}));
// Extract an example DW image and its source S2 image.
var dwImage = ee.Image(DwS2Col.first());
var s2Image = ee.Image(dwImage.get('s2_img'));
// 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 = dwImage
.select('label')
.visualize({min: 0, max: 8, palette: VIS_PALETTE})
.divide(255);
// Get the most likely class probability.
var top1Prob = dwImage.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(
s2Image, {min: 0, max: 3000, bands: ['B4', 'B3', 'B2']}, 'Sentinel-2 L1C');
Map.addLayer(
dwRgbHillshade, {min: 0, max: 0.65}, 'Dynamic World V1 - label hillshade');
显示效果
操作文档
- 官方链接:
https://developers.google.com/earth-engine/tutorials/community/introduction-to-dynamic-world-pt-1
欢迎来到Google Earth Engine教程,本教程将指导您如何使用动态世界(DW)数据集。该数据集包含基于Sentinel-2影像创建的近实时(NRT)土地利用/土地覆盖(LULC)预测,涵盖了下表中描述的九种土地利用/土地覆盖(LULC)类别。
本教程提供了如何使用Earth Engine加载和可视化这个丰富的10米分辨率每像素土地利用土地覆盖概率数据集的示例。教程还涵盖了计算统计数据和分析概率时间序列数据以进行变化检测的技术。
先决条件
本教程假设您对代码编辑器和Earth Engine API有一定的了解。在继续之前,请确保:
- 注册Earth Engine。一旦您的申请获得批准,您将收到一封电子邮件,其中包含更多信息。 熟悉Earth
- Engine代码编辑器,这是一个在Web浏览器中编写Earth Engine
- JavaScript代码的IDE。在这里了解更多关于代码编辑器的信息。 如果您不熟悉JavaScript,请查看JavaScript
- for Earth Engine教程。 如果您不熟悉Earth Engine API,请查看Earth Engine API简介教程。
- 一旦您熟悉了JavaScript、Earth Engine API和代码编辑器,就可以开始本教程了!
动态世界
动态世界(DW)数据集是一个持续更新的图像集合,它提供了全球一致的、10米分辨率的近实时(NRT)土地利用土地覆盖(LULC)预测,这些预测是基于Sentinel-2影像创建的。该数据集中的图像包含十个波段:九个波段为每个DW LULC类别的估计概率,以及一个类别“标签”波段,指示估计概率最大的类别。这些独特的属性使用户能够进行多时相分析以及创建适合其需求的自定义产品。
使用NRT图像集合
动态世界近实时(NRT)图像集合包括从2015年6月23日至今的Sentinel-2 L1C采集的LULC预测,其中CLOUDY_PIXEL_PERCENTAGE元数据小于35%。随着Google Earth Engine中新的Sentinel-2 L1C协调图像的可用,图像集合会持续以近实时更新预测。
动态世界NRT集合可在GOOGLE/DYNAMICWORLD/V1中找到。该集合中的图像名称与它们派生的各个Sentinel-2 L1C产品名称相匹配。
让我们看看如何查找和加载特定Sentinel-2图像的动态世界分类。
- 我们首先定义包含开始日期、结束日期和位置坐标的变量。在这里,我们定义了一个以美国马萨诸塞州的Quabbin水库为中心的点。
var startDate = '2021-10-15';
var endDate = '2021-10-25';
var geometry = ee.Geometry.Point([-72.28525, 42.36103]);
- 加载Sentinel-2图像
我们可以通过在Sentinel-2 L1C协调集合上应用日期范围和感兴趣位置的过滤器来找到Sentinel-2图像。由于动态世界分类仅适用于云量覆盖小于35%的场景,我们还应用了一个元数据过滤器。
var s2 = ee.ImageCollection('COPERNICUS/S2_HARMONIZED')
.filterDate(startDate, endDate)
.filterBounds(geometry)
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 35));
s2
变量中的结果是符合过滤器的所有图像集合。我们可以调用.first()来提取集合中的单个图像(符合我们条件的最早图像)。一旦我们有了图像,让我们将其添加到地图中以进行可视化。代码还将视口中心设置在点位置的坐标上。
var s2Image = ee.Image(s2.first());
var s2VisParams = {bands: ['B4', 'B3', 'B2'], min: 0, max: 3000};
Map.addLayer(s2Image, s2VisParams, 'Sentinel-2 Image');
Map.centerObject(geometry, 13);
找到匹配的动态世界图像
要在动态世界集合中找到匹配的分类图像,我们需要使用system:index属性提取产品ID。
var imageId = s2Image.get('system:index');
print(imageId);
您将在控制台中看到打印出的Sentinel-2产品ID。我们可以使用相同的ID来加载匹配的动态世界场景。下面的代码片段对动态世界集合应用了过滤器,并提取了匹配的场景。
var dw = ee.ImageCollection('GOOGLE/DYNAMICWORLD/V1')
.filter(ee.Filter.eq('system:index', imageId));
var dwImage = ee.Image(dw.first());
print(dwImage);
控制台将显示有关动态世界图像的信息。展开波段部分,您将注意到图像包含10个波段。
………
术语表
术语 | 解释 |
---|---|
Google Earth Engine | 一个用于存储和分析地理空间数据的云平台。 |
AI Platform | Google 提供的人工智能平台,用于构建和部署机器学习模型。 |
Sentinel-2 | 欧洲航天局的一组地球观测卫星,提供高分辨率的地球表面影像。 |
Resource Watch | 世界资源研究所提供的一个平台,用于监测和展示全球环境数据。 |
WRI | 世界资源研究所(World Resources Institute),一个全球环境研究机构。 |
如果这对您有所帮助,希望点赞支持一下作者! 😊
点击查看原文