目录
Image中的projection(),reproject()
Image.unitScale()、Image.cast()
Image的表达式计算:Image.expression()
土地利用数据集:ESA/GLOBCOVER_L4_200901_200912_V2_3
里面有这两个波段landcover和qa
Image.get()
Image.clip()
注意:clip是作用在Image上的,不能作用在ImageCollection上。
如果想获取感兴趣区域的影像集,可以对ImageCollection进行map遍历,在map函数中对image进行clip即可
var sichuan = ee.FeatureCollection("users/lcljv1066965/test/sichuan"),
dem = ee.Image("USGS/SRTMGL1_003");
print("dem",dem)
print("sichuan",sichuan)
var sichuan_dem = dem.clip(sichuan)
Map.setCenter(106.8, 29.3,5)
Map.addLayer(sichuan_dem,{min:0,max:2000})
Image.select()
提取出想要的波段
var img_cover = ee.Image("ESA/GLOBCOVER_L4_200901_200912_V2_3");
print(img_cover)
print(img_cover.select())
print(img_cover.select('landcover'))
Image.addBands()
添加波段
var img_cover = ee.Image("ESA/GLOBCOVER_L4_200901_200912_V2_3");
print(img_cover)
var band1=img_cover.select('landcover')
var band2=img_cover.select('qa')
print(band1.addBands(band2))
Image中的projection(),reproject()
var l8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_RT");
var img = ee.Image(l8.filterBounds(ee.Geometry.Point(106.4958, 29.5856)).first())
print(img)
print(img.select('B1').projection())//这里直接img.projection()会报错
var img_reproject = img.reproject('EPSG:3857',null,100)//重投影为3857,重采样为100m
print(img_reproject)
print(img_reproject.projection())//这里直接img.projection()不会报错
Map.setCenter(106.58365, 29.56972,15)
Map.addLayer(img,{"bands":["B5","B4","B3"],"min":10586,"max":18154},'30m')
Map.addLayer(img_reproject,{"bands":["B5","B4","B3"],"min":10586,"max":18154}, '100m')
Image.unitScale()、Image.cast()
- Image.unitScale():栅格的归一值化--将给定区间内的数值范围转换为0-1的区间内。此算法总是生成浮点像素。
- Image.cast():强制转换数据类型
var l8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_RT");
var img=l8.first().select(['B3','B4','B5'])
var img_unitScale=img.unitScale(0,32628)//使输入值的范围[低,高]变为[0,1]。此算法总是生成浮点像素。
var img_cast = img.cast({'B3':'long','B4':'double','B5':'float'},['B3','B4','B5'])
//img.cast() 将图像的部分或全部带区强制转换为指定类型
print(img,img_unitScale,img_cast)
Image.set()、Image.setMulti()
var modis = ee.ImageCollection("MODIS/006/MOD09A1");
var img=modis.first()
print(img)
print(img.set('createDate',2020).setMulti({'author':'lijiang', 'age':'22'}))
Image.remap()
var img_cover = ee.Image("ESA/GLOBCOVER_L4_200901_200912_V2_3");
var Old_Id = ee.List([11,14,20,30,40,50,60,70,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230])
var New_Id = ee.List([0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 7, 8])
var Land_Cover = img_cover.select('landcover');
var Land_Remap = Land_Cover.remap(Old_Id,New_Id,8,'landcover')
print(Land_Cover,Land_Remap)
Map.setCenter(102.919, 30.199,6)
Map.addLayer(Land_Cover)
Map.addLayer(Land_Remap,{"palette":["f1ff27","35ce48","07fff3","f017ff","e78845","250bff","ffffff","ffffff"]},
'remaped')
Image的比较筛选:
var night_Light = ee.ImageCollection("NOAA/DMSP-OLS/NIGHTTIME_LIGHTS"),
sichuan = ee.FeatureCollection("users/lcljv1066965/test/sichuan");
var img_night_Light =night_Light.select('stable_lights').first().clip(sichuan);
var urban = img_night_Light.gte(2)//筛选夜晚灯光亮度值>=2
Map.centerObject(sichuan);
Map.addLayer(urban, {"opacity":0.33,"bands":["stable_lights"],"palette":["171801","fbff0f"]}, 'Nighttime Light');
Image的数学运算:Image.add() 等等
var l8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_RT");
var img = l8.filterBounds(ee.Geometry.Point(106.5749, 29.5588)).first()
var B5 = ee.Image(img.select('B5'))
var B4 = ee.Image(img.select('B4'))
var NDVI = B5.subtract(B4).divide(B5.add(B4))//NDVI计算可用函数计算 也可map表达式
Map.centerObject(NDVI)
Map.addLayer(NDVI,{"min":-1,"max":1,"palette":["0f01e2","ff9d93","fff707","11ff2e","04ce14"]})
Image的表达式计算:Image.expression()
var l8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_RT");
var img = l8.filterBounds(ee.Geometry.Point(106.5749, 29.5588)).first()
var evi = img.expression(
'2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))', {
'NIR': img.select('B5'),
'RED': img.select('B4'),
'BLUE': img.select('B2')
});
Map.centerObject(evi)
Map.addLayer(evi,{"min":-1,"max":1,"palette":["0f01e2","ff9d93","fff707","11ff2e","04ce14"]})
在复杂一点的ee.Image.expression()中,中括号不要用[],而要用(),如:
Image的地形操作:山体阴影、坡向、坡度
var dem = ee.Image("USGS/SRTMGL1_003"),
sichuan = ee.FeatureCollection("users/lcljv1066965/test/sichuan")
print("dem",dem)
var img_terrain=ee.Terrain.products(dem).clip(sichuan)
print("img_terrain",img_terrain)
Map.centerObject(sichuan)
Map.addLayer(dem,{min:0,max:2000,palette:'000099,dddd00'},'Elevation')
Map.addLayer(img_terrain,{bands:['slope'],min:0,max:90,palette:'000000,ff0000'},'Slope')
Map.addLayer(img_terrain,{bands:['aspect'],palette:'00ff00,0000ff,00ff00'},'Aspect')
Map.addLayer(img_terrain,{bands:['hillshade'],min:0,max:255},'Hillshade')
Image中的填洼
Image.clamp()
Image.where()
上面的clamp函数是二分,这个where函数就可以多条件了
var sichuan = ee.FeatureCollection("users/lcljv1066965/test/sichuan"),
dem = ee.Image("USGS/SRTMGL1_003");
var sichuan_dem = dem.clip(sichuan)
var sichuan_dem_where=sichuan_dem.where(sichuan_dem.lte(500),0)
.where(sichuan_dem.gt(500).and(sichuan_dem.lte(1000)),1)
.where(sichuan_dem.gt(1000),2)
Map.centerObject(sichuan,6)
Map.addLayer(sichuan_dem,{min:0,max:2000},"sichuan_dem")
Map.addLayer(sichuan_dem_where,{min:0,max:2},"sichuan_dem_where")
Image.reduceRegion()
var img_dem = ee.Image("USGS/SRTMGL1_003");
var polygon = ee.Geometry.Polygon( [[[106.20650888671878, 29.570337903152346],
[106.54159189453128, 29.56556010779314],
[106.54159189453128, 29.725493070064537],
[106.21612192382815, 29.71952998792036]]]);
print("min",img_dem.reduceRegion(ee.Reducer.min(),polygon))
print("median",img_dem.reduceRegion(ee.Reducer.median(),polygon))
print("max",img_dem.reduceRegion(ee.Reducer.max(),polygon))
print("mean",img_dem.reduceRegion(ee.Reducer.mean(),polygon))
Map.centerObject(polygon)
Map.addLayer(img_dem.clip(polygon),{min:0,max:2000},'DEM')
Image.Reduce()
var img = ee.Image("LANDSAT/LC08/C01/T1/LC08_127040_20190407");
Map.centerObject(img);
Map.addLayer(img,{},"img")
Map.addLayer(img.reduce(ee.Reducer.min()), {max: 5000}, 'Reducer.min()');
Map.addLayer(img.reduce(ee.Reducer.median()), {max: 10000}, 'Reducer.median() 中位数');//中位数
Map.addLayer(img.reduce(ee.Reducer.mean()), {max: 12000}, 'Reducer.mean() 平均值');//平均值
Map.addLayer(img.reduce(ee.Reducer.max()), {max: 30000}, 'Reducer.max()');
Image中的mask() 、not()
我们可以通过掩膜来提取感兴趣的区域
var sichuan = ee.FeatureCollection("users/lcljv1066965/test/sichuan");
var img = ee.Image('CGIAR/SRTM90_V4').clip(sichuan);
var img_gte1000=ee.Image(img.gte(1000))
var img_lte1000=ee.Image(img.lte(1000))
Map.centerObject(sichuan, 6);
Map.addLayer(img, {min: 0, max: 3000}, 'img');
Map.addLayer(img_gte1000, {min: 0, max: 1,palette:['blue', 'red']}, 'img_gte1000');
再进一步分析
至于最后的not(),其实就相当于取反的意思
由以下可以看到,img_lte1000.not()实际上就等于img_gt1000
var sichuan = ee.FeatureCollection("users/lcljv1066965/test/sichuan");
var img = ee.Image('CGIAR/SRTM90_V4').clip(sichuan);
var img_gte1000=ee.Image(img.gte(1000))
var img_lte1000=ee.Image(img.lte(1000))
Map.centerObject(sichuan, 6);
Map.addLayer(img, {min: 0, max: 3000}, 'img');
Map.addLayer(img.mask(img_gte1000), {min: 0, max: 3000,palette:['006600', '002200', 'fff700', 'ab7634', 'c4d0ff', 'ffffff']}, 'img.mask(img_gte1000)');
Map.addLayer(img.mask(img_lte1000), {min: 0, max: 3000}, 'img.mask(img_lte1000)');
Map.addLayer(img.mask(img_lte1000.not()), {min: 0, max: 3000}, 'img.mask(img_lte1000.not())');
此外,如果不给mask()传参,如下,
var sichuan = ee.FeatureCollection("users/lcljv1066965/test/sichuan");
var img = ee.Image('CGIAR/SRTM90_V4').clip(sichuan);
Map.centerObject(sichuan, 6);
Map.addLayer(img.mask(), {min: 0, max: 3000}, 'img.mask()');
Map.addLayer(img, {min: 0, max: 3000}, 'img');
Image.unmask()
unmask的作用在于它可以将掩膜掉的区域影像值替换为任意值,而未掩膜的区域保持原值
var sichuan = ee.FeatureCollection("users/lcljv1066965/test/sichuan");
var img = ee.Image('CGIAR/SRTM90_V4').clip(sichuan);
Map.centerObject(sichuan, 6);
var palette=['006600', '002200', 'fff700', 'ab7634', 'c4d0ff', 'ffffff']
Map.addLayer(img, {min: 0, max: 3000}, 'img');
Map.addLayer(img.unmask(700), {min: 0, max: 3000,palette:palette}, 'img.unmask(700)');
Image.byte()
强制转换为无符号8位整型(unsigned int8)
var img = ee.Image('CGIAR/SRTM90_V4');
print("img",img)
print("img.byte()",img.byte())