RESOLVE Ecoregions 2017

RESOLVE/ECOREGIONS/2017
数据集可用时间
2017-04-05T00:00:00Z–2017-04-05T00:00:00Z
数据集生产者
Earth Engine 代码段
FeatureCollection
ee.FeatureCollection("RESOLVE/ECOREGIONS/2017")
FeatureView
ui.Map.FeatureViewLayer("RESOLVE/ECOREGIONS/2017_FeatureView")
标签
biodiversity conservation ecoregions ecosystems global table
栖息地
保护措施
resolve

说明

RESOLVE 生态区数据集于 2017 年更新,描绘了代表我们这个生机勃勃的星球的 846 个陆地生态区。 您可以在 https://ecoregions2017.appspot.com/ 或在 Earth Engine中查看风格化地图。

简单来说,生态区是指具有区域范围的生态系统。 具体而言,生态区代表着不同的生物多样性组合(所有类群,而不仅仅是植被),其边界包括维持生态过程所需的空间。生态区为保护规划提供了一个有用的基本地图,尤其因为它们利用的是自然边界而非政治边界,定义了生物群系内不同的生物地理组合和生态栖息地,并有助于呈现地球的生物多样性。

此数据集基于生物地理学(一门关于动植物分布的科学)的最新进展。原始生态区数据集自 2001 年推出以来得到了广泛应用,为生态学家对全球气候变化对自然的影响、世界甲虫的分布以及现代保护规划的最新分析提供了基础。

846 个陆地生态区分为 14 个生物群系和 8 个领域。其中 6 个生物群系是森林生物群系,其余 8 个是非森林生物群系。 对于森林生物群系,生态区(Dinerstein 等人, 2017 年)和保护区(UNEP-WCMC 2016 年)的地理边界与 2000 年至 2015 年的全球森林变化数据(Hansen 等人,2013 年)相交,以计算保护区内栖息地的百分比和保护区外剩余栖息地的百分比。 同样,非森林生态区和保护区(UNEP-WCMC 2016 年)的边界与 2000 年的人为生物群系数据(Anthromes v2)(Ellis 等人, 2010 年)相交,以确定保护区内外剩余的栖息地。每个生态区都有一个唯一的 ID、面积(平方度)和 NNH(Nature Needs Half,自然需要一半)类别 1-4。NNH 类别基于保护区内栖息地的百分比和保护区外剩余栖息地的百分比。

  1. 一半受到保护:超过 50% 的生态区总面积已受到保护。
  2. 自然可能达到一半:不到 50% 的生态区总面积受到保护,但如果向系统中添加新的保护区,剩余未受保护的自然栖息地的数量可能会使保护区面积超过 50%。
  3. 自然可能恢复:剩余的受保护和未受保护的自然栖息地的数量不到 50%,但超过 20%。此类别中的生态区需要恢复才能达到“一半受到保护”的状态。
  4. 自然处于危险之中:剩余的受保护和未受保护的自然栖息地的数量小于或等于 20%。短期内无法实现“一半受到保护”的目标,应将重点放在保护剩余的本地栖息地碎片上。

更新后的生态区 2017 是关于每个陆地生态区剩余栖息地的最新数据集(截至 2018 年 2 月)。发布该数据集是为了记录在实现 “自然需要一半”这一远大目标方面的进展,即保护地球上一半的土地,以拯救生机勃勃的陆地生物圈。

注意 - 许多生态区都是非常复杂的多边形,拥有超过一百万个顶点,例如岩石和冰。这些生态区在必要时会进行拆分,并保留 Eco_ID 等属性。如果您想查看所有 已拆分的生态区,请运行此脚本

表格结构

表格结构

名称 类型 说明
BIOME_NAME STRING

生物群系名称

BIOME_NUM 双精度

生物群系编号

COLOR STRING

颜色

COLOR_BIO STRING

生物群系颜色

COLOR_NNH STRING

NNH 颜色

ECO_ID 双精度

生态区唯一 ID

ECO_NAME STRING

生态区名称

LICENSE STRING

CC-BY 4.0

NNH 双精度

NNH 类别 (1-4),基于保护区内栖息地的百分比和保护区外剩余栖息地的百分比

NNH_NAME STRING

一半受到保护、自然可能达到一半、自然可能恢复或自然处于危险之中

OBJECTID 双精度

对象 ID

REALM STRING

大区名称

SHAPE_AREA 双精度

生态区多边形的面积(平方度)

SHAPE_LENG 双精度

生态区多边形的长度(度)

使用条款

使用条款

CC-BY-4.0

引用

通过 Earth Engine 探索

代码编辑器 (JavaScript)

var ecoRegions = ee.FeatureCollection('RESOLVE/ECOREGIONS/2017');

// patch updated colors
var colorUpdates = [
{ECO_ID: 204, COLOR: '#B3493B'},
{ECO_ID: 245, COLOR: '#267400'},
{ECO_ID: 259, COLOR: '#004600'},
{ECO_ID: 286, COLOR: '#82F178'},
{ECO_ID: 316, COLOR: '#E600AA'},
{ECO_ID: 453, COLOR: '#5AA500'},
{ECO_ID: 317, COLOR: '#FDA87F'},
{ECO_ID: 763, COLOR: '#A93800'},
];

// loop over all other features and create a new style property for styling
// later on
var ecoRegions = ecoRegions.map(function(f) {
  var color = f.get('COLOR');
  return f.set({style: {color: color, width: 0}});
});

// make styled features for the regions we need to update colors for,
// then strip them from the main asset and merge in the new feature
for (var i=0; i < colorUpdates.length; i++) {
  colorUpdates[i].layer = ecoRegions
      .filterMetadata('ECO_ID','equals',colorUpdates[i].ECO_ID)
      .map(function(f) {
        return f.set({style: {color: colorUpdates[i].COLOR, width: 0}});
      });

  ecoRegions = ecoRegions
      .filterMetadata('ECO_ID','not_equals',colorUpdates[i].ECO_ID)
      .merge(colorUpdates[i].layer);
}

// use style property to color shapes
var imageRGB = ecoRegions.style({styleProperty: 'style'});

Map.setCenter(16, 49, 4);
Map.addLayer(imageRGB, {}, 'RESOLVE/ECOREGIONS/2017');

Python 设置

如需了解 Python API 和如何使用 geemap 进行交互式开发,请访问 Python 环境页面。

import ee
import geemap.core as geemap

Colab (Python)

eco_regions = ee.FeatureCollection('RESOLVE/ECOREGIONS/2017')

# patch updated colors
color_updates = [
    {'ECO_ID': 204, 'COLOR': '#B3493B'},
    {'ECO_ID': 245, 'COLOR': '#267400'},
    {'ECO_ID': 259, 'COLOR': '#004600'},
    {'ECO_ID': 286, 'COLOR': '#82F178'},
    {'ECO_ID': 316, 'COLOR': '#E600AA'},
    {'ECO_ID': 453, 'COLOR': '#5AA500'},
    {'ECO_ID': 317, 'COLOR': '#FDA87F'},
    {'ECO_ID': 763, 'COLOR': '#A93800'},
]

# loop over all other features and create a new style property for styling
# later on
eco_regions = eco_regions.map(
    lambda f: f.set({'style': {'color': f.get('COLOR'), 'width': 0}})
)

# make styled features for the regions we need to update colors for,
# then strip them from the main asset and merge in the new feature
for i in range(len(color_updates)):
  color_updates[i]['layer'] = eco_regions.filterMetadata(
      'ECO_ID', 'equals', color_updates[i]['ECO_ID']
  ).map(
      lambda f: f.set(
          {'style': {'color': color_updates[i]['COLOR'], 'width': 0}}
      )
  )

  eco_regions = eco_regions.filterMetadata(
      'ECO_ID', 'not_equals', color_updates[i]['ECO_ID']
  ).merge(color_updates[i]['layer'])

# use style property to color shapes
image_rgb = eco_regions.style(styleProperty='style')

m = geemap.Map()
m.set_center(16, 49, 4)
m.add_layer(image_rgb, {}, 'RESOLVE/ECOREGIONS/2017')
m
在代码编辑器中打开

以 FeatureView 的形式可视化

FeatureViewFeatureCollection 的只读加速表示形式。如需了解详情,请参阅 FeatureView 文档。

代码编辑器 (JavaScript)

var fvLayer = ui.Map.FeatureViewLayer('RESOLVE/ECOREGIONS/2017_FeatureView');

var visParams = {
  opacity: 1,
  polygonFillColor: {
    property: 'NNH_NAME',
    categories: [
      ['Half Protected', 'blue'],
      ['Nature Could Reach Half Protected', 'green'],
      ['Nature Could Recover', 'yellow'],
      ['Nature Imperiled', 'orange']
    ],
    defaultValue: 'lightgrey'
  }
};

fvLayer.setVisParams(visParams);
fvLayer.setName('Ecoregions (Nature Needs Half category)');

Map.setCenter(16, 49, 4);
Map.add(fvLayer);

Python 设置

如需了解 Python API 和如何使用 geemap 进行交互式开发,请访问 Python 环境页面。

import ee
import geemap.core as geemap

Colab (Python)

eco_regions = ee.FeatureCollection('RESOLVE/ECOREGIONS/2017')

# patch updated colors
color_updates = [
    {'ECO_ID': 204, 'COLOR': '#B3493B'},
    {'ECO_ID': 245, 'COLOR': '#267400'},
    {'ECO_ID': 259, 'COLOR': '#004600'},
    {'ECO_ID': 286, 'COLOR': '#82F178'},
    {'ECO_ID': 316, 'COLOR': '#E600AA'},
    {'ECO_ID': 453, 'COLOR': '#5AA500'},
    {'ECO_ID': 317, 'COLOR': '#FDA87F'},
    {'ECO_ID': 763, 'COLOR': '#A93800'},
]

# loop over all other features and create a new style property for styling
# later on
eco_regions = eco_regions.map(
    lambda f: f.set({'style': {'color': f.get('COLOR'), 'width': 0}})
)

# make styled features for the regions we need to update colors for,
# then strip them from the main asset and merge in the new feature
for i in range(len(color_updates)):
  color_updates[i]['layer'] = eco_regions.filterMetadata(
      'ECO_ID', 'equals', color_updates[i]['ECO_ID']
  ).map(
      lambda f: f.set(
          {'style': {'color': color_updates[i]['COLOR'], 'width': 0}}
      )
  )

  eco_regions = eco_regions.filterMetadata(
      'ECO_ID', 'not_equals', color_updates[i]['ECO_ID']
  ).merge(color_updates[i]['layer'])

# use style property to color shapes
image_rgb = eco_regions.style(styleProperty='style')

m = geemap.Map()
m.set_center(16, 49, 4)
m.add_layer(image_rgb, {}, 'RESOLVE/ECOREGIONS/2017')
m
在代码编辑器中打开