天天看點

GEE(Google Earth Engine)——JavaScript 入門(2)

'你好,世界!' JavaScript

将資訊列印到控制台是擷取有關對象的資訊、顯示計算的數字結果、顯示對象中繼資料或幫助調試的基本任務。标志性的“Hello World!” 代碼編輯器中的示例是:

​​代碼編輯器 (JavaScript)​​

print('Hello world!');      

将此行複制到代碼編輯器的代碼編輯器中,然後單擊運作。請注意,輸出顯示在代碼編輯器右側的控制台頁籤中。對于更遙感相關的示例,以下列印 Landsat 8 圖像的中繼資料:

​​代碼編輯器 (JavaScript)​​

print(ee.Image('LANDSAT/LC08/C01/T1/LC08_044034_20140318'));      

仔細檢查控制台中的輸出以檢視可用于 Landsat 圖像的中繼資料。

向地圖添加資料

除了将資訊列印到控制台之外,向控制台添加資料​

​Map​

​​ 也是可視化地理資料的方式。使用​

​Map.addLayer()​

​​這樣做。在以下示例中,使用 将 an​

​Image​

​​執行個體化(稍後介紹如何找到這些圖像)​

​ee.Image()​

​​,将其添加到地圖中, ​

​Map.addLayer()​

​并且地圖位于圖像的中心:

​​代碼編輯器 (JavaScript)​​

// Load an image.
var image = ee.Image('LANDSAT/LC08/C01/T1/LC08_044034_20140318');

// Center the map on the image.
Map.centerObject(image, 9);

// Display the image.
Map.addLayer(image);      

的第二個參數​

​Map.centerObject()​

​​是縮放級别,數字越大表示比例越大(放大得越多)。這些​

​Map​

​ 函數的參數在可從文檔頁籤通路的 API 參考中進行了深入描述 。如果圖像的外觀不令人滿意,請使用附加參數配置顯示參數​

​Map.addLayer()​

​。例如:

​​代碼編輯器 (JavaScript)​​

// Load the image from the archive.
var image = ee.Image('LANDSAT/LC08/C01/T1/LC08_044034_20140318');

// Define visualization parameters in an object literal.
var vizParams = {bands: ['B5', 'B4', 'B3'], min: 5000, max: 15000, gamma: 1.3};

// Center the map on the image and display.
Map.centerObject(image, 9);
Map.addLayer(image, vizParams, 'Landsat 8 false color');      

觀察可視化參數由對象文字定義,其中包括要顯示的波段清單、最小和最大數字以及伽瑪值。(了解更多關于陸地衛星樂隊 ​​在這裡​​​。了解更多關于圖像可視化​​在這裡​​)。

用于​

​Map.addLayer()​

​向地圖添加要素和要素集合。例如,

​​代碼編輯器 (JavaScript)​​

var counties = ee.FeatureCollection('TIGER/2016/Counties');
Map.addLayer(counties, {}, 'counties');      

查找圖像、圖像集合和特征集合

通過搜尋地球引擎資料目錄可以發現圖像、圖像集合和特征集合。例如,在搜尋字段中輸入“Landsat 8”會生成栅格資料集清單。(地球引擎資料集的完整清單位于 ​​地球引擎資料目錄​​)。單擊資料集名稱可擷取簡要說明、有關時間可用性、資料提供者和集合 ID 的資訊。單擊“導入” 按鈕可在腳本頂部自動建立一個“導入”部分,其中包含此集合的變量。

或者,複制集合 ID 并将其粘貼到您的代碼中。例如,選擇“Landsat 8”搜尋的第一個結果并複制ID,如下所示:

​​代碼編輯器 (JavaScript)​​

var collection = ee.ImageCollection('LANDSAT/LC08/C01/T1');      

由于這是跨越地球陸地表面的許多圖像的集合,是以在集合中查找單個圖像需要過濾以縮小搜尋範圍。或者,可以使用合成和鑲嵌技術将圖像集合縮減為單個圖像。更多關于過濾和合成(見 ​​減少​​)在下一節。

特征集合也可通過資料目錄獲得。它們的表示比圖像集合小,但您會發現國際、人口普查、流域和保護區的邊界,僅舉幾例。​​在此處​​了解有關導入您自己的矢量資料集的更多資訊。

過濾和排序

通常需要按空間和/或時間過濾集合以限制結果的數量。例如,考慮對 Landsat 8 場景集合進行排序的任務,以便為舊金山找到一個無雲場景。首先,有必要定義感興趣的區域。一個點通常對此很有用。激活代碼編輯器右側的 Inspector頁籤并單擊您感興趣區域的中心附近,從Inspector 頁籤複制坐标,然後​

​Point​

​使用以下方法建構一個:

​​代碼編輯器 (JavaScript)​​

var point = ee.Geometry.Point(-122.262, 37.8719);      

構造開始和結束日期:

​​代碼編輯器 (JavaScript)​​

var start = ee.Date('2014-06-01');
var finish = ee.Date('2014-10-01');      

使用點和日期過濾 Landsat 8 集合,然後使用中繼資料屬性(在檢查 Landsat 8 場景中繼資料期間發現)進行排序:

​​代碼編輯器 (JavaScript)​​

var filteredCollection = ee.ImageCollection('LANDSAT/LC08/C01/T1')
  .filterBounds(point)
  .filterDate(start, finish)
  .sort('CLOUD_COVER', true);      

可以安全地列印和檢查此集合。(如果集合中有太多圖像,列印它會很慢、逾時或傳回錯誤)。觀察集合中的圖像​

​List​

​​存儲在​

​ImageCollection​

​​. 集合中任何圖像的 ID 都可以複制到​

​Image​

​上面的構造函數中。或者,擷取第一張圖像(最低雲量):

​​代碼編輯器 (JavaScript)​​

var first = filteredCollection.first();      

使用​

​filter()​

​​ with​

​ee.Filter​

​​作為參數通路完整的 Earth Engine 過濾功能。(上面使用的​

​filterBounds()​

​​和 ​

​filterDate()​

​​方法是快捷方式)。例如,下面建立了一個​

​Filter​

​​,使用它來過濾 a​

​FeatureCollection​

​并顯示結果:

// Load a feature collection.
var featureCollection = ee.FeatureCollection('TIGER/2016/States');

// Filter the collection.
var filteredFC = featureCollection.filter(ee.Filter.eq('NAME', 'California'));

// Display the collection.
Map.addLayer(filteredFC, {}, 'California');