king言成耳总

导航

【Google Earth Engine编程语言学习笔记】image、imageCollection

一、【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)

 

posted on 2020-12-31 19:14  king言成耳总  阅读(4158)  评论(0编辑  收藏  举报