【GEE笔记**】数值Number(常见指令方法 合集)

15 篇文章 17 订阅

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. 底数e的幂ee.Number.exp
  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)

【GEE笔记8】数值Number(常见指令方法1)
【GEE笔记9】数值Number(常见指令方法2)
【GEE笔记10】数值Number(常见指令方法3)
【GEE笔记11】数值Number(常见指令方法4)

1.显示print(number)

var number = ee.Number(2022)
print(number)

在这里插入图片描述

2.创建ee.Number

ee.Number就是构建一个新的Number,也包括Number的计算

  • 用法
ee.Number(number)
  • 案例
print(ee.Number(0));  // 0
print(ee.Number(1));  // 1
print(ee.Number(0.0));  // 0
print(ee.Number(1.0));  // 1
print(ee.Number(-1.0));  // -1
print(ee.Number(Math.PI));  // 3.141592653589793
print(ee.Number(1.2e-35));  // 1.2e-35
print(ee.Number(3.4e10));  // 34000000000

3.比较ee.Number.eq()ee.Number.neq()ee.Number.lt()ee.Number.lte()ee.Number.gt()ee.Number.gte()在这里插入图片描述

判断两个数值的大小关系,具体含义如上图,如果两个数值满足方法所定义的关系式,则返回1,不符合则返回0。

下面展示number.ep的用法和案例,和其余的一样。

  • 用法
Number.eq(right)
  • 案例
print('1 equal to 1?', ee.Number(1).eq(ee.Number(1)));  // 1
print('1.001 equal to 1?', ee.Number(1.001).eq(ee.Number(1)));  // 0

在这里插入图片描述

4. 缩放ee.Number.unitScale

一般用于栅格值的转换。缩放输入的数值,使输入值 [min, max] 的范围变为 [0, 1]。范围之外的值不会被限制。如果 min == max,则返回 0。

  • 用法
Number.unitScale(min, max)
  • 案例
print('-10 scaled between [0, 100]', ee.Number(-10).unitScale(0, 100));  // -0.1
print('10 scaled between [0, 100]', ee.Number(10).unitScale(0, 100));  // 0.1
// 当min == max
print('10 scaled between [10, 100]', ee.Number(10).unitScale(10, 100));  // 0
// 下面将变换 min 和 max 的范围
print('-20 scaled between [10, 100]', ee.Number(-20).unitScale(10, 100));  // -0.333
print('30 scaled between [10, 100]', ee.Number(30).unitScale(10, 100));  // 0.222

对于后面出现的-0.33333和0.22222,有些读者可能一时间不太理解,下面我画图解释一下
在这里插入图片描述

在这里插入图片描述

5. 取整

  • 绝对值ee.Number.abs

用法

Number.abs()

案例

print('Absolute value of -1', ee.Number(-1).abs());  // 1
print('Absolute value of 0', ee.Number(0).abs());  // 0
print('Absolute value of 2.3', ee.Number(2.3).abs());  // 2.3
  • 四舍五入ee.Number.round

用法

Number.round()

案例

print('10.4 rounds down', ee.Number(10.4).round());  // 10
print('10.5 rounds up', ee.Number(10.5).round());  // 11
print('10.9 rounds up', ee.Number(10.9).round());  // 11
  • 向下取整ee.Number.ceil

用法

Number.ceil()

案例

// Positive numbers.正数
print('Ceiling for 2.1', ee.Number(2.1).ceil());  // 3
print('Ceiling for 2.5', ee.Number(2.5).ceil());  // 3
print('Ceiling for 2.9', ee.Number(2.9).ceil());  // 3

// Negative numbers.负数
print('Ceiling for 2.1', ee.Number(-2.1).ceil());  // -2
print('Ceiling for 2.5', ee.Number(-2.5).ceil());  // -2
print('Ceiling for 2.9', ee.Number(-2.9).ceil());  // -2
  • 向上取整ee.Number.floor

用法

Number.floor()

案例

// Positive numbers.
print('Floor for 2.1', ee.Number(2.1).floor());  // 2
print('Floor for 2.5', ee.Number(2.5).floor());  // 2
print('Floor for 2.9', ee.Number(2.9).floor());  // 2

// Negative numbers.
print('Floor for -2.1', ee.Number(-2.1).floor());  // -3
print('Floor for -2.5', ee.Number(-2.5).floor());  // -3
print('Floor for -2.9', ee.Number(-2.9).floor());  // -3

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
  • 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

11. 三角函数(正、反、双曲)

  • sinee.Number.sin

用法

Number.sin()

案例

// Input angle in radians. 弧度
print('Sine of 0', ee.Number(0).sin());  // 0
print('Sine of π/2', ee.Number(Math.PI/2).sin());  // 1
print('Sine of 3π/2', ee.Number(3*Math.PI/2).sin());  // -1

// Convert degrees to radians. 角度
var degrees = 45;
var radians = degrees * (Math.PI/180);
print('Sine of 45 degrees', ee.Number(radians).sin());  // 0.707106781
  • cosee.Number.cos

用法

Number.cos()

案例

// Input angle in radians.
print('Cosine of 0', ee.Number(0).cos());  // 1
print('Cosine of π/2', ee.Number(Math.PI/2).cos());  // 0 (nearly)
print('Cosine of π', ee.Number(Math.PI).cos());  // -1

// Convert degrees to radians.
var degrees = 45;
var radians = degrees * (Math.PI/180);
print('Cosine of 45 degrees', ee.Number(radians).cos());  // 0.707106781
  • tanee.Number.tan

用法

Number.tan()

案例

// Input angle in radians.
print('Tangent of 0', ee.Number(0).tan());  // 0
print('Tangent of π/2', ee.Number(Math.PI/2).tan());  // 16331239353195370
print('Tangent of π', ee.Number(Math.PI).tan());  // 0 (nearly)

// Convert degrees to radians.
var degrees = 45;
var radians = degrees * (Math.PI/180);
print('Tangent of 45 degrees', ee.Number(radians).tan());  // 1 (nearly)
  • asinee.Number.asin

用法

Number.asin()

案例

// The domain of arcsine is [-1,1], inputs outside the domain are invalid.
print('Arcsine of -1', ee.Number(-1).asin());  // -1.570796326 (-π/2)
print('Arcsine of 0', ee.Number(0).asin());  // 0
print('Arcsine of 1', ee.Number(1).asin());  // 1.570796326 (π/2)
  • acosee.Number.acos

用法

Number.acos()

案例

// The domain of arccosine is [-1,1], inputs outside the domain are invalid.
print('Arccosine of -1', ee.Number(-1).acos());  // 3.141592653 (π)
print('Arccosine of 0', ee.Number(0).acos());  // 1.570796326 (π/2)
print('Arccosine of 1', ee.Number(1).acos());  // 0
  • atanee.Number.atan

用法

Number.atan()

案例

print('Arctangent of -1e13', ee.Number(-1e13).atan());  // -1.570796326 (-π/2)
print('Arctangent of -1', ee.Number(-1).atan());  // -0.785398163
print('Arctangent of 0', ee.Number(0).atan());  // 0
print('Arctangent of 1', ee.Number(1).atan());  // 0.785398163
print('Arctangent of 1e13', ee.Number(1e13).atan());  // 1.570796326 (π/2)
  • sinhee.Number.sinh

用法

Number.sinh()

案例

// Input angle in radians.
print('Hyperbolic sine of -5', ee.Number(-5).sinh());  // -74.203210577
print('Hyperbolic sine of -1', ee.Number(-1).sinh());  // -1.175201193
print('Hyperbolic sine of 0', ee.Number(0).sinh());  // 0
print('Hyperbolic sine of 1', ee.Number(1).sinh());  // 1.175201193
print('Hyperbolic sine of 5', ee.Number(5).sinh());  // 74.203210577

// Convert degrees to radians.
var degrees = 45;
var radians = degrees * (Math.PI/180);
print('Hyperbolic sine of 45 degrees',
      ee.Number(radians).sinh());  // 0.868670961
  • coshee.Number.cosh

用法

Number.cosh()

案例

// Input angle in radians.
print('Hyperbolic cosine of -5', ee.Number(-5).cosh());  // 74.209948524
print('Hyperbolic cosine of -1', ee.Number(-1).cosh());  // 1.543080634
print('Hyperbolic cosine of 0', ee.Number(0).cosh());  // 1
print('Hyperbolic cosine of 1', ee.Number(1).cosh());  // 1.543080634
print('Hyperbolic cosine of 5', ee.Number(5).cosh());  // 74.209948524

// Convert degrees to radians.
var degrees = 45;
var radians = degrees * (Math.PI/180);
print('Hyperbolic cosine of 45 degrees',
      ee.Number(radians).cosh());  // 1.324609089
  • tanhee.Number.tanh

用法

Number.tanh()

案例

// Input angle in radians.
print('Hyperbolic tangent of -5', ee.Number(-5).tanh());  // -0.999909204
print('Hyperbolic tangent of -1', ee.Number(-1).tanh());  // -0.761594155
print('Hyperbolic tangent of 0', ee.Number(0).tanh());  // 0
print('Hyperbolic tangent of 1', ee.Number(1).tanh());  // 0.761594155
print('Hyperbolic tangent of 5', ee.Number(5).tanh());  // 0.999909204

// Convert degrees to radians. 角度转弧度
var degrees = 45;
var radians = degrees * (Math.PI/180);
print('Hyperbolic tangent of 45 degrees',
      ee.Number(radians).tanh());  // 0.655794202

12. sign函数ee.Number.signum

计算输入的符号函数(sign);如果输入为零,则为零,如果输入大于零,则为 1,如果输入小于零,则为 -1。

用法

Number.signum()

案例

print('Sign of -5', ee.Number(-5).signum());  // -1
print('Sign of 0', ee.Number(0).signum());  // 0
print('Sign of 5', ee.Number(5).signum());  // 1

13. 按位运算

先将输入的数值转成二进制形式,然后把相对应位置的两个数值进行运算,包括And Or Xor Not

  • 按位与ee.Number.bitwiseAnd
    保留都有的1

用法

Number.bitwiseAnd(right)

案例

/**
 * Unsigned 8-bit type example.
 *
 * 25 as binary:   00011001
 * 21 as binary:   00010101
 * Both digits 1?: 00010001
 *
 * 00010001 is unsigned 8-bit binary for 17.
 */

print(ee.Number(25).bitwiseAnd(21)); // 17

在这里插入图片描述

  • 按位非ee.Number.bitwiseNot
    交换01位置

用法

Number.bitwiseNot()

案例

/**
 * Unsigned 8-bit type example.
 *
 * 25 as binary:    00011001
 * Flip each digit: 11100110
 *
 * 11100110 is signed 8-bit binary for -26.
 * (binary interpreted using smallest signed integer type containing the input).
 */

print(ee.Number(25).bitwiseNot()); // 26
  • 按位或ee.Number.bitwiseOr
    只要有1都留下

用法

Number.bitwiseOr(right)

案例

/**
 * Unsigned 8-bit type example.
 *
 * 25 as binary:    00011001
 * 21 as binary:    00010101
 * Either digit 1?: 00011101
 *
 * 00011101 is unsigned 8-bit binary for 29.
 */

print(ee.Number(25).bitwiseOr(21)); // 29
  • 按位异或ee.Number.bitwiseXor
    只留下同位置不同01值的,并在新数值中指定为1

用法

Number.bitwiseXor(right)

案例

/**
 * Unsigned 8-bit type example.
 *
 * 25 as binary:         00011001
 * 21 as binary:         00010101
 * Only one digit is 1?: 00001100
 *
 * 00001100 is unsigned 8-bit binary for 12.
 */

print(ee.Number(25).bitwiseXor(21)); // 12

14. 移位运算

  • 左移ee.Number.leftShift

用法

Number.leftShift(right)

案例

/**
 * Unsigned 8-bit type example.
 *
 * 20 as binary:  00010100
 * Left shift 2:  01010000
 *
 * 01010000 is binary for 80.
 */

print(ee.Number(20).leftShift(2));  // 80
  • 右移ee.Number.rightShift

用法

Number.rightShift(right)

案例

/**
 * Unsigned 8-bit type example.
 *
 * 20 as binary:   00010100
 * Right shift 2:  00000101
 *
 * 00000101 is binary for 5.
 */

print(ee.Number(20).rightShift(2));  // 5

15. Gamma函数

  • ee.Number.trigamma

用法

Number.trigamma()

案例

print('Trigamma for -100', ee.Number(-100).trigamma());  // Infinity
print('Trigamma for 0.001', ee.Number(0.001).trigamma());  // 1000001.642533195
print('Trigamma for 0.5', ee.Number(0.5).trigamma());  // 4.934802200
print('Trigamma for 1', ee.Number(1).trigamma());  // 1.644934066
print('Trigamma for 100', ee.Number(100).trigamma());  // 0.010050166
print('Trigamma for 200', ee.Number(200).trigamma());  // 0.005012520
  • ee.Number.gamma

用法

Number.gamma()

案例

// Values less than or equal to 0 are invalid.
print('Gamma for 0.001', ee.Number(0.001).gamma());  // 999.423772484
print('Gamma for 0.5', ee.Number(0.5).gamma());  // 1.772453850
print('Gamma for 1', ee.Number(1).gamma());  // 1
print('Gamma for 100', ee.Number(100).gamma());  // 9.332621544e+155
print('Gamma for 200', ee.Number(200).gamma());  // Infinity
  • ee.Number.gammainc

用法

Number.gammainc(right)

案例

print('Lower incomplete gamma function for x = 0, a = 1',
      ee.Number(0).gammainc(1));  // 0

print('Lower incomplete gamma function for x = 1, a = 1',
      ee.Number(1).gammainc(1));  // 0.632120558

print('Lower incomplete gamma function for x = 10, a = 1',
      ee.Number(10).gammainc(1));  // 0.999954600

print('Lower incomplete gamma function for x = -1, a = 1',
      ee.Number(-1).gammainc(1));  // NaN

print('Lower incomplete gamma function for x = 10, a = -1',
      ee.Number(10).gammainc(-1));  // NaN
  • ee.Number.digamma

用法

Number.digamma()

案例

print('Digamma for -1.5', ee.Number(-1.5).digamma());  // 0.703156637
print('Digamma for -1', ee.Number(-1).digamma());  // -Infinity
print('Digamma for 0', ee.Number(0).digamma());  // -Infinity
print('Digamma for 0.5', ee.Number(0.5).digamma());  // -1.963510028
print('Digamma for 1', ee.Number(1).digamma());  // -0.577215667
print('Digamma for 100', ee.Number(100).digamma());  // 4.600161852
print('Digamma for 1e13', ee.Number(1e13).digamma());  // 29.933606208

16. 计算二维向量角度ee.Number.atan2

输入一个点的二维坐标,计算这个点和坐标轴连线形成的角度(弧度制)

用法

Number.atan2(right)

案例

// Left input is x and right input is y, representing point (x,y).
print('Atan2 of point (0,0)', ee.Number(0).atan2(0));  // 0
print('Atan2 of point (1,0)', ee.Number(1).atan2(0));  // 0
print('Atan2 of point (0,1)', ee.Number(0).atan2(1));  // 1.570796326 (π/2)
print('Atan2 of point (-1,0)', ee.Number(-1).atan2(0));  // 3.141592653 (π)
print('Atan2 of point (0,-1)', ee.Number(0).atan2(-1));  // -1.570796326 (-π/2)

17. 限制数值范围ee.Number.clamp

用法

Number.clamp(min, max)

案例

// Numbers within range are unaffected.
print('100 clamped to range [0,255]', ee.Number(100).clamp(0, 255));  // 100

// Numbers greater than max in range are set to max.
print('259 clamped to range [0,255]', ee.Number(259).clamp(0, 255));  // 255

// Numbers less than min in range are set to min.
print('-259 clamped to range [0,255]', ee.Number(-259).clamp(0, 255));  // 0

18. 字符转数值ee.Number.parse

用法

ee.Number.parse(input, radix)

案例

print('Client-side string converted to ee.Number',
      ee.Number.parse('10'));  // 10

print('ee.String converted to ee.Number',
      ee.Number.parse(ee.String('100')));  // 100

print('Ambiguous string object converted to ee.Number',
      ee.Number.parse(ee.Feature(null, {id: '1000'}).get('id')));  // 1000

print('Ambiguous number object converted to ee.Number',
      ee.Number.parse(ee.Feature(null, {id: 1000}).get('id')));  // 1000

print('Leading zeros are removed',
      ee.Number.parse('0001'));  // 1

19. 数值转字符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

20. 格式转换

int:singed integer(有符号整数)
uint:unsigned integer(无符号整数)

  • int(toInt)ee.Number.int / ee.Number.toInt
    将输入值转换为带符号的 32 位整数。
    代码区域只展示int的用法,如果用toInt,就是把int改成toInt

用法

Number.int()

案例

// Cast a number to signed 32-bit integer: [-2147483648, 2147483647].
var number = ee.Number(100);
print('Number:', number);

var intNumber = number.int();
print('Number cast to int:', intNumber);


/**
 * Casting numbers to int that are outside of its range and precision can
 * modify the resulting value, note the behavior of the following scenarios.
 */

// A floating point number cast to int loses decimal precision.
var float = ee.Number(1.7);
print('Floating point value:', float);

var floatToInt = float.int();
print('Floating point value cast to int:', floatToInt);

// A number greater than int range max cast to int becomes int range max.
var INT_MAX = 2147483647;
var outOfRangeHi = ee.Number(INT_MAX + 12345);
print('Greater than int max:', outOfRangeHi);

var outOfRangeHiToInt = outOfRangeHi.int();
print('Greater than int max cast to int becomes int max:', outOfRangeHiToInt);

// A number greater than int range min cast to int becomes int range min.
var INT_MIN = -2147483648;
var outOfRangeLo = ee.Number(INT_MIN - 12345);
print('Less than int min:', outOfRangeLo);

var outOfRangeLoToInt = outOfRangeLo.int();
print('Less than int min cast to int becomes int min:', outOfRangeLoToInt);
  • int8/16/32/64(toInt8/16/32/64)

用法

Number.int8()

案例

// Cast a number to signed 8-bit integer: [-128, 127].
var number = ee.Number(100);
print('Number:', number);

var int8Number = number.int8();
print('Number cast to int8:', int8Number);


/**
 * Casting numbers to int8 that are outside of its range and precision can
 * modify the resulting value, note the behavior of the following scenarios.
 */

// A floating point number cast to int8 loses decimal precision.
var float = ee.Number(1.7);
print('Floating point value:', float);

var floatToInt8 = float.int8();
print('Floating point value cast to int8:', floatToInt8);

// A number greater than int8 range max cast to int8 becomes int8 range max.
var INT8_MAX = 127;
var outOfRangeHi = ee.Number(INT8_MAX + 12345);
print('Greater than int8 max:', outOfRangeHi);

var outOfRangeHiToInt8 = outOfRangeHi.int8();
print('Greater than int8 max cast to int8 becomes int8 max:', outOfRangeHiToInt8);

// A number greater than int8 range min cast to int8 becomes int8 range min.
var INT8_MIN = -128;
var outOfRangeLo = ee.Number(INT8_MIN - 12345);
print('Less than int8 min:', outOfRangeLo);

var outOfRangeLoToInt8 = outOfRangeLo.int8();
print('Less than int8 min cast to int8 becomes int8 min:', outOfRangeLoToInt8);
  • long / toLongee.Number.long / ee.Number.toLong
    将输入值转换为有符号的 64 位整数。

用法

Number.long()

案例

// Declare an ee.Number.
var number = ee.Number(100);
print('ee.Number:', number);

// Cast a number to signed 64-bit integer.
var longNumber = number.long();
print('ee.Number cast to long:', longNumber);


/**
* Casting numbers to long that are outside of its range and precision can
* modify the resulting value, note the behavior of the following scenarios.
*/

// A floating point number cast to long loses decimal precision.
var float = ee.Number(1.7);
print('Floating point value:', float);

var floatToLong = float.long();
print('Floating point value cast to long:', floatToLong);
  • short / toShortee.Number.short / ee.Number.toShort
    将输入值转换为有符号的 16 位整数

用法

Number.short()

案例

// Cast a number to signed 16-bit integer: [-32768, 32767].
var number = ee.Number(100);
print('Number:', number);

var shortNumber = number.short();
print('Number cast to short:', shortNumber);


/**
 * Casting numbers to short that are outside of its range and precision can
 * modify the resulting value, note the behavior of the following scenarios.
 */

// A floating point number cast to short loses decimal precision.
var float = ee.Number(1.7);
print('Floating point value:', float);

var floatToShort = float.short();
print('Floating point value cast to short:', floatToShort);

// A number greater than short range max cast to short becomes short range max.
var SHORT_MAX = 32767;
var outOfRangeHi = ee.Number(SHORT_MAX + 12345);
print('Greater than short max:', outOfRangeHi);

var outOfRangeHiToShort = outOfRangeHi.short();
print('Greater than short max cast to short becomes short max:', outOfRangeHiToShort);

// A number greater than short range min cast to short becomes short range min.
var SHORT_MIN = -32768;
var outOfRangeLo = ee.Number(SHORT_MIN - 12345);
print('Less than short min:', outOfRangeLo);

var outOfRangeLoToShort = outOfRangeLo.short();
print('Less than short min cast to short becomes short min:', outOfRangeLoToShort);
  • byte / toByteee.Number.byte / ee.Number.toByte
    将输入值转换为无符号 8 位整数。

用法

Number.byte()

案例

// Cast a number to unsigned 8-bit integer: [0, 255].
var number = ee.Number(100);
print('Number:', number);

var byteNumber = number.byte();
print('Number cast to byte:', byteNumber);


/**
 * Casting numbers to byte that are outside of its range and precision can
 * modify the resulting value, note the behavior of the following scenarios.
 */

// A floating point number cast to byte loses decimal precision.
var float = ee.Number(1.7);
print('Floating point value:', float);

var floatToByte = float.byte();
print('Floating point value cast to byte:', floatToByte);

// A number greater than byte range max cast to byte becomes byte range max.
var BYTE_MAX = 255;
var outOfRangeHi = ee.Number(BYTE_MAX + 12345);
print('Greater than byte max:', outOfRangeHi);

var outOfRangeHiToByte = outOfRangeHi.byte();
print('Greater than byte max cast to byte becomes byte max:', outOfRangeHiToByte);

// A number greater than byte range min cast to byte becomes byte range min.
var BYTE_MIN = 0;
var outOfRangeLo = ee.Number(BYTE_MIN - 12345);
print('Less than byte min:', outOfRangeLo);

var outOfRangeLoToByte = outOfRangeLo.byte();
print('Less than byte min cast to byte becomes byte min:', outOfRangeLoToByte);
  • double / toDoubleee.Number.double / ee.Number.toDouble
    将输入值转换为 64 位浮点数。

用法

Number.double()

案例

// Declare an ee.Number.
var number = ee.Number(100);
print('ee.Number:', number);

// Cast a number to signed 64-bit floating point.
var doubleNumber = number.double();
print('ee.Number cast to double:', doubleNumber);
  • float / toFloatee.Number.float / ee.Number.toFloat
    将输入值转换为 32 位浮点数。

用法

Number.float()

案例

// Declare an ee.Number.
var number = ee.Number(100);
print('ee.Number:', number);

// Cast a number to signed 32-bit floating point.
var floatNumber = number.float();
print('ee.Number cast to float:', floatNumber);
  • uint8/16/32(toUint8/16/32)
    将输入值转换为无符号 8 位整数。

用法

Number.uint8()

案例

// Cast a number to unsigned 8-bit integer: [0, 255].
var number = ee.Number(100);
print('Number:', number);

var uint8Number = number.uint8();
print('Number cast to uint8:', uint8Number);


/**
 * Casting numbers to uint8 that are outside of its range and precision can
 * modify the resulting value, note the behavior of the following scenarios.
 */

// A floating point number cast to uint8 loses decimal precision.
var float = ee.Number(1.7);
print('Floating point value:', float);

var floatToUint8 = float.uint8();
print('Floating point value cast to uint8:', floatToUint8);

// A number greater than uint8 range max cast to uint8 becomes uint8 range max.
var UINT8_MAX = 255;
var outOfRangeHi = ee.Number(UINT8_MAX + 12345);
print('Greater than uint8 max:', outOfRangeHi);

var outOfRangeHiToUint8 = outOfRangeHi.uint8();
print('Greater than uint8 max cast to uint8 becomes uint8 max:', outOfRangeHiToUint8);

// A number greater than uint8 range min cast to uint8 becomes uint8 range min.
var UINT8_MIN = 0;
var outOfRangeLo = ee.Number(UINT8_MIN - 12345);
print('Less than uint8 min:', outOfRangeLo);

var outOfRangeLoToUint8 = outOfRangeLo.uint8();
print('Less than uint8 min cast to uint8 becomes uint8 min:', outOfRangeLoToUint8);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vigo*GIS_RS

来瓶可乐~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值