基础知识
GEE = Google Earth Engine
海量遥感数据
集成众多算法
大范围处理能力
GEE语法
本地(client) | GEE(server) | |
---|---|---|
符串 | var str="hello"; |
var str=ee.String("hello") |
数字 | var num=3; |
var num=ee.Number(3) |
列表 | var lst=[1,2,3]; |
var lst=ee.List([1,2,3]) |
对象 | var obj={a1:"x",a2:2,a3:[1,2,3]}; |
var obj=ee.Dictionary({a1:"x",a2:2,a3:[1,2,3]}) |
函数 | function a(e){return e;} |
function a(e){return e;} |
print(num) |
print(num+2) |
print(num.add(2)) ,print(num.getinfo()+2) |
for(var i=0; i<lst.size();i++){print(i)} |
for(var i=0; i<lst.size().getInfo();i++){print(i)} |
|
print(str) |
print(str+',"world"') |
print(str.getInfo()+', "GEE"') |
实例:
1 | var m_string = ee.String('Hello, GEE'); |
快捷键
功能 | 快捷键 |
---|---|
在英文模式下 | / |
注释: | ctrl+/ |
自动补全 | ctrl+space |
获取影像(Image)
Function | conception |
---|---|
ee.ImageCollection |
Image Collection |
ee.Image |
Image |
Image的创建 |
1 | // 1. 使用 image id 创建 |
可用数据汇总:
Earth Engine Data Catalog, landsat, Sentinel-2, Sentinel-1, MODIS …
帮助文件API DOCS
加载显示 Sentinel-2
1 | // load image through ImageCollection |
加载显示 Landsat
1 | var image = ee.ImageCollection("LANDSAT/LC08/C01/T1_SR") |
定量指数
1 | // 加载影像 Load an image. |
计算 NDVI
1 | // 计算NDVI compute ndvi |
计算 NDWI
1 | // 计算NDWI compute ndwi |
计算EVI
1 | // 计算EVI Compute the EVI using an expression. |
image 逻辑运算
1 | // 导入研究区(北京)分类、区域边界等数据 |
问题
- 计算每一类样本数?
- 计算类别数?
image 分层抽样
即,从已有的类别中得到样本点
1 | // 导入研究区(北京)分类、区域边界等数据 |
image 之 blend 和 where
1 | // 导入研究区(北京)分类、区域边界等数据 |
没听明白,回头自己看帮助
image 之 unmask
1 | // 导入研究区(北京)分类、区域边界等数据 |
List 和 collection概念
无序结构 | 有序结构 |
---|---|
ee.ImageColletion |
ee.List |
ee.FeatureCollection |
ee.Array |
List 概念
万物可为 List
- 空:
var lst=[]
, var lst=ee.List([]) - 数值:
var lst=[1, 2, 3]
, var lst=ee.List([1,2,3]) - 字符串:
var lst=['a', 'b', 'c']
- 栅格数据:
- 适量数据:
List
常用函数
sequence
函数1
2
3
4
5
6var tmpList1 = ee.List([1,2,3,4,5]);
print("tmpList:", tmpList1);
// 函数生成序列
var tmpList2 = ee.List.sequence(1,10);
print("tmpList2:", tmpList2);cat
拼接函数1
2
3// cat, 拼接list
var tmpList3 = tmpList1.cat(tmpList2);
print(tmpList3);get
获取元素值1
2
3// get,获取元素值
// note that the index starts with zero
print("tmpList3 get(1)", tmpList3.get(1));size
测量list大小1
2
3// size
var listSize = tmpList3.size();
print("listSize size", listSize);add
追加元素1
2
3// add, 追加元素
var tmpList3 = tmpList3.add('GEE');
print("tmpList3 add",tmpList3);insert
插入元素1
2
3// insert, 插入元素
var tmpList3 = tmpList3.insert(0,'a');
print("tmpList3 insert",tmpList3);sort
排序1
2
3// sort should be run for list with values of same type
var tmpList3 = tmpList3.sort();
print("tmpList3 sort",tmpList3);slice
切片1
2
3// 切片
var tmpList3 = tmpList3.slice(0,5,2); // (start,end,step)
print("tmpList3 slice",tmpList3);
List 之 map
1 | // 客户端 list |
- list 返回值可以和原来 list 不同
- Map 函数没有考虑对应元素之间的顺序结构关系
ImageCollection
- Landsat
- Sentinel-1
- Sentinel-2
- MODIS
- Cropland Datasets
GEE Dataset catalog
ImageCollection 函数
1 | // 导入矢量文件 |
first
第一景影像1
2
3
4// first image
var S2Col_first = S2Col.first();
Map.addLayer(S2Col_first, vis, 'S2Col_first');
print("S2Col_first",S2Col_first);mean
1
2
3
4// 所有第 i 波段在该像素位置的均值
var S2Col_mean = S2Col.mean().clip(roi);
Map.addLayer(S2Col_mean, vis, 'S2Col_mean');
print("S2Col_mean",S2Col_mean);median
1
2
3
4// 所有第 i 波段在该像素位置的中值
var S2Col_median = S2Col.median(); //所有与研究区相交的影像
Map.addLayer(S2Col_median, vis, 'S2Col_median');
print("S2Col_median",S2Col_median);size
1
2
3// 共有 47 景影像?
var S2Col_size = S2Col.size();
print("S2Col_size",S2Col_size);
ImageCollection 之 Map
只能返回 feature
或 image
1 | // 导入矢量文件 |
- 没听明白将这个内容是干啥的?没讲清楚,后面看示例吧
print
,Map.addLayer
等属于本地函数,最好不要出现在GEE
服务器代码里
例子:可用性分析与频率计算
1 | var ChinaProvince = ee.FeatureCollection("users/studyroomGEE/ChinaShp/ChinaProvince"); |
- 此处可用于红树林的提取,怎么用?(植被指数概率图?)
例子:imagecollection (条带号制作)
1 | var ChinaProvince = ee.FeatureCollection("users/studyroomGEE/ChinaShp/ChinaProvince"); |
List 和 ImageCollection 配合
若干年份最少云量影像的建立
1 | Imports (1 entry) |
月合成影像
1 | Imports (1 entry) |