本文主要對GEE中的JavaScript代碼基礎規則與語句、函數等加以介紹。本文是谷歌地球引擎(Google Earth Engine,GEE)系列教學文章的第九篇,更多GEE文章請參考專欄:GEE學習與應用(https://blog.csdn.net/zhebushibiaoshifu/category_11081040.html)。
在前面的八篇GEE推文中,我們對GEE的基本與主要操作加以了詳細介紹與應用實踐;通過前八篇文章,我們初步了解了GEE的簡單規則與應用。有了初步的了解,我們便可以開始更為深入的學習;是以,從本篇推文開始,我們就将對GEE的代碼細節與實際應用加以進一步的、更為廣泛且細緻的介紹與實踐。那麼,本文先從前面幾篇推文沒有提及的JavaScript語言代碼基礎規則與語句、函數等入手,進行細緻梳理。
1 JavaScript代碼基礎規則
本部分介紹JavaScript代碼的基礎規則。其中,以下每一條為一個規則。
- 每一行代碼都需要以分号
結尾:;
var my_age=18;
複制
- 利用關鍵詞
創造新變量:var
var my_age=18;
複制
- 利用括号
傳遞函數的參數:()
print("My name is GIS");
複制
- 文本等
格式資料以單引号String
或雙引号''
作為起止符号:""
var string_data="My name is GIS";
複制
-
格式資料以方括号List
作為起止符号:[]
var list_data=["my","name","is","GEE"];
複制
-
格式資料初始下标為 。List
- 方括号
可以用來通過[]
值擷取字典的key
值:value
print(dict_data["Name"]);
複制
- 點符号
亦可以用來通過.
值擷取字典的key
值:value
print(dict_data.Name);
複制
- 字典格式資料通過大括号
進行定義:{}
var dict_data={"Name":"GIS","Age":"18","Home":"Henan"};
複制
- 兩個正斜杠
可以作為注釋的開始://
var my_name="GIS";//Define my name.
複制
- 多行内容注釋可以用
作為結束:/```作為開始,用```/
var my_name="GIS";
/*
Here
is
a
multi-line
comments
*/
複制
2 JavaScript代碼基礎函數與語句
本部分介紹JavaScript代碼的基礎函數與語句。其中,以下每一段為一個方面的函數或語句。
在Google Earth Engine谷歌地球引擎栅格代數與NDVI計算中,我們運用了
.subtract()
函數表示波段之間進行相減的操作;而若參與運算的參數均為常數(即參數不含圖像),我們還可以直接通過數學符号進行運算:
print(3-2);
複制
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAjM2EzLcd3LcJzLcJzdllmVldWYtl2Pn5GcukDO2QTZ2YDNwE2N0UTN5IGZjVjY1MDZiJTOxEmY4MzYvwFM4QTN1UDOtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
我們可以在
print()
函數中,增加用單引号或雙引号表示的字元串格式的内容,進而對即将列印的内容加以描述:
print("Subtracting two from three equals:",3-2);
複制
對于一些常用的操作步驟,我們可以将其封裝至一個函數中,進而提升代碼運作效率。例如以下兩個函數,我們分别首先對其加以定義,随後通過
print()
函數加以調用:
var hello=function(string){
return "Hello "+string+"!";
};
print(hello("GISer"));
var my_add=function(a){
return a+7;
};
var b=100;
print(b+" plus 7 is:"+my_add(b));
複制
在Google Earth Engine谷歌地球引擎資料導入與篩選顯示中,我們通過搜尋的方式導入了GEE内置的遙感影像資料與各類矢量資料;而在實際應用中,我們往往通過代碼調用的方式導入需要的資料。例如,通過如下代碼導入Landsat 5 Collection 1 Tier 1的大氣表觀反射率TOA Reflectance産品;其中,
Path
與
Row
号分别為
123
與
032
(覆寫北京市),成像時間為2010年06月05日。
var landsat_5=ee.Image("LANDSAT/LT05/C01/T1_TOA/LT05_123032_20100605");
複制
導入資料完畢後,我們可以通過
Map.setCenter()
函數,将互動式地圖的顯示位置自動定位到指定的位置。其中,前兩個參數為指定點的經度與緯度,地圖将以這個點為中心進行定位;第三個參數為地圖的縮放比例系數,其數值越大表示縮放的精度越高——一般的,縮放比例系數為
1
時即為全球視野,為
5
時即為大洲視野,為
10
時即為城市視野,為
15
時即為街道視野,為
20
時則為建築物視野。例如,将縮放比例系數固定為
17
,執行如下代碼,就可以看到新街口外大街與西側的北京師範大學。
Map.setCenter(116.36863, 39.961029,17);
//Map.addLayer(landsat_5,{},"LANDSAT5");
複制
歡迎關注公衆号:瘋狂學習GIS