aazuspan / sankee

Visualize classified time series data with interactive Sankey plots in Google Earth Engine
https://sankee.readthedocs.io/en/latest/index.html
MIT License
97 stars 15 forks source link

All available datasets in the GEE Catalog? :) #15

Open davemlz opened 2 years ago

davemlz commented 2 years ago

Hi, @aazuspan!

I was using sankee and it is amazing!

I was thinking that maybe it could be possible to add all datasets in the GEE Catalog that are Land Cover Classifications, or at least discrete products. Here is the idea!

If we take the Copernicus CORINE Land Cover Product as an example and get the STAC info, we can see that in the summaries property there is a eo:bands property. This property describes all the bands of the collection. If the band is a discrete band, it will have a gee:classes property explaining the color, the description and the value!

import ee, eemont

ee.Initialize()

ee.ImageCollection("COPERNICUS/CORINE/V20/100m").getSTAC()["summaries"]["eo:bands"]
[{'description': 'Land cover',
  'gee:classes': [{'color': 'E6004D',
    'description': 'Artificial surfaces > Urban fabric > Continuous urban fabric',
    'value': 111},
   {'color': 'FF0000',
    'description': 'Artificial surfaces > Urban fabric > Discontinuous urban fabric',
    'value': 112},
   {'color': 'CC4DF2',
    'description': 'Artificial surfaces > Industrial, commercial, and transport units > Industrial or commercial units',
    'value': 121},
   {'color': 'CC0000',
    'description': 'Artificial surfaces > Industrial, commercial, and\ntransport units > Road and rail networks and associated land\n',
    'value': 122},
   {'color': 'E6CCCC',
    'description': 'Artificial surfaces > Industrial, commercial, and transport units > Port areas',
    'value': 123},
   {'color': 'E6CCE6',
    'description': 'Artificial surfaces > Industrial, commercial, and transport units > Airports',
    'value': 124},
   {'color': 'A600CC',
    'description': 'Artificial surfaces > Mine, dump, and construction sites > Mineral extraction sites',
    'value': 131},
   {'color': 'A64DCC',
    'description': 'Artificial surfaces > Mine, dump, and construction sites > Dump sites',
    'value': 132},
   {'color': 'FF4DFF',
    'description': 'Artificial surfaces > Mine, dump, and construction sites > Construction sites',
    'value': 133},
   {'color': 'FFA6FF',
    'description': 'Artificial surfaces > Artificial, non-agricultural vegetated areas > Green urban areas',
    'value': 141},
   {'color': 'FFE6FF',
    'description': 'Artificial surfaces > Artificial, non-agricultural vegetated areas > Sport and leisure facilities',
    'value': 142},
   {'color': 'FFFFA8',
    'description': 'Agricultural areas > Arable land > Non-irrigated arable land',
    'value': 211},
   {'color': 'FFFF00',
    'description': 'Agricultural areas > Arable land > Permanently irrigated land',
    'value': 212},
   {'color': 'E6E600',
    'description': 'Agricultural areas > Arable land > Rice fields',
    'value': 213},
   {'color': 'E68000',
    'description': 'Agricultural areas > Permanent crops > Vineyards',
    'value': 221},
   {'color': 'F2A64D',
    'description': 'Agricultural areas > Permanent crops > Fruit trees and berry plantations',
    'value': 222},
   {'color': 'E6A600',
    'description': 'Agricultural areas > Permanent crops > Olive groves',
    'value': 223},
   {'color': 'E6E64D',
    'description': 'Agricultural areas > Pastures > Pastures',
    'value': 231},
   {'color': 'FFE6A6',
    'description': 'Agricultural areas > Heterogeneous agricultural areas > Annual crops associated with permanent crops',
    'value': 241},
   {'color': 'FFE64D',
    'description': 'Agricultural areas > Heterogeneous agricultural areas > Complex cultivation patterns',
    'value': 242},
   {'color': 'E6CC4D',
    'description': 'Agricultural areas > Heterogeneous agricultural areas >\nLand principally occupied by agriculture, with significant areas of\nnatural vegetation\n',
    'value': 243},
   {'color': 'F2CCA6',
    'description': 'Agricultural areas > Heterogeneous agricultural areas > Agro-forestry areas',
    'value': 244},
   {'color': '80FF00',
    'description': 'Forest and semi natural areas > Forests > Broad-leaved forest',
    'value': 311},
   {'color': '00A600',
    'description': 'Forest and semi natural areas > Forests > Coniferous forest',
    'value': 312},
   {'color': '4DFF00',
    'description': 'Forest and semi natural areas > Forests > Mixed forest',
    'value': 313},
   {'color': 'CCF24D',
    'description': 'Forest and semi natural areas > Scrub and/or herbaceous vegetation associations > Natural grasslands',
    'value': 321},
   {'color': 'A6FF80',
    'description': 'Forest and semi natural areas > Scrub and/or herbaceous vegetation associations > Moors and heathland',
    'value': 322},
   {'color': 'A6E64D',
    'description': 'Forest and semi natural areas > Scrub and/or herbaceous\nvegetation associations > Sclerophyllous vegetation\n',
    'value': 323},
   {'color': 'A6F200',
    'description': 'Forest and semi natural areas > Scrub and/or herbaceous\nvegetation associations > Transitional woodland-shrub\n',
    'value': 324},
   {'color': 'E6E6E6',
    'description': 'Forest and semi natural areas > Open spaces with little or no vegetation > Beaches, dunes, sands',
    'value': 331},
   {'color': 'CCCCCC',
    'description': 'Forest and semi natural areas > Open spaces with little or no vegetation > Bare rocks',
    'value': 332},
   {'color': 'CCFFCC',
    'description': 'Forest and semi natural areas > Open spaces with little or no vegetation > Sparsely vegetated areas',
    'value': 333},
   {'color': '000000',
    'description': 'Forest and semi natural areas > Open spaces with little or no vegetation > Burnt areas',
    'value': 334},
   {'color': 'A6E6CC',
    'description': 'Forest and semi natural areas > Open spaces with little or no vegetation > Glaciers and perpetual snow',
    'value': 335},
   {'color': 'A6A6FF',
    'description': 'Wetlands > Inland wetlands > Inland marshes',
    'value': 411},
   {'color': '4D4DFF',
    'description': 'Wetlands > Inland wetlands > Peat bogs',
    'value': 412},
   {'color': 'CCCCFF',
    'description': 'Wetlands > Maritime wetlands > Salt marshes',
    'value': 421},
   {'color': 'E6E6FF',
    'description': 'Wetlands > Maritime wetlands > Salines',
    'value': 422},
   {'color': 'A6A6E6',
    'description': 'Wetlands > Maritime wetlands > Intertidal flats',
    'value': 423},
   {'color': '00CCF2',
    'description': 'Water bodies > Inland waters > Water courses',
    'value': 511},
   {'color': '80F2E6',
    'description': 'Water bodies > Inland waters > Water bodies',
    'value': 512},
   {'color': '00FFA6',
    'description': 'Water bodies > Marine waters > Coastal lagoons',
    'value': 521},
   {'color': 'A6FFE6',
    'description': 'Water bodies > Marine waters > Estuaries',
    'value': 522},
   {'color': 'E6F2FF',
    'description': 'Water bodies > Marine waters > Sea and ocean',
    'value': 523}],
  'name': 'landcover'}]

Check it now for MODIS:

ee.ImageCollection("MODIS/006/MCD12Q1").getSTAC()["summaries"]["eo:bands"]
[{'description': 'Land Cover Type 1: Annual International Geosphere-Biosphere Programme (IGBP) classification',
  'gee:classes': [{'color': '05450a',
    'description': 'Evergreen Needleleaf Forests: dominated by evergreen\nconifer trees (canopy >2m). Tree cover >60%.',
    'value': 1},
   {'color': '086a10',
    'description': 'Evergreen Broadleaf Forests: dominated by evergreen\nbroadleaf and palmate trees (canopy >2m). Tree cover >60%.\n',
    'value': 2},
   {'color': '54a708',
    'description': 'Deciduous Needleleaf Forests: dominated by deciduous\nneedleleaf (larch) trees (canopy >2m). Tree cover >60%.\n',
    'value': 3},
   {'color': '78d203',
    'description': 'Deciduous Broadleaf Forests: dominated by deciduous\nbroadleaf trees (canopy >2m). Tree cover >60%.',
    'value': 4},
   {'color': '009900',
    'description': 'Mixed Forests: dominated by neither deciduous nor\nevergreen (40-60% of each) tree type (canopy >2m). Tree cover >60%.\n',
    'value': 5},
   {'color': 'c6b044',
    'description': 'Closed Shrublands: dominated by woody perennials\n(1-2m height) >60% cover.',
    'value': 6},
   {'color': 'dcd159',
    'description': 'Open Shrublands: dominated by woody perennials\n(1-2m height) 10-60% cover.',
    'value': 7},
   {'color': 'dade48',
    'description': 'Woody Savannas: tree cover 30-60% (canopy >2m).',
    'value': 8},
   {'color': 'fbff13',
    'description': 'Savannas: tree cover 10-30% (canopy >2m).',
    'value': 9},
   {'color': 'b6ff05',
    'description': 'Grasslands: dominated by herbaceous annuals (<2m).',
    'value': 10},
   {'color': '27ff87',
    'description': 'Permanent Wetlands: permanently inundated lands with\n30-60% water cover and >10% vegetated cover.',
    'value': 11},
   {'color': 'c24f44',
    'description': 'Croplands: at least 60% of area is cultivated\ncropland.',
    'value': 12},
   {'color': 'a5a5a5',
    'description': 'Urban and Built-up Lands: at least 30% impervious\nsurface area including building materials, asphalt and vehicles.\n',
    'value': 13},
   {'color': 'ff6d4c',
    'description': 'Cropland/Natural Vegetation Mosaics: mosaics of\nsmall-scale cultivation 40-60% with natural tree, shrub, or herbaceous\nvegetation.\n',
    'value': 14},
   {'color': '69fff8',
    'description': 'Permanent Snow and Ice: at least 60% of area is covered\nby snow and ice for at least 10 months of the year.\n',
    'value': 15},
   {'color': 'f9ffa4',
    'description': 'Barren: at least 60% of area is non-vegetated barren\n(sand, rock, soil) areas with less than 10% vegetation.\n',
    'value': 16},
   {'color': '1c0dff',
    'description': 'Water Bodies: at least 60% of area is covered by\npermanent water bodies.',
    'value': 17}],
  'name': 'LC_Type1'},
 {'description': 'Land Cover Type 2: Annual University of Maryland (UMD) classification',
  'gee:classes': [{'color': '1c0dff',
    'description': 'Water Bodies: at least 60% of area is covered by\npermanent water bodies.',
    'value': 0},
   {'color': '05450a',
    'description': 'Evergreen Needleleaf Forests: dominated by evergreen\nconifer trees (canopy >2m). Tree cover >60%.',
    'value': 1},
   {'color': '086a10',
    'description': 'Evergreen Broadleaf Forests: dominated by evergreen\nbroadleaf and palmate trees (canopy >2m). Tree cover >60%.\n',
    'value': 2},
   {'color': '54a708',
    'description': 'Deciduous Needleleaf Forests: dominated by deciduous\nneedleleaf (larch) trees (canopy >2m). Tree cover >60%.\n',
    'value': 3},
   {'color': '78d203',
    'description': 'Deciduous Broadleaf Forests: dominated by deciduous\nbroadleaf trees (canopy >2m). Tree cover >60%.',
    'value': 4},
   {'color': '009900',
    'description': 'Mixed Forests: dominated by neither deciduous nor\nevergreen (40-60% of each) tree type (canopy >2m). Tree cover >60%.\n',
    'value': 5},
   {'color': 'c6b044',
    'description': 'Closed Shrublands: dominated by woody perennials\n(1-2m height) >60% cover.',
    'value': 6},
   {'color': 'dcd159',
    'description': 'Open Shrublands: dominated by woody perennials\n(1-2m height) 10-60% cover.',
    'value': 7},
   {'color': 'dade48',
    'description': 'Woody Savannas: tree cover 30-60% (canopy >2m).',
    'value': 8},
   {'color': 'fbff13',
    'description': 'Savannas: tree cover 10-30% (canopy >2m).',
    'value': 9},
   {'color': 'b6ff05',
    'description': 'Grasslands: dominated by herbaceous annuals (<2m).',
    'value': 10},
   {'color': '27ff87',
    'description': 'Permanent Wetlands: permanently inundated lands with\n30-60% water cover and >10% vegetated cover.',
    'value': 11},
   {'color': 'c24f44',
    'description': 'Croplands: at least 60% of area is cultivated\ncropland.',
    'value': 12},
   {'color': 'a5a5a5',
    'description': 'Urban and Built-up Lands: at least 30% impervious\nsurface area including building materials, asphalt and vehicles.\n',
    'value': 13},
   {'color': 'ff6d4c',
    'description': 'Cropland/Natural Vegetation Mosaics: mosaics of\nsmall-scale cultivation 40-60% with natural tree, shrub, or herbaceous\nvegetation.\n',
    'value': 14},
   {'color': 'f9ffa4',
    'description': 'Non-Vegetated Lands: at least 60% of area is\nnon-vegetated barren (sand, rock, soil) or permanent snow and ice with\nless than 10% vegetation.\n',
    'value': 15}],
  'name': 'LC_Type2'},
 {'description': 'Land Cover Type 3: Annual Leaf Area Index (LAI) classification',
  'gee:classes': [{'color': '1c0dff',
    'description': 'Water Bodies: at least 60% of area is covered by permanent water bodies.',
    'value': 0},
   {'color': 'b6ff05',
    'description': 'Grasslands: dominated by herbaceous annuals (<2m) including cereal croplands.',
    'value': 1},
   {'color': 'dcd159',
    'description': 'Shrublands: shrub (1-2m) cover >10%.',
    'value': 2},
   {'color': 'c24f44',
    'description': 'Broadleaf Croplands: bominated by herbaceous annuals\n(<2m) that are cultivated with broadleaf crops.',
    'value': 3},
   {'color': 'fbff13',
    'description': 'Savannas: between 10-60% tree cover (>2m).',
    'value': 4},
   {'color': '086a10',
    'description': 'Evergreen Broadleaf Forests: dominated by evergreen\nbroadleaf and palmate trees (canopy >2m). Tree cover >60%.\n',
    'value': 5},
   {'color': '78d203',
    'description': 'Deciduous Broadleaf Forests: dominated by deciduous\nbroadleaf trees (canopy >2m). Tree cover >60%.',
    'value': 6},
   {'color': '05450a',
    'description': 'Evergreen Needleleaf Forests: dominated by evergreen\nconifer trees (canopy >2m). Tree cover >60%.',
    'value': 7},
   {'color': '54a708',
    'description': 'Deciduous Needleleaf Forests: dominated by deciduous\nneedleleaf (larch) trees (canopy >2m). Tree cover >60%.\n',
    'value': 8},
   {'color': 'f9ffa4',
    'description': 'Non-Vegetated Lands: at least 60% of area is\nnon-vegetated barren (sand, rock, soil) or permanent snow and ice with\nless than 10% vegetation.\n',
    'value': 9},
   {'color': 'a5a5a5',
    'description': 'Urban and Built-up Lands: at least 30% impervious\nsurface area including building materials, asphalt and vehicles.\n',
    'value': 10}],
  'name': 'LC_Type3'},
 {'description': 'Land Cover Type 4: Annual BIOME-Biogeochemical Cycles (BGC) classification',
  'gee:classes': [{'color': '1c0dff',
    'description': 'Water Bodies: at least 60% of area is covered by\npermanent water bodies.',
    'value': 0},
   {'color': '05450a',
    'description': 'Evergreen Needleleaf Vegetation: dominated by evergreen\nconifer trees and shrubs (>1m). Woody vegetation cover >10%.\n',
    'value': 1},
   {'color': '086a10',
    'description': 'Evergreen Broadleaf Vegetation: dominated by evergreen\nbroadleaf and palmate trees and shrubs (>1m). Woody vegetation cover\n>10%.\n',
    'value': 2},
   {'color': '54a708',
    'description': 'Deciduous Needleleaf Vegetation: dominated by deciduous\nneedleleaf (larch) trees and shrubs (>1m). Woody vegetation cover\n>10%.\n',
    'value': 3},
   {'color': '78d203',
    'description': 'Deciduous Broadleaf Vegetation: dominated by deciduous\nbroadleaf trees and shrubs (>1m). Woody vegetation cover >10%.\n',
    'value': 4},
   {'color': '009900',
    'description': 'Annual Broadleaf Vegetation: dominated by herbaceous\nannuals (<2m). At least 60% cultivated broadleaf crops.\n',
    'value': 5},
   {'color': 'b6ff05',
    'description': 'Annual Grass Vegetation: dominated by herbaceous\nannuals (<2m) including cereal croplands.',
    'value': 6},
   {'color': 'f9ffa4',
    'description': 'Non-Vegetated Lands: at least 60% of area is\nnon-vegetated barren (sand, rock, soil) or permanent snow/ice with\nless than 10% vegetation.\n',
    'value': 7},
   {'color': 'a5a5a5',
    'description': 'Urban and Built-up Lands: at least 30% impervious\nsurface area including building materials, asphalt, and vehicles.\n',
    'value': 8}],
  'name': 'LC_Type4'},
 {'description': 'Land Cover Type 5: Annual Plant Functional Types classification',
  'gee:classes': [{'color': '1c0dff',
    'description': 'Water Bodies: at least 60% of area is covered by permanent water bodies.',
    'value': 0},
   {'color': '05450a',
    'description': 'Evergreen Needleleaf Trees: dominated by evergreen\nconifer trees (>2m). Tree cover >10%.',
    'value': 1},
   {'color': '086a10',
    'description': 'Evergreen Broadleaf Trees: dominated by evergreen\nbroadleaf and palmate trees (>2m). Tree cover >10%.',
    'value': 2},
   {'color': '54a708',
    'description': 'Deciduous Needleleaf Trees: dominated by deciduous\nneedleleaf (larch) trees (>2m). Tree cover >10%.',
    'value': 3},
   {'color': '78d203',
    'description': 'Deciduous Broadleaf Trees: dominated by deciduous\nbroadleaf trees (>2m). Tree cover >10%.',
    'value': 4},
   {'color': 'dcd159',
    'description': 'Shrub: Shrub (1-2m) cover >10%.',
    'value': 5},
   {'color': 'b6ff05',
    'description': 'Grass: dominated by herbaceous annuals (<2m) that are\nnot cultivated.',
    'value': 6},
   {'color': 'dade48',
    'description': 'Cereal Croplands: dominated by herbaceous annuals\n(<2m). At least 60% cultivated cereal crops.',
    'value': 7},
   {'color': 'c24f44',
    'description': 'Broadleaf Croplands: dominated by herbaceous annuals\n(<2m). At least 60% cultivated broadleaf crops.',
    'value': 8},
   {'color': 'a5a5a5',
    'description': 'Urban and Built-up Lands: at least 30% impervious\nsurface area including building materials, asphalt, and vehicles.\n',
    'value': 9},
   {'color': '69fff8',
    'description': 'Permanent Snow and Ice: at least 60% of area is covered\nby snow and ice for at least 10 months of the year.\n',
    'value': 10},
   {'color': 'f9ffa4',
    'description': 'Non-Vegetated Lands: at least 60% of area is\nnon-vegetated barren (sand, rock, soil) with\nless than 10% vegetation.\n',
    'value': 11}],
  'name': 'LC_Type5'},
 {'description': 'LCCS1 land cover layer confidence',
  'gee:units': '%',
  'name': 'LC_Prop1_Assessment'},
 {'description': 'LCCS2 land use layer confidence',
  'gee:units': '%',
  'name': 'LC_Prop2_Assessment'},
 {'description': 'LCCS3 surface hydrology layer confidence',
  'gee:units': '%',
  'name': 'LC_Prop3_Assessment'},
 {'description': 'FAO-Land Cover Classification System 1 (LCCS1) land cover layer',
  'gee:classes': [{'color': 'f9ffa4',
    'description': 'Barren: at least of area 60% is non-vegetated barren\n(sand, rock, soil) or permanent snow/ice with less than 10%\nvegetation.\n',
    'value': 1},
   {'color': '69fff8',
    'description': 'Permanent Snow and Ice: at least 60% of area is covered\nby snow and ice for at least 10 months of the year.\n',
    'value': 2},
   {'color': '1c0dff',
    'description': 'Water Bodies: at least 60% of area is covered by\npermanent water bodies.',
    'value': 3},
   {'color': '05450a',
    'description': 'Evergreen Needleleaf Forests: dominated by evergreen\nconifer trees (>2m). Tree cover >60%.',
    'value': 11},
   {'color': '086a10',
    'description': 'Evergreen Broadleaf Forests: dominated by evergreen\nbroadleaf and palmate trees (>2m). Tree cover >60%.\n',
    'value': 12},
   {'color': '54a708',
    'description': 'Deciduous Needleleaf Forests: dominated by deciduous\nneedleleaf (larch) trees (>2m). Tree cover >60%.',
    'value': 13},
   {'color': '78d203',
    'description': 'Deciduous Broadleaf Forests: dominated by deciduous\nbroadleaf trees (>2m). Tree cover >60%.',
    'value': 14},
   {'color': '005a00',
    'description': 'Mixed Broadleaf/Needleleaf Forests: co-dominated\n(40-60%) by broadleaf deciduous and evergreen needleleaf tree (>2m)\ntypes. Tree cover >60%.\n',
    'value': 15},
   {'color': '009900',
    'description': 'Mixed Broadleaf Evergreen/Deciduous Forests:\nco-dominated (40-60%) by broadleaf evergreen and deciduous tree (>2m)\ntypes. Tree cover >60%.\n',
    'value': 16},
   {'color': '006c00',
    'description': 'Open Forests: tree cover 30-60% (canopy >2m).',
    'value': 21},
   {'color': '00d000',
    'description': 'Sparse Forests: tree cover 10-30% (canopy >2m).',
    'value': 22},
   {'color': 'b6ff05',
    'description': 'Dense Herbaceous: dominated by herbaceous annuals\n(<2m) at least 60% cover.',
    'value': 31},
   {'color': '98d604',
    'description': 'Sparse Herbaceous: dominated by herbaceous annuals\n(<2m) 10-60% cover.',
    'value': 32},
   {'color': 'dcd159',
    'description': 'Dense Shrublands: dominated by woody perennials (1-2m)\n>60% cover.',
    'value': 41},
   {'color': 'f1fb58',
    'description': 'Shrubland/Grassland Mosaics: dominated by woody\nperennials (1-2m) 10-60% cover with dense herbaceous annual\nunderstory.\n',
    'value': 42},
   {'color': 'fbee65',
    'description': 'Sparse Shrublands: dominated by woody perennials (1-2m)\n10-60% cover with minimal herbaceous understory.\n',
    'value': 43}],
  'name': 'LC_Prop1'},
 {'description': 'FAO-LCCS2 land use layer',
  'gee:classes': [{'color': 'f9ffa4',
    'description': 'Barren: at least of area 60% is non-vegetated barren\n(sand, rock, soil) or permanent snow/ice with less than 10%\nvegetation.\n',
    'value': 1},
   {'color': '69fff8',
    'description': 'Permanent Snow and Ice: at least 60% of area is covered\nby snow and ice for at least 10 months of the year.\n',
    'value': 2},
   {'color': '1c0dff',
    'description': 'Water Bodies: at least 60% of area is covered by\npermanent water bodies.',
    'value': 3},
   {'color': 'a5a5a5',
    'description': 'Urban and Built-up Lands: at least 30% of area is made\nup ofimpervious surfaces including building materials, asphalt, and\nvehicles.\n',
    'value': 9},
   {'color': '003f00',
    'description': 'Dense Forests: tree cover >60% (canopy >2m).',
    'value': 10},
   {'color': '006c00',
    'description': 'Open Forests: tree cover 10-60% (canopy >2m).',
    'value': 20},
   {'color': 'e3ff77',
    'description': 'Forest/Cropland Mosaics: mosaics of small-scale\ncultivation 40-60% with >10% natural tree cover.',
    'value': 25},
   {'color': 'b6ff05',
    'description': 'Natural Herbaceous: dominated by herbaceous annuals\n(<2m). At least 10% cover.',
    'value': 30},
   {'color': '93ce04',
    'description': 'Natural Herbaceous/Croplands Mosaics: mosaics of\nsmall-scale cultivation 40-60% with natural shrub or herbaceous\nvegetation.\n',
    'value': 35},
   {'color': '77a703',
    'description': 'Herbaceous Croplands: dominated by herbaceous annuals\n(<2m). At least 60% cover. Cultivated fraction >60%.\n',
    'value': 36},
   {'color': 'dcd159',
    'description': 'Shrublands: shrub cover >60% (1-2m).',
    'value': 40}],
  'name': 'LC_Prop2'},
 {'description': 'FAO-LCCS3 surface hydrology layer',
  'gee:classes': [{'color': 'f9ffa4',
    'description': 'Barren: at least of area 60% is non-vegetated barren\n(sand, rock, soil) or permanent snow/ice with less than 10%\nvegetation.\n',
    'value': 1},
   {'color': '69fff8',
    'description': 'Permanent Snow and Ice: at least 60% of area is covered\nby snow and ice for at least 10 months of the year.\n',
    'value': 2},
   {'color': '1c0dff',
    'description': 'Water Bodies: at least 60% of area is covered by\npermanent water bodies.',
    'value': 3},
   {'color': '003f00',
    'description': 'Dense Forests: tree cover >60% (canopy >2m).',
    'value': 10},
   {'color': '006c00',
    'description': 'Open Forests: tree cover 10-60% (canopy >2m).',
    'value': 20},
   {'color': '72834a',
    'description': 'Woody Wetlands: shrub and tree cover >10% (>1m).\nPermanently or seasonally inundated.',
    'value': 27},
   {'color': 'b6ff05',
    'description': 'Grasslands: dominated by herbaceous annuals (<2m) >10% cover.',
    'value': 30},
   {'color': 'c6b044',
    'description': 'Shrublands: shrub cover >60% (1-2m).',
    'value': 40},
   {'color': '3aba73',
    'description': 'Herbaceous Wetlands: dominated by herbaceous annuals\n(<2m) >10% cover. Permanently or seasonally inundated.\n',
    'value': 50},
   {'color': '1e9db3',
    'description': 'Tundra: tree cover <10%. Snow-covered for at least 8\nmonths of the year.',
    'value': 51}],
  'name': 'LC_Prop3'},
 {'description': 'Product quality flags',
  'gee:classes': [{'description': 'Classified land: has a classification label and is land\naccording to the water mask.',
    'value': 0},
   {'description': 'Unclassified land: not classified because of missing\ndata but land according to the water mask, labeled as barren.\n',
    'value': 1},
   {'description': 'Classified water: has a classification label and is\nwater according to the water mask.',
    'value': 2},
   {'description': 'Unclassified water: not classified because of missing\ndata but water according to the water mask.',
    'value': 3},
   {'description': 'Classified sea ice: classified as snow/ice but water\nmask says it is water and less than 100m elevation, switched to\nwater.\n',
    'value': 4},
   {'description': 'Misclassified water: classified as water but water mask\nsays it is land, switched to secondary label.',
    'value': 5},
   {'description': 'Omitted snow/ice: land according to the water mask that\nwas classified as something other than snow but with a maximum annual\ntemperature below 1◦C, relabeled as snow/ice.\n',
    'value': 6},
   {'description': 'Misclassified snow/ice: land according to the water mask\nthat was classified as snow but with a minimum annual temperature\ngreater than 1◦C, relabeled as barren.\n',
    'value': 7},
   {'description': 'Backfilled label: missing label from stabilization,\nfilled with the pre-stabilized result.',
    'value': 8},
   {'description': 'Forest type changed: climate-based change to forest class.',
    'value': 9}],
  'name': 'QC'},
 {'description': 'Binary land (class 2) / water (class 1) mask derived from MOD44W',
  'gee:classes': [{'color': '1c0dff', 'description': 'Water', 'value': 1},
   {'color': 'f9ffa4', 'description': 'Land,', 'value': 2}],
  'name': 'LW'}]

So, the idea is to create a repository like this one that I use to keep all the scale and offset parameters used for the scaleAndOffset() method in ee_extra : eemont updated. But, in this case, it would be a repository where we would store the collection, the band and the values, colors and descriptions just as you need them for the Dataset class! Then, sankee can just grab the data from this repository to keep all datasets updated :)

Let me know what you think, and, if you want, I can work on creating that repository and linking it to sankee!

Cheers,

Dave

davemlz commented 2 years ago

Hi, @aazuspan!

I was super curious and I just created the repository (https://github.com/davemlz/ee-land-cover-datasets). The repository updates itself every day at midnight and here is the JSON file with the complete list of datasets, bands, descriptions and colors! :)

For creating a Dataset class from all of them, one of the solutions that I usually do is to inherit from a Box object. Look at these examples in spyndex: https://github.com/davemlz/spyndex/blob/main/spyndex/axioms.py. In that way, we just would have to read the JSON file, loop through it creating a Dataset class for each dataset/band and then creating the datasets object using the Box properties!

If you think this can fit in sankee, let me know!

Cheers,

Dave

aazuspan commented 2 years ago

This is incredible @davemlz! You're a STAC wizard! I'm embarrassed to admit I've just been manually entering everything, so having an automated solution to building datasets would be amazing :exploding_head:

For accessing your JSON, would that be done live (e.g. the JSON is downloaded on import or through a load_datasets function)? Or does sankee cache a local copy that can be updated? Just curious what that implementation would look like.

Anyways, you're totally welcome to work on this however you'd like! Obviously building ee-land-cover-datasets is already a huge contribution, but if you feel like making a PR to integrate that into sankee that would be great!

Thanks!

aazuspan commented 2 years ago

One other quick thought--we may need to come up with a good way to convert the class descriptions into shorter class names since some of them are pretty wordy, like Mixed Broadleaf/Needleleaf Forests: co-dominated (40-60%) by broadleaf deciduous and evergreen needleleaf tree (>2m) types. Tree cover >60%. from the MODIS dataset or Cultivated and managed vegetation / agriculture. Lands covered with temporary crops followed by harvest and a bare soil period (e.g., single and multiple cropping systems). Note that perennial woody crops will be classified as the appropriate forest or shrub land cover type. from the CGLS dataset.

Maybe we can get by with just having a list of common delimiters between the name and definition (: and . from the examples above) and splitting the descriptions with those, but ensuring they work well across all datasets might be tricky...

davemlz commented 2 years ago

Hi, @aazuspan!

Haha don't worry. When I started eemont I also did it manual at first! :)

For the JSON access: Both can be. I mean, we can get sankee to cache the JSON for an automatic local use and we can also add an online: bool = False arg to let people get the most updated version that is inside ee-land-cover-datasets. I do it with spectralIndices() :)

For the descriptions: Yes, you're right! I've also seen the long names and that idea of the delimiters is good! I think it can be done, it might take a while, but it is possible! :D

PD: I'm more than happy to work on it! :) I'll start working!

Cheers,

Dave

aazuspan commented 2 years ago

Awesome, that sounds like a good solution!

Let me know if you have any questions or if there's anything that needs to be added or changed in sankee to make this work :)