没有合适的资源?快使用搜索试试~ 我知道了~
遥感云计算-Google Earth Engine-常见错误及解决方案手册
需积分: 5 19 下载量 143 浏览量
2022-04-06
08:54:14
上传
评论 3
收藏 4.46MB PDF 举报
温馨提示
试读
31页
遥感云计算-Google Earth Engine-常见错误及解决方案手册 适用于GEE初学者,在使用过程中遇到各种报错可以查阅并对照解决。
资源详情
资源评论
资源推荐
GEE教程异常篇-1:常错误以及解决案
1. 地图显示偏移问题
这个是由于“星坐标系”引发的问题,这个暂时属于解的问题。相关知识可以查看:
https://baike.baidu.com/item/%E7%81%AB%E6%98%9F%E5%9D%90%E6%A0%87%
E7%B3%BB%E7%BB%9F/6734069
具体问题描述,我绘制的是京的“南”,实际位置如下:
如果我们切换为电地图如下:
1
这并是我们的数据有问题,真正的原因就是电地图做“加偏”处,所以数据
和电地图法匹配。我们在实际开放中最好都是影像地图,那个存在偏移的问题。
2. 基本语法错误
(1)缺少关键字
a = 1;
print(a);
分析:这个错误在新中特别常,很多写的代码旦较后,经常忘记写“var”这个
关键字。正确的写法如下。
var a = 1;
print(a);
(2)中标点符号和英标点符号混
2
var a = ee.Date("2018-01-01“);
print(a);
var b = ee.List(['a', 'b‘])
分析:论是还是新在编写代码时候经常会遇到这样的问题,且这个问题有事常
隐蔽。这给个建议,写代码的时候我们定要将输法切换位英输,同时代码的注
释最好都是英,这样可以避免由于输法频繁切换造成输错误。正确的写法:
var a = ee.Date("2018-01-01");
print(a);
var b = ee.List(['a', 'b'])
(3)未定义变
var a = 0;
print(b);
分析:这种错误很容发现,我们在没有定义过“b”的前提下就直接使这个变。还有
种错误就常隐蔽,如下:
var a = 0;
print(b);
var b = 1;
运结果如下图:
分析:这次程序没有报错,但是也没有输出我们想要的结果,我们期望的结果是“1”。这
其实是和编程语有关,程序在底层编码执时候发现b在后定义,所以这就报
错,但是在执print的时候b是没有值的,所以输出为“undefined”。
正确的写法应该是先定义,然后在调:
var a = 0;
var b = 1;
print(b);
(4)波段名称未定义或者属性名称存在
3
调存在的波段名称
var image = ee.Image("USGS/SRTMGL1_003");
//图波段中只有:elevation,这输出b1必然报错
print(image);
print(image.select("b1"));
调存在的属性
var image = ee.Image("USGS/SRTMGL1_003");
print(image);
//year属性存在,程序运会报错只会将结果输出为null;title存在,所以输出属性内容
print(image.get("year"));
print(image.get("title"));
分析:我们在使影像时候先第步就是要确认影像包含哪些波段,然后就是包含哪些属
性,这样在计算中可以避免很多必要的错误。
(5)重复定义变或者覆盖定义
var a = 1;
var b = 10;
//输出1
print(a);
//值被新
a = b + 1;
//输出11
print(a);
//a被重新定义
var a = 2;
//输出2
print(a);
分析:运这段代码是会报错的,但是重复定义可能会使得我们在逻辑处上会出现很多
意想到的问题,如我们定义个变是字符,后将这个变赋值成为数字,
那么
(6)GEE的法和JavaScript的属性彼此分
var b = ee.List([1,2,3]);
4
print("b length is: ", b.length);
//JavaScript属性
var a = [1, 2, 3];
print("a length is: " + a.length);
//GEE法
var c = ee.List([1,2,3]);
print("c length is: ", c.length());
分析:出现这个问题原因是户懂得JavaScript编程,所以会将JavaScript的某些法
或者属性想成GEE应该也持。这就需要注意,乎是所有的JavaScript的属性或者
法,GEE对象都是没发直接使的。如果希望GEE对象直接使JavaScript的相关内
容,我们需要调“getInfo()”法,但是这个需要注意的是常常推荐使
getInfo()。最重要的原因是使getInfo()会先将云端的所有属性会先拉回到本地,
直接造成浏览假死奔溃状态。
(7)调未定义的法
调GEE中存在的函数法或者未定的法:
//错误,ee.List中没有sum
var a = ee.List([1,2,3,4]);
print(a.sum());
分析:ee.List()中没有sum这个法,所以会报错。正确的式如下:
//正确
var a = ee.List([1,2,3,4]);
print(a.reduce(ee.Reducer.sum()));
返回值是想要的数据类型,需要强制转换然后调相关法
//错误
var a = ee.List([1,2,3,4]);
var b = a.reduce(ee.Reducer.sum());
//b这是ee.Object类型,所以没有add法
var c = b.add(10);
print(c);
作者:知乎@形的
5
剩余30页未读,继续阅读
JonasGung
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0