Google Earth Engine(GEE)——服务器端错误(指南)!

简介: Google Earth Engine(GEE)——服务器端错误(指南)!

服务器端错误

尽管客户端 JavaScript 具有逻辑一致性,但可能存在仅在服务器上运行时才会显现的错误。以下示例演示了尝试获取不存在的乐队时会发生什么:

错误— 此代码不起作用!

// Load a Sentinel-2 image.
var s2image = ee.Image('COPERNICUS/S2/20160625T100617_20160625T170310_T33UVR');
// Error: Image.select: Pattern 'nonBand' did not match any bands.
print(s2image.select(['nonBand']));

在此示例中,错误通知您没有名为  nonBand。可能显而易见的解决方案是指定一个确实存在的波段名称 。您可以通过打印图像并在控制台中检查它来发现波段名称,或者通过打印由 返回的波段名称列表 image.bandNames()。这里你可以去看一些这幅影像当中的波段到底是有哪些,然后再去进行选择打印输出。


不变性

您在 Earth Engine 中创建的服务器端对象是 不可变的。(任何 ee.Object是服务器端Object)。这意味着如果要对对象进行更改,则必须将更改后的状态保存到新变量中。例如,这不适用于在 Sentinel-2 图像上设置属性:

错误— 此代码不符合您的要求!

var s2image = ee.Image('COPERNICUS/S2/20160625T100617_20160625T170310_T33UVR');
s2image.set('myProperty', 'This image is not assigned to a variable');
// 这不会导致结果的错误,但是无法找到 'myProperty'.
print(s2image.get('myProperty')); // null

在此示例中,s2image.set()返回具有新属性的图像副本,但存储在s2image变量中的图像未更改。您需要将返回的图像保存s2image.set()在新变量中。例如:

解决方案——在变量中捕获结果!

//这里的意思就是要将返回值再重新返回给你定义的影像,这样才能添加上这个属性,然后再通过get进行获取
s2image = s2image.set('myProperty', 'OK');
print(s2image.get('myProperty')); // OK


映射函数

客户端和服务器功能不混合的另一个上下文是映射函数。具体来说,映射函数指定的操作在云中运行,因此客户端函数,例如print()getInfo()或 上的任何方法MapChartExport将无法在映射函数中工作。例如:

错误— 此代码不起作用!

var collection = ee.ImageCollection('MODIS/051/MOD44B');
// Error: 映射函数的参数不能用于客户端操作
var badMap3 = collection.map(function(image) {
  print(image);
  return image;
});

这个有点神秘的错误是地球引擎用来将此代码转换为一组可以在谷歌服务器上运行的指令的过程的结果。具体来说,这意味着 Earth Engine 找不到名为 的服务器端函数print(),因为根本没有。更一般地,客户端函数和控制结构不能用于对传递给映射函数的参数图像进行操作。为避免此错误,请避免在映射函数中使用客户端函数。一般建议在进行print时候建议放在外面,而且这个遍历函数无法执行的主要是print打印之后的信息并没有可以直接进行返回信号。

映射函数有额外的要求,必须满足所有这些要求才能避免错误。例如,映射函数必须返回一些东西。尽管代码编辑器检测到此问题并发出错误,但它特定于在服务器上运行的映射函数

错误— 此代码不起作用!

var collection = ee.ImageCollection('MODIS/051/MOD44B');
// Error: 必须建立一个返回值在进行遍历和函数操作的时候,否则就会报错
var badMap1 = collection.map(function(image) {
  // Do nothing.
});

可能显而易见的解决方案是返回一些东西。但它不能只返回任何类型的东西。具体来说,映射到ImageCollection上的 函数FeatureCollection必须返回一个Image或者 Feature。例如,您不能从映射到 的函数返回日期ImageCollection

错误— 此代码不起作用!

var collection = ee.ImageCollection('MODIS/051/MOD44B');
var badMap2 = collection.map(function(image) {
  return image.date();//返回一个时间是不允许的,因为影像和矢量集合里面包含的仅仅是矢量或者栅格影像所以只能按照这些进行计算。
});
// Error: Collection.map: 映射算法必须返回矢量特征或图像。
print(badMap2);

为避免这种情况,请返回具有新属性集的输入图像。然后,如果您需要集合中图像的日期列表,您可以使用aggregate_array()

解决方案——设置一个属性!

var collection = ee.ImageCollection('MODIS/051/MOD44B');
var okMap2 = collection.map(function(image) {
  return image.set('date', image.date());
});
print(okMap2);
// 获取时间的列表
var datesList = okMap2.aggregate_array('date');
print(datesList);


相关文章
|
7月前
|
数据可视化 定位技术 Sentinel
如何用Google Earth Engine快速、大量下载遥感影像数据?
【2月更文挑战第9天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,批量下载指定时间范围、空间范围的遥感影像数据(包括Landsat、Sentinel等)的方法~
2700 1
如何用Google Earth Engine快速、大量下载遥感影像数据?
|
7月前
|
机器学习/深度学习 算法 数据可视化
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
254 0
|
7月前
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
143 0
|
6月前
|
机器学习/深度学习 人工智能 数据处理
人工智能平台PAI产品使用合集之PAI-DSW实例服务器ping不通google.com,该如何排查
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
7月前
|
存储 编解码 数据可视化
Google Earth Engine获取随机抽样点并均匀分布在栅格的不同数值区中
【2月更文挑战第14天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,按照给定的地表分类数据,对每一种不同的地物类型,分别加以全球范围内随机抽样点自动批量选取的方法~
667 1
Google Earth Engine获取随机抽样点并均匀分布在栅格的不同数值区中
|
7月前
|
API Go 网络架构
GEE Colab——如何从本地/Google云盘/Google Cloud Storage (GCS)上传和下载
GEE Colab——如何从本地/Google云盘/Google Cloud Storage (GCS)上传和下载
373 4
|
7月前
|
机器学习/深度学习 存储 人工智能
GEE Colab——初学者福音快速入门 Google Colab(Colaboratory)
GEE Colab——初学者福音快速入门 Google Colab(Colaboratory)
255 3
|
7月前
|
数据处理
Google Earth Engine(GEE)——sentinel-1数据处理过程中出现错误Dictionary does not contain key: bucketMeans
Google Earth Engine(GEE)——sentinel-1数据处理过程中出现错误Dictionary does not contain key: bucketMeans
124 0
|
7月前
|
编解码 人工智能 算法
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
103 0
|
7月前
|
编解码 人工智能 数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
165 0