编写 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 采用延迟执行和服务端对象模型。表面上更短的代码不一定更省资源,因此不要只根据代码行数接受优化。可以重点检查以下变化:
- 过滤是否足够早:先调用
filterBounds、filterDate和元数据过滤,再执行map中的像素级计算。 - 波段是否尽早收窄:只保留后续需要的波段,避免在长链路中携带无关数据。
- 是否引入客户端循环:对
ee.ImageCollection使用 JavaScriptfor循环并频繁调用getInfo(),通常会破坏服务端计算方式。 - 聚合是否被重复触发:在映射函数内进行大量统计聚合,可能造成并发聚合错误。
- 输出尺度是否合理:区域统计、导出任务和重投影中的
scale、maxPixels、投影设置会直接影响成本和执行时间。
可以让 Ask 解释每项改动为什么减少计算量,但仍应通过 Console、任务执行结果和输出影像进行验证。AI 建议不能替代对空间分辨率、投影、掩膜策略和统计口径的专业判断。
接入方式与使用边界
Ask 已面向全球提供。启用过程只有两个主要步骤:
- 在 Google AI Studio 创建 Gemini API key。免费选项可以用于起步;如果使用付费层级的密钥,调用费用由密钥所属账户承担。
- 打开 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 最适合承担语法检索、代码初稿、错误解释和局部重构,而数据选择、尺度设计与结果解释仍需要地理空间专业判断。把它当成能读取工作区的结对编程助手,而不是自动批准结果的分析员,才能真正缩短从脚本到可靠洞察的距离。