var VT_boundary = ee.FeatureCollection("projects/ee-yelu/assets/VT_boundary"),VT_pedons = ee.FeatureCollection("projects/ee-yelu/assets/essex_pedons_all");
在步入高速数字化进程中,我们开辟了观览大地的全新视角——通过使用Sentinel空间卫星系统。该卫星阵列提供世界各地实时观测服务,揭示自然界各类奥秘。今日,让我们探讨如何对通过卫星获得的数据进行预处理和综合分析,直至呈现为用户手中感性的绿色画面。
Sentinel-1与Sentinel-2:地球的守护者
// 研究区var roi = VT_boundary.union();Map.addLayer(roi, {}, 'shp', false);var crs = 'EPSG:4326'; // EPSG number for output projection. 32618 = WGS84/UTM Zone 18N. For more info- http://spatialreference.org/ref/epsg/
function maskS2clouds(image) {var qa = image.select('QA60');// Bits 10 and 11 are clouds and cirrus, respectively.var cloudBitMask = 1 << 10;var cirrusBitMask = 1 << 11;// Both flags should be set to zero, indicating clear conditions.var mask = qa.bitwiseAnd(cloudBitMask).eq(0).and(qa.bitwiseAnd(cirrusBitMask).eq(0));return image.updateMask(mask).divide(10000);}
Sentinel系列卫星犹如宇宙守卫者,在广袤无垠的星空中洞察地球。Sentinel-1与Sentinel-2,仿佛承载特殊力量的超级英雄,前者不受气候干扰高效拍摄,后者专精捕捉地球多彩面貌。两颗卫星的独特能力相辅相成,为我们带来珍贵无比的地球图像,如同时光瓶罐,详实记录地球每时每刻。
// NDVIfunction NDVI(img) {var ndvi = img.expression("(NIR-R)/(NIR+R)", {"R": img.select("B4"),"NIR": img.select("B8"),});return img.addBands(ndvi.rename("NDVI"));}// NDWIfunction NDWI(img) {var ndwi = img.expression("(G-MIR)/(G+MIR)", {"G": img.select("B3"),"MIR": img.select("B8"),});return img.addBands(ndwi.rename("NDWI"));}// NDBIfunction NDBI(img) {var ndbi = img.expression("(SWIR-NIR)/(SWIR-NIR)", {"NIR": img.select("B8"),"SWIR": img.select("B12"),});return img.addBands(ndbi.rename("NDBI"));}//SAVIfunction SAVI(image) {var savi = image.expression('(NIR - RED) * (1 + 0.5)/(NIR + RED + 0.5)', {'NIR': image.select('B8'),'RED': image.select('B4')}).float();return image.addBands(savi.rename('SAVI'));}//IBIfunction IBI(image) {// Add Index-Based Built-Up Index (IBI)var ibiA = image.expression('2 * SWIR1 / (SWIR1 + NIR)', {'SWIR1': image.select('B6'),'NIR': image.select('B5')}).rename(['IBI_A']);var ibiB = image.expression('(NIR / (NIR + RED)) + (GREEN / (GREEN + SWIR1))', {'NIR': image.select('B8'),'RED': image.select('B4'),'GREEN': image.select('B3'),'SWIR1': image.select('B11')}).rename(['IBI_B']);var ibiAB = ibiA.addBands(ibiB);var ibi = ibiAB.normalizedDifference(['IBI_A', 'IBI_B']);return image.addBands(ibi.rename(['IBI']));}//RVIfunction RVI(image) {var rvi = image.expression('NIR/Red', {'NIR': image.select('B8'),'Red': image.select('B4')});return image.addBands(rvi.rename('RVI'));}//DVIfunction DVI(image) {var dvi = image.expression('NIR - Red', {'NIR': image.select('B8'),'Red': image.select('B4')}).float();return image.addBands(dvi.rename('DVI'));}
影像预处理:给地球拍照前的准备
// 创建var inStack = ee.Image()for (var i = 0; i < 3; i += 1) {var start = ee.Date('2019-03-01').advance(30 * i, 'day');print(start)var end = start.advance(30, 'day');var dataset = ee.ImageCollection('COPERNICUS/S2_SR').filterDate(start, end).filterBounds(roi).filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',75)).map(maskS2clouds).map(NDVI).map(NDWI).map(NDBI).map(SAVI).map(IBI).map(RVI).map(DVI);var inStack_monthly = dataset.median().clip(roi);// 可视化var visualization = {min: 0.0,max: 0.3,bands: ['B4', 'B3', 'B2'],};Map.addLayer(inStack_monthly, visualization, 'S2_' + i, false);// // 纹理特征var B8 = inStack_monthly.select('B8').multiply(100).toInt16();var glcm = B8.glcmTexture({size: 3});var contrast = glcm.select('B8_contrast');var var_ = glcm.select('B8_var');var savg = glcm.select('B8_savg');var dvar = glcm.select('B8_dvar');inStack_monthly = inStack_monthly.addBands([contrast, var_, savg, dvar])// Sentinel-1var imgVV = ee.ImageCollection('COPERNICUS/S1_GRD').filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VV')).filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH')).filter(ee.Filter.eq('instrumentMode', 'IW')).filterBounds(roi).map(function(image) {var edge = image.lt(-30.0);var maskedImage = image.mask().and(edge.not());return image.updateMask(maskedImage);});var img_S1_asc = imgVV.filter(ee.Filter.eq('orbitProperties_pass', 'ASCENDING'));var VV_img = img_S1_asc.filterDate(start, end).select("VV").median().clip(roi);var VH_img = img_S1_asc.filterDate(start, end).select("VH").median().clip(roi);inStack_monthly = inStack_monthly.addBands([VV_img, VH_img])print("img_S2_monthly", inStack_monthly)inStack = inStack.addBands(inStack_monthly.select(inStack_monthly.bandNames()))}inStack = inStack.select(inStack.bandNames().remove("constant"))print(inStack)
拍摄地球美景需经历一系列繁琐准备,即影像预处理环节,也被喻为是向公众展示地球唯美一面的“化妆”环节。此阶段涵盖多项复杂操作,如画面修正、噪音去除及对比度增强等流程,犹如细心雕琢艺术珍品,直至影像清晰且色彩浓郁,呈现完美效果。
print("Predictor Layers:", inStack);inStack.reproject(crs, null, 30);Map.centerObject(inStack)
上传矢量数据:数字化地球的纹理
接续投入任务如下,我们需把各类图像资料上传至地球工程(EarthEngine)——这一庞大的数字化地球引擎,能高效处理与解析海量地球观测数据。同时,此项操作亦须添加矢量数据,以作为地球纹理,详细描述诸如河流、森林及城市等地表特性。通过这些数据的复合与运用,使我们得以更加全面地洞察地球的每个细微之处。

逐月合成影像:时间的画卷
var trainingFeatureCollection = ee.FeatureCollection(VT_pedons, 'geometry');
关于逐日合成图像的神奇之处在于,犹如让时间凝固为摄影艺术的画卷,每月元素精妙组合成一个连贯的时间序列。该过程运用for循环技术完成,根据需求自动生成特定时段的图像。这些图像不仅美丽动人,更具有极高科研价值,有助于研究地球气候变迁、植被生长情况等自然现象。
ee.Image().select("波段名称")
计算植被指数:绿色的密码
var bands = inStack.bandNames(); //All bands on included here
在诸如此类的模拟图像中,最为引人深思的即是植被指数的精确计算。如绿色密码般的植被指数,能揭示出植被的健康程度及发展节奏等隐秘信息。借助此等指数,我们得以深度认识地球的生态体系,乃至预测未来环境变迁的走向。整个过程复杂缤纷,然而每一个计算都代表着对于地球绿色生命的一次震撼视界。
样本数据的加载与转换:回归的基础
var training = inStack.reduceRegions({collection:trainingFeatureCollection,reducer :ee.Reducer.mean(),scale:100,tileScale :5,crs: crs});print(training)var trainging2 = training.filter(ee.Filter.notNull(bands));
在开展回归研究前的第一步是收集样本数据,这是回归分析的基石。首先,我们将具有资产价值的样本数据VT_pedons.shp从GEE上传至云端,并将其转化为可在GEE环境下调用的ee.FeatureCollection()格式。这样不仅能保证回归模型具有稳固的基础,也使得我们在后续的分析操作中能够更加精准和有效率。
// 在training要素集中增加一个random属性,值为0到1的随机数var withRandom = trainging2.randomColumn({columnName:'random',seed:2,distribution: 'uniform',});var split = 0.8;var trainingData = withRandom.filter(ee.Filter.lt('random', split));var validationData = withRandom.filter(ee.Filter.gte('random', split));
提取影像数据:寻找地球的脉络
// train the RF classification modelvar classifier = ee.Classifier.smileRandomForest(100, null, 1, 0.5, null, 0).setOutputMode('REGRESSION').train({features: trainingData,classProperty: 'REDOX_CM',inputProperties: bands});print(classifier);
接下来,需根据样本点坐标,从影像中抽取各层波段数据。此步骤如同探索地球奥秘,每个波段均揭示了地球独特面貌。透过数据提取,我们能更深入洞察地球动态,为后续回归预测提供丰富依据。
设置空间分辨率:精细化的视角

在进行回归分析前,正确地设定空间分辨率至关重要,此次设定的分辨率为30米,目的在于以精密化角度深入洞察地球。此分辨率的选取是出于与前期运用过的预测层重投影的一致性考虑,从而保障我们得到的分析结果具备极高精确度。
分类器的创建与应用:绿色的预测
// Classify the input imagery.var regression = inStack.classify(classifier, 'predicted');print(regression);
此刻,我们已做好创建分类器的准备,以先前准备的数据为依据,针对图像进行分类。此过程如同进行绿色前景预测,有助于我们深入了解地球未来状况,并借助分类器探知其各个角落及其变化情况。
回归模型的应用:绿色的魔法
接下来,我们将运用新构建的回归模型对影像进行划分。此过程宛如神奇的绿色魔法,将精准的预测数据转为生动的图像显示。这些画面精美且蕴含丰富科学信息,助我们深化理解地球生态系统。
var palettes = require('users/gena/packages:palettes');
调色板的定义:绿色的艺术
为了实现可视化功能,我们必须创建色调调节板。犹如绿色艺术的色调调节工具,可以运用预测数据生成美观的图片,让大地所有的变动和细微之处尽在眼底。
var palette = palettes.crameri.nuuk[25];
结果的添加与展示:绿色的画卷
终章,将所得成果融入至地图之中加以公示。此举犹如挥动画笔展现翠绿山水图景,切实将预测数据以最为直观精确之形式呈现。透过各式图像,使得全球各地之微妙变迁与详细信息皆一览无遗,尽收眼底。
Display the input imagery and the regression classification.get dictionaries of min & max predicted valuevar regressionMin = (regression.reduceRegion({reducer: ee.Reducer.min(),scale: 100,crs: crs,bestEffort: true,tileScale: 5,geometry: roi}));var regressionMax = (regression.reduceRegion({reducer: ee.Reducer.max(),scale: 100,crs: crs,bestEffort: true,tileScale: 5,geometry: roi}));Add to mapvar viz = {palette: palette,min: regressionMin.getNumber('predicted').getInfo(),max: regressionMax.getNumber('predicted').getInfo()};Map.addLayer(regression, viz, 'Regression');
直方图的制作:绿色的统计
除图像展示外,我们亦可利用直方图深入剖析模型拟合度。通过编制的绿色彩色图表,我们能精确洞察地球各项变更及其详细信息。
任务的导出:绿色的分享
最终,我们将任务成果导出,便于与公众共享我们的绿色魔法。此操作犹如一次绿色理念的传承,能以通俗易懂且易于理解的形式展现预测结果。借助这一共享平台,我们有望更为全面地洞悉地球生态体系,更加精准地捕捉地球上的微妙变化以及每一处细微之处。
