一、【image】
(1)創建
1.GEE自帶
https://developers.google.com/earth-engine/datasets/catalog
主要有landsat、sentinel哨兵、srtm高程、land cover土地利用
2.用戶上傳
3.ee.image() ee.image.constant()感覺沒太多用處,建立一個圖像
4.ee.Image.pixelLonLat()創建一個沒有分辨率的柵格圖像,這個柵格圖像任意點的屬性值為經緯度
(2)編輯
1.image.mask()掩膜
var 被掩膜裁減圖形的名稱=ee.Image(圖形的路徑) var 掩膜的名稱=ee.Image(圖形的路徑).select(屬性字段).eq.(1)//選擇屬性字段值等於1的值作為掩膜 var 被裁減過后的圖形名稱=被掩膜裁減圖形的名稱.mask(掩膜的名稱) Map.addLayer(被裁減過后的圖形名稱)//將被裁減過后的圖形添加到地圖中
2.image.clip()裁減
var 被裁減圖形的名稱=ee.Image(圖形的路徑) var 矢量邊界=ee.FeatureCollection(圖形的路徑).filterBounds(ee.Geometry.point([經度,緯度])//選擇該點所在的矢量邊界為裁減邊界 var 被裁減過后的圖形名稱=被掩膜裁減圖形的名稱.clip() Map.addLayer(被裁減過后的圖形名稱)//將被裁減過后的圖形添加到地圖中
3.image.select()選擇波段
var 需要挑選的波段=導入的圖像數據.select('波段名稱')
4.image.slice()選擇波段
var 挑選的波段=導入的圖像數據.slice(起始波段號,終止波段號)
如slice(2,5),即挑選出第3、4、5波段。
4.image.addBands()添加波段
var 波段1=圖像.select('B1') var 波段2=圖像.select('B2') var 波段12=波段1.addBands('波段2')
5. image.reproject(投影的信息)圖像投影
6.image.rgbtohsv()RGB轉為HSV image.hsvtorgb()HSV轉為RGB
7.image.uint8()數據轉換對單波段圖像進行 int long float double。。。。
8.image.cast()對多波段的數據進行轉換
var img_cast=img.cast({'B3':'double','B4':'double','B5':'double',},['B5','B4''B3'])
9.image.set()設置屬性值 image.setMulti({ })多字段設置屬性值
10.image.remap([轉換之前的])對屬性方面的重分類
11.image.where(圖像.lt(4000),0)對空間層面的重分類,將圖像值小於4000的賦值為0
12.image.metadata('前',‘命名后’)
13.image.clamp(450,800)掐斷操作,對於450以下,800以上的值全部賦值為0
14.image.uintScale(-238,5268)將最小值到最大值的區間變為0-1
15.image.interpolate(x,y,超出所提供功能范圍的點的方法,包括'extrapolate', 'clamp', 'mask' or 'input')將輸入圖像第一個波段中的每個點插值到x和y數組指定的分段線性函數中。
原始均勻的拉伸顯示效果就會變成分段的顯示效果
16.image.eq/neq/gt/gte/lt/lte進行比較操作,等於,不等於,大於,大於等於,小於,小於等於。。。、
17.Image.and()/or() 對不同波段進行運算
18.image.abs()/mod()/round()/floor()/ceil()/sqrt()/exp/log()/log10()
19.image.add/subtract/multiply/divide()可以進行波段運算
20.image.expression('波段表達式',{‘NIR’:img.select('B5'),‘RED’:img.select('B4'),‘BLUE’:img.select('B2')})就會計算出通過波段表達式表達出來的值。
21.image.sin()/cos()/tan()......
22.image.bitwiseAnd/bitwiseOr()二進制計算
(3)地形
1.image.derivative()對每個像元值進行微分操作。
2.ee.Terrain.products()或ee.Algorithms.terrain圖像的表面分析函數,然后會得出三個波段,分別為陰影、坡度、坡向
var DEM=ee.image('...') var DEM_pro=ee.Terrain.products(DEM) Map.addLayer(DEM) Map.addLayer(DEM_pro,{bands:['slope']}) Map.addLayer(DEM_pro,{bands:['aspect']}) Map.addLayer(DEM_pro,{bands:['hillshade']})
3.ee.Terrain.hillshadow()或ee.Algorithms.Hillshadow()生成表面紋理,在生成紋理前需要設置投影,坡度之間的距離為米,而不是經緯度
4.ee.Terrain.fillMinima()將圖像最低處河谷位置填充成類似盆地的效果
(4)紋理
1.image.entropy()熵值操作,高程變化快的地方熵值大
2.image.glcmTexture()紋理操作,圖像識別
3.image.zeroCrossing()對圖像海拔0值的過度,在此之前需要減掉起始值
4.ee.Algorithms.CannyEdgeDetector()檢測紋理邊界
(5)鄰域
1.image.focal_max最大值/focal_mean平均值/focal_median中間值/focal_min最小值/focal_mode模
指定一個搜索半徑,發現在這個搜索半徑中符合搜索定義,則將這個值定義為該鄰域的值
如image.focal_max(5,'circel','pixels')用圓形來搜索,將每個鄰域的值替換為該鄰域的最大值
2.image.convolve()定義一個矩陣,相當於卷積,把圖像模糊化和銳化
3.image.reduceNeighborhood()
var DEM=ee.image('...') var DEM_nei=DEM..reduceNeighborhood(ee.Reducer.mean(),ee.Kernel.circle(4))//相當於做了均值濾波
(6)轉換
1.image.reduceToVectors()柵格轉矢量
2.image.ImageCollection()將單個柵格轉為柵格數據集
3.image.ToArray()將多波段值轉化為array圖像
ArrayImage.arrayFlatten()將array圖像轉化為多波段圖像,需要對每個波段進行命名
柵格圖像轉化為矢量圖像很重要,服務於將原來的空間信息轉化為連續的事件信息,對時間信息進行擬合
(7)其他
1.image.reduceRegion()對某個區域進行數學統計
2.image.distance()相當於柵格的緩沖區分析
3.Export.image().toDrive()輸出保存
輸入各種參數及保存路徑
二、【imageCollection】
(1)創建
1.ee.ImageCollection(輸入柵格數據集的名稱路徑) ee.ImageCollection.load()
而通常是在搜索欄中輸入柵格關鍵字,點擊import
(2)篩選
1.filterMetadata(雲層覆蓋量,小於,0.1)通過基本屬性篩選,等同於ee.filter.Metadata
2.filterBounds(某地的行政邊界.geometry)通過位置篩選,等同於ee.filter.Bounds
3.filterDate(起始時間,終止時間)通過時間篩選,等同於ee.filter.Date
4.limit(10)選擇前10條數據集
5.select()與image中的select大同小異
select(['B3','B4','B5'](選擇的波段),['NIR','R','G'](重命名))注意選擇出來的波段需要有相同的屬性
6.distinct()類似於featureCollection中的distinct
對原始數據中重復的數據進行刪除
7.combine()將兩個數據及合並為一個,從一個數據中選擇兩個波段,進行組合,組合后不再是同一個圖像的兩個波段,成為了兩個獨立的柵格圖像
8.uint8數據結構變化
9.set對屬性信息進行更改;setMulti對多個屬性信息進行更改
(3)求值
1.mosaic()圖像鑲嵌
var img1=ee.image(' ..') var img2=ee.image(' ..') var img=ee.imageCollection([img1,img2]) var img_mos=img.mosaic()
imageCollection([img1,img2])具有兩個不同的圖像
但是mosaic后變成一個圖像。
2.and/or,波段之間的且和或
sum求和/product求連乘積/max求最大/min最小/mode模/median中間值/count計數,首先得選擇一些自己要計算的波段,然后對每個波段進行計算
(4)轉換
1. first()會返回imageCollection中第一個圖像
var L8=ee.imageCollection('...').filterBounds(ee.Geometry.point(經度,緯度)).filterDate(起止時間).select('B[3-5]').sort('date_acquired'); var L8_1=L8.first()
2.toList()將圖像波段轉化為list格式,通過get命令獲取第幾個波段
3.toArray()也可以轉化為array圖像
4.map()
var L8=ee.imageCollection('...').filterBounds(ee.Geometry.point(經度,緯度)).filterDate(起止時間).select('B[4,5]').limit(3); function addndvi(image){ var ndvi=image.normalizedDifference(['B4','B5']) return image.addBands(ndvi) } var L8_ndvi=L8.map(addndvi)