使用geemap进行全球土地覆盖数据可视化与分析
geemap 项目地址: https://gitcode.com/gh_mirrors/gee/geemap
前言
在环境监测、城市规划、农业评估等领域,土地覆盖数据发挥着重要作用。本文将介绍如何利用geemap这一强大的地理空间分析工具,对全球土地覆盖数据进行可视化和分析。
准备工作
环境配置
首先需要安装必要的Python库:
pip install geemap
然后导入所需模块并初始化:
import ee
import geemap
geemap.ee_initialize()
土地覆盖数据可视化
Dynamic World土地覆盖数据
Dynamic World是一个近实时土地覆盖分类系统,提供9种土地覆盖类型的高分辨率数据。我们可以使用geemap轻松获取并可视化这些数据:
Map = geemap.Map()
Map.add_basemap("HYBRID")
# 设置区域和时间范围
region = ee.Geometry.BBox(-89.7088, 42.9006, -89.0647, 43.2167)
start_date = "2021-01-01"
end_date = "2022-01-01"
# 获取土地覆盖数据
landcover = geemap.dynamic_world(region, start_date, end_date, return_type="class")
# 可视化参数
dwVisParams = {
"min": 0,
"max": 8,
"palette": [
"#419BDF", # 水体
"#397D49", # 树木
"#88B053", # 草地
"#7A87C6", # 湿地
"#E49635", # 建筑
"#DFC35A", # 裸地
"#C4281B", # 农田
"#A59B8F", # 冰雪
"#B39FE1", # 云层
],
}
Map.addLayer(landcover, dwVisParams, "Land Cover Class")
Map.add_legend(title="Dynamic World Land Cover", builtin_legend="Dynamic_World")
Map
不同土地覆盖产品对比
geemap支持多种全球土地覆盖产品的可视化与比较:
- ESA WorldCover - 欧洲航天局的全球土地覆盖产品
- ESRI Land Cover - ESRI提供的10米分辨率土地覆盖数据
- Dynamic World - Google开发的近实时土地覆盖数据
# 比较ESA和Dynamic World
Map = geemap.Map(center=[39.3322, -106.7349], zoom=10)
esa = ee.ImageCollection("ESA/WorldCover/v200").first()
esa_vis = {"bands": ["Map"]}
dw = geemap.dynamic_world(region, start_date, end_date, return_type="hillshade")
Map.split_map(
left_layer=geemap.ee_tile_layer(esa, esa_vis, "ESA LC"),
right_layer=geemap.ee_tile_layer(dw, {}, "Dynamic World LC")
)
Map.add_legend(title="ESA Land Cover", builtin_legend="ESA_WorldCover", position="bottomleft")
Map.add_legend(title="Dynamic World Land Cover", builtin_legend="Dynamic_World", position="bottomright")
时间序列分析
geemap可以方便地创建和分析土地覆盖时间序列数据:
# 设置时间范围
start_date = "2017-01-01"
end_date = "2023-01-01"
# 获取时间序列数据
images = geemap.dynamic_world_timeseries(
region, start_date, end_date, frequency="year", return_type="class"
)
# 可视化参数
vis_params = {
"min": 0,
"max": 8,
"palette": [
"#419BDF", "#397D49", "#88B053", "#7A87C6",
"#E49635", "#DFC35A", "#C4281B", "#A59B8F", "#B39FE1"
],
}
# 添加时间序列检查器
Map.ts_inspector(images, left_vis=vis_params, date_format="YYYY")
土地覆盖统计分析
全球土地覆盖面积统计
# 获取ESA土地覆盖数据
dataset = ee.ImageCollection("ESA/WorldCover/v200").first()
# 计算各类土地覆盖面积
df = geemap.image_area_by_group(
dataset, scale=1000, denominator=1e6, decimal_places=4
)
# 可视化统计结果
geemap.bar_chart(
df,
x="class",
y="area",
x_label="Land Cover Type",
y_label="Area (km2)",
)
国家尺度的土地覆盖分析
# 加载国家边界数据
countries = ee.FeatureCollection(geemap.examples.get_ee_path("countries"))
# 按国家统计土地覆盖
geemap.zonal_stats_by_group(
dataset,
countries,
"esa_2021_country.csv",
stat_type="SUM",
denominator=1e6,
scale=1000,
)
# 可视化各国森林面积
geemap.bar_chart(
"esa_2021_country.csv",
x="NAME",
y="Class_10",
max_rows=30,
x_label="Country",
y_label="Forest Area (km2)",
)
结语
通过geemap,我们可以方便地访问、可视化和分析多种全球土地覆盖数据集。无论是单一时相的分析,还是时间序列的变化监测,geemap都提供了简洁高效的接口。这些功能为环境监测、土地利用变化研究等提供了强有力的工具支持。
本文介绍的方法可以扩展到其他类型的遥感数据分析,读者可以根据自己的研究需求调整参数和分析方法。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考