diff --git a/catalog/MODIS/MODIS_061_MOD10A2.jsonnet b/catalog/MODIS/MODIS_061_MOD10A2.jsonnet new file mode 100644 index 000000000..abbe68096 --- /dev/null +++ b/catalog/MODIS/MODIS_061_MOD10A2.jsonnet @@ -0,0 +1,85 @@ +local id = 'MODIS/061/MOD10A2'; +local subdir = 'MODIS'; + +local ee_const = import 'earthengine_const.libsonnet'; +local ee = import 'earthengine.libsonnet'; +local spdx = import 'spdx.libsonnet'; +local license = spdx.proprietary; +local template = import 'templates/MODIS_061_MOD10A2.libsonnet'; + +local basename = std.strReplace(id, '/', '_'); +local base_filename = basename + '.json'; +local self_ee_catalog_url = ee_const.ee_catalog_url + basename; + +{ + stac_version: ee_const.stac_version, + type: ee_const.stac_type.collection, + stac_extensions: [ + ee_const.ext_eo, + ee_const.ext_sci, + ee_const.ext_ver, + ], + id: id, + title: 'MOD10A2.061 Terra Snow Cover 8-Day L3 Global 500m', + version: '6.1', + 'gee:type': ee_const.gee_type.image_collection, + description: ||| + MOD10A2 is a snow cover data set from the MODIS on the Terra satellite. + The data set consists of 1200 km by 1200 km tiles of 500 m resolution data + gridded in a sinusoidal map projection. The data set reports the maximum + snow cover extent during an eight-day period. + + [General documentation](https://doi.org/10.5067/MODIS/MOD10A2.061) + |||, + license: license.id, + links: ee.standardLinks(subdir, id) + [ + { + rel: ee_const.rel.cite_as, + href: 'https://doi.org/10.5067/MODIS/MOD10A1.061', + }, + ], + keywords: [ + 'albedo', + 'daily', + 'geophysical', + 'global', + 'modis', + 'nasa', + 'nsidc', + 'snow', + 'terra', + ], + providers: [ + ee.producer_provider('NASA NSIDC DAAC at CIRES', + 'https://doi.org/10.5067/MODIS/MOD10A2.061'), + ee.host_provider(self_ee_catalog_url), + ], + 'gee:provider_ids': [ + 'C1646610415-NSIDC_ECS', + ], + extent: ee.extent_global('2000-02-18T00:00:00Z', null), + summaries: template.summaries { + platform: [ + 'Terra', + ], + }, + 'sci:doi': '10.5067/MODIS/MOD10A2.061', + 'sci:citation': ||| + Hall, D. K., V. V. Salomonson, and G. A. Riggs. 2016. MODIS/Terra + Snow Cover Daily L3 Global 500m Grid. Version 6. Boulder, Colorado + USA: NASA National Snow and Ice Data Center Distributed Active + Archive Center. + |||, + 'gee:interval': { + type: 'cadence', + unit: 'day', + interval: 1, + }, + 'gee:terms_of_use': ||| + You may download and use photographs, imagery, or text + from the NSIDC web site, unless limitations for its use are specifically + stated. For more information on usage and citing NSIDC datasets, + please visit the + [NSIDC 'Use and Copyright' page](https://nsidc.org/about/data-use-and-copyright). + |||, +} diff --git a/catalog/MODIS/catalog.jsonnet b/catalog/MODIS/catalog.jsonnet index 59c6929b4..32095460c 100644 --- a/catalog/MODIS/catalog.jsonnet +++ b/catalog/MODIS/catalog.jsonnet @@ -89,6 +89,7 @@ local self_url = base_url + base_filename; ee.link.child_collection('MODIS_061_MOD09GQ', base_url), ee.link.child_collection('MODIS_061_MOD09Q1', base_url), ee.link.child_collection('MODIS_061_MOD10A1', base_url), + ee.link.child_collection('MODIS_061_MOD10A2', base_url), ee.link.child_collection('MODIS_061_MOD11A1', base_url), ee.link.child_collection('MODIS_061_MOD11A2', base_url), ee.link.child_collection('MODIS_061_MOD13A1', base_url), diff --git a/catalog/MODIS/templates/MODIS_061_MOD10A2.libsonnet b/catalog/MODIS/templates/MODIS_061_MOD10A2.libsonnet new file mode 100644 index 000000000..d5516946b --- /dev/null +++ b/catalog/MODIS/templates/MODIS_061_MOD10A2.libsonnet @@ -0,0 +1,150 @@ +{ + summaries: { + gsd: [ + 500.0, + ], + instruments: [ + 'MODIS', + ], + 'eo:bands': [ + { + name: 'Maximum_Snow_Extent', + description: ||| + Maximum snow extent observed over an eight-day period. + |||, + 'gee:classes': [ + { + value: 0, + description: 'Missing data', + }, + { + value: 1, + description: 'No decision', + }, + { + value: 11, + description: 'Night', + }, + { + value: 25, + description: 'No snow', + }, + { + value: 37, + description: 'Lake', + }, + { + value: 39, + description: 'Ocean', + }, + { + value: 50, + description: 'Cloud', + }, + { + value: 100, + description: 'Lake ice', + }, + { + value: 200, + description: 'Snow', + }, + { + value: 254, + description: 'Detector saturated', + }, + { + value: 255, + description: 'Fill', + }, + ], + }, + { + name: 'Eight_Day_Snow_Cover', + description: ||| + Snow chronology bit flags for each day in the eight-day + observation period. + |||, + 'gee:bitmask': { + bitmask_parts: [ + { + description: 'day 1', + bit_count: 1, + first_bit: 0, + }, + { + description: 'day 2', + first_bit: 1, + bit_count: 1, + }, + { + description: 'day 3', + first_bit: 2, + bit_count: 1, + }, + { + description: 'day 4', + first_bit: 3, + bit_count: 1, + }, + { + description: 'day 5', + first_bit: 4, + bit_count: 1, + }, + { + description: 'day 6', + first_bit: 5, + bit_count: 1, + }, + { + description: 'day 7', + first_bit: 6, + bit_count: 1, + }, + { + description: 'day 8', + first_bit: 7, + bit_count: 1, + }, + ], + total_bit_count: 8, + }, + }, + ], + 'gee:visualizations': [ + { + display_name: 'Maximum Snow Extent', + lookat: { + lat: 65.99, + lon: -3.69, + zoom: 4, + }, + image_visualization: { + band_vis: { + min: [ + 50.0, + ], + max: [ + 150.0, + ], + palette: [ + '000000', + '0dffff', + '0524ff', + 'ffffff', + ], + bands: [ + 'Maximum_Snow_Extent', + ], + }, + }, + }, + ], + Maximum_Snow_Extent: { + minimum: 0.0, + maximum: 255.0, + 'gee:estimated_range': false, + }, + }, +} diff --git a/examples/MODIS/MODIS_061_MOD10A2.js b/examples/MODIS/MODIS_061_MOD10A2.js new file mode 100644 index 000000000..943de87be --- /dev/null +++ b/examples/MODIS/MODIS_061_MOD10A2.js @@ -0,0 +1,18 @@ +var dataset = ee.ImageCollection('MODIS/061/MOD10A2') + .select('Maximum_Snow_Extent'); + +var visualization = { + min: 50.0, + max: 150.0, + palette: [ + '000000', + '0dffff', + '0524ff', + 'ffffff' + ] +}; + + +Map.setCenter(-3.69, 65.99, 4); + +Map.addLayer(dataset.mean(), visualization, 'Maximum_Snow_Extent'); \ No newline at end of file diff --git a/examples/MODIS/MODIS_061_MOD10A2_preview.js b/examples/MODIS/MODIS_061_MOD10A2_preview.js new file mode 100644 index 000000000..5621231ac --- /dev/null +++ b/examples/MODIS/MODIS_061_MOD10A2_preview.js @@ -0,0 +1,42 @@ +var dataset = ee.ImageCollection('MODIS/061/MOD10A2') + .filter(ee.Filter.date('2023-01-01', '2023-12-01')); + +var snowExtent = dataset.select('Maximum_Snow_Extent').mosaic(); + +var snowExtentVis = { + min: 40.0, + max: 150.0, + palette: [ + '000000', + '0dffff', + '0524ff', + 'ffffff' + ], +}; + +var lon = 40.52; +var lat = 50.98; + +var gray = 150; +var background = ee.Image.rgb(gray, gray, gray).visualize({min: 0, max: 255}); + +var delta = 10; +var pixels = 256; + +var image = snowExtent.visualize(snowExtentVis); +var imageWithBackground = ee.ImageCollection([background, image]).mosaic(); + +Map.setCenter(lon, lat, 3); +Map.addLayer(imageWithBackground, {}, 'Maximum Snow Extent'); + +var areaOfInterest = ee.Geometry.Rectangle( + [lon - delta, lat - delta, lon + delta, lat + delta], null, false); + +var imageParams = { + dimensions: [pixels, pixels], + region: areaOfInterest, + crs: 'EPSG:3857', + format: 'png', +}; + +print(ui.Thumbnail({image: imageWithBackground, params: imageParams}));