阿尔卑斯山地区的数字高程模型数据,并使用自定义的颜色调色板可视化不同高程范围
代码解释
这段代码使用 Google Earth Engine (GEE) 和 geemap
库来加载和可视化一个数字高程模型(DEM),特别是针对阿尔卑斯山地区。以下是对代码的逐步详细解释:
1. 导入库
import ee
import geemap
-
ee
:Google Earth Engine 的 Python API,用于处理和分析地理空间数据。 -
geemap
:用于在 Jupyter Notebook 中可视化 GEE 数据的库。
2. 初始化 GEE
try:
ee.Initialize()
except Exception as e:
ee.Authenticate()
ee.Initialize()
- 尝试初始化 GEE。如果未认证,则调用
ee.Authenticate()
进行认证,然后再初始化。
3. 加载数字高程模型(DEM)
dem = ee.Image('WWF/HydroSHEDS/30CONDEM').select('b1')
-
dem
:从 GEE 数据集中加载 HydroSHEDS 的 30 米分辨率数字高程模型,并选择波段b1
,该波段包含高程数据。
4. 定义阿尔卑斯山区域
alps_region = ee.Geometry.Rectangle([5, 44, 16, 48])
-
alps_region
:定义一个矩形几何对象,表示阿尔卑斯山的地理区域。坐标为[西经, 南纬, 东经, 北纬]
。
5. 定义高程范围和颜色
elevation_ranges = [0, 1000, 2000, 3000, 4000, 8000] # Example elevation ranges in meters
colors = ['0000FF', '00FF00', 'FFFF00', 'FF0000', '800080', 'FFFFFF'] # Corresponding colors
-
elevation_ranges
:设置高程范围,单位为米。这里定义了从 0 米到 8000 米的几个区间。 -
colors
:为每个高程区间指定对应的颜色,用于可视化。颜色以十六进制表示。
6. 可视化参数
vis_params = {
'min': elevation_ranges[0],
'max': elevation_ranges[-1],
'palette': colors,
}
vis_params
:定义可视化参数,包括:
-
min
:最小高程值(0 米)。 -
max
:最大高程值(8000 米)。 -
palette
:用于高程区间的颜色调色板。
7. 创建地图
m = geemap.Map(center=[46, 10], zoom=6)
-
m
:创建一个地图对象,中心定位在阿尔卑斯山地区(纬度 46, 经度 10),并设置缩放级别为 6。
8. 添加高程图层
m.addLayer(dem.clip(alps_region), vis_params, 'Alps DEM')
- 将裁剪后的 DEM 图层添加到地图中,使用之前定义的可视化参数。
clip(alps_region)
方法确保只显示阿尔卑斯山区域的高程数据。
9. 添加图层控制
m.addLayerControl()
- 添加图层控制面板,允许用户在不同的图层之间进行切换和操作。
10. 显示地图
m
- 显示地图对象,包含已添加的高程图层。
总结
这段代码的主要目的是加载阿尔卑斯山地区的数字高程模型数据,并使用自定义的颜色调色板可视化不同高程范围。通过这种方式,用户可以直观地分析该地区的地形特征。
全部代码
import ee
import geemap
try:
ee.Initialize()
except Exception as e:
ee.Authenticate()
ee.Initialize()
dem = ee.Image('WWF/HydroSHEDS/30CONDEM').select('b1')
alps_region = ee.Geometry.Rectangle([5, 44, 16, 48])
elevation_ranges = [0, 1000, 2000, 3000, 4000, 8000]
colors = ['0000FF', '00FF00', 'FFFF00', 'FF0000', '800080', 'FFFFFF']
vis_params = {
'min': elevation_ranges[0],
'max': elevation_ranges[-1],
'palette': colors,
}
m = geemap.Map(center=[46, 10], zoom=6)
m.addLayer(dem.clip(alps_region), vis_params, 'Alps DEM')
m.addLayerControl()
m
结果