【GEE笔记9】数值Number(常见指令方法2)

GEE有很多类型的数据

  • String
  • Number
  • Array
  • List
  • Dictionary
  • Geometry
  • Feature
  • FeatureCollection
  • Image
  • ImageCollection
  • 各种卫星数据

本文主要介绍ee.Number的常见指令方法内容,完整指令方法见GEE ee.Number

ee.Number有以下常见指令方法内容

  1. 显示print(number)
  2. 创建ee.Number()
  3. 比较ee.Number.eq()ee.Number.neq()ee.Number.lt()ee.Number.lte()ee.Number.gt()ee.Number.gte()
  4. 缩放ee.Number.unitScale
  5. 取整
    • 绝对值ee.Number.abs
    • 四舍五入ee.Number.round
    • 向下取整ee.Number.ceil
    • 向上取整ee.Number.floor
  6. 格式化ee.Number.format
  7. 链式调用ee.Number.aside
  8. 函数运算
    • 开方ee.Number.sqrt
    • 三次根ee.Number.cbrt
    • ee.Number.pow
    • logee.Number.log
    • log10(lg)ee.Number.log10
    • 最大值ee.Number.max
    • 最小值ee.Number.min
    • 三角形斜边ee.Number.hypot
    • 第一个数值ee.Number.first
    • 第一个非零数值ee.Number.firstNonZero
  9. 逻辑运算
  • ee.Number.and
  • ee.Number.or
  • ee.Number.not
  1. 数学运算
    • ee.Number.add
    • ee.Number.subtract
    • ee.Number.multiply
    • ee.Number.divide
    • 余数ee.Number.mod
  2. 三角函数(正、反、双曲)
    • sinee.Number.sin
    • cosee.Number.cos
    • tanee.Number.tan
    • asinee.Number.asin
    • acosee.Number.acos
    • atanee.Number.atan
    • sinhee.Number.sinh
    • coshee.Number.cosh
    • tanhee.Number.tanh
  3. sign函数ee.Number.signum
  4. 按位运算
    • 按位与ee.Number.bitwiseAnd
    • 按位非ee.Number.bitwiseNot
    • 按位或ee.Number.bitwiseOr
    • 按位异或ee.Number.bitwiseXor
  5. 移位运算
    • 左移ee.Number.leftShift
    • 右移ee.Number.rightShift
  6. Gamma函数
  • ee.Number.trigamma
  • ee.Number.gamma
  • ee.Number.gammainc
  • ee.Number.digamma
  1. 计算二维向量角度ee.Number.atan2
  2. 裁切数值范围ee.Number.clamp
  3. 字符转数值ee.Number.parse
  4. 数值转字符ee.Number.format
  5. 格式转换
    • int(toInt)ee.Number.int / ee.Number.toInt
    • int8/16/32/64(toInt8/16/32/64)
    • long / toLongee.Number.long / ee.Number.toLong
    • short / toShortee.Number.short / ee.Number.toShort
    • byte / toByteee.Number.byte / ee.Number.toByte
    • double / toDoubleee.Number.double / ee.Number.toDouble
    • float / toFloatee.Number.float / ee.Number.toFloat
    • uint8/16/32(toUint8/16/32)

6. 格式化ee.Number.format

用法

Number.format(pattern)

pattern
一个 printf 样式的格式字符串。
例如,“%.2f”生成格式为“3.14”的数字,“%05d”生成格式为“00042”的数字。

格式字符串必须满足以下条件: 1. 零个或多个前缀字符。 2. 正好是一个 ‘%’。 3. 集合 [#-+ 0,(.\d] 中的零个或多个修饰符。 4. 集合 [sdoxXeEfgGaA] 中的恰好一个转换字符。 5. 零个或多个后缀字符。
有关格式字符串的更多信息,请参阅https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html

案例

print('Zero-fill to length of 3',
      ee.Number(1).format('%03d'));  // 001

print('Include 1 decimal place in 1.2347',
      ee.Number(1.23476).format('%.1f'));  // 1.2

print('Include 3 decimal places in 1.2347',
      ee.Number(1.23476).format('%.3f'));  // 1.235 (rounds up)

print('Scientific notation with 3 decimal places shown',
      ee.Number(123476).format('%.3e'));  // 1.235e+05 (rounds up)

print('Integer with 2 decimal places of precision',
      ee.Number(123476).format('%.2f'));  // 123476.00

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
  • logee.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个小节另请阅读:

你可能感兴趣的:(GEE,遥感,开发语言,GEE,遥感,javascript,云计算)