news 2026/11/6 3:30:48

Python aiearth-core 包详解与实战案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python aiearth-core 包详解与实战案例

1. 引言

aiearth-core 是 AI Earth 平台推出的 Python 核心开发包,面向遥感影像处理、地理空间分析和 AI 模型应用场景,提供统一、简洁的编程接口。它把复杂的遥感数据获取、预处理、模型推理和结果可视化封装成易于调用的 API,帮助开发者快速构建遥感应用。

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

2. 功能概述

aiearth-core 的核心功能可以归纳为以下几类:

  • 数据获取:支持从 AI Earth 平台拉取多源遥感影像数据,包括光学影像、SAR 影像、气象数据等。
  • 影像预处理:提供辐射定标、大气校正、几何校正、云掩膜等常用预处理能力。
  • 地理空间分析:内置波段运算、指数计算(如 NDVI、NDWI)、影像裁剪、镶嵌、重投影等空间分析工具。
  • AI 模型推理:封装平台预训练模型,支持地物分类、目标检测、变化检测、语义分割等任务。
  • 结果可视化:提供便捷的影像展示与导出接口,支持生成 RGB 合成图、专题图等。

3. 安装与配置

3.1 环境要求

aiearth-core 基于 Python 3.7 及以上版本开发,建议使用 Python 3.8 或更高版本。依赖的核心库包括 numpy、opencv-python、shapely、pyproj 等,安装时会自动处理。

3.2 安装命令

推荐使用 pip 进行安装:

pip install aiearth-core

如果需要安装最新开发版本,可以从 GitHub 仓库安装:

pip install git+https://github.com/aiearth/aiearth-core.git

3.3 初始化配置

使用前需要配置 AI Earth 平台的访问凭证。推荐通过环境变量方式配置:

export AIEARTH_ACCESS_KEY_ID=your_access_key_id export AIEARTH_ACCESS_KEY_SECRET=your_access_key_secret

也可以在代码中显式初始化:

import aie aie.Initialize( access_key_id="your_access_key_id", access_key_secret="your_access_key_secret" )

4. 核心语法与参数

4.1 数据加载

通过aie.Image加载单景影像,通过aie.ImageCollection加载影像集合:

import aie 加载单景影像 image = aie.Image("S2A_20230101_123456") 加载影像集合 collection = aie.ImageCollection("S2_SR") .filterDate("2023-01-01", "2023-01-31") .filterBounds(aie.Geometry.Point([116.4, 39.9]))

4.2 波段选择与运算

使用select选择波段,使用expression进行波段运算:

# 选择波段 rgb = image.select(["B4", "B3", "B2"]) 计算 NDVI ndvi = image.expression( "(B8 - B4) / (B8 + B4)", {"B8": image.select("B8"), "B4": image.select("B4")} )

4.3 裁剪与镶嵌

# 按几何裁剪 geometry = aie.Geometry.Polygon([[[116.3, 39.8], [116.5, 39.8], [116.5, 40.0], [116.3, 40.0]]]) clipped = image.clip(geometry) 镶嵌多景影像 mosaic = collection.mosaic()

4.4 模型推理

调用平台预训练模型进行推理:

# 地物分类 result = aie.Model("land_cover_classification").predict(image) 目标检测 detections = aie.Model("object_detection").predict(image)

4.5 结果导出

# 导出到本地 task = aie.Export.image_to_drive( image=ndvi, description="ndvi_result", folder="aiearth_output", region=geometry, scale=10 ) task.start()

5. 9 个实际应用案例

5.1 案例一:NDVI 植被指数计算

计算 Sentinel-2 影像的 NDVI,用于植被覆盖监测:

import aie aie.Initialize() 加载影像 image = aie.Image("S2A_20230615_123456") 计算 NDVI ndvi = image.expression( "(B8 - B4) / (B8 + B4)", {"B8": image.select("B8"), "B4": image.select("B4")} ) 可视化参数 vis_params = {"min": -1, "max": 1, "palette": ["blue", "white", "green"]} 导出结果 task = aie.Export.image_to_asset( image=ndvi, description="ndvi_export", asset_id="user/ndvi_result", scale=10 ) task.start()

5.2 案例二:水体提取(NDWI)

利用 NDWI 指数提取水体范围:

import aie aie.Initialize() image = aie.Image("S2A_20230420_789012") 计算 NDWI ndwi = image.expression( "(B3 - B8) / (B3 + B8)", {"B3": image.select("B3"), "B8": image.select("B8")} ) 阈值分割提取水体 water = ndwi.gt(0.1) 统计水体面积 area = water.multiply(aie.Image.pixelArea()).reduceRegion( reducer=aie.Reducer.sum(), geometry=image.geometry(), scale=10 ) print("水体面积(平方米):", area.getInfo())

5.3 案例三:土地利用分类

使用平台预训练模型进行土地利用分类:

import aie aie.Initialize() image = aie.Image("S2A_20230510_345678") 调用地物分类模型 model = aie.Model("land_cover_classification") result = model.predict(image) 可视化分类结果 vis_params = { "min": 0, "max": 8, "palette": ["red", "green", "blue", "yellow", "cyan", "magenta", "orange", "purple"] } 导出分类结果 task = aie.Export.image_to_asset( image=result, description="land_cover_result", asset_id="user/land_cover", scale=10 ) task.start()

5.4 案例四:时序 NDVI 变化监测

基于多期影像分析植被长势变化:

import aie aie.Initialize() 加载 2023 年 4-9 月影像集合 collection = aie.ImageCollection("S2_SR") .filterDate("2023-04-01", "2023-09-30") .filterBounds(aie.Geometry.Point([116.4, 39.9])) 计算每月 NDVI 并合成 def compute_ndvi(image): ndvi = image.expression( "(B8 - B4) / (B8 + B4)", {"B8": image.select("B8"), "B4": image.select("B4")} ) return ndvi.rename("NDVI") ndvi_collection = collection.map(compute_ndvi) 按月合成最大值 monthly_max = ndvi_collection.reduce( reducer=aie.Reducer.max(), group_by="month" ) 计算生长季 NDVI 最大值 growing_season_max = monthly_max.max() print("生长季 NDVI 最大值:", growing_season_max.getInfo())

5.5 案例五:影像镶嵌与裁剪

将多景影像镶嵌后按行政区裁剪:

import aie aie.Initialize() 加载多景影像 collection = aie.ImageCollection("S2_SR") .filterDate("2023-06-01", "2023-06-30") .filterBounds(aie.Geometry.Polygon([[[116.0, 39.5], [117.0, 39.5], [117.0, 40.5], [116.0, 40.5]]])) 镶嵌 mosaic = collection.mosaic() 按行政区边界裁剪 admin_boundary = aie.FeatureCollection("user/admin_boundary") clipped = mosaic.clipToCollection(admin_boundary) 导出 task = aie.Export.image_to_asset( image=clipped, description="mosaic_clipped", asset_id="user/mosaic_result", scale=10 ) task.start()

5.6 案例六:夜间灯光数据分析

分析夜间灯光数据,辅助城市发展研究:

import aie aie.Initialize() 加载夜间灯光影像 nightlight = aie.Image("NPP_VIIRS_202301") 提取城市核心区(高亮区域) urban_core = nightlight.select("Nightlight").gt(30) 统计城市核心区面积 area = urban_core.multiply(aie.Image.pixelArea()).reduceRegion( reducer=aie.Reducer.sum(), geometry=nightlight.geometry(), scale=500 ) print("城市核心区面积(平方公里):", area.getInfo() / 1e6)

5.7 案例七:SAR 影像洪水监测

利用 Sentinel-1 SAR 影像识别洪水淹没范围:

import aie aie.Initialize() 加载洪水前后 SAR 影像 before = aie.Image("S1_20230701") after = aie.Image("S1_20230715") 计算后向散射差异 diff = after.select("VV").subtract(before.select("VV")) 阈值提取洪水区域(后向散射显著下降区域) flood = diff.lt(-3) 可视化 vis_params = {"min": 0, "max": 1, "palette": ["white", "blue"]} 导出洪水范围 task = aie.Export.image_to_asset( image=flood, description="flood_map", asset_id="user/flood_result", scale=10 ) task.start()

5.8 案例八:目标检测(船舶识别)

使用目标检测模型识别港口船舶:

import aie aie.Initialize() 加载高分辨率影像 image = aie.Image("GF2_20230801_123456") 调用船舶检测模型 model = aie.Model("ship_detection") detections = model.predict(image) 获取检测结果(返回 GeoJSON 格式) features = detections.getInfo() print("检测到船舶数量:", len(features["features"])) 遍历检测结果 for feature in features["features"]: coords = feature["geometry"]["coordinates"] confidence = feature["properties"]["confidence"] print(f"船舶位置: {coords}, 置信度: {confidence:.2f}")

5.9 案例九:变化检测(城市扩张)

对比两期影像识别城市扩张区域:

import aie aie.Initialize() 加载两期影像 image_2020 = aie.Image("S2A_20200601_111111") image_2023 = aie.Image("S2A_20230601_222222") 调用变化检测模型 model = aie.Model("change_detection") change_map = model.predict(image_2020, image_2023) 提取扩张区域(类别 1 表示新增建设用地) expansion = change_map.eq(1) 统计扩张面积 area = expansion.multiply(aie.Image.pixelArea()).reduceRegion( reducer=aie.Reducer.sum(), geometry=image_2023.geometry(), scale=10 ) print("城市扩张面积(平方米):", area.getInfo())

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

6.1 常见错误

错误类型错误信息示例解决方法
初始化失败AccessKey 无效或未配置检查环境变量或 Initialize 参数是否正确
影像 ID 错误Image not found确认影像 ID 是否存在,检查平台数据目录
波段名称错误Band B5 does not exist使用 select 前先通过 image.bandNames() 确认波段
几何边界越界Geometry exceeds valid range检查经纬度范围是否在有效区间内
内存溢出MemoryError缩小处理范围或降低分辨率,分批处理
导出任务失败Export task failed检查 asset_id 权限、存储空间和网络连接

6.2 使用注意事项

  • 凭证安全:AccessKey 属于敏感信息,不要硬编码在代码中,建议使用环境变量或密钥管理服务。
  • 数据范围:处理前先确认影像覆盖范围与目标区域一致,避免因边界不匹配导致结果异常。
  • 波段选择:不同传感器波段编号不同,使用前务必确认影像的波段名称,避免张冠李戴。
  • 分辨率匹配:多源数据叠加分析时,注意统一分辨率,必要时使用 resample 方法重采样。
  • 异步任务:导出等耗时操作采用异步机制,任务提交后需轮询状态或使用回调函数获取完成通知。
  • 配额限制:平台对并发任务和数据量有配额限制,大批量处理时注意控制任务数量,避免触发限流。
  • 版本兼容:升级 aiearth-core 前查看更新日志,部分 API 可能存在不兼容变更。

7. 总结

aiearth-core 为遥感开发者提供了从数据获取、预处理、分析到模型推理的一站式解决方案。通过本文介绍的 9 个案例,可以快速上手常见的遥感应用场景。在实际使用中,建议结合官方文档和平台数据目录,灵活组合各类 API,构建适合自身业务需求的遥感应用。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/6 3:24:16

UVa 780 Sentence Generator

摘要:本文讲解如何为 AND-OR\texttt{AND-OR}AND-OR 有向无环图实现增量句子生成器。核心思路是把 OR\texttt{OR}OR 节点的序列连接视为区间划分、把 AND\texttt{AND}AND 节点的笛卡尔积视为混合进制编码,通过预计算节点长度、OR\texttt{OR}OR 前缀和与 A…

作者头像 李华
网站建设 2026/11/6 3:18:14

FTM 精准时间测量技术

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/6 3:16:16

iloader iOS 侧载教程:免命令行,3 步在 iPhone 装好 SideStore

iloader iOS 侧载教程:免命令行,3 步在 iPhone 装好 SideStore 【免费下载链接】iloader User friendly sideloader 项目地址: https://gitcode.com/GitHub_Trending/iloa/iloader 免费 Apple ID 的证书配额用满、配对文件不知道丢进哪个目录、手…

作者头像 李华
网站建设 2026/11/6 3:06:22

ARM SCP电源管理深度解析:从SCMI协议到低功耗调试实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/6 3:05:58

48V转12V高效率电源方案:基于AH8820A3的POE供电DCDC设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华