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 反轉所有位
<< 零填充左位移 通過從右推入零向左位移,並使最左邊的位脫落。
>> 有符號右位移 通過從左推入最左位的拷貝來向右位移,並使最右邊的位脫落。
>>> 零填充右位移 通過從左推入零來向右位移,並使最右邊的位脫落。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM