此帖子目的:验证自己GEE写的代码,用ARCGIS工具
一、计算公式 :见附件,来自论文
基于EVI指数的DMSP_OLS夜间灯光数据去饱和方法_卓莉
二、关键操作流程:
1:除去image中某一段值:腌膜提取GEE VS ARCGIS
GEE代码
var dataset = ee.ImageCollection('MODIS/006/MOD13A2')
.filter(ee.Filter.date('2006-01-01', '2007-01-01'))
var evi1 = dataset.select('EVI').mean().clip(bound).divide(10000);
var evi = evi1.updateMask(evi1.select('EVI').gte(0.01))
ARCGIS操作:
Spatial Analyst–>重分类
重分类结果:
腌膜提取:Spatial Analyst --> Extract --> Extract by Mask
腌膜提取结果 VS GEE代码结果
完整的GEE代码:
var bound = shanghai;
Map.centerObject(bound, 4);
var dataset = ee.ImageCollection('MODIS/006/MOD13A2')
.filter(ee.Filter.date('2006-01-01', '2007-01-01'))
var evi1 = dataset.select('EVI').mean().clip(bound).divide(10000);
var evi = evi1.updateMask(evi1.select('EVI').gte(0.01))
var nighttimeLights = ee.Image('NOAA/DMSP-OLS/NIGHTTIME_LIGHTS/F152006')
.select('stable_lights')
.clip(bound);
//nomalization of the nighttimeLights image
var nomalization = function(image, bound){
var dict1 = image.select(0).reduceRegion({
reducer: ee.Reducer.max(),
geometry: bound,
scale: 1000,
maxPixels: 1e9
})
var dict2 = image.select(0).reduceRegion({
reducer: ee.Reducer.min(),
geometry: bound,
scale: 1000,
maxPixels: 1e9
})
var max = ee.Number(dict1.values().get(0))
var min = ee.Number(dict2.values().get(0))
var nNTL = image.select(0).subtract(min).divide(max.subtract( min))
return nNTL;
}
//Get the result of nomalization image
var nNTL = nomalization(nighttimeLights,bound)
// the function of EANTLI
var EANTLI = function(image, EVI, nNTL){
var D = nNTL.select(0).subtract(EVI.select(0))
var K = D.add(1).divide(D.add(1).subtract(D).subtract(D))
print('K', K);
return K.multiply(image.select(0));
}
var eNTL = EANTLI(nighttimeLights, evi, nNTL)
var nighttimeLightsVis = {
min: 3.0,
max: 60.0,
};
var NTLVis = {
min: 0,
max: 9000,
palette: [
'000000', '171717', '2F4F4F', '191970', '1874CD', '1C86EE', '20B2AA',
'40E0D0', '43CD80', '32CD32', 'A0522D', 'B8860B', 'CDCD00', 'EEEE00',
'FF4500', 'FF7F50', 'FFEFD5'],
};
Map.addLayer(nighttimeLights, nighttimeLightsVis, 'Nighttime Lights');
Map.addLayer(nighttimeLights, NTLVis, 'NTL2');
Map.addLayer(eNTL,NTLVis,"eNTL");
ARCGIS 结果
对比:修正后的夜间灯光数据eNTL