Google Earth Engine(GEE)——調試(語法和客戶端)錯誤指南!

      網友投稿 1137 2022-05-30

      調試指南

      Earth Engine 不同于用于地理空間數據分析的傳統圖像處理、GIS 或其他桌面軟件。您在 Earth Engine 中創建的算法在 Google 云中運行,分布在多臺計算機上。調試可能具有挑戰性,因為錯誤可能發生在客戶端 JavaScript 代碼或編碼指令的服務器端執行中,并且是由擴展問題以及語法或邏輯錯誤引起的。除非您要求,否則無法檢查在云中某處運行的程序部分。本文檔介紹了調試策略、工具和解決方案,以幫助您解決常見錯誤和調試 Earth Engine 腳本。

      官方給出的指南鏈接:

      https://youtu.be/_ihm85Fy8yM

      語法錯誤

      客戶端 JavaScript 中的語法錯誤通常由代碼編輯器捕獲,它會通過×編輯器面板左側的警告您它們的存在。?將光標懸停在上將提供有關錯誤來源的線索。例如,圖 1 說明了當列表編碼不正確時會發生什么。具體來說,如果沒有右括號 (?]),則列表未正確指定,代碼編輯器將這個問題解釋為Expected ']' to match '[' from line 1 and saw ';'.

      客戶端錯誤

      盡管 JavaScript 語法正確,但可能存在與腳本的一致性或邏輯相關的錯誤。以下示例演示了使用不存在的變量和方法所導致的錯誤:

      錯誤— 此代碼不起作用!

      // 加載Sentinel-2影像.

      var image = ee.Image('USGS/SRTMGL1_003');

      // Error: "bandNames" 這里之前并沒有設置波段名稱這個變量所以錯誤

      var display = image.visualize({bands: bandNames, min: 0, max: 9000});

      // Error: image.selfAnalyze不是一個函數所以不可以直接使用

      var silly = image.selfAnalyze();

      Google Earth Engine(GEE)——調試(語法和客戶端)錯誤指南!

      第一個錯誤通知您bandNames變量未在引用它的范圍內定義。作為解決方案,設置變量或為參數提供列表bands參數。第二個錯誤演示了selfAnalyze()調用不存在的函數時會發生什么。由于這不是圖像上的真正方法,也就是說這個不是可以直接用在image上的函數,因此錯誤告訴您它不是函數。在這兩種情況下,錯誤都是對問題的描述。

      "?...is not a function" 錯誤可能是因為 Earth Engine 不知道變量的類型。此問題的常見表現是:

      對返回的對象執行某些操作first()(集合中元素的類型未知)。

      對返回的對象執行某些操作get()(存儲在屬性中的元素類型未知)。

      當參數的類型未知時對函數參數(在函數中)做一些事情。

      以前者為例:

      錯誤— 此代碼不起作用!

      var collection = ee.ImageCollection('MODIS/051/MOD44B');

      // Error: collection.first(...).date is not a function

      var date = collection.first().date();

      在所有情況下的解決方案是使用已知類型的構造函數來強制轉換未知類型的對象。繼續前面的示例,解決方案是強制轉換為?ee.Image:

      解決方案——使用括號或者添加影像ee.image,這樣才能獲取!

      var date = ee.Image(collection.first()).date();

      避免混合客戶端和服務器功能

      下面的例子不太明顯:

      錯誤——這段代碼沒有做你想要的

      // 不要混淆 EE objects and JavaScript objects:

      var image = ee.Image('USGS/SRTMGL1_003');

      var nonsense = image + 2;

      //你可以打印但這不是你想要的結果

      print(nonsense);

      // Error: g.eeObject.name 這不是一個正確的變量,所以無法加載地圖

      Map.addLayer(nonsense);

      解決方案——使用服務器功能!

      Map.addLayer(image.add(2));

      瀏覽器鎖

      啊,啪!如果您遇到導致 Chrome 瀏覽器鎖定的錯誤,您可能會看到如圖 所示的窗口。

      發生這種情況時,通常是因為 JavaScript 在客戶端中運行時間過長,或等待 Earth Engine 的某些內容。此錯誤的兩個常見來源是 for 循環和/或getInfo()在您的代碼中,最壞的情況是?getInfo()在 for 循環內。For 循環會導致瀏覽器鎖定,因為代碼在您的機器上運行。另一方面,getInfo()?從地球引擎同步請求計算結果,阻塞直到收到結果。如果計算需要很長時間,阻塞可能會導致您的瀏覽器鎖定。避免 for 循環和getInfo()

      Image JavaScript

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:IT運維管理中可能存在的關鍵問題 華匯數據
      下一篇:實戰分布式系統 - python實現Multi-Paxos - 1
      相關文章
      亚洲国产综合专区在线电影| 久久亚洲AV无码西西人体| 在线精品亚洲一区二区三区| 国产成人va亚洲电影| 亚洲大尺度无码无码专线一区| 国产成人精品日本亚洲直接| 亚洲国产成人久久三区| 久久亚洲精品无码aⅴ大香 | 国产V亚洲V天堂A无码| 国产成人精品日本亚洲网站| 亚洲av永久无码精品漫画| 亚洲国产精品VA在线看黑人 | 亚洲 欧洲 日韩 综合在线| 久久精品亚洲AV久久久无码| 日本亚洲精品色婷婷在线影院| 亚洲a级在线观看| 亚洲一级毛片免费观看| 中文字幕亚洲男人的天堂网络| 四虎亚洲精品高清在线观看| 最新亚洲卡一卡二卡三新区| 亚洲sm另类一区二区三区| www国产亚洲精品久久久| 2048亚洲精品国产| 国产成人无码综合亚洲日韩 | 亚洲高清最新av网站| 一本久久a久久精品亚洲| 亚洲AV永久无码精品| 亚洲黄网站wwwwww| 亚洲毛片基地4455ww| 亚洲欧美aⅴ在线资源| 亚洲国产一区二区视频网站| 中文亚洲AV片在线观看不卡| 亚洲AV午夜成人片| 亚洲天堂电影在线观看| 亚洲另类自拍丝袜第五页| 一区二区三区亚洲视频| 亚洲色成人WWW永久网站| 亚洲天堂久久精品| 亚洲日日做天天做日日谢| 狼人大香伊蕉国产WWW亚洲| 亚洲中久无码永久在线观看同|