本文主要對GEE中依據矢量資料裁剪栅格資料的操作加以介紹。本文是谷歌地球引擎(Google Earth Engine,GEE)系列教學文章的第三篇,更多GEE文章請參考專欄:GEE學習與應用(https://blog.csdn.net/zhebushibiaoshifu/category_11081040.html)。
首先,依據第二篇GEE教學部落格(https://blog.csdn.net/zhebushibiaoshifu/article/details/117296956)中内容,我們将Landsat 8 Collection 1 Tier 1的大氣表觀反射率TOA Reflectance産品導入GEE。
随後,依據同樣方法搜尋
United States Counties
,并選擇2018年資料。該資料是美國人口普查局(United States Census Bureau)釋出的2018年主要合法邊界劃分資料,簡單來說就是劃分美國各州郡縣級地理實體的矢量邊界資料。
點選資料名稱即可檢視其資訊,例如可以看到其“Name”字段為郡縣級地理實體的名稱。
點選“IMPORT”将這一資料導入GEE。
依據前述第二篇教學部落格中方法,對這一矢量資料加以重命名。
點選
var County
旁的箭頭,我們即可檢視其各類屬性資訊。
操作過程中如果需要再次檢視資料介紹,我們直接點選其名稱即可。
輸入代碼,将這一矢量資料在地圖中顯示出來。
即可看到美國郡縣級地理實體的邊界資訊。接下來,我們将依據FIPS(Federal Information Processing System)編碼對某一個單獨州内的全部郡縣加以提取。本文我們就以美國中西部的堪薩斯州為例進行操作。
FIPS編碼是美國國内各地區各自的唯一編碼,用以區分不同地理實體。每個州各自均有一個唯一的二位FIPS編碼,每個州下的所有郡縣級地區同樣有各自唯一的五位FIPS編碼(其中前兩位是一樣的,都是該州所屬FIPS編碼)。顯然,如果需要提取某一個州的全部郡縣,我們需要依據矢量邊界地圖中FIPS編碼相關的屬性加以操作。
點選圖層名稱,檢視圖層屬性;可以看到,我們所導入的矢量邊界地圖中“GEOID”字段是我們需要的FIPS編碼屬性字段。
注釋掉前面
Map.addLayer(County);
這一句代碼,寫下如下所示的新代碼:
var kansas=County.filterMetadata('GEOID','starts_with','20');
Map.addLayer(kansas,{},'Kansas');
print(kansas)
其中,
.filterMetadata()
函數是對資料的屬性字段加以篩選,其第一個參數
'GEOID'
表示需要參與篩選的字段名稱;第二個參數
'starts_with'
表示地理要素篩選方式,此外包括
'equals'
、
'less_than'
、
'not_ends_with'
等等關系表達式,本文中
'starts_with'
表示選擇“以此開頭”的地理要素;第三個
'20'
表示具體的數值。總的來說,上述這句篩選代碼含義就是:在
County
所表示的全部郡縣中,篩選
'GEOID'
字段中以
'20'
開頭(
'starts_with'
)的所有郡縣。
此外,後兩句代碼在第二篇GEE教學部落格中有所介紹,這裡不再贅述。
下圖即為執行上述代碼後所得結果,可以看到在地圖中顯示的僅為屬于堪薩斯州的郡縣。在這裡為了更好顯示每一句代碼的含義,分别用不同顔色繪制了筆迹和框圖,每一處筆迹對應的代碼所得結果就是該顔色所對應的框中所展示内容。
此外,如果我們不清楚矢量圖層中每一個字段具體的形式,可以選擇“Inspector”後,用滑鼠随意選中某一個矢量區域,并在右上角檢視其具體資訊。
接下來,我們基于上述堪薩斯州郡縣對Landsat 8栅格資料加以裁剪。首先将Landsat 8資料重命名。
随後,依據第二篇GEE教學部落格中所示内容對其加以時間處理與平均求取。
var landsat_8_mon_kansas=Landsat_8.filterDate('2020-4-1','2020-4-30').mean().clip(kansas);
Map.addLayer(landsat_8_mon_kansas);
可以看到,具體的裁剪操作其實非常簡單,隻需要在得到的求取平均後的栅格資料後添加
.clip()
函數即可,其中括号内即為所需進行裁剪的邊界。
我們基于第二篇GEE教學部落格中所述方法,對得到的資料進行一些可視化處理,可以使得裁剪結果更為清晰,如下所示。
歡迎關注CSDN/公衆号/知乎/微網誌:瘋狂學習GIS