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 反转所有位
    << 零填充左位移 通过从右推入零向左位移,并使最左边的位脱落。
    >> 有符号右位移 通过从左推入最左位的拷贝来向右位移,并使最右边的位脱落。
    >>> 零填充右位移 通过从左推入零来向右位移,并使最右边的位脱落。
  • 相关阅读:
    [转]How do I use variables in Oracle SQL Developer?
    [转]一张图理解prototype、proto和constructor的三角关系
    [转]ASP.NET Web API系列教程(目录)
    [转]解读ASP.NET 5 & MVC6系列(7):依赖注入
    [转]什么?你还不会写JQuery 插件
    [书目20170314]理解未来的7个原则
    java List.subList方法中的超级大陷阱
    MyBatis动态传入表名,字段名参数的解决办法---statementType用法
    lvs+keepalived和haproxy+heartbeat区别
    Nginx/LVS/HAProxy负载均衡软件的优缺点详解
  • 原文地址:https://www.cnblogs.com/yhpan/p/13526328.html
Copyright © 2011-2022 走看看