Python 版 Earth Engine 使用入门

本快速入门将以互动方式介绍如何使用 Earth Engine Python 接口可视化和分析地理空间数据。

准备工作

注册或创建 Google Cloud 项目;系统会提示您完成以下步骤。如果您已注册有 Earth Engine 访问权限的项目,请跳至下一部分。

  • 选择项目的用途:商业用途或非商业用途。
  • 如果用途是非商业用途,请选择项目类型。
  • 创建新的 Google Cloud 项目或选择现有项目。
  • 如果用途为商业用途,请验证您的项目或为其设置结算功能。
  • 确认您的项目信息。

    注意:如果您不打算保留在此过程中创建的资源,请创建新的项目,而不要选择现有的项目。完成本教程介绍的步骤后,您可以删除项目,并移除项目拥有的所有资源。

笔记本设置

借助 Jupyter 笔记本,您可以使用 Earth Engine 并以交互方式探索结果。最快的上手方式是使用 Google Colab 笔记本中的笔记本。您可以打开新的笔记本,然后将以下代码块复制到各个单元格中,也可以使用预先填充的 Earth Engine Python 快速入门笔记本
  1. 导入 Earth Engine 和 geemap 库。
    import ee
    import geemap.core as geemap

  1. 对 Earth Engine 服务进行身份验证和初始化。按照随即显示的提示完成身份验证。请务必将 PROJECT_ID 替换为您为此快速入门设置的项目的名称。
    ee.Authenticate()
    ee.Initialize(project='PROJECT_ID')

将光栅数据添加到地图

  1. 加载指定时间段内的气候数据并显示其元数据。
    jan_2023_climate = (
        ee.ImageCollection('ECMWF/ERA5_LAND/MONTHLY_AGGR')
        .filterDate('2023-01', '2023-02')
        .first()
    )
    jan_2023_climate

  1. 实例化地图对象,并将温度带添加为具有特定可视化属性的图层。显示地图。
    m = geemap.Map(center=[30, 0], zoom=2)
    
    vis_params = {
        'bands': ['temperature_2m'],
        'min': 229,
        'max': 304,
        'palette': 'inferno',
    }
    m.add_layer(jan_2023_climate, vis_params, 'Temperature (K)')
    m

向地图添加矢量数据

  1. 创建一个包含三个城市点的矢量数据对象。
    cities = ee.FeatureCollection([
        ee.Feature(ee.Geometry.Point(10.75, 59.91), {'city': 'Oslo'}),
        ee.Feature(ee.Geometry.Point(-118.24, 34.05), {'city': 'Los Angeles'}),
        ee.Feature(ee.Geometry.Point(103.83, 1.33), {'city': 'Singapore'}),
    ])
    cities
  1. 将城市位置添加到地图并重新显示。
    m.add_layer(cities, name='Cities')
    m

提取数据并绘制图表

  1. 导入 Altair 图表库。
    %pip install -q --upgrade altair
    import altair as alt

  1. 将这三个城市的气候数据提取为 pandas DataFrame。
    city_climates = jan_2023_climate.reduceRegions(cities, ee.Reducer.first())
    
    city_climates_dataframe = ee.data.computeFeatures(
        {'expression': city_climates, 'fileFormat': 'PANDAS_DATAFRAME'}
    )
    city_climates_dataframe
  1. 将各个城市的温度绘制为条形图。
    alt.Chart(city_climates_dataframe).mark_bar(size=100).encode(
        alt.X('city:N', sort='y', axis=alt.Axis(labelAngle=0), title='City'),
        alt.Y('temperature_2m:Q', title='Temperature (K)'),
        tooltip=[
            alt.Tooltip('city:N', title='City'),
            alt.Tooltip('temperature_2m:Q', title='Temperature (K)'),
        ],
    ).properties(title='January 2023 temperature for selected cities', width=500)

后续步骤