使用geemap进行Google Earth Engine Python API入门指南
概述
本文介绍如何使用geemap这个基于Python的地理空间分析工具包来操作Google Earth Engine数据。geemap构建在Earth Engine Python API之上,为Jupyter环境提供了交互式的地理空间大数据操作、分析和可视化能力。
准备工作
环境配置
要使用geemap和Earth Engine Python API,您需要:
- 注册一个Earth Engine账号
- 创建一个Google Cloud项目并启用Earth Engine API
- 建议具备基本的Python和Jupyter Notebook知识
- 熟悉Earth Engine JavaScript API会有帮助但不是必须的
安装geemap
在Google Colab中,geemap已经预安装。如需安装完整功能,可以运行:
# %pip install -U "geemap[workshop]"
对于本地开发,推荐使用conda环境:
conda create -n gee python=3.11
conda activate gee
conda install -c conda-forge mamba
mamba install -c conda-forge geemap pygis
基础操作
导入库并初始化
import ee
import geemap
# 认证并初始化Earth Engine
ee.Authenticate()
ee.Initialize()
创建交互式地图
geemap提供了简单的地图创建方法:
# 创建默认地图
m = geemap.Map()
m
# 自定义地图参数
m = geemap.Map(center=[40, -100], zoom=4, height=600)
m
添加底图
geemap内置了数百种底图:
# 指定底图创建地图
m = geemap.Map(basemap="Esri.WorldImagery")
m
# 添加多个底图
m.add_basemap("Esri.WorldTopoMap")
m.add_basemap("OpenTopoMap")
查看可用底图:
basemaps = list(geemap.basemaps.keys())
basemaps[:10] # 查看前10个底图
Earth Engine数据类型
Image(图像)
Image是Earth Engine中最基本的栅格数据类型:
# 加载SRTM高程数据
image = ee.Image("USGS/SRTMGL1_003")
image
可视化图像:
m = geemap.Map(center=[21.79, 70.87], zoom=3)
vis_params = {
"min": 0,
"max": 6000,
"palette": ["006633", "E5FFCC", "662A00", "D8D8D8", "F5F5F5"]
}
m.add_layer(image, vis_params, "SRTM")
m
ImageCollection(图像集合)
ImageCollection是一系列图像的集合:
# 加载Sentinel-2地表反射率数据
collection = ee.ImageCollection("COPERNICUS/S2_SR")
可视化图像集合(通常需要先计算中值或均值):
m = geemap.Map()
image = collection.median()
vis = {
"min": 0.0,
"max": 3000,
"bands": ["B4", "B3", "B2"]
}
m.set_center(83.277, 17.7009, 12)
m.add_layer(image, vis, "Sentinel-2")
m
过滤图像集合:
collection = (ee.ImageCollection("COPERNICUS/S2_SR")
.filterDate("2021-01-01", "2022-01-01")
.filter(ee.Filter.lt("CLOUDY_PIXEL_PERCENTAGE", 5))
)
FeatureCollection(要素集合)
FeatureCollection是矢量数据的集合:
# 加载美国道路数据
m = geemap.Map()
fc = ee.FeatureCollection("TIGER/2016/Roads")
m.set_center(-73.9596, 40.7688, 12)
m.add_layer(fc, {}, "Census roads")
m
过滤要素集合:
states = ee.FeatureCollection("TIGER/2018/States")
fc = states.filter(ee.Filter.eq("NAME", "Louisiana"))
m.add_layer(fc, {}, "Louisiana")
m.center_object(fc, 7)
m
进阶功能
属性查看
feat = fc.first()
feat.toDictionary() # 查看要素属性
总结
geemap为Earth Engine Python API提供了强大的交互式可视化界面,使得地理空间数据分析更加直观和高效。通过本文介绍的基础操作,您可以开始探索Earth Engine中丰富的地理空间数据集,进行各种空间分析和可视化。
geemap还支持更多高级功能,如时间序列分析、机器学习应用、交互式Web应用开发等,这些内容将在后续文章中详细介绍。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



