今天开始学习Google Earth Engine,下面来记录一下吧!!!!
何需这么复杂,大可不必写那么多,虾面我把今天的学习内容记录一下。
Google Earth Engine 学习1—基本重要概念
1、服务器和客户端:服务器(sever)和客户端(client)在结合earth engine 后衍生出来“sever-side”和“client-side”两个概念,分别是服务器端编程语言和客户端编程语言。
2、地图(Map):指的是显示栅格影像和矢量数据。
3、影像(Image):实际上就是我们说的遥感影像,存储格式有GeoTIFF、netCDF或者hdf等。
4、影像集合(imageCollection):是把很多张影像放在一起作为一个列表对象存储。
var dataset = ee.Image('NASA/ASTER_GED/AG100_003');
print(dataset);
上面两行代码表示输出dataset是数据集的前十幅影像,因为print()方法在输出时,一般不超过5000个元素,所以陌生的数据集,会采用limit()来作为一个限定,以便先了解数据集的信息。
5、矢量数据:来源于平台提供和用户自己上传,本地多以shp和kml格式存储。在ee中几乎以矢量数据集合的格式存在:几何图形类(Geometry),矢量数据类(Feature)和矢量数据集合(Feature Collection)三大类数据。
6、过滤筛选:表示从集合列表中筛选出符合条件的数据。采用的方法是filter(),过滤的规则为空间过滤、时间过滤、属性过滤。
var L8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterBounds(roi)
.filterDate('2021-05-01', '2021-06-01')
.filter(ee.Filter.lt("CLOUD_COVER",5));
上面的代码则是按感兴趣区域、日期(左闭右开区间)、云覆盖量(小于%5)的规则进行过滤筛选。
7、数据整合(Rducer):ee.Reducer()这一大类指定了数据整合的方式。
8、循环遍历(map):注意和Map区分,类似于for,while循环。但是有所区别,下面是JavaScript中的for循环和GEE中的map循环的区别
//JavaScript中普通循环
print("javaScript ---------");
var nums_js = [1,2,3,4,5];
for (var i=0; i<nums_js.length; i++) {
nums_js[i] += 2;
}
print(nums_js);
//GEE中的循环
print("gee ---------");
var nums_gee = ee.List([1,2,3,4,5]);
nums_gee = nums_gee.map(function(num) {
num = ee.Number(num);
return num.add(2);
});
print(nums_gee);
下图是两种循环输出的结果:
9、发布APP:将在EE中编写的代码发不成可在线运行的网页端应用,其他用户可以直接通过我们发布的链接地址访问、使用APP。
10、存储空间:在EE中,主要的存储空间分别是:Google Drive, Google Assets, Google Cloud Storage。
(1)Google Drive是Google提供给用户的免费在线存储空间,总大小15G,用户可以在线将任务中的数据导出到Google Drive中,然后下载到本地使用;
(2)Google Assets是用户可以免费上传私有资源的储存空间,总大小是250G,最多可以存放1000个文件。在编辑界面的右上角直接点击Assets标签就可以使用,需要注意的是①文件名称最好不要有中文,②文件格式最好是UTF-8格式,③单个文件不能超过10G,④上传文件过程中不要关闭浏览器,⑤文件的投影信息最好是EPSG:4326;
(3)Google Cloud Storage是云存储空间,此空间是要收费的。
11、公共库:公共库是软件程序开发中的一个概念,将所有的方法放到一个或多个文件中,这些公共文件中的方法可以在所有项目中以类库的方式进行调用,这就是公共库。有其他编程语言基础的应该很好理解,就和class差不多。
总结:继续学习,抓紧!