Earth Engine 程式碼編輯器

位於 code.earthengine.google.com 的 Earth Engine (EE) 程式碼編輯器,是 Earth Engine JavaScript API 的網路版 IDE。程式碼編輯器功能旨在讓您快速輕鬆地開發複雜地理空間工作流程。程式碼編輯器包含下列元素 (如圖 1 所示):

  • JavaScript 程式碼編輯器
  • 將地理空間資料集視覺化的地圖顯示功能
  • API 參考文件 (「文件」分頁)
  • Git 型指令碼管理工具 (「指令碼」分頁)
  • 控制台輸出內容 (「控制台」分頁)
  • 工作管理員 (「工作」分頁),可處理長時間執行的查詢
  • 互動式地圖查詢 (「檢查工具」分頁)
  • 資料封存或已儲存的指令碼搜尋功能
  • 幾何圖形繪製工具

程式碼編輯器的元件

圖 1. Earth Engine 程式碼編輯器 (網址:code.earthengine.google.com) 的元件圖表。

程式碼編輯器提供多項功能,可協助您善用 Earth Engine API。在「Scripts」分頁中查看範例指令碼,或儲存您自己的指令碼。使用「檢查工具」分頁查詢在地圖上放置的物件。使用 Google Visualization API 顯示及繪製數值結果圖表。使用「取得連結」按鈕,與協作者和朋友分享劇本的專屬網址。您在 Code Editor 中開發的劇本會傳送至 Google 進行處理,而產生的地圖圖塊和/或訊息會傳回,並顯示在「地圖」和/或「控制台」分頁中。您只需要網路瀏覽器 (建議使用 Google Chrome 取得最佳效果) 和網路連線,就能執行 Code 編輯器。以下各節將詳細說明 Earth Engine 程式碼編輯器的元素。

JavaScript 編輯器

JavaScript 編輯器會:

  • 輸入時格式化及醒目顯示程式碼
  • 為有問題的程式碼加上底線,提供修正方式和其他語法提示
  • 自動完成引號、括號和括號組合
  • 提供 Earth Engine 函式程式碼補全提示

程式碼編輯器上方有按鈕,可用於執行指令碼、儲存指令碼、重設輸出圖表和控制台,以及取得指令碼連結。按下「取得連結」按鈕後,瀏覽器的網址列會顯示專屬連結。這個連結代表按下按鈕時,編輯器中的程式碼。

API 參考資料 (「文件」分頁)

程式碼編輯器左側的「Docs」分頁含有完整的 JavaScript API 說明文件。您可以透過「文件」分頁搜尋及瀏覽說明文件。

指令碼管理工具 (「指令碼」分頁)

「Scripts」分頁標籤位於程式碼編輯器左側面板的 API 說明文件旁邊。指令碼管理工具會將私人、共用和範例指令碼儲存在 Google 代管的 Git 存放區中。存放區會依據存取層級排序,私人指令碼會儲存在您擁有的存放區中,位於「Owner」資料夾:users/username/default。除非您與他人共用,否則只有您可以存取「Owner」資料夾中的存放區。Writer 資料夾中的存放區,是指擁有者已授予您寫入權限的存放區。您可以新增指令碼至 Writer 資料夾中的存放區、修改其中的現有指令碼,或變更存放區的存取權 (但無法移除擁有者)。Reader 資料夾中的存放區,是指擁有者已授予您讀取存取權的存放區。「Examples」資料夾是 Google 管理的特殊存放區,其中包含程式碼範例。「Archive」資料夾包含您有權存取的舊版存放區,但這些存放區的擁有者尚未將其從舊版 Script Manager 遷移。使用「指令碼」分頁頂端的篩選列,搜尋指令碼。

指令碼管理工具

圖 2. 指令碼管理工具。

按一下 按鈕,即可在「Owner」資料夾中建立新的存放區,或是在存放區中建立資料夾和檔案。您可以使用 圖示重新命名指令碼,並使用 圖示刪除指令碼。您可以使用拖曳方式移動指令碼,並將指令碼整理到資料夾中 (圖 2)。如果您將指令碼拖曳至其他存放區,系統就會複製該指令碼。

所有指令碼和存放區都會保留完整的版本記錄。按一下指令碼或存放區旁的 圖示,即可比較或還原至舊版。如要刪除存放區,請按一下 圖示。如要設定存放區存取權,請按一下存放區名稱旁的 圖示。請注意,如果您共用存放區,共用對象必須按一下設定對話方塊中的連結,才能接受存放區。如要隱藏先前接受的存放區,請在指令碼管理工具中按一下存放區名稱旁的 圖示。

您可以使用 Git 存取存放區,在 Code 編輯器外管理及編輯指令碼,或將指令碼與 GitHub 等外部系統同步。(請參閱這份教學課程,進一步瞭解 Git)。按一下存放區名稱旁的 圖示,即可查看存放區複製操作說明。請注意,您可以前往 earthengine.googlesource.com 瀏覽可存取的存放區。對於某些 Git 作業,您可能需要建立驗證憑證,方法是前往 earthengine.googlesource.com 頁面頂端的「產生密碼」連結。

指令碼模組

建議您編寫模組化可重複使用的程式碼,以便在指令碼之間共用,而無須大量複製和貼上。為支援模組化開發,Earth Engine 提供在指令碼之間共用程式碼的功能。舉例來說,假設您編寫的函式可執行一組實用的作業。與其將函式的程式碼複製到新指令碼,不如讓新指令碼直接載入函式。如要讓函式或物件可供其他指令碼使用,請將其新增至名為 exports 的特殊物件。如要在其他指令碼中使用程式碼,請使用 require 函式載入其他指令碼中的匯出項目。舉例來說,假設您在名為 Modules 的資料夾中,以名為 FooModule.js 的檔案定義下列模組:

/**
 * The Foo module is a demonstration of script modules.
 * It contains a foo function that returns a greeting string.
 * It also contains a bar object representing the current date.
 * @module Modules/FooModule
 */

/**
 * Returns a greeting string.
 * @param {ee.String} arg The name to which the greeting should be addressed
 * @return {ee.String} The complete greeting.
 */
exports.foo = function(arg) {
  return 'Hello, ' + arg + '!  And a good day to you!';
};

/**
 * An ee.Date object containing the time at which the object was created.
 */
exports.bar = ee.Date(Date.now());

請注意,exports 關鍵字以 exports.objectToExport 的形式使用。您可以使用 require 函式,在其他指令碼中使用這個模組。例如:

var Foo = require('users/username/default:Modules/FooModule.js');

print(Foo.doc);

print(Foo.foo('world'));

print('Time now:', Foo.bar);

require 函式會預期字串,該字串會描述模組位置的絕對路徑。具體來說,require() 的引數採用 'pathToRepository:pathToModuleScript' 的格式。您只能從您擁有和/或具有讀取權的存放區載入模組。如果您希望其他人能夠使用您的模組,則必須將存放區與您希望存取的其他使用者共用。您可能想為模組撰寫文件,協助其他人瞭解如何使用模組;我們建議使用 JSDoc 樣式搭配 @module 標記

您可以使用網址參數 ?scriptPath={repo}:{script} 分享至存放區的檔案參照,例如 https://code.earthengine.google.com/?scriptPath=users/username/utils:utils。造訪網址後,系統會根據您對共用存放區的權限層級,將參照的檔案及其存放區新增至「指令碼」分頁的「Reader」或「Writer」目錄。

資產管理工具 (「資產」分頁)

素材資源管理工具位於左側面板的「素材資源」分頁中。使用資產管理工具 (圖 3) 在 Earth Engine 中上傳及管理自己的圖片素材資源。詳情請參閱資產管理工具頁面

資產管理員

圖 3. 資產管理工具。

您可以透過編碼網址分享程式碼編輯器指令碼。以下各節將說明產生指令碼網址的各種方式、可用的選項,以及管理指令碼網址的方法。

程式碼編輯器頂端的「取得連結」按鈕 (圖 4) 提供介面,可用來產生指令碼網址和設定指令碼行為選項。請注意下方所述的快照和已儲存指令碼網址之間的差異。

歡迎參閱

圖 4. 「取得連結」按鈕。

您可以透過編輯器頂端的「取得連結」按鈕,建立並分享經過編碼的快照網址,以便分享編輯器中的程式碼。當有 Earth Engine 帳戶的使用者造訪該網址時,瀏覽器會前往程式碼編輯器,並複製建立連結時的環境,包括程式碼、匯入內容、地圖圖層和地圖位置。按一下「取得連結」按鈕,系統就會自動將指令碼連結複製到剪貼簿。此外,系統也會顯示對話方塊,提供可用來控管共用指令碼執行作業的選項,以及用來複製及造訪產生的連結的按鈕。控制選項包括防止指令碼自動執行,以及在使用者開啟共用連結時隱藏程式碼窗格。您可以按下「Esc」鍵或點選頁面上的其他位置,關閉可拖曳的對話方塊。

您可以選擇分享儲存的腳本連結,系統會一律載入最近儲存的版本,且只有您和目前存取包含該腳本的存放區的其他使用者可以存取該連結。如要使用這項功能,請從「指令碼管理員」分頁載入已儲存的指令碼,然後按一下「取得連結」按鈕右側的下拉式箭頭,並選取「複製指令碼路徑」。系統會顯示對話方塊,提供可共用的指令碼網址。請注意,瀏覽器的網址列中也已設定指令碼網址。如要瞭解如何與其他人共用存放區,請參閱「指令碼管理工具」一節。

「取得連結」按鈕右側的下拉式選單按鈕提供「管理連結」選項。按一下這個選項會載入新的瀏覽器分頁,並提供介面,讓您回憶、移除及下載先前產生的指令碼連結。選取指令碼並按下下載按鈕,系統就會將壓縮資料夾 (「code_editor_links.zip」) 下載到系統,其中包含每個所選指令碼的 .txt 檔案表示法。

ui.url 模組可透過 getset 方法,以程式輔助方式操控指令碼網址的片段 ID。也就是說,Code Editor 指令碼和 Earth Engine 應用程式可以讀取及儲存網頁網址中的值。請注意下列兩個網址的結尾,第一個網址會將 debug 變數設為 false,第二個網址則會將其設為 true;請點選兩個連結,並注意第一個連結中的控制台偵錯核取方塊未勾選,而第二個連結中的偵錯核取方塊則已勾選,這會變更每個指令碼的行為。

https://code.earthengine.google.com/5695887aad76979388a723a85339fbf2#debug=false;
https://code.earthengine.google.com/5695887aad76979388a723a85339fbf2#debug=true;

這項功能可用來設定地圖縮放比例和中心位置,以及傳送連結給特定使用者或群組時可能需要自訂的其他行為。

搜尋工具

如要尋找可用於指令碼的資料集,您可以使用資料封存檔的搜尋工具。搜尋工具是指程式碼編輯器頂端的文字方塊,上面寫著「Search places and datasets...」在搜尋列中輸入資料產品、感應器或其他關鍵字的名稱,然後按一下 按鈕,即可查看符合條件的地點、光柵和表格資料集清單。按一下任何光柵或資料表結果,即可查看封存資料集中該資料集的說明。如要將資料集直接匯入指令碼,請按一下資料集說明中的「import」import連結或 按鈕。

匯入

將資料集匯入指令碼的結果會整理在指令碼頂端的匯入資料部分,並在匯入內容前保持隱藏狀態。建立一些匯入項目後,畫面應會顯示類似圖 5 的畫面。如要將匯入項目複製到其他指令碼,或將匯入項目轉換為 JavaScript,請按一下「Imports」標題旁的 圖示,然後將產生的程式碼複製到指令碼中。您可以使用 圖示刪除匯入內容。

程式碼編輯器匯入部分

圖 5. 程式碼編輯器頂端的匯入部分。

地圖

API 中的 Map 物件是指程式碼編輯器中的地圖顯示畫面。舉例來說,Map.getBounds() 會傳回 Code 編輯器中顯示的地理區域。請查看 API 中的 Map 函式,瞭解此顯示器的其他自訂選項。

圖層管理工具

使用地圖右上角的「圖層管理員」調整地圖上已新增圖層的顯示方式。具體來說,您可以使用滑桿切換圖層的顯示設定,或調整圖層的透明度。按一下 圖示,即可調整個別圖層的圖表參數。您可以使用顯示的視覺化工具 (圖 6),以互動方式設定圖層顯示參數。按一下工具右側的按鈕 (預設會執行自訂的拉伸作業,將顯示範圍拉伸至所提供的最大值和最小值),即可將顯示範圍以線性方式拉伸至顯示視窗中圖像值的百分比或標準差。統計資料會根據目前縮放等級下地圖視窗中的所有像素計算。使用滑桿調整伽瑪和/或透明度。按一下「調色盤」單選按鈕,然後透過新增顏色 ()、移除顏色 () 或手動輸入以半形逗號分隔的十六進位字串清單 () 來指定自訂調色盤。按一下「套用」,即可將視覺化參數套用至目前的顯示畫面。按一下「Import」,即可在指令碼的匯入區段中,將視覺化參數物件載入為新變數。

圖層視覺化工具。

圖 6. 圖層視覺化工具。

「檢查工具」分頁

工作管理員旁的「檢查工具」分頁可讓您以互動方式查詢地圖。啟用「Inspector」分頁後,游標會變成十字線,當您在地圖上點選時,系統會在游標下方顯示位置和圖層值。舉例來說,圖 7 顯示在「Inspector」分頁中點選地圖的結果。系統會顯示游標位置和縮放等級,以及像素值和地圖上的物件清單。物件清單可供互動。如要查看更多資訊,請展開「Inspector」分頁中的物件。

「檢查工具」分頁

圖 7. 「檢查器」分頁會顯示游標位置和游標下方的圖層值相關資訊。

「控制台」分頁

當您從指令碼中print()某些內容 (例如文字、物件或圖表) 時,結果會顯示在控制台中。控制台是互動式介面,因此您可以展開已列印的物件,進一步瞭解相關詳細資料。

「Tasks」分頁

Earth Engine 工作是指可執行的作業,其執行時間遠超過標準 API 要求逾時時間。這些長時間執行的工作是唯一可在 Earth Engine 和相鄰系統 (Google Cloud Storage、Google 雲端硬碟等) 中建立持久性構件的機制,可分為 ImportExport 兩類。

您可以使用匯入工作,從各種檔案類型 (.csv.tif 等) 中上傳圖片上傳資料表至 Earth Engine。匯出工作可用於執行及寫入 EE 運算系統的結果 (請參閱匯出資料指南)。

針對匯出作業,程式碼編輯器中每個 Export 函式的呼叫都會在「Tasks」分頁的「Unsubmitted tasks」部分填入一個項目。如要將匯出工作提交至伺服器,請按一下工作旁的「Run」按鈕。系統隨即會顯示設定對話方塊,讓您為工作指定各種參數。如果工作在建立時已完全指定 (也就是對 Export 的呼叫具有所有必要參數),請按住 ctrl,然後點選「Run」,即可提交工作,而不會顯示對話方塊。

匯入作業會先在本機上傳檔案,再將工作提交至伺服器。上傳階段中的匯入工作會在「未提交的工作」部分顯示進度,並在檔案上傳完成後自動提交至伺服器。

未提交的工作只會顯示在建立這些工作的頁面上,且在關閉頁面時會遺失。工作提交至伺服器後,只要在 UI 中按一下該工作所在的資料列,即可取得工作狀態的其他資訊和選項,包括要求取消的選項。

如要在全頁檢視畫面中查看及取消多項工作 (包括在行動用戶端上),請使用 Cloud Console 中的「工作」頁面

Profiler

分析器會顯示特定演算法和運算的其他部分所耗用的資源 (CPU 時間、記憶體) 相關資訊。這有助於診斷為何指令碼因記憶體限制而執行緩慢或失敗。如要使用分析器,請點選「Run」按鈕下拉式選單中的「Run with profiler」選項。如要使用快速鍵,請按住 Alt 鍵 (在 Mac 上為 Option 鍵) 並點選「Run」(執行),或按下 Ctrl + Alt + Enter 鍵。這會在程式碼編輯器的右側啟用「Profiler」分頁。指令碼執行時,「Profiler」分頁會顯示指令碼中的資源用量表格。按一下「Run」按鈕 (不進行剖析) 會使「Profiler」分頁消失,並停用剖析器。

如要查看剖析器輸出的詳細資料,請參閱「運算總覽」頁面。

幾何學工具

您也可以在畫面上繪製幾何圖形,然後將其匯入腳本。如要建立幾何圖形,請使用地圖顯示畫面左上角的幾何圖形繪製工具 (圖 8)。如要繪製點,請使用地標圖示 ;如要繪製線條,請使用線條圖示 ;如要繪製多邊形,請使用多邊形圖示 ;如要繪製矩形,請使用矩形圖示 。(請注意,矩形是平面幾何圖形,因此無法放置在包含線條和多邊形等測地幾何圖形的圖層上)。

使用任何繪圖工具,系統就會自動建立新的幾何圖層,並將該圖層的匯入內容加入「匯入內容」部分。如要將幾何圖形新增至新圖層,請將滑鼠游標懸停在地圖顯示中的「幾何圖形匯入」上,然後按一下「+ 新圖層」連結。您也可以在「幾何圖形匯入」部分切換幾何圖形的顯示設定。請注意,繪製的幾何圖形預設為大地測量,但矩形則僅為平面。使用幾何圖形建構函式將這些圖形轉換為平面幾何圖形。如要進一步瞭解 Earth Engine 中的幾何圖形,請參閱「幾何圖形」頁面。

圖 8. 幾何圖形繪製工具位於地圖顯示畫面的左上角。

如要設定將幾何圖形匯入指令碼的方式,請在地圖的「幾何圖形匯入」部分或程式碼編輯器的「匯入」部分,按一下圖層旁邊的 圖示。對話方塊中會顯示幾何圖層設定工具,如圖 9 所示。請注意,您可以將繪製的形狀匯入為幾何圖形、地圖項目或地圖項目集合。您也可以透過幾何匯入設定變更圖層顯示的顏色、為圖層新增屬性 (如果圖層是匯入為 FeatureFeatureCollection),或變更圖層名稱。

幾何圖形設定工具

圖 9.幾何圖形設定工具。

最後,如要避免編輯圖層中的幾何圖形,請按下圖層旁的 圖示,即可鎖定圖層。這樣做會導致無法在圖層上新增、刪除或編輯任何幾何圖形。如要再次解鎖圖層,請按下 圖示。

該怎麼辦?

按一下程式碼編輯器右上方的 按鈕,即可查看本開發人員指南的連結、其他說明論壇、程式碼編輯器的導覽,以及可協助編寫程式碼、執行程式碼和在地圖上顯示資料的鍵盤快速鍵清單。按一下 按鈕,即可回報錯誤、要求新功能、建議資料集,或在不需要回應時傳送其他意見回饋。