GEE学习计划 Day·3

跟着知乎大佬:无形的风 学GEE Day·3,今天的大纲:高程数据处理、空间插值、指数计算

一、高程数据使用

GEE中高程数据包括SRTM、ASTER GDEM、GMTED2000等,在搜索框可以查到相关数据。GEE中有计算坡度(ee.Terrain.aspect)、阴影(ee.Terrian.hillshape)、坡向(ee.Terrain.slope)等算法
GEE学习计划 Day·3_第1张图片
代码中roi和area用Map左上角选取工具选择,可以直接import 到script中

//dem按高程着色显示
var dem = ee.Image(srtm);
Map.centerObject(roi,10);
var visParam = {min:0,max:3000, palette:["green","blue","red"]};
Map.addLayer(dem,visParam,"dem");

//aspect
var aspect = ee.Terrain.aspect(dem);
var cosImg = aspect.divide(180).multiply(Math.PI).cos()
//角度弧度转换后转换为余弦图像
Map.addLayer(cosImg,{min:-1,max:1},"cosImg",false);

//hillshade阴影
var hillshade = ee.Terrain.hillshade(dem);
Map.addLayer(hillshade,{},"hillshade",false);

//fillMinima填充最小值,包含图像、边界值(long)、邻域(int)三个变量
Map.addLayer(fillMinima,{},"fillMinima",false);

//compute 计算感兴趣区域海拔均值
var meanDict = dem.reduceRegion({
reducer:ee.Reducer.mean(),
geometry:area,
scale:90
});
var mean = meanDict.get("elevation");


二、空间插值(IDW Kriging)

var point=ee.FeatureCollection([ee.Feature(ee.Geometry.Point(经度,纬度),{value:高程}),
...
]);

//获取均值\stdev\
var mean_value = point.reduceColumns({
reducer:'mean',
//'stddev'
selectors:['value']
})

//IDW插值
var area = point.inverseDistance({
range:10000,
propertyName:'value',
mean:mean_value.get('mean'),
stdDev: sd_value.get('stdDev'),
});

//Kriging
var area = point.kriging({
 range:10000,
 propertyName:'value',
 shape:"gaussian",
 sill:1.0,//基台值
 nugget:0.1,//块金值
 reducer:"mean"
 })


三、指数计算

//代码翻译公式计算
function NDVI(img){
var nir = img.select("B5");
var red = img.select("B4");
var ndvi = nir.substract(red).divide(nir.add(red));
return ndvi;

//解析公式的字符串实现计算
function NDVI2(img){
var nir = img.select("B5");
var red = img.select("B4");
var ndvi = img.expression(
"(B5-B4)/(B5+B4)",
{
  "B5":nir,
  "B4":red
 }
 );
 return ndvi
 }
 
 //对于部分著名指数,GEE中有可以直接调用的方法,如normalizedDifference
 //使用卫星数据进行指数计算时,考虑数据特点,Sentinel-2用QA波段去云,Landsat对TOA数据用ee.Algorithms.Landsat.simpleCloudScore(image)函数计算云的似然得分对影像进行掩膜去云
 

你可能感兴趣的:(遥感,学习)