Python aie-ipyleaflet 包详解与实战案例

发布时间:2026/11/2 11:06:10
Python aie-ipyleaflet 包详解与实战案例

1. 引言

aie-ipyleaflet 是面向 AI Earth(阿里云达摩院推出的地球科学云计算平台)的交互式地图可视化 Python 包。它基于 ipyleaflet 构建,将 AI Earth 平台的海量遥感数据、地理计算能力与 Jupyter 生态的交互式地图组件深度结合,让开发者可以在 Notebook 中直接浏览、分析和展示遥感影像、矢量数据与地理计算结果。

本文将从功能特性、安装配置、核心语法与参数、9 个实际应用案例以及常见错误与注意事项五个方面,系统介绍 aie-ipyleaflet 的使用方法。

2. 功能概述

aie-ipyleaflet 的核心价值在于打通「数据获取—计算—可视化」链路,主要功能包括:

  • 遥感影像可视化:支持加载 AI Earth 平台上的 Sentinel、Landsat、MODIS 等卫星影像,并支持波段组合、拉伸方式、透明度等渲染参数控制。
  • 矢量数据展示:支持加载 GeoJSON、Shapefile 等矢量数据,可自定义样式、标注与弹窗信息。
  • 图层管理:支持多图层叠加、图层显隐控制、图层顺序调整与图例展示。
  • 交互式分析:支持点击查询像素值、绘制点线面要素、测量距离与面积等交互操作。
  • 时间序列浏览:支持影像时间滑块,可动态浏览多时相数据变化。
  • 与 AI Earth 平台深度集成:可直接调用平台的数据检索、处理与导出能力,实现云端计算与本地可视化的无缝衔接。

3. 安装与环境配置

3.1 环境要求

aie-ipyleaflet 依赖 Python 3.7 及以上版本,并需要 Jupyter Notebook、Jupyter Lab 或 VS Code 等支持 ipywidgets 的交互式环境。建议使用 conda 或 venv 创建独立环境,避免依赖冲突。

3.2 安装步骤

推荐使用 pip 安装:

pip install aie-ipyleaflet

如果网络环境受限,可使用国内镜像源加速:

pip install aie-ipyleaflet -i https://mirrors.aliyun.com/pypi/simple/

安装完成后,需要初始化 AI Earth 账号认证。在 Notebook 中执行以下代码完成登录授权:

import aie aie.Authenticate()

认证通过后,初始化项目并设置默认工作目录:

aie.Initialize() aie.set_work_dir("./data")

3.3 验证安装

执行以下代码验证安装是否成功:

import aie_ipy print(aie_ipy.__version__)

如果能够正常输出版本号,说明安装成功。若提示缺少 ipyleaflet 或 ipywidgets,可手动补充安装:

pip install ipyleaflet ipywidgets

4. 核心语法与参数详解

4.1 地图对象创建

创建地图是使用 aie-ipyleaflet 的第一步,核心参数包括中心点坐标、缩放级别和地图控件配置:

import aie_ipy 创建地图对象 m = aie_ipy.Map( center=[30.5, 104.0], # 中心点经纬度 [纬度, 经度] zoom=10, # 缩放级别,数值越大视野越近 height="600px", # 地图容器高度 basemap=aie_ipy.basemaps.Satellite # 底图类型 ) 显示地图 m

常用参数说明:

  • center:地图初始中心点,格式为 [纬度, 经度]。
  • zoom:初始缩放级别,范围一般为 1 到 18。
  • height:地图显示高度,支持像素或百分比。
  • basemap:底图类型,可选 Satellite、OpenStreetMap、Terrain 等。
  • draw_control:是否启用绘制工具,默认 True。
  • measure_control:是否启用测量工具,默认 True。
  • fullscreen_control:是否显示全屏按钮,默认 True。

4.2 加载遥感影像

加载 AI Earth 平台影像数据,需要先通过平台 API 检索数据,再添加到地图中:

import aie 检索指定区域和时间的 Sentinel-2 影像集合 dataset = aie.ImageCollection('SENTINEL_2').filterBounds(aie.Geometry.Point([104.0, 30.5])).filterDate('2023-05-01', '2023-05-31') 取第一景影像 image = dataset.first() 添加到地图 m.addLayer(image, {'bands': ['B4', 'B3', 'B2'], 'min': 0, 'max': 3000}, 'Sentinel-2 真彩色')

addLayer 方法的核心参数:

  • 影像对象:AI Earth 平台的 Image 或 ImageCollection 对象。
  • 可视化参数:字典格式,包含 bands(波段组合)、min/max(拉伸范围)、gamma(伽马校正)、palette(调色板)等。
  • 图层名称:显示在图层面板中的名称。

4.3 加载矢量数据

# 创建矢量要素 feature = aie.Feature( aie.Geometry.Point([104.0, 30.5]), {'name': '示例点', 'value': 100} ) 添加到地图 m.addLayer(feature, {'color': 'red', 'radius': 8}, '示例点图层')

矢量图层常用样式参数包括 color(边框颜色)、fillColor(填充颜色)、weight(线宽)、radius(点半径)、opacity(透明度)等。

4.4 图层管理与交互

# 移除指定图层 m.removeLayer('Sentinel-2 真彩色') 清空所有图层 m.clearLayers() 获取当前所有图层名称 layers = m.layers print(layers)

地图对象还支持点击事件回调,用于实现像素值查询等交互功能:

def on_click(info): print(f"点击位置: {info['coordinates']}") m.on_click(on_click)

5. 9 个实际应用案例

5.1 案例一:城市真彩色影像浏览

加载成都地区 Sentinel-2 影像,以真彩色模式展示城市面貌:

import aie import aie_ipy aie.Initialize() 创建地图 m = aie_ipy.Map(center=[30.57, 104.07], zoom=11, height="600px") 检索影像 dataset = aie.ImageCollection('SENTINEL_2').filterBounds(aie.Geometry.Point([104.07, 30.57])).filterDate('2023-06-01', '2023-06-30') image = dataset.first() 真彩色显示 m.addLayer(image, {'bands': ['B4', 'B3', 'B2'], 'min': 0, 'max': 3000}, '成都真彩色') m

5.2 案例二:植被指数(NDVI)计算与渲染

利用 Sentinel-2 近红外与红波段计算 NDVI,并用渐变色带渲染:

import aie 计算 NDVI ndvi = image.normalizedDifference(['B8', 'B4']).rename('NDVI') 添加到地图,使用绿色渐变调色板 m.addLayer(ndvi, {'bands': ['NDVI'], 'min': -0.2, 'max': 0.8, 'palette': ['red', 'yellow', 'green']}, 'NDVI 植被指数')

5.3 案例三:水体提取与展示

使用 NDWI 指数提取水体范围,并叠加矢量边界:

# 计算 NDWI ndwi = image.normalizedDifference(['B3', 'B8']).rename('NDWI') 阈值分割提取水体 water = ndwi.gt(0.1) 水体掩膜转矢量 water_vector = water.updateMask(water).reduceToVector() m.addLayer(water, {'bands': ['NDWI'], 'min': -0.5, 'max': 0.5, 'palette': ['brown', 'blue']}, '水体分布') m.addLayer(water_vector, {'color': 'blue', 'weight': 2}, '水体边界')

5.4 案例四:多时相影像变化对比

加载同一区域不同月份的影像,通过图层切换对比变化:

# 检索 3 月和 8 月影像 img_mar = aie.ImageCollection('SENTINEL_2').filterBounds(region).filterDate('2023-03-01', '2023-03-31').first() img_aug = aie.ImageCollection('SENTINEL_2').filterBounds(region).filterDate('2023-08-01', '2023-08-31').first() m.addLayer(img_mar, {'bands': ['B4', 'B3', 'B2'], 'min': 0, 'max': 3000}, '3月影像') m.addLayer(img_aug, {'bands': ['B4', 'B3', 'B2'], 'min': 0, 'max': 3000}, '8月影像')

5.5 案例五:土地利用分类结果展示

加载分类结果栅格,使用分类调色板展示不同地类:

# 假设 classification 为分类结果影像 m.addLayer(classification, { 'bands': ['classification'], 'palette': ['green', 'yellow', 'brown', 'blue', 'gray'], 'min': 0, 'max': 4 }, '土地利用分类')

5.6 案例六:点要素标注与弹窗

在地图上添加多个采样点,并配置点击弹窗显示属性信息:

# 创建多个采样点 points = aie.FeatureCollection([ aie.Feature(aie.Geometry.Point([104.0, 30.5]), {'name': '采样点A', 'value': 85}), aie.Feature(aie.Geometry.Point([104.1, 30.6]), {'name': '采样点B', 'value': 92}), aie.Feature(aie.Geometry.Point([104.2, 30.4]), {'name': '采样点C', 'value': 78}) ]) m.addLayer(points, {'color': 'orange', 'radius': 6}, '采样点')

5.7 案例七:绘制矢量要素并导出

使用绘制工具在地图上手动绘制多边形,并获取坐标信息:

# 启用绘制控件 m = aie_ipy.Map(center=[30.5, 104.0], zoom=10, draw_control=True) 定义绘制完成回调 def on_draw(target, layer, geometry): print("绘制完成,坐标:", geometry) m.on_draw(on_draw)

5.8 案例八:影像裁剪与局部放大展示

对影像按感兴趣区域裁剪后单独展示:

# 定义感兴趣区域 roi = aie.Geometry.Polygon([[103.9, 30.4], [104.2, 30.4], [104.2, 30.7], [103.9, 30.7]]) 裁剪影像 clipped = image.clip(roi) m.addLayer(clipped, {'bands': ['B4', 'B3', 'B2'], 'min': 0, 'max': 3000}, '裁剪影像')

5.9 案例九:多图层叠加综合分析

将影像、NDVI、矢量边界叠加展示,实现综合分析:

m.addLayer(image, {'bands': ['B4', 'B3', 'B2'], 'min': 0, 'max': 3000}, '底图影像') m.addLayer(ndvi, {'bands': ['NDVI'], 'min': -0.2, 'max': 0.8, 'palette': ['red', 'yellow', 'green']}, 'NDVI') m.addLayer(boundary, {'color': 'yellow', 'weight': 3}, '行政区边界')

6. 常见错误与使用注意事项

6.1 常见错误

  • 认证失败:未执行 aie.Authenticate() 或认证过期,导致数据检索报错。解决方法是重新执行认证流程。
  • 依赖缺失:缺少 ipyleaflet 或 ipywidgets,导致地图无法渲染。解决方法是补充安装依赖包。
  • 波段名称错误:不同数据源的波段命名不同,使用不存在的波段名会报错。解决方法是先查看影像波段信息。
  • 坐标系不一致:矢量数据与影像坐标系不一致时,叠加显示偏移。解决方法是统一坐标系后再叠加。
  • 内存溢出:加载过多高分辨率影像时,浏览器可能卡顿或崩溃。解决方法是控制图层数量或降低分辨率。

6.2 使用注意事项

  • 认证信息保护:认证令牌涉及账号安全,不要在公开代码中明文展示。
  • 数据版权:使用平台数据时,注意遵守数据使用协议,标注数据来源。
  • 渲染性能:大范围高分辨率影像建议先裁剪或降采样再加载,避免浏览器卡顿。
  • 图层命名唯一:添加图层时使用唯一名称,避免覆盖已有图层。
  • 交互环境要求:地图交互功能依赖 Jupyter 内核,在纯脚本环境中无法显示。
  • 版本兼容:注意 aie-ipyleaflet 与 ipyleaflet、ipywidgets 的版本兼容性,升级时先查看官方文档。

7. 总结

aie-ipyleaflet 为遥感与地理信息开发者提供了便捷的交互式可视化方案,将 AI Earth 平台的云端计算能力与 Jupyter 生态的交互体验相结合。通过掌握地图创建、图层加载、参数配置与交互回调等核心语法,开发者可以快速搭建从数据检索到可视化分析的工作流。在实际使用中,注意认证管理、数据规范与渲染性能,即可充分发挥该工具的生产力。

《AI提示工程必知必会》为读者提供了丰富的AI提示工程知识与实战技能,主要包括各类提示词的应用,如问答式、指令式、状态类、建议式、安全类和感谢类提示词,以及如何通过实战演练掌握提示词的使用技巧;使用提示词进行文本摘要、改写重述、语法纠错、机器翻译等语言处理任务,以及在数据挖掘、程序开发等领域的应用;AI在绘画创作上的应用,百度文心一言和阿里通义大模型这两大智能平台的特性与功能,以及市场调研中提示词的实战应用。通过阅读《AI提示工程必知必会》,读者可掌握如何有效利用AI提示工程提升工作效率,创新工作流程,并在职场中脱颖而出。