GEE ——errors & debuggings (2023GEE峰会总结)

简介:

在gee中有三种错误,一种就是系统错误,也就是我们看到的会在JavaScript code editor中出现的错误,也就是在程序还没有启动之前就会提示的错误,而客户端错误则主要是会提示一些在代码过程中的错误,比如说没出现过的变量名称,另外就是服务器出席那的错误,也就是说,你的代码和你索要运行的结果之间的错误,比如说,原本这个影像中是没有这个波段的,但是你却使用了,或者说你输入的波段名称不对而导致的错误。所有的这里显示的错误就如下面这张图所显示的。前言 – 人工智能教程

bug解决方案:

这里针对debug的解决方法无非就是限制性输出,也就是减少控制台输出的量,另外我们会使用到下面的一些函数来实现这个功能。

函数:

ee.Filter(filter)

Constructs a new filter. This constructor accepts the following args:

  • Another filter.

  • A list of filters (which are implicitly ANDed together).

  • A ComputedObject returning a filter. Users shouldn't be making these; they're produced by the generator functions below.

Arguments:

filter (Filter|List<Object>|Object, optional):

Optional filter to add.

Returns: Filter

first()

Returns the first entry from a given collection.

Arguments:

this:collection (FeatureCollection):

The collection from which to select the first entry.

Returns: Element

limit(max, propertyascending)

Limit a collection to the specified number of elements, optionally sorting them by a specified property first.

Returns the limited collection.

Arguments:

this:collection (Collection):

The Collection instance.

max (Number):

The number to limit the collection to.

property (String, optional):

The property to sort by, if sorting.

ascending (Boolean, optional):

Whether to sort in ascending or descending order. The default is true (ascending).

Returns: Collection

aside(func, var_args)

Calls a function passing this object as the first argument, and returning itself. Convenient e.g. when debugging:调用一个函数,将此对象作为第一个参数,并返回自身。例如,在调试时非常方便:

var c = ee.ImageCollection('foo').aside(print)

.filterDate('2001-01-01', '2002-01-01').aside(print, 'In 2001')

.filterBounds(geom).aside(print, 'In region')

.aside(Map.addLayer, {min: 0, max: 142}, 'Filtered')

.select('a', 'b');

Returns the same object, for chaining.

Arguments:

this:computedobject (ComputedObject):

The ComputedObject instance.

func (Function):

The function to call.

var_args (VarArgs<Object>):

Any extra arguments to pass to the function.

Returns: ComputedObject

这里重点说一下aside函数,这个功能就是在你执行程序每一步的时候都可以一步步的让其输出到控制台中,最后到底检查时哪一行代码出现了问题:

var c = ee.ImageCollection('foo').aside(print).filterDate('2001-01-01', '2002-01-01').aside(print, 'In 2001').filterBounds(table).aside(print, 'In region').aside(print, 'xxxx').aside(Map.addLayer, {min: 0, max: 142}, 'Filtered').select('a', 'b');print(c)

 

我们看一下简单的错误:

Early Errors -Corrected

image.set(days,image.get('system:time_start')/(60*60*24*1000))

Result Capture

image =image.set(.)

Casting

ee.Number(image.get('system:time_start'))

or

image.getNumber('system:time_start')

Javascript Operators   image.getNumber(.).divide(60*60*24**1000)

 

MAP function 错误

这里的map不能使用print或者getinfo或者export等函数的操作。

Return a Value

function(x){y=x.add(1);}

User-defined methods must return a value

Return an Element

function(x){return x.date()}

Collection.map:A mapped algorithm must return a Feature or Image.

Using getlnfo or print

function(x){return x.set('y',x.date().getInfo())}

Line 1:A mapped function's arguments cannot be used in client-side operation

Javascript branching

if(i==0){return 1 }else {return 2 }

Mapped Aggregations function(x){return x.reduceRegion({...maxPixels:1e9})}

 

Scaling Issues

Error:Image.reduceRegions:Computed value is too large.

Error:Image.classify:Feature null has a non-numeric value for property B1.Task timed out after 7200 seconds.

另外一些函数在使用过程中也指的注意:

How l Debug Your Code -my checklist

Low Hanging Fruit

getlnfo()

for loops

iterate()

toList()

Complex geometries

Don't clip

image.reduceToVectors()

image.reproject()

image.resample()

image.reduceResolution()

Joins

Collections

filterDate /filterBounds

calendarRange()without filterDate()

collection.geometry()

toBands()/toArray()

Aggregations

Tilescale in reduce*Combine reducers

image.reduceNeighborhood()

Neighborhood size使用较小的pixels作为参数

Use optimizations

How I Debug Your Code -my checklist

Distances

use fastDistanceTransform()

/ee.Image.pixelArea().sqrt()

Geometries

Specify an error marginSimplify if possible

bounds()vs.drawing a box

Discard them completely

Pre-caching before sampling

Classifier size(trees,training)

Never use Math.random()

 错误代码示范:

https://code.earthengine.google.com/34bdb87a407011a6c9b821fad47d7987

 

var l8 = ee.ImageCollection("LANDSAT/LC08/C02/T1_L2").limit(400);function reduceBands(x, acc) {return ee.Image(acc).addBands(x);
}var iterateVersion = ee.Image(l8.iterate(reduceBands, ee.Image()));
print('Iterate: image has', iterateVersion.bandNames().length(), 'bands');var toBandsVersion = l8.toBands();
print('toBands: image has', toBandsVersion.bandNames().length(), 'bands');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/137821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

远程电脑未连接显示器时分辨率太小的问题处理

背景&#xff1a;单位电脑显示器坏了&#xff0c;使用笔记本通过向日葵远程连接&#xff0c;发现分辨率只有800*600并且不能修改&#xff0c;网上找了好久找到了处理方法这里记录一下&#xff0c;主要用到的是一个虚拟显示器软件usbmmidd_v2 1)下载usbmmidd_v2 2&#xff09;…

asp.net core mvc之模型绑定、特性约束模型绑定、模型验证(服务器/客户端/远程)

一、不用模型绑定 数据类型都是string 1、UserController.cs public class UserController : Controller {public IActionResult Register(){return View();}[HttpPost]public IActionResult DoRegister(){//不用模型绑定 以前的方法取表单数据或Url的参数//数据类型都是s…

openssl+SM2开发实例一(含源码)

一、SM2算法介绍 SM2&#xff08;国密算法2&#xff09; 是中国国家密码管理局&#xff08;CNCA&#xff09;颁布的椭圆曲线密码算法标准&#xff0c;属于非对称加密算法。它基于椭圆曲线离散对数问题&#xff0c;提供了安全可靠的数字签名、密钥交换和公钥加密等功能。SM2被设…

软件测试项目实战经验附视频以及源码【商城项目,app项目,电商项目,银行项目,医药项目,金融项目】(web+app+h5+小程序)

前言&#xff1a; ​​大家好&#xff0c;我是阿里测试君。 最近很多小伙伴都在面试&#xff0c;但是对于自己的项目经验比较缺少。阿里测试君再度出马&#xff0c;给大家找了一个非常适合练手的软件测试项目&#xff0c;此项目涵盖web端、app端、h5端、小程序端&#xff0c;…

Anaconda Powershell Prompt和Anaconda Prompt的区别

先说结论&#xff1a;主要功能应该一样。区别在于powershell支持的命令更多。比如查询路径的命令pwd和列表命令ls。 Anaconda PowerShell Prompt和Anaconda Prompt是Anaconda发行版中两个不同的命令提示符工具。 Anaconda Prompt是Anaconda发布的默认命令提示符工具&#xff0…

FFMPEG库实现mp4/flv文件(H264+AAC)的封装与分离

ffmepeg 4.4&#xff08;亲测可用&#xff09; 一、使用FFMPEG库封装264视频和acc音频数据到 mp4/flv 文件中 封装流程 1.使用avformat_open_input分别打开视频和音频文件&#xff0c;初始化其AVFormatContext&#xff0c;使用avformat_find_stream_info获取编码器基本信息 2.使…

【链接装载与库】 Linux共享库的组织

Linux共享库的组织 由于动态链接的诸多优点&#xff0c;大量的程序开始使用动态链接机制&#xff0c;导致系统里面存在数量 极为庞大的共享对象。如果没有很好的方法将这些共享对象组织起来&#xff0c;整个系统中的共享对象文件则会散落在各个目录下&#xff0c;给长期的维护…

react之Component存在的2个问题

问题 只要执行setState()&#xff0c;即使不改变状态数据&#xff0c;组件也会重新render()只当前组件重新render()&#xff0c;就会自动重新render子组件 原因 Component中的shouldComponentUpdate()总是返回true 思路 只有当组件的state或props数据发生改变时才重新rend…

听GPT 讲Rust源代码--library/core/src

题图来自 The first unofficial game jam for Rust lang![1] File: rust/library/core/src/hint.rs rust/library/core/src/hint.rs文件的作用是提供了一些用于提示编译器进行优化的函数。 在Rust中&#xff0c;编译器通常会根据代码的语义进行自动的优化&#xff0c;以提高程序…

React【axios、全局处理、 antd UI库、更改主题、使用css module的情况下修改第三方库的样式、支持sass less】(十三)

文件目录 Proxying in Development http-proxy-middleware fetch_get fetch 是否成功 axios 全局处理 antd UI库 更改主题 使用css module的情况下修改第三方库的样式 支持sass & less Proxying in Development 在开发模式下&#xff0c;如果客户端所在服务器跟后…

手写链表C++

目录 一、链表基本概念以及注意事项 1.1 构造函数与析构函数 1.2 插入元素 1.3 重载运算符 二、小结 一、链表基本概念以及注意事项 在工作中&#xff0c;链表是一种常见的数据结构&#xff0c;可以用于解决很多实际问题。在学习中&#xff0c;掌握链表可以提高编程能力和…

Flutter IOS 前后台切换主题自动变化的问题

BUG 触发条件 设备 IOS 15 模拟器GetX 实现换肤GetMaterialApp 里面配置好 theme和darkTheme使用GetView和GetController进行开发 此时如果把App前后台切换&#xff0c;使用Obx包括起来的内容会跟谁异常主题变换&#xff0c;未使用Obx的颜色不会变化。 解决路径 首先在获取 …

华为交换机端口 access、trunk和hybrid收发数据规则

文章目录 1. 三个端口类型处理数据帧的汇总表2. access 端口3. trunk端口4. Hybrid 端口&#xff08;交换机的默认端口类型&#xff09;5.常用命令 1. 三个端口类型处理数据帧的汇总表 端口类型收到不带VLAN标签的帧的处理规则收到带VLAN标签的帧的处理规则发送帧时的处理规则…

大语言模型的关键技术

大语言模型的关键技术&#xff1a; 经过漫长的发展&#xff0c;LLM 进化到了当前的状态——通用且有能力的学习者。在这个过程中&#xff0c;人们提出了许多重要的技术&#xff0c;大大提升了 LLM 的能力。在此&#xff0c;我们简要列举了几种重要的技术&#xff0c;这些技术&a…

平面运动机器人的传感器外参标定

简述 对任意两个传感器进行外参标定可以采用手眼标定算法来完成&#xff0c;但是&#xff0c;传统手眼标定算法对于运动具有一定的要求&#xff0c;可以证明&#xff0c;至少需要两个以上轴角方向不同的旋转运动才可以正确估计出外参旋转&#xff0c;因此&#xff0c;如果使用…

54基于matlab的包络谱分析

基于matlab的包络谱分析&#xff0c;目标信号→希尔伯特变换→得到解析信号→求解析信号的模→得到包络信号→傅里叶变换→得到Hilbert包络谱&#xff0c;包络谱分析能够有效地将这种低频冲击信号进行解调提取。程序已调通&#xff0c;可直接运行。 54matlab包络谱分析信号解调…

​LeetCode解法汇总187. 重复的DNA序列

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; DNA序列 由…

轻量日志管理方案-[EFK]

使用FileBeat进行日志文件的数据收集&#xff0c;并发送到ES进行存储&#xff0c;最后Kibana进行查看展示&#xff1b; 这个应该是最简单&#xff0c;轻量的日志收集方案了。 最总方案为&#xff1a;FileBeatESKibana ; 【Kibana过于强大&#xff0c;感觉可以无限扩展】 文章目…

SpringBoot 全局日期时间格式转化

一、添加注解 在属性上加上注解&#xff0c;对日期进行格式化 import com.fasterxml.jackson.annotation.JsonFormat;JsonFormat(pattern "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime;二、全局配置 a. 在 WebMvcConfiguration 中扩展 SpringMVC 的消息…

msvcp140_CODECVT_IDS.dll丢失怎么办?msvcp140_CODECVT_IDS.dll丢失5个解决办法详解

首先&#xff0c;我要讲述一下我是如何遇到这个问题的。那时候&#xff0c;我正在打开一个电脑的应用程序&#xff0c;使用软件&#xff08;ps&#xff09;进行编程。在打开软件时候&#xff0c;突然发现程序无法正常启动&#xff0c;弹出了一个错误提示框&#xff0c;显示msvc…