EZ | Earth Engine Code Editor |
GEE的代码编辑器是一个面向JavaScript语言API的Web端的IDE,代码编辑器被特地设计成又快又好地完成复杂的地理信息处理任务,代码编辑器有以下的几个部件:
- JavaScript代码编辑空间;
- 可视化的数据集展示面板;
- API开发文档;
- 基于Git的脚本管理器;
- 输出面板;
- 任务(尤其是长时间运行的任务)管理器;
- 交互性的地图查询工具;
- 搜索数据并保存脚本的工具;
- 地理绘图工具;
Fig.1 代码编辑器的界面图
代码编辑器有多种显示模式,可以帮助你自由并高效地使用GEE的API,各个按钮的功能在前文大多介绍过,不再赘述,下面主要说一些代码编辑器的细节部分。
JavaScript 语言的编辑器
这个编辑器具有以下的基本功能:
- 给代码排版,并可以执行语法高亮;
- 把代码中出现的问题标示出来,提供一些改错的提示信息;
- 自动补全一些应该成对儿的东西;
- 提供GEE中函数的自动补全;
代码编辑上还有一个运行、保存、重制输出界面和控制台、得到脚本链接的按钮,上文说过了。
API参考(文档栏)
代码编辑器的左边还有一个文档栏,里mainyou完整的JavaScriptAPI开发文档,文档可以通过检索的方式查看。
脚本管理器(脚本栏)
脚本栏在API文档旁边,脚本管理器可以储存私人、分享和公开的脚本,它们都被托管在Git里,存放的位置和数据的公开性有关,做过开发的小伙伴,看到这样的目录树就应该都懂的,不多做解释了:
脚本模块
写脚本模块是一个很锻炼人的工作,写得好还可以在各个脚本之间分享,并不是简单的复制粘贴而已,GEE提供了脚本之间分享的简单方式,你可以按照下面文档写函数。比起在脚本之间把函数复制来复制去,新脚本直接载入一个函数无疑是更简单(也更优雅)的方法。写一个可以在其他脚本里使用的函数,可以把它放在一个特定的地方,这个地方被称为exports。使用另一个脚本里的代码则需要调用require
函数从这个地方加载函数。还是看例子:
exports.doc = 'The Foo module is a demonstration of script modules.' +
'\n It contains a foo function that returns a greeting string. ' +
'\n It also contains a bar object representing the current date.' +
'\n' +
'\n foo(arg):' +
'\n @param {ee.String} arg The name to which the greeting should be addressed' +
'\n @return {ee.String} The complete greeting.' +
'\n' +
'\n bar:' +
'\n An ee.Date object containing the time at which the object was created.';
exports.foo = function(arg) {
return 'Hello, ' + arg + '! And a good day to you!';
};
exports.bar = ee.Date(Date.now());
注意到export的使用方法,你可以在其他脚本里通过调用使用这个模块。
ar Foo = require('users/username/default:Modules/FooModule.js');
print(Foo.doc);
print(Foo.foo('world'));
print('Time now:', Foo.bar);
require
函数使用string描述调用路径,形式如下pathToRepository:pathToModuleScript,你可以只从你自己或是有权限使用的数地方加载模块,如果你想让其他人也用上你写的模块,权限必须设置成可共享,也只能被分享给你想分享的伙伴。
你可以使用?scriptPath={repo}:{script}这样的URL去使用别人的模块。
资产库(资产栏)
左侧的资产栏里有一个资产管理器,使用如Fig.3的管理器上传货管理你个人的GEE图像资产,这个东西的细节[在这里]https://developers.google.com/earth-engine/asset_manager.html)可以详细看。
搜索工具
想找到你在脚本中使用的数据集,可以使用搜索工具,在代码编辑器上面可以很轻易找到,输入任何关键词进行检索,可以看到简单的信息。想把数据集直接导入脚本中,就点一下Import按钮就行了。
导入
把数据集导入到脚本的结果就是在代码顶部组成了一个单独的Import代码段,你可以隐藏这一段,也可以详细显示。
Fig.4 脚本顶部的导入代码段地图
API中的地图可以显示在代码编辑器里,Map.bounds()
函数就可以在编辑器中返回一个可视化的地理区域。点一下API中的Map
函数可以看到其他定制项。
图层管理器
使用右上方的图层管理器调整你添加到地图中的图层,在图层可视化工具里,可以做更多设置。
Fig.5 图层可视化工具
图层管理器右边有一个按钮,可以设置不同的地图背景,也可以使用Map.setStyle()
函数设置地图背景。
检查器
任务管理器下面有一个检查器,可以让你直接检索地图信息,当使用这个工具时,光标就变成一个定位器,移到哪里,就会显示一些基础参数。Fig.6展示了检查器的使用结果,还可以拓展显示的信息条目。
Fig.6 检查器展示了光标位置的信息和图层的值面板栏
当你的脚本里使用了print()
函数来输出一些东西(像是文本、项目或是图表),结果都会显示在面板中,面板是一个交互性的工具,你可以输出东西,也可以得到这些东西的一些信息。
任务栏
对于那些运行时间稍长的任务,使用Export把这些计算过程展示在任务栏里,也可以对这些任务做一些管理,可以运行,也可以暂停,也可以直接把任务终止掉。你还可以定制输出结果的信息,比如图像的尺寸或是表格的格式之类的。
探查器
探查器展示了资源信息,CPU时间和内存之类的东西,和算法还有计算过程中的其他部分都有关系。探查器可以帮助你检查一个任务为什么跑不动或是内存不够,想使用探查器,点一下Run with Profiler按钮就可以了。也可以按住快捷键Alt/Option再点Run,或者是直接Ctrl+Alt+Enter,这将会在代码编辑器右边激活探查器,如果脚本跑起来了,探查器就会显示资源使用情况。如果只是点击Run,探查器就不会工作。
探查器显示了CPU信息和内存使用情况(每个算法单独统计),这里都包括了这些东西:
- 描述,一个对于计算过程、算法、资产库和操作的文本性描述。
- 计数,有一个对于描述中指示的运算过程的运算过程的指示器。
- 计算力,指示了运算过程所占用的CPU时间。
- 内存问题,只有在内存超限时并报出error时这一栏才生效,显示一些内存使用中的问题。
-
超限问题,一个计算过程使用了全部的算力,就会把问题放在这里。
几何工具
你可以在屏幕上做一些几何操作,使用左上方的集合工具创建地理区域,也可以画点、画线、画多边形或者矩形。
使用任何的绘图工具都会单独创建一个地理图层并把它添加到导入代码段里。对于GEE中几何工具,单独有个链接
Fig.8 几何配置工具
帮助信息
右上方的帮助按钮里可以找到开发者指导、代码编辑器的指导还有键盘快捷键的一个清单,要啥有啥。