Google Earth Engine 把 Gemini 放进代码编辑器:用 Ask 生成、调试与优化地理空间脚本

2026-09-29 25 预计阅读时间: 1 分钟
来源: cloud.google.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:10 分钟

编写 Google Earth Engine(GEE)脚本时,真正拖慢工作的往往不是遥感原理,而是不断查找 API、核对数据集名称、定位服务端计算错误,以及处理超时或并发聚合限制。新功能 Ask 将 Gemini 直接放入 Earth Engine Code Editor,让开发者可以围绕当前脚本提问,并通过差异视图审查、合并 AI 给出的修改。

Ask 的价值不只是“在编辑器旁边加一个聊天框”。它能读取当前工作区上下文,包括活动脚本全文、导入的资产与几何对象,以及当前会话的聊天记录。这让提问可以更短,也使回答更贴近正在处理的区域、数据和代码。

Ask 能介入哪些开发环节

Ask 覆盖了地理空间脚本开发中四类高频任务。

从自然语言生成 Earth Engine 代码

忘记 filterBounds、云掩膜或图表 API 的具体写法时,可以直接描述目标。例如:

为 2025 年的 Boulder, Colorado 加载 Sentinel-2 影像,执行云掩膜,计算 NDVI,并把中值合成结果添加到地图。

生成结果会显示在聊天面板中。空编辑器可以直接插入;已有代码时,Code Editor 会展示并排 diff,让开发者决定接受哪些改动,而不是未经检查地覆盖脚本。

解释已有脚本

接手同事的脚本或修改社区示例时,可以询问:

解释当前脚本的数据流,并指出每一步是在客户端还是 Earth Engine 服务端执行。

相比只问“这段代码做什么”,加入客户端与服务端执行模型的要求更有价值,因为不少性能问题正是由两者混用引起的。

根据控制台错误排障

当 Console 抛出错误时,可以点击错误信息旁的 Troubleshoot。Ask 会自动带入错误消息并请求诊断,不必手动复制堆栈或重新描述现场。

对于 computation timed out、too many concurrent aggregations 一类错误,Ask 还能给出早期过滤、减少中间计算、避免客户端循环或改写聚合逻辑等建议。

搜索文档和数据集

Ask 可以按需使用官方文档搜索和 Earth Engine Data Catalog 搜索,以查找当前语法、函数或准确的数据集标识。也可以选择通过 Google Search 获取最新公开网页信息,但 Google Search grounding 与文档搜索、数据集搜索互斥,使用前应根据问题类型选择信息源。

一个可以直接改造的 Sentinel-2 NDVI 示例

下面是可粘贴到 Earth Engine Code Editor 中运行的 JavaScript 示例。它使用一个矩形近似表示 Boulder 周边研究区,读取 2025 年 Sentinel-2 地表反射率影像,通过 QA60 位标记执行基础云掩膜,然后计算 NDVI 中值合成。

实际项目中应替换 region,并根据质量要求考虑使用 SCL 或 Sentinel-2 Cloud Probability,而不是把这个简单 QA60 掩膜当作所有场景的最终方案。

// Boulder, Colorado 周边示例区域;生产环境请替换为自己的几何或资产。
var region = ee.Geometry.Rectangle([-105.35, 39.90, -104.95, 40.15]);

function maskSentinel2(image) {
  var qa = image.select('QA60');
  var cloudBitMask = 1 << 10;
  var cirrusBitMask = 1 << 11;

  var clear = qa.bitwiseAnd(cloudBitMask).eq(0)
    .and(qa.bitwiseAnd(cirrusBitMask).eq(0));

  return image
    .updateMask(clear)
    .divide(10000)
    .copyProperties(image, ['system:time_start']);
}

function addNdvi(image) {
  var ndvi = image.normalizedDifference(['B8', 'B4']).rename('NDVI');
  return image.addBands(ndvi);
}

var collection = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
  .filterBounds(region)
  .filterDate('2025-01-01', '2026-01-01')
  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 30))
  .map(maskSentinel2)
  .map(addNdvi);

var medianNdvi = collection.select('NDVI').median().clip(region);

Map.centerObject(region, 10);
Map.addLayer(
  medianNdvi,
  {min: -0.2, max: 0.8, palette: ['8c510a', 'f6e8c3', '01665e']},
  '2025 median NDVI'
);

print('Filtered image count', collection.size());

代码运行后,可以继续让 Ask 执行更具体的修改:

  • “把 QA60 掩膜改成基于 SCL 的掩膜,并解释保留了哪些类别。”
  • “为当前 NDVI 合成添加按月时间序列图,区域使用已导入的 geometry。”
  • “检查脚本中是否有会触发客户端取值或重复聚合的操作。”
  • “不要改变可视化参数,只优化集合过滤和波段选择。”

最后一条约束尤其有用。向 AI 明确哪些行为必须保持不变,可以减少一次修改涉及过多代码的风险。

如何判断优化建议是否真的有效

Earth Engine 采用延迟执行和服务端对象模型。表面上更短的代码不一定更省资源,因此不要只根据代码行数接受优化。可以重点检查以下变化:

  1. 过滤是否足够早:先调用 filterBounds、filterDate 和元数据过滤,再执行 map 中的像素级计算。
  2. 波段是否尽早收窄:只保留后续需要的波段,避免在长链路中携带无关数据。
  3. 是否引入客户端循环:对 ee.ImageCollection 使用 JavaScript for 循环并频繁调用 getInfo(),通常会破坏服务端计算方式。
  4. 聚合是否被重复触发:在映射函数内进行大量统计聚合,可能造成并发聚合错误。
  5. 输出尺度是否合理:区域统计、导出任务和重投影中的 scale、maxPixels、投影设置会直接影响成本和执行时间。

可以让 Ask 解释每项改动为什么减少计算量,但仍应通过 Console、任务执行结果和输出影像进行验证。AI 建议不能替代对空间分辨率、投影、掩膜策略和统计口径的专业判断。

接入方式与使用边界

Ask 已面向全球提供。启用过程只有两个主要步骤:

  1. 在 Google AI Studio 创建 Gemini API key。免费选项可以用于起步;如果使用付费层级的密钥,调用费用由密钥所属账户承担。
  2. 打开 Earth Engine Code Editor,在右侧进入 Ask 面板,点击左下角的钥匙图标并填入 API key。

启动时可选择适合任务的 Gemini 模型,包括 Gemini 3 Flash Preview、Gemini 3.1 Pro Preview 和 Gemini 3.5 Flash。模型名称和可用性可能随产品更新变化,应以编辑器中实际显示的选项为准。

上线到团队工作流前,建议建立一份简短检查表:

  • 不在提示词、脚本注释或聊天中放入凭据、访问令牌和不应外发的业务信息。
  • 留意活动脚本、导入资产、几何对象和会话历史会成为回答上下文。
  • 所有生成代码先看 diff,再合并;不要把“可插入”理解为“已验证”。
  • 对数据集 ID、波段名称、时间覆盖范围和云掩膜规则进行人工核对。
  • 对面积、产量、变化率等关键指标保留独立验证样本。
  • 为付费 API key 设置预算、配额和轮换策略,避免个人密钥成为团队基础设施。

Ask 最适合承担语法检索、代码初稿、错误解释和局部重构,而数据选择、尺度设计与结果解释仍需要地理空间专业判断。把它当成能读取工作区的结对编程助手,而不是自动批准结果的分析员,才能真正缩短从脚本到可靠洞察的距离。


相关推荐