five

MODIS product version comparison application for Google Earth Engine

收藏
NIAID Data Ecosystem2026-03-12 收录
下载链接:
https://doi.org/10.7910/DVN/OGTUVN
下载链接
链接失效反馈
官方服务:
资源简介:
MODIS product version comparison application for Google Earth Engine This is associated an article published by IEEE in IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing on 20 March 2019, available online at doi.org/10.1109/JSTARS.2019.2901404. Reference: Peter, B.G. and Messina, J.P., 2019. Errors in Time-Series Remote Sensing and an Open Access Application for Detecting and Visualizing Spatial Data Outliers Using Google Earth Engine. IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing, 12(4), pp.1165-1174. Link to manuscript https://ieeexplore.ieee.org/abstract/document/8672086 Interactive Google Earth Engine Application https://cartoscience.users.earthengine.app/view/versions Google Earth Engine Code // Version 1.1 Map.setCenter(30, 20, 2.5).setOptions('HYBRID').style().set('cursor', 'crosshair'); var countryList = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017'); var stats = function(year) { Map.layers().reset(); var countrySelected = app.country.countrySelect.getValue(); var region = countryList.filterMetadata('Country', 'equals', countrySelected).geometry(); var versionOne = app.inputBox.productBox.getValue(); var versionTwo = app.inputBox.productBoxTwo.getValue(); var band = app.inputBox.bandBox.getValue(); var bandTwo = app.inputBox.bandBoxTwo.getValue(); if (app.inputBox.customCheckbox.getValue() === true) { var latCoord = ee.Number.parse(app.inputBox.latCoordBox.getValue()).getInfo(); var lonCoord = ee.Number.parse(app.inputBox.lonCoordBox.getValue()).getInfo(); var distBuffer = ee.Number.parse(app.inputBox.distBox.getValue()).getInfo(); var distNum = distBuffer*1000; region = ee.Geometry.Point([lonCoord,latCoord]).buffer(distNum).bounds(); } var modisCollectionOne = ee.ImageCollection(versionOne).select(band); var modisCollectionTwo = ee.ImageCollection(versionTwo).select(bandTwo); var imageOne = modisCollectionOne.filter(ee.Filter.calendarRange(year,year,'year')).mean(); var imageTwo = modisCollectionTwo.filter(ee.Filter.calendarRange(year,year,'year')).mean(); var abs = imageOne.select(band).subtract(imageTwo.select(bandTwo)).abs().rename("difference"); var percentilesOne = imageOne.reduceRegion({ reducer: ee.Reducer.percentile([10,90]), geometry: region, scale: 250, maxPixels: 1e13 }); var percentilesTwo = imageTwo.reduceRegion({ reducer: ee.Reducer.percentile([10,90]), geometry: region, scale: 250, maxPixels: 1e13 }); var percentilesAbs = abs.reduceRegion({ reducer: ee.Reducer.percentile([10,90]), geometry: region, scale: 250, maxPixels: 1e13 }); var minOne = ee.Number(percentilesOne.get(band+'_p10')).getInfo(); var maxOne = ee.Number(percentilesOne.get(band+'_p90')).getInfo(); var minTwo = ee.Number(percentilesTwo.get(bandTwo+'_p10')).getInfo(); var maxTwo = ee.Number(percentilesTwo.get(bandTwo+'_p90')).getInfo(); var minBoth = Math.min(minOne,minTwo); var maxBoth = Math.max(maxOne,maxTwo); var minAbs = ee.Number(percentilesAbs.get('difference_p10')).getInfo(); var maxAbs = ee.Number(percentilesAbs.get('difference_p90')).getInfo(); var grayscale = ['f7f7f7', 'cccccc', '969696', '525252','141414']; Map.addLayer(imageOne.select(band).rename(band+'_'+versionOne).clip(region),{min: minBoth, max: maxBoth, palette: grayscale},band+' • '+versionOne, false); Map.addLayer(imageTwo.select(bandTwo).rename(bandTwo+'_'+versionTwo).clip(region),{min: minBoth, max: maxBoth, palette: grayscale},band+' • '+versionTwo, false); Map.addLayer(abs.clip(region),{min: minAbs, max: maxAbs, palette: grayscale},"Difference"); var options = { title: year+' Histogram', fontSize: 11, legend: {position: 'none'}, series: {0: {color: '7100AA'}} }; var histogram = ui.Chart.image.histogram(imageOne, region, 10000).setOptions(options); var optionsTwo = { title: year+' Histogram', fontSize: 11, legend: {position: 'none'}, series: {0: {color: '0071AA'}} }; var histogramTwo = ui.Chart.image.histogram(imageTwo, region, 10000).setOptions(optionsTwo); var clickLabel = ui.Label('Click map to get pixel time-series', {fontWeight: '300', fontSize: '13px', margin: '10px 10px 15px 30px'}); var clickLabelTwo = ui.Label('Click map to get pixel time-series', {fontWeight: '300', fontSize: '13px', margin: '10px 10px 15px 30px'}); app.rootPanels.panelOne.widgets().set(1, ui.Label('temp')); app.rootPanels.panelTwo.widgets().set(1, ui.Label('temp')); app.rootPanels.panelOne.widgets().set(1, histogram); app.rootPanels.panelOne.widgets().set(2, clickLabel); app.rootPanels.panelTwo.widgets().set(1, histogramTwo); app.rootPanels.panelTwo.widgets().set(2, clickLabelTwo); Map.centerObject(region); Map.setOptions('HYBRID'); Map.onClick(function(coords) { var point = ee.Geometry.Point(coords.lon, coords.lat); var dot = ui.Map.Layer(point, {color: 'AA0000'}, "Inspector"); Map.layers().set(3, dot); var clickChart = ui.Chart.image.series(modisCollectionOne, point, ee.Reducer.mean(), 10000); clickChart.setOptions({ title: 'Pixel | X: ' + coords.lon.toFixed(2)+', '+'Y: ' + coords.lat.toFixed(2),...
创建时间:
2021-03-06
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作