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);


相关文章
|
3月前
|
数据可视化 定位技术 Sentinel
如何用Google Earth Engine快速、大量下载遥感影像数据?
【2月更文挑战第9天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,批量下载指定时间范围、空间范围的遥感影像数据(包括Landsat、Sentinel等)的方法~
587 0
如何用Google Earth Engine快速、大量下载遥感影像数据?
|
3月前
|
编解码 人工智能 算法
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
27 0
|
3月前
|
机器学习/深度学习 算法 数据可视化
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
107 0
|
3月前
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
41 0
|
2月前
|
存储 编解码 数据可视化
Google Earth Engine获取随机抽样点并均匀分布在栅格的不同数值区中
【2月更文挑战第14天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,按照给定的地表分类数据,对每一种不同的地物类型,分别加以全球范围内随机抽样点自动批量选取的方法~
265 0
Google Earth Engine获取随机抽样点并均匀分布在栅格的不同数值区中
|
3月前
|
API Go 网络架构
GEE Colab——如何从本地/Google云盘/Google Cloud Storage (GCS)上传和下载
GEE Colab——如何从本地/Google云盘/Google Cloud Storage (GCS)上传和下载
96 4
|
3月前
|
机器学习/深度学习 存储 人工智能
GEE Colab——初学者福音快速入门 Google Colab(Colaboratory)
GEE Colab——初学者福音快速入门 Google Colab(Colaboratory)
74 3
|
3月前
|
数据处理
Google Earth Engine(GEE)——sentinel-1数据处理过程中出现错误Dictionary does not contain key: bucketMeans
Google Earth Engine(GEE)——sentinel-1数据处理过程中出现错误Dictionary does not contain key: bucketMeans
30 0
|
3月前
|
数据采集 编解码 人工智能
Google Earth Engine(GEE)——全球每日近地表空气温度(2003-2020年)
Google Earth Engine(GEE)——全球每日近地表空气温度(2003-2020年)
70 0
|
3月前
|
编解码 人工智能 数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
46 0