跳转至

GEE 教程(三):GEE Python API 的配置与使用

1 虚拟环境配置

  首先,我们需要在 cmd 命令行中使用 conda 命令创建一个 python3.9 的虚拟环境,并在激活环境后安装 Earth Engine 的 API 库。

创建虚拟环境

1
conda create -n gee01 python=3.9

激活虚拟环境

1
conda activate gee01

安装 Earth Engine 的 API 库

1
conda install -c conda-forge earthengine-api

2 安装 JupyterLab Windows 桌面版

2.1 下载并安装

  官网下载地址:https://github.com/jupyterlab/jupyterlab-desktop

  1. 在启动之前,还需要先在虚拟环境中安装 JupyterLab 包,否则在安装桌面版后,将无法正常启动

安装 JupyterLab

1
conda install -c conda-forge jupyterlab
  1. 安装很简单,同意相关条款之后会直接默认安装在 C:\JupyterLab 目录

  2. 首次运行程序时,需要选定调用 Python 环境,这里我们选择之前创建并配置好的虚拟环境

image-20221218222426111

图 2-1 配置 JupyterLab 启动环境

  1. JupyterLab 界面介绍

image-20221207163615874

图 2-2 JupyterLab 界面介绍

2.2 配置 JupyterLab 工作目录

  由于 JupyterLab 默认的工作目录是 Windows 的当前用户根目录,我们可以将工作目录修改为一个固定的代码存放目录。

  参考资料:修改 Jupyter Lab、Jupyter Notebook 的工作目录 - CSDN

  1. 在除 C 盘外的其他盘根目录下,创建一个名为 myDemo 的文件,用于存放后续代码文件和数据操作文件

  2. 执行以下命令,在如图显示的文件夹下生成 jupyter_lab_config.py 文件

生成 jupyterlab 配置文件

1
jupyter-lab --generate-config

image-20221209103712588

图 2-3 生成 jupyterlab 配置文件

  1. 找到配置文件后,双击打开

image-20221209104258419

图 2-4 查找配置文件

  1. 按住 ctrl+f,搜索 ServerApp.root ,将其修改为:
1
c.ServerApp.root_dir = 'E:\myDemo'

image-20221209105246060

图 2-5 修改 JupyterLab 工作目录

2.3 创建文件夹

  重新启动 JupyterLab,此时左侧的工作目录已经修改了,在此目录下创建一个名为 geeDemo 的文件夹,用于存放代码文件和数据操作文件,完成后双击进入。

image-20221218223030300

图 2-6 创建文件夹

  在完成上述配置后,我们就可以开始真正的实验操作了。步骤虽然繁琐,但都是一劳永逸的,后续学习不需要再次配置上述内容。

3 GEE Python API 的简单操作

3.1 检查安装情况

  接下来,我们要创建一个名为 demo01.ipynb 的文件,用于检查 GEE 的配置情况。

  在这里,账户验证仅第一次使用 GEE Python API 时需要运行,之后进行其他文件运行时,不需要再次输入运行。

导入 GEE Python 包

1
import ee

GEE 账户验证

1
ee.Authenticate()

初始化地球引擎模块

1
ee.Initialize()

打印当前环境下的 GEE 版本号

1
print(ee.__version__)

image-20221219103838049

图 3-1 账户验证

3.2 安装第三方交互式地图库

  由于 Earth Engine UI 模块只能通过 JavaScript API 代码编辑器使用。在 Python API 中想要使用 UI 元素需要借助第三方库:如 Folium 和 ipyleaflet 提供交互式地图处理。

  所以我们需要在虚拟环境中另行安装这两个包。在 cmd 命令行中激活虚拟环境,并使用 conda 命令安装两个包。

激活虚拟环境

1
conda activate gee01

安装 Folium

1
conda install folium -c conda-forge

安装 ipyleaflet

1
conda install ipyleaflet -c conda-forge

3.3 使用 Folium 的交互式地图

  Folium 是一个基于 leaflet.js(用于移动友好型交互式地图的开源 JavaScript 库)的 python 库,我们可以使用它来制作交互式地图。Folium 支持 WMS、GeoJSON 层、矢量图层和切片层,这使得我们使用 Python 处理的数据可视化变得非常方便和直接。

  接下来,我们重新创建一个新的 *.ipynb 文件,使用 GEE 与 Folium 结合,实现土地覆盖 (LC) 数据的可视化。

导入 GEE Python 包并初始化

1
2
import ee
ee.Initialize()

导入 Folium 交互式地图包

1
import folium

增加了一种将地球引擎图像瓦片显示到 folium 地图的方法

1
2
3
4
5
6
7
8
9
def add_ee_layer(self, ee_image_object, vis_params, name):
    map_id_dict = ee.Image(ee_image_object).getMapId(vis_params)
    folium.raster_layers.TileLayer(
        tiles=map_id_dict['tile_fetcher'].url_format,
        attr='Map Data &copy; <a href="https://earthengine.google.com/">Google Earth Engine</a>',
        name=name,
        overlay=True,
        control=True
    ).add_to(self)

将 Earth Engine 绘图方法添加到 folium

1
folium.Map.add_ee_layer = add_ee_layer

导入 MODIS 土地覆盖集合

1
lc = ee.ImageCollection('MODIS/006/MCD12Q1')

为土地覆盖选择一个特定的波段和日期

1
2
3
4
5
6
7
8
# 设置日期
i_date = '2017-01-01'

# 设置波段
i_band = 'LC_Type1'

# 根据日期与波段过滤土地覆盖结果
lc_img = lc.select(i_band).filterDate(i_date).first()

设置土地覆盖的可视化参数

1
2
3
4
5
6
lc_vis_params = {
    'min': 1,'max': 17,
    'palette': ['05450a','086a10', '54a708', '78d203', '009900', 'c6b044',
                'dcd159', 'dade48', 'fbff13', 'b6ff05', '27ff87', 'c24f44',
                'a5a5a5', 'ff6d4c', '69fff8', 'f9ffa4', '1c0dff']
}

创建并显示地图组件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 创建地图定义地图中心位置和缩放级别
lat, lon = 30.55, 114.30
myMap = folium.Map(location=[lat, lon], zoom_start=7)

# 添加土地覆盖图层到地图组件
myMap.add_ee_layer(lc_img, lc_vis_params, 'Land Cover')

# 向地图添加图层控制面板
myMap.add_child(folium.LayerControl())

# 显示地图
display(myMap)

将地图以 HTML 的格式保存到本地

1
myMap.save('my_lc_interactive_map.html')

image-20221219145836805

图 3-2 jupyterlab 运行界面

image-20221219145721464

图 3-3 土地覆盖地图


最后更新: 2023-05-20
创建日期: 2023-04-25
作者: gis-xh