重磅发布:我把《生态地理遥感云计算》做成了一个 AI Skill,开源了!

从 504 千字的纸质书,到 Agent 可执行的技能包——一本遥感云计算技术书的现代化重生

在这里插入图片描述

一、缘起:一本书,一个痛点

作为一名在地理信息云计算领域深耕多年的研究者和技术博主,我经常收到读者的一个问题:

GEE 的文档太零散了,我想系统地学习,但不知道从哪里开始。"

这句话我一直记在心里。于是,我和马天跃博士、李晶教授、杨荻教授一起,花了很长时间编写了《生态地理遥感云计算》这本书。全书 8 章、504 千字,从 GEE 平台概述到 JavaScript/Python 双 API 实战,从基础语法到高级案例,从 UI 开发到常见问题排查,力求成为 GEE 学习者最全的入门指南。

但书出版后,我又思考了一个新问题:

在 AI Agent 时代,一本静态的书,如何变成随时可调用的"活知识"?

传统的书本知识是"被动"的——你需要主动翻阅、记忆、理解。而 AI Agent 需要的知识是"主动"的——当它遇到遥感数据处理任务时,应该能立刻调用相关的方法、参数和最佳实践。

这就是 book-to-skill 这个工具的由来。

二、什么是 book-to-skill?

book-to-skill 是一个开源工具,它能把任何书籍或文档转换成 AI Agent 可直接使用的 Skill

简单来说,它做的事情是:

  1. 提取:从 PDF/EPUB/DOCX 等文档中提取全文
  2. 分析:识别章节结构、核心框架、关键技术
  3. 结构化:将提取的内容转化为 Agent 可理解的技能文件
  4. 可执行:Agent 在遇到相关任务时,能精准调用对应的知识片段

这个过程不是简单地"总结"一本书,而是提取结构——保留作者的方法论、命名体系和操作指南,让 Agent 能够像一位受过训练的助手那样回答问题。

三、我的实践:把《生态地理遥感云计算》变成 Skill

我使用 book-to-skill 工具,将我编著的《生态地理遥感云计算》PDF 完整转换成了一个 GEE Skill,并开源在 GitHub 上。

转换过程

整个过程可以分为几个步骤:

第一步:PDF 提取

使用 book-to-skill 的 extract.py 脚本,从 412 页、43MB 的 PDF 中提取了约 40 万字符的全文,检测到 8 个章节,约 48K tokens 的文本量。

python scripts/extract.py "生态地理遥感云计算.pdf"

提取结果:

  • 源文件:43.08 MB
  • 页数:412 页
  • 字数:36,367 词
  • 估算 Token:~48K
  • 检测章节:8 章

第二步:内容分析

阅读提取的全文后,我识别出了这本书的核心结构:

维度 内容
核心框架 GEE 双 API 体系(JavaScript + Python)
工作流 数据加载 → 预处理 → 分析 → 可视化 → 导出
数据集 Landsat / MODIS / Sentinel 系列
技术模式 影像筛选、聚合、可视化、导出
常见问题 21 类典型错误及解决方案

第三步:生成 Skill 文件

按照 book-to-skill 的标准结构,生成了以下文件:

yanxingguang-gee/
+-- SKILL.md              # 主 Skill 文件(核心框架 + 索引)
+-- chapters/
|   +-- ch01-cloud-platforms.md    # 第1章:云平台概述
|   +-- ch02-gee-platform.md       # 第2章:GEE 平台简介
|   +-- ch03-js-syntax.md          # 第3章:GEE 基础语法
|   +-- ch04-tutorials.md          # 第4章:使用教程
|   +-- ch05-python-api.md         # 第5章:Python API
|   +-- ch06-ui-app.md            # 第6章:UI 和 APP
|   +-- ch07-troubleshooting.md   # 第7章:常见问题
|   +-- ch08-datasets.md          # 第8章:云平台数据集
+-- glossary.md              # 术语表
+-- patterns.md              # 技术模式
+-- cheatsheet.md            # API 速查表

第四步:撰写 README

为 Skill 编写了完整的 README.md,包含:

  • 适用场景说明
  • 章节索引表格
  • 核心框架详解
  • 卫星数据集速查表
  • JavaScript/Python 代码示例
  • 推荐阅读顺序

成果展示

完整的 Skill 仓库地址:xingguangYan/yanxingguang-gee-skill


四、实战案例:用这个 Skill 解决一个真实的遥感问题

光说不练假把式。下面我用这个 Skill 来解决一个实际的遥感分析问题——计算长江三角洲地区 2024 年春季的 NDVI 植被指数

问题背景

长江三角洲是中国最重要的经济区之一,也是生态研究的热点区域。假设我们需要:

  1. 加载 2024 年 3-5 月的 Sentinel-2 影像
  2. 筛选云量小于 20% 的影像
  3. 计算研究区域(长三角)的平均 NDVI
  4. 可视化结果

使用 Skill 的过程

当我告诉 AI Agent:"帮我计算长江三角洲 2024 年春季的 NDVI"时,Agent 会:

  1. 读取 SKILL.md:了解到这是 GEE 遥感数据处理任务
  2. 查阅主题索引:找到"指数计算"指向 ch04 和 ch05
  3. 查阅数据集:从 ch08 知道 Sentinel-2 的路径是 COPERNICUS/S2_SR_HARMONIZED
  4. 查阅技术模式:从 patterns.md 知道筛选、聚合的标准写法
  5. 查阅速查表:从 cheatsheet.md 知道 NDVI 计算公式

下面是 Agent 根据 Skill 知识生成的完整代码:

JavaScript 方案

// ============================================
// 长江三角洲 2024 春季 NDVI 分析
// ============================================

// 1. 定义研究区域(长三角 bounding box)
var region = ee.Geometry.Rectangle([115.5, 29.5, 122.5, 33.5]);

// 2. 加载 Sentinel-2 影像集合
var s2 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
  // 时间筛选:2024年春季(3-5月)
  .filterDate('2024-03-01', '2024-05-31')
  // 空间筛选:限定在长三角区域
  .filterBounds(region)
  // 云量筛选:小于20%
  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20));

// 3. 计算 NDVI
// NDVI = (NIR - Red) / (NIR + Red)
// Sentinel-2: NIR=B8, Red=B4
var ndviCollection = s2.map(function(image) {
  var ndvi = image.normalizedDifference(['B8', 'B4']).rename('NDVI');
  return image.addBands(ndvi);
});

// 4. 聚合:取中位数
var ndviMedian = ndviCollection.median();

// 5. 可视化参数
var ndviVis = {
  min: -1,
  max: 1,
  palette: [
    'FFFFFF', 'CE7E45', 'DF923D', 'F1B555',
    'FCD163', '99B718', '74A501', '66A000',
    '529400', '3E8601', '207401', '056201',
    '004C00', '023B01', '012E01', '011D01',
    '011301'
  ]
};

// 6. 添加到地图
Map.setCenter(120.5, 31.5, 8);
Map.addLayer(ndviMedian.select('NDVI'), ndviVis, 'NDVI 2024 Spring');

// 7. 统计长三角区域的 NDVI 描述性统计
var stats = ndviMedian.select('NDVI').reduceRegion({
  reducer: ee.Reducer.mean()
    .combine({
      reducer2: ee.Reducer.median(),
      sharedInputs: true
    })
    .combine({
      reducer2: ee.Reducer.stdDev(),
      sharedInputs: true
    }),
  geometry: region,
  scale: 10,
  maxPixels: 1e10
});

print('NDVI Statistics:', stats);

// 8. 导出结果
Export.image.toDrive({
  image: ndviMedian.select('NDVI'),
  description: 'Yangtze_Delta_NDVI_2024Spring',
  region: region,
  scale: 10,
  maxPixels: 1e13
});

Python 方案(使用 geemap)

# ============================================
# 长江三角洲 2024 春季 NDVI 分析
# Python 方案(geemap)
# ============================================

import ee
import geemap

# 1. 初始化 Earth Engine
ee.Initialize()

# 2. 定义研究区域
region = ee.Geometry.Rectangle([115.5, 29.5, 122.5, 33.5])

# 3. 加载 Sentinel-2 影像集合
s2 = (ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
    .filterDate('2024-03-01', '2024-05-31')
    .filterBounds(region)
    .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20)))

# 4. 计算 NDVI 并聚合
ndvi = s2.map(lambda img: img.normalizedDifference(['B8', 'B4']).rename('NDVI')).median()

# 5. 创建交互式地图
Map = geemap.Map(center=[31.5, 120.5], zoom=8)

# 6. 添加 NDVI 图层
ndvi_vis = {
    'min': -1,
    'max': 1,
    'palette': [
        'FFFFFF', 'CE7E45', 'FCD163', '99B718',
        '74A501', '529400', '3E8601', '011301'
    ]
}
Map.add_layer(ndvi.select('NDVI'), ndvi_vis, 'NDVI 2024 Spring')

# 7. 显示统计信息
stats = ndvi.select('NDVI').reduceRegion(
    reducer=ee.Reducer.mean(),
    geometry=region,
    scale=10,
    maxPixels=1e10
)
print('Mean NDVI:', stats.getInfo())

# 8. 显示地图
Map

代码解读

这段代码体现了 Skill 中提炼的几个关键技术模式:

  1. 数据加载模式(来自 ch08-datasets.md):

    • 使用 COPERNICUS/S2_SR_HARMONIZED 路径加载 Sentinel-2
    • Harmonized 版本消除了 2022 年 1 月后的光谱偏移
  2. 筛选模式(来自 patterns.md):

    • .filterDate() 时间范围筛选
    • .filterBounds() 空间范围筛选
    • .filter(ee.Filter.lt(CLOUDY_PIXEL_PERCENTAGE, 20)) 云量筛选
  3. 指数计算模式(来自 ch04-tutorials.md):

    • normalizedDifference([B8, B4]) 计算 NDVI
    • Sentinel-2 的 NIR 波段是 B8,Red 波段是 B4
  4. 聚合模式(来自 ch04-tutorials.md):

    • .median() 中位数聚合,减少异常值影响
  5. 可视化模式(来自 ch04-tutorials.md):

    • 使用 ndviVis 字典定义颜色映射
    • 从蓝色(水体/裸地)到深绿色的渐变色板
  6. 导出模式(来自 patterns.md):

    • 先聚合为中位数影像,再导出
    • 设置合适的 scale 和 maxPixels 参数

结果解读

运行上述代码后,你会得到:

  • 一张交互式地图:展示长三角地区 2024 年春季的 NDVI 空间分布
  • 统计信息:区域的平均 NDVI 值、中位数、标准差
  • 一张导出影像:保存在 Google Drive 中,可用于后续分析

NDVI 值范围从 -1 到 1:

  • > 0.6:茂密植被(森林、农田)
  • 0.2 - 0.6:中等植被(草地、灌木)
  • 0 - 0.2:稀疏植被(裸地、城市建成区)
  • < 0:水体、云层、冰雪

五、这个 Skill 的价值在哪里?

1. 对 AI Agent 而言

传统上,AI Agent 面对遥感问题时,可能会给出笼统的回答。有了这个 Skill 后:

  • 精准调用:Agent 能根据具体问题定位到对应的章节和函数
  • 代码生成:直接生成可运行的 JavaScript/Python 代码
  • 错误预防:引用 ch07 中的 21 类常见错误,提前规避
  • 数据选择:从 ch08 的数据集速查表中选择正确的数据集路径

2. 对人类学习者而言

  • 快速参考:不用翻 400 多页的书,直接看对应章节的摘要
  • 代码模板:patterns.md 和 cheatsheet.md 提供了即用型代码模板
  • 结构化学习:按推荐阅读顺序循序渐进

3. 对科研工作者而言

  • 工作流复用:提取的遥感云计算工作流(加载→预处理→分析→可视化→导出)可直接套用到各种研究中
  • 数据集速查:ch08 整理了 Landsat/MODIS/Sentinel 等主流数据集的 GEE 路径和分辨率
  • 问题排查:ch07 的 21 类常见问题覆盖了 90% 以上的 GEE 使用场景

六、book-to-skill 工具的其他应用场景

这次我把《生态地理遥感云计算》做成了 Skill,但这只是 book-to-skill 的一个应用场景。这个工具可以处理任何类型的文档:

技术文档

  • API 文档 → Agent 可执行的编程指导
  • 框架教程 → 结构化学习路径
  • 最佳实践指南 → 可复用的代码模式

学术论文

  • 方法论论文 → 可复现的实验步骤
  • 综述论文 → 结构化知识图谱
  • 实验报告 → 参数配置参考

业务手册

  • 操作手册 → 自动化工具指令
  • 培训材料 → 智能助教知识
  • 合规指南 → 自动检查规则

书籍

  • 编程书籍 → 代码生成 Skill
  • 方法论书籍 → 思维模型 Skill
  • 教材 → 交互式学习 Skill

七、如何获取和使用这个 Skill?

获取 Skill

# 方式一:直接克隆仓库
git clone https://github.com/xingguangYan/yanxingguang-gee-skill.git

# 方式二:使用 book-to-skill 安装
python scripts/install-skill-from-github.py --repo xingguangYan/yanxingguang-gee-skill --path .

在 GitHub Copilot CLI 中使用

将 Skill 放到 ~/.copilot/skills/ 目录下:

cp -r yanxingguang-gee ~/.copilot/skills/yanxingguang-gee

然后重启 Copilot CLI,你就可以用自然语言提问了:

“帮我用 GEE 计算某地区的 NDVI”
“Sentinel-2 云量怎么筛选?”
“Landsat 8 的真彩色波段是哪个?”

在 Claude Code 中使用

将 Skill 放到 ~/.claude/skills/ 目录下:

cp -r yanxingguang-gee ~/.claude/skills/yanxingguang-gee

在 Amp 中使用

将 Skill 放到 ~/.agents/skills/ 目录下:

cp -r yanxingguang-gee ~/.agents/skills/yanxingguang-gee

八、未来展望

持续更新

这本书还在持续迭代中。未来我会:

  1. 补充更多案例:森林监测、水体提取、城市热岛分析等
  2. 扩展数据集:添加高分、风云等国产卫星数据
  3. 增加深度:机器学习分类、深度学习解译等进阶内容

社区贡献

欢迎所有人贡献:

  • 发现错误或不准确的地方?提 Issue 或 PR
  • 有新的 GEE 案例想加入?提交新的 chapter 文件
  • 想翻译到其他语言?fork 后国际化

book-to-skill 生态

我希望更多技术书籍的作者能尝试用 book-to-skill 将自己的作品转化为 AI 时代的 Skill,让知识不再是静态的文字,而是可执行的智慧


九、致谢

感谢本书的共同作者:马天跃博士、李晶教授、杨荻教授。

感谢 book-to-skill 的开源贡献者 virgiliojr94

感谢所有 GEE 学习者和遥感科研工作者的支持与反馈。


十、结语

从一本 412 页、504 千字的纸质书,到一个可在 AI Agent 中随时调用的 Skill——这个转变不仅仅是形式的变化,更是知识传播方式的变革。

在 AI 时代,最好的知识不是被阅读的,而是被使用的。

如果你正在学习 GEE,或者需要使用遥感云计算技术进行研究,希望这个 Skill 能帮到你。也欢迎你体验 book-to-skill 工具,把你喜欢的技术书变成一个 Skill。


打赏

《生态地理遥感云计算》:北京航空航天大学出版社,2025
**

期待大家买书支持一下工作!现在已经上线了京东、淘宝和当当等多个网站,请大家自行购买。

**

🔗 相关链接


如果你觉得这篇文章有用,欢迎 Star 和 Fork,也欢迎分享给正在学习遥感云计算的朋友!

更多推荐