GEE有很多类型的数据
- String
- Number
- Array
- List
- Dictionary
- Geometry
- Feature
- FeatureCollection
- Image
- ImageCollection
- 各种卫星数据
本文主要介绍ee.Number
的常见指令方法内容,完整指令方法见GEE ee.Number
ee.Number
有以下常见指令方法内容
- 显示
print(number)
- 创建
ee.Number()
- 比较
ee.Number.eq()
、ee.Number.neq()
、ee.Number.lt()
、ee.Number.lte()
、ee.Number.gt()
、ee.Number.gte()
- 缩放
ee.Number.unitScale
- 取整
- 绝对值
ee.Number.abs
- 四舍五入
ee.Number.round
- 向下取整
ee.Number.ceil
- 向上取整
ee.Number.floor
- 绝对值
- 底数e的幂
ee.Number.exp
- 链式调用
ee.Number.aside
- 函数运算
- 开方
ee.Number.sqrt
- 三次根
ee.Number.cbrt
- 幂
ee.Number.pow
- log
ee.Number.log
- log10(lg)
ee.Number.log10
- 最大值
ee.Number.max
- 最小值
ee.Number.min
- 三角形斜边
ee.Number.hypot
- 第一个数值
ee.Number.first
- 第一个非零数值
ee.Number.firstNonZero
- 开方
- 逻辑运算
ee.Number.and
ee.Number.or
ee.Number.not
- 数学运算
- 加
ee.Number.add
- 减
ee.Number.subtract
- 乘
ee.Number.multiply
- 除
ee.Number.divide
- 余数
ee.Number.mod
- 加
- 三角函数(正、反、双曲)
- sin
ee.Number.sin
- cos
ee.Number.cos
- tan
ee.Number.tan
- asin
ee.Number.asin
- acos
ee.Number.acos
- atan
ee.Number.atan
- sinh
ee.Number.sinh
- cosh
ee.Number.cosh
- tanh
ee.Number.tanh
- sin
- sign函数
ee.Number.signum
- 按位运算
- 按位与
ee.Number.bitwiseAnd
- 按位非
ee.Number.bitwiseNot
- 按位或
ee.Number.bitwiseOr
- 按位异或
ee.Number.bitwiseXor
- 按位与
- 移位运算
- 左移
ee.Number.leftShift
- 右移
ee.Number.rightShift
- 左移
- Gamma函数
ee.Number.trigamma
ee.Number.gamma
ee.Number.gammainc
ee.Number.digamma
- 计算二维向量角度
ee.Number.atan2
- 限制数值范围
ee.Number.clamp
- 字符转数值
ee.Number.parse
- 数值转字符
ee.Number.format
- 格式转换
- int(toInt)
ee.Number.int / ee.Number.toInt
- int8/16/32/64(toInt8/16/32/64)
- long / toLong
ee.Number.long / ee.Number.toLong
- short / toShort
ee.Number.short / ee.Number.toShort
- byte / toByte
ee.Number.byte / ee.Number.toByte
- double / toDouble
ee.Number.double / ee.Number.toDouble
- float / toFloat
ee.Number.float / ee.Number.toFloat
- uint8/16/32(toUint8/16/32)
- int(toInt)
同系列文章请阅读
【GEE笔记8】数值Number(常见指令方法1)
【GEE笔记10】数值Number(常见指令方法3)
【GEE笔记11】数值Number(常见指令方法4)
6. 底数e的幂ee.Number.exp
用法
Number.exp()
案例
print('e^-1', ee.Number(-1).exp()); // 0.367879441
print('e^0', ee.Number(0).exp()); // 1
print('e^1', ee.Number(1).exp()); // 2.718281828
print('e^2', ee.Number(2).exp()); // 7.389056098
7. 链式调用ee.Number.aside
Calls a function passing this object as the first argument, and returning itself. Convenient e.g. when debugging:
var c = ee.ImageCollection(‘foo’).aside(print)
.filterDate(‘2001-01-01’, ‘2002-01-01’).aside(print, ‘In 2001’)
.filterBounds(geom).aside(print, ‘In region’)
.aside(Map.addLayer, {min: 0, max: 142}, ‘Filtered’)
.select(‘a’, ‘b’);
Returns the same object, for chaining.
调用一个函数,将此对象作为第一个参数传递,并返回自身。方便例如调试时: var c = ee.ImageCollection(‘foo’).aside(print) .filterDate(‘2001-01-01’, ‘2002-01-01’).aside(打印, ‘2001’) .filterBounds(geom).aside(print, ‘在区域内’) .aside(Map.addLayer, {min: 0, max: 142}, ‘Filtered’) .select(‘a’, ‘b’); 返回相同的对象,用于链接。
用法
Number.aside(func, var_args)
案例
// Print a message when constructing an ee.Number.
var eeNum = ee.Number(10).aside(print, 'An ee.Number was defined');
8. 函数运算
- 开方
ee.Number.sqrt
用法
Number.sqrt()
案例
// Values less than 0 are invalid. 数值必须大于等于0
print('Square root of 25', ee.Number(25).sqrt()); // 5
- 三次根
ee.Number.cbrt
用法
Number.cbrt()
案例
print('Cubic root of 27', ee.Number(27).cbrt()); // 3
- 幂
ee.Number.pow
这里需要注意的是两个ee.Number( )
,左边的是底数,右边的是指数。
用法
Number.pow(right)
案例
print('5 ** 2', ee.Number(5).pow(ee.Number(2))); // 25
print('-5 ** 2', ee.Number(-5).pow(ee.Number(2))); // 25
print('5 ** -2', ee.Number(5).pow(ee.Number(-2))); // 0.04
print('5 ** 2.2', ee.Number(5).pow(ee.Number(2.2))); // 34.493241536
print('5.2 ** 2', ee.Number(5.2).pow(ee.Number(2))); // 27.040000000
- log
ee.Number.log
用法
Number.log()
案例
print(ee.Number(Math.pow(Math.E, -1)).log()); // -1
print(ee.Number(1).log()); // 0
print(ee.Number(Math.E).log()); // 1
- log10(lg)
ee.Number.log10
用法
Number.log10()
案例
print(ee.Number(0.1).log10()); // -1
print(ee.Number(1).log10()); // 0
print(ee.Number(10).log10()); // 1
print(ee.Number(100).log10()); // 2
- 最大值
ee.Number.max
只能比较两个数值
用法
Number.max(right)
案例
print('Given 5 and 10, max is 10', ee.Number(5).max(ee.Number(10))); // 10
- 最小值
ee.Number.min
只能比较两个数值
用法
Number.min(right)
案例
print('Given 5 and 10, min is 5', ee.Number(5).min(ee.Number(10))); // 5
- 三角形斜边
ee.Number.hypot
勾股定理
用法
Number.hypot(right)
案例
// Left input is x and right input is y, representing point (x,y).
print('Length from origin to point (0,0)', ee.Number(0).hypot(0)); // 0
print('Length from origin to point (3,0)', ee.Number(3).hypot(0)); // 3
print('Length from origin to point (3,4)', ee.Number(3).hypot(4)); // 5
print('Length from origin to point (-3,4)', ee.Number(-3).hypot(4)); // 5
print('Length from origin to point (-3,-4)', ee.Number(-3).hypot(-4)); // 5
- 第一个数值
ee.Number.first
用法
Number.first(right)
案例
print(ee.Number(1).first(ee.Number(2))); // 1
- 第一个非零数值
ee.Number.firstNonZero
用法
Number.firstNonZero(right)
案例
print('First non-zero: 0, 5', ee.Number(0).firstNonZero(ee.Number(5))); // 5
print('First non-zero: 5, 0', ee.Number(5).firstNonZero(ee.Number(0))); // 5
9. 逻辑运算
ee.Number.and
如果两个值都不为零,则返回 1。
用法
Number.and(right)
案例
print('Both 5 and 10 are not 0?', ee.Number(5).and(ee.Number(10))); // 1
print('Both 5 and 0 are not 0?', ee.Number(5).and(ee.Number(0))); // 0
ee.Number.or
如果任一输入值非零,则返回 1。
用法
Number.or(right)
案例
print('Either 0 or 5 non-zero?', ee.Number(0).or(ee.Number(5))); // 1
print('Either 0 or 0 non-zero?', ee.Number(0).or(ee.Number(0))); // 0
ee.Number.not
如果输入非零,则返回 0,否则返回 1。
用法
Number.not()
案例
print('Value is not 0', ee.Number(5).not()); // 0
print('Value is 0', ee.Number(0).not()); // 1
10. 数学运算
- 加
ee.Number.add
两个数值相加
用法
Number.add(right)
案例
print('5 + 10', ee.Number(5).add(ee.Number(10))); // 15
print('5 + 10.2', ee.Number(5).add(ee.Number(10.2))); // 15.2
print('5 + -10.2', ee.Number(5).add(ee.Number(-10.2))); // -5.199999999
- 减
ee.Number.subtract
左值减去右值
用法
Number.subtract(right)
案例
print('5 - 10', ee.Number(5).subtract(ee.Number(10))); // -5
print('10 - 5', ee.Number(10).subtract(ee.Number(5))); // 5
print('5 - 10.2', ee.Number(5).subtract(ee.Number(10.2))); // -5.199999999
print('5 - -10.2', ee.Number(5).subtract(ee.Number(-10.2))); // 15.2
- 乘
ee.Number.multiply
用法
Number.multiply(right)
案例
print('5 * 10', ee.Number(5).multiply(ee.Number(10))); // 50
print('-5 * -10', ee.Number(-5).multiply(ee.Number(-10))); // 50
print('5 * 10.5', ee.Number(5).multiply(ee.Number(10.5))); // 52.5
print('5 * -10.5', ee.Number(5).multiply(ee.Number(-10.5))); // -52.5
print('0 * 10', ee.Number(0).multiply(ee.Number(10))); // 0
- 除
ee.Number.divide
左值除以右值
用法
Number.divide(right)
案例
print('5 / 10', ee.Number(5).divide(ee.Number(10))); // 0.5
print('5 / 10.2', ee.Number(5).divide(ee.Number(10.2))); // 0.490196078
print('5 / -10.2', ee.Number(5).divide(ee.Number(-10.2))); // -0.490196078
print('-10.2 / 5', ee.Number(-10.2).divide(ee.Number(5))); // -2.04
print('-10.2 / -5', ee.Number(-10.2).divide(ee.Number(-5))); // 2.04
print('0 / 10', ee.Number(0).divide(ee.Number(10))); // 0
print('10 / 0', ee.Number(10).divide(ee.Number(0))); // 0
- 余数
ee.Number.mod
用法
Number.mod(right)
案例
// Remainder with positive dividend.
print('Remainder of 12/5', ee.Number(12).mod(ee.Number(5))); // 2
print('Remainder of 1/-2', ee.Number(1).mod(ee.Number(-2))); // 1
print('Remainder of 1/2', ee.Number(1).mod(ee.Number(2))); // 1
print('Remainder of 2/3', ee.Number(2).mod(ee.Number(3))); // 2
print('Remainder of 5.5/2', ee.Number(5.5).mod(ee.Number(2))); // 1.5
// Remainder with negative dividend.
print('Remainder of -12/5', ee.Number(-12).mod(ee.Number(5))); // -2
print('Remainder of -1/2', ee.Number(-1).mod(ee.Number(2))); // -1
print('Remainder of -4/2', ee.Number(-4).mod(ee.Number(2))); // 0
由于篇幅过长,剩下的10个小节另请阅读: