一、GEE基础
Image:基础的栅格(raster)数据;
ImageCollection:一系列或一段时间的Image数据集;
Geometry:基础的向量(vector)数据;
Feature:有属性的Geometry数据;
FeatureCollection:一系列Feature数据集;
Reducer:计算统计数据或聚合数据的object
Join:通过时间空间或者属性来组合数据;
Array:可以进行多维的数据分析 作者:还行圣母院 https://www.bilibili.com/read/cv8414359 作者:还行圣母院 出处:bilibili
客户端(client)和服务器端(server)的函数不可混用。
大写字母开头的是名词,小写字母开头的是动词。
使用[]来声明一个列表,可以包含一列数字、字符串或物体(object)。
使用{}来声明一个物体,作为字典或属性的描述。
自定义函数。声明一个函数的名字,后边用这个名字来调用该函数。之后使用function关键字来创建自己的方法,用()括起来需要的形参(argument)名(形参在函数外部不可见),在{}中写函数的功能以及返回值。
物体:
// Use curly brackets {} to make a dictionary of key:value pairs.
var object ={
foo: 'bar',
baz: 13,
stuff: ['this', 'that', 'the other thing']
};
print('Dictionary:', object);
// Access dictionary items using Square brackets.用中括号访问元素
print('Print foo:', object['foo']);
// Access dictionary items using dot notation.用点来访问元素
print('Print stuff:', object.stuff);
二、
ee.Image()函数创造一个image实例
var image = ee.Image('CGIAR/SRTM90_V4');
//Zoom to a location.放大到目标地点,参数9的意思是缩放等级,越大意味着放大(zoom in)的越厉害。1级就是最大的全球尺度
spm_id_from=333.999.0.0
Map.setCenter(-112.8598, 36.2841, 9);
使用Map.addLayer()方法来添加图层
GEE中的每个图像都由一到多个波段组成,每个波段都有name,pixel values(像素的值),pixel
resolution(像素分辨率),和projection(投影)**这四个属性。
当使用Map.setCenter()方法来添加图像时,需要设置如何显示:
如果是单一波段,就显示其灰度值(最小值黑色,最大值白色)(默认值如下:int整形范围为[-32768,
32767];float浮点型拉伸到[0,1];byte比特拉伸到[0,255])。通过打印image这个变量,在console控制台会出现一个object,可以查看其各个属性。
改变图层显示方式:
通过添加Map.setCenter()方法中的另一个参数visParams(数据类型为object)来自定义图层的显示方式。
可以拉伸像素值的最大最小值(可以改变图像对比度); Map.setCenter()方法的第三个参数是图层的名字(字符串)。 通过添加向参数visParams添加palette(调色盘)属性(数据类型为list)给单一波段加颜色
调色盘(Palettes):
调色盘通过一个颜色列表来线性的/渐变的给像素值一个颜色。这个颜色用的是CSS方案,可以直接给定**颜色的名字(比如blue)*或者给出hexadecimal值(比如0000FF)
如:
//给定像素值的最大最小值来拉伸图像
Map.addLayer(image, {min: 0, max: 3000}, 'custom visualization');
//给单波段图像增加颜色,最小值蓝色,最大值红色,中间值线性绿色渐变
Map.addLayer(image, {min: 0, max: 3000, palette: ['blue', 'green', 'red']}, 'custom palette');
展示RGB图像:
GEE会默认使用多波段图像的前三个波段,按照红绿蓝的顺序拉伸像素值之后展示,默认图像看起来不太好看,需要根据所使用的卫星数据来调整显示的波段(比如Landsat8的真彩色就是B4B3B2对应红绿蓝;假彩色就是B5B4B3对应红绿蓝),并给定合适的拉伸范围
三、图像数学
图像计算
ee.Image类中也有大量的计算方法,例如可以用不同波段来计算(band math or map algebra)
用sin()方法进行三角函数计算 使用add(), subtract(), multiply()方法也可以进行相应计算。
图像统计:
通过使用ee.Reducer类来进行图像的统计计算。比如可以计算某一区域高程的平均值,可以通过多边形工具(polygon
drawing
tools)来选取区域,之后数字化(digitize)这个多边形,点击Exit按钮得到结果。代码界面的上方会出现自动出现import。
GEE中的尺度:
可以通过如下方法获得图像的默认分辨率
var scale = srtm.projection().nominalScale();
如果设定的尺度低于图像默认分辨率,GEE会用最邻近法(nearest neighbor)进行重采样(resample);
如果高于图像默认分辨率,GEE也会做出相应的处理。
计算坡度:
// Load the SRTM image.
var srtm = ee.Image('CGIAR/SRTM90_V4');
// 计算坡度的方法
var slope = ee.Terrain.slope(srtm);
// 展示结果
Map.setCenter(-112.8598, 36.2841, 9);
Map.addLayer(slope, {min: 0, max :60}, 'slope');
//**计算三角函数:**
// Get the aspect (in degrees).
var aspect = ee.Terrain.aspect(srtm);
// Convert to radians, compute the sin of the aspect.转化成弧度再计算
var sinImage = aspect.divide(180).multiply(Math.PI).sin();
// 展示结果
Map.addLayer(sinImage, {min: -1, max: 1}, 'sin');
//计算平均高程:
// Compute the mean elevation in the polygon.
var meanDict = srtm.reduceRegion({
reducer: ee.Reducer.mean(),
geometry: polygon,
scale: 90
});
// Get the mean from the dictionary and print it.
var mean = meanDict.get('elevation');
print('Mean elevation', mean);