Google Earth Engine(GEE)
是由谷歌公司開發的眾多應用之一。借助谷歌公司超強的服務器運算能力以及與NASA
的合作關系,GEE
平臺將Landsat
、MODIS
、Sentinel
等可以公開獲取的遙感圖像數據存儲在谷歌的磁盤陣列中,使得GEE
用戶可以方便的提取、調用和分析海量的遙感大數據資源。GEE
在設計之初就是為了服務科研人員而構建的,因此在概念上可以將GEE視為一種工具,類似于菜刀之于廚師或者獵槍之于獵手,而不應該將其當作一種復雜的計算機編程平臺。
詳見小編博客:Google Earth Engine概述
?GEE中通用地理學思維
👀空間發現
GEE
與谷歌公司的另一款名為Google Earth
的軟件具有類似的空間發現功能,即可以展示地球表面客觀存在的現象和地貌。同樣的,GEE
也具有類似的地理發現功能,我們利用Map.setCenter()
命令將GEE
的觀察窗口移動到對應的位置,同時將GEE
的底圖設置為衛星圖像,具體命令如下所示。
點擊GEE底圖框右上角的衛星圖像按鈕;
在Code Editor中輸入"Map.setCenter(116.39, 39.91)"指令;
觀察結果。
GEE
具有與其他常見的地理/地圖軟件產品相類似的"觀察地球"的功能,但是GEE
與其他產品的顯著不同點在于其依靠命令而不是點擊進行操作。這種操作方式相對Google Earth
來說較為繁瑣,而且不符合人的操作直覺,但正是這種基于指令的操作方式給予了GEE
更大的自由空間,讓用戶能夠更加靈活的對地理數據進行分析和處理。
👀空間疊加
GEE
與其他地理信息系統(GIS
)平臺類似的地理思路還包括圖層疊加。在分析地理問題時,常常需要考慮某一種或幾種因素(因)對目標因素(果)的影響。這種影響關系在GIS
系統中常常表現為將不同圖層疊加后獲得結果圖層的過程。例如,利用坡向數據增強高程數據顯示效果的過程就可以看作是疊加坡度和高程數據得到結果圖層的過程。在ArcGIS
中增強背景地區高程數據的顯示的具體操作如下:
- 加入中國的
DEM
數據; - 加入中國行政區數據;
- 利用屬性篩選北京的行政區邊界;
- 利用北京行政邊界對中國的
DEM
數據進行裁剪,得到"DEM_Beijing
"; - 利用工具箱中的"
hillshade
"工具處理"DEM_Beijing
"得到"Hillshade_Beijing
"; - 在"顯示工具欄"中將"
Hillshade_Beijing
"的透明度調整為70%; - 得到結果。
將上述操作實施在GEE
中的代碼如下。可以看出GEE
與ArcGIS
在操作思路上幾乎是完全相同的,因此可以將ArcGIS
的操作步驟作為注釋加入到代碼中。
// 加入DEM
var DEM = ee.Image('USGS/SRTMGL1_003');
// 加入中國行政邊界
var China_Provices = ee.FeatureCollection("projects/ee-xiaotang9527/assets/shp/China");
// 利用屬性篩選北京的行政區邊界
var Beijing = China_Provices.filterMetadata('name','equals','北京市').first().geometry();
// 利用北京行政邊界對中國的DEM數據進行裁剪,得到‘Beijing_DEM’
var DEM_Beijing = DEM.clip(Beijing);
// 利用工具箱中的'hillshande'工具處理'Beijing_DEM'得到'Beijing_Hillshande'
var HillShade_Beijing = ee.Terrain.hillshade(DEM_Beijing);
// 將地圖的顯示中心定位到北京,縮放界別調整為7
Map.centerObject(Beijing,7);
//將'HillShade_Beijing'的透明度調整為70%,得到結果
Map.addLayer(DEM_Beijing,{"bands":["elevation"],'min':0,"max":2500,"palette":["ff6a13","e8ff2d","60ff56"]},'DEM_Beijing');
Map.addLayer(HillShade_Beijing,{"opacity":0.7,"bands":["hillshade"],"gamma":1},'HillShade_Beijing')
// 加入中國行政界線,并重命名為China_Provinces
var China_Provices = ee.FeatureCollection("projects/ee-xiaotang9527/assets/shp/China");
// 將顯示中心調整為China_Provinces,縮放級別調整為4
Map.centerObject(China_Provices, 4)
// 將China_Provinces以默認方式顯示在地圖上
Map.addLayer(China_Provices);
// 加入高程數據
var DEM = ee.Image("USGS/SRTMGL1_003");
// 加入坡度數據
var SLOPE = ee.Terrain.slope(DEM)
// 提取高程大于500m的區域"DEM_提取"
var DEM_Reclass = DEM.gt(500)
// 提取坡度小于10°的區域"SLOPE_提取"
var SLOPE_Reclass = SLOPE.lt(10)
// 利用工具將"DEM_提取"和"SLOPE_提取"疊加
var DEM_SLOPE_Intersect = DEM_Reclass.and(SLOPE_Reclass)
// 得到結果
Map.setCenter(116.39, 39.91, 3)
Map.addLayer(DEM_SLOPE_Intersect)
空間數據的坐標:無論是柵格數據還是矢量數據,在空間分析的語境中都必不可少的涉及到"坐標"這一概念。"坐標"可以理解為位置系統,"坐標變換"可以理解為從一種位置系統向另一種位置系統的數學變換。在
GEE
中,當系統處理柵格數據時,首先確定柵格左上角的坐標,然后根據每個柵格的大小將柵格中的每個像素"鋪"在底圖上。在處理矢量數據時,矢量數據的空間屬性本質上是由點構成的,因此首先確定參考點的坐標,然后利用數學公式將其他點的坐標計算出來。
?GEE圖形用戶界面
GEE
是一個主要依靠編碼命令進行空間分析和操作的平臺,但GEE也有適合界面操作的平臺:GEE的圖形用戶界面(Graphical User Interface, GUI)。GEE的GUI的優點在于符合人的操作直覺,并且對新用戶友好,缺點是功能較少,可以實現的空間分析有限。GEE的學習重點并不在GUI上,可以將本節作為一種過渡,一種從"點擊操作"到"命令操作"的適應過程。GEE的GUI主要由數據、計算、分析和顯示四部構成。其中計算和分析功能只有在申請GEE資格并且登陸以后才能完全使用。
👀GUI的運算功能
在工作區加入數據后,利用Add computation工具可以對加入的數據進行進一步的處理。GUI的計算類型一共有5種,分別用于波段添加,掩膜處理,像素運算,鄰域處理以及地形處理。
- 波段添加的作用在于將若干柵格數據集合成復合數據,例如可以將SLOPE波段加到DEM波段上,可以得到一個包含SLOPE和DEM的數據集。
- 掩膜處理的目的在于告訴GUI圖像的哪些部分參與運算,哪些部分不參與運算。
- 像素運算的目的在于挑選出合適的像素以及對像素進行數學處理,例如像素運算的閾值篩選可以篩選出高程小于900m的像素,而像素運算的表達式運算可以利用公式(Band5-Band4)/ (Band5+Band4)計算出Landsat8系列圖像的NDVI值。
- 鄰域運算可以對圖像進行邊界提取,卷積以及差分計算。
- 地形計算可以計算出高程圖像的坡度、坡向和山體陰影。
👀GUI的分析功能
GEE
的GUI中的分析功能是完全服務于遙感圖像分類的。GUI分析功能由訓練分類器,交叉驗證和分類對比三個功能組成,其中訓練分類器功能是GUI分析功能的核心。
?GEE應用程序編程接口
GEE
的應用程式編程接口(Application Programming Interface, API)是GEE的核心功能所在,也是GEE用戶最為關注的平臺,與GUI相比,API可以調用GEE平臺中的所有數據和功能。可以說,學習GEE就是學習GEE的API。GEE的API界面主要由4個部分構成,分別是"代碼及個人文件欄",“程序編寫框”,“數據報告欄"和"結果呈現框”。
- 代碼及個人文件欄的主要作用是存放用戶代碼,提供GEE自帶的代碼格式規范(可以理解為幫助文件),以及管理用戶個人數據(用戶可以將自己的柵格或矢量數據上傳至這里,供分析和使用)。
- 程序編寫框是 GEE 用戶執行操作的主界面,可以把程序編寫框理解為一個文本編輯器,在進行命令代碼編寫時,程序編寫框會根據代碼格式自動對代碼進行上色和報錯處理。
- 數據報告欄是GEE用戶獲取程序運行結果的重要窗口。通常情況下,運行結果以圖像的方式顯示在結果呈現區,但對于一些屬性或者統計類的報表信息,只能通過數據報告欄進行查詢;同時,程序的運行調試也常常會利用數據報告欄對分步結果進行查看。
- 結果呈現欄是API中面積占比最大的區域,其主要作用是對空間數據進行呈現。
參考資料:GEE學習文檔(王金柱)
多謝!多謝!
筆者不才,請多交流!!!
歡迎大家關注預覽我的博客Blog:HeartLoveLife
能力有限,敬請諒解!!