zoukankan      html  css  js  c++  java
  • Google Earth Engine 中的位运算

    Google Earth Engine中的位运算

    按位运算是编程中一个难点,同时也是在我们后续处理影像数据,尤其要使用影像自带的波段比如QA波段经常会用到的一个东西。通过按位运算我们可以筛选出我们想要的各种质量规格的影像。

    数值或字符在内存内都是被存储为0和1的序列,每个0和1被称之为1个位,比如说10进制数据2在计算机内被存储为 0 0 1 0,当我们将内存内的位值改变之后,这个值代表的意义也就变了,比如把2前移动一位, 现在存储单元里面变成了 0 1 0 0,这个值表示的是十进制的4,这也就是按位操作符的运算原理。

    在GEE中以Landsat5,pixel_qa,8bit波段为例
    image1

    这是GEE提供的官方去云代码

    1 << 5表示:1零填充左位移,通过从右推入零向左位移,并使最左边的位脱落,则在8bit表示中数字1变化如下

    00 00 00 01 << 00 01 00 00

    若pixel_qa表示有云像元,则bit5为1,即pixel_qa像元值为00 01 00 00,通过bitwiseAnd( )可得到云像元的掩膜,进而可以进行去云操作

    var cloudMaskL457 = function(image) {
      var qa = image.select('pixel_qa');
      // If the cloud bit (5) is set and the cloud confidence (7) is high
      // or the cloud shadow bit is set (3), then it's a bad pixel.
      var cloud = qa.bitwiseAnd(1 << 5)
                      .and(qa.bitwiseAnd(1 << 7))
                      .or(qa.bitwiseAnd(1 << 3));
      // Remove edge pixels that don't occur in all bands
      var mask2 = image.mask().reduce(ee.Reducer.min());
      return image.updateMask(cloud.not()).updateMask(mask2);
    };
    

    JavaScript 位运算符

    运算符 名称 描述
    & AND 如果两位都是 1 则设置每位为 1
    | OR 如果两位之一为 1 则设置每位为 1
    ^ XOR 如果两位只有一位为 1 则设置每位为 1
    ~ NOT 反转所有位
    << 零填充左位移 通过从右推入零向左位移,并使最左边的位脱落。
    >> 有符号右位移 通过从左推入最左位的拷贝来向右位移,并使最右边的位脱落。
    >>> 零填充右位移 通过从左推入零来向右位移,并使最右边的位脱落。
  • 相关阅读:
    记第一场省选
    POJ 2083 Fractal 分形
    CodeForces 605A Sorting Railway Cars 思维
    FZU 1896 神奇的魔法数 dp
    FZU 1893 内存管理 模拟
    FZU 1894 志愿者选拔 单调队列
    FZU 1920 Left Mouse Button 简单搜索
    FZU 2086 餐厅点餐
    poj 2299 Ultra-QuickSort 逆序对模版题
    COMP9313 week4a MapReduce
  • 原文地址:https://www.cnblogs.com/yhpan/p/13526328.html
Copyright © 2011-2022 走看看