From f50863c1fcdd36250e10b2ccd3914089d710b386 Mon Sep 17 00:00:00 2001 From: Michael Mattig Date: Thu, 22 Jan 2026 11:46:40 +0100 Subject: [PATCH 1/2] fix: unify geotransform --- examples/add_public_raster_dataset.ipynb | 82 +++++++++++------------- geoengine/types.py | 22 ------- 2 files changed, 38 insertions(+), 66 deletions(-) diff --git a/examples/add_public_raster_dataset.ipynb b/examples/add_public_raster_dataset.ipynb index 7824eda3..5a082946 100644 --- a/examples/add_public_raster_dataset.ipynb +++ b/examples/add_public_raster_dataset.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -32,7 +32,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -49,16 +49,17 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[Volume(name='test_data', path='test_data/')]" + "[Volume(name='test_data', path='test_data/'),\n", + " Volume(name='geodata', path='/home/michael/geodata/')]" ] }, - "execution_count": 3, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -78,16 +79,16 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "GdalMetaDataStatic(cache_ttl=None, params=GdalDatasetParameters(allow_alphaband_as_mask=True, file_not_found_handling=, file_path='raster/landcover/landcover.tif', gdal_config_options=None, gdal_open_options=None, geo_transform=GdalDatasetGeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=0.1), height=1800, no_data_value=None, properties_mapping=None, rasterband_channel=1, width=3600), result_descriptor=RasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ClassificationMeasurement(classes={'0': 'Water Bodies', '1': 'Evergreen Needleleaf Forests', '2': 'Evergreen Broadleaf Forests', '3': 'Deciduous Needleleaf Forests', '4': 'Deciduous Broadleleaf Forests', '5': 'Mixed Forests', '6': 'Closed Shrublands', '7': 'Open Shrublands', '8': 'Woody Savannas', '9': 'Savannas', '10': 'Grasslands', '11': 'Permanent Wtlands', '12': 'Croplands', '13': 'Urban and Built-Up', '14': 'Cropland-Natural Vegetation Mosaics', '15': 'Snow and Ice', '16': 'Barren or Sparsely Vegetated'}, measurement='Land Cover', type='classification'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={}), name='band')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=None, dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'}))), time=None, type='GdalStatic')" + "GdalMetaDataStatic(cache_ttl=None, params=GdalDatasetParameters(allow_alphaband_as_mask=True, file_not_found_handling=, file_path='raster/landcover/landcover.tif', gdal_config_options=None, gdal_open_options=None, geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=0.1), height=1800, no_data_value=None, properties_mapping=None, rasterband_channel=1, width=3600), result_descriptor=RasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ClassificationMeasurement(classes={'0': 'Water Bodies', '1': 'Evergreen Needleleaf Forests', '2': 'Evergreen Broadleaf Forests', '3': 'Deciduous Needleleaf Forests', '4': 'Deciduous Broadleleaf Forests', '5': 'Mixed Forests', '6': 'Closed Shrublands', '7': 'Open Shrublands', '8': 'Woody Savannas', '9': 'Savannas', '10': 'Grasslands', '11': 'Permanent Wtlands', '12': 'Croplands', '13': 'Urban and Built-Up', '14': 'Cropland-Natural Vegetation Mosaics', '15': 'Snow and Ice', '16': 'Barren or Sparsely Vegetated'}, measurement='Land Cover', type='classification'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='band')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=None, dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'}))), time=None, type='GdalStatic')" ] }, - "execution_count": 4, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -181,16 +182,16 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "AddDataset(description='Land Cover', display_name='Land Cover', name='MCD12C1', provenance=[Provenance(citation='The data was obtained from . The layer Majority_Land_Cover_Type_1 was extracted, downscaled and saved as landcover.tif.', license='All data distributed by the LP DAAC contain no restrictions on the data reuse. (https://lpdaac.usgs.gov/resources/faqs/#am-i-allowed-to-reuse-lp-daac-data).', uri='https://lpdaac.usgs.gov/products/mcd12c1v006/')], source_operator='GdalSource', symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[0, 0, 255, 255], value=0), Breakpoint(color=[0, 255, 0, 255], value=8), Breakpoint(color=[255, 0, 0, 255], value=16)], no_data_color=[0, 0, 0, 0], over_color=[0, 0, 0, 0], type='linearGradient', under_color=[0, 0, 0, 0]), one_of_schemas={'LogarithmicGradient', 'LinearGradient', 'PaletteColorizer'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'PolygonSymbology', 'RasterSymbology', 'PointSymbology', 'LineSymbology'}, discriminator_value_class_map={}), tags=None)" + "AddDataset(description='Land Cover', display_name='Land Cover', name='MCD12C1', provenance=[Provenance(citation='The data was obtained from . The layer Majority_Land_Cover_Type_1 was extracted, downscaled and saved as landcover.tif.', license='All data distributed by the LP DAAC contain no restrictions on the data reuse. (https://lpdaac.usgs.gov/resources/faqs/#am-i-allowed-to-reuse-lp-daac-data).', uri='https://lpdaac.usgs.gov/products/mcd12c1v006/')], source_operator='GdalSource', symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[0, 0, 255, 255], value=0), Breakpoint(color=[0, 255, 0, 255], value=8), Breakpoint(color=[255, 0, 0, 255], value=16)], no_data_color=[0, 0, 0, 0], over_color=[0, 0, 0, 0], type='linearGradient', under_color=[0, 0, 0, 0]), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}), tags=None)" ] }, - "execution_count": 5, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -240,7 +241,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -249,7 +250,7 @@ "MCD12C1" ] }, - "execution_count": 6, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -278,27 +279,28 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "description='Boundaries of Germany' display_name='Germany' id=UUID('e28e4183-9fc1-4431-be43-c094e819d569') name='germany_outline' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=5.85248986800011, y=47.2711209110001), upper_right_coordinate=Coordinate2D(x=15.022059367000098, y=55.0653343770001)), columns={}, data_type=, spatial_reference='EPSG:4326', time=TimeInterval(end=8210266876799999, start=-8334601228800000), type='vector'), one_of_schemas={'TypedPlotResultDescriptor', 'TypedRasterResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='OgrSource' symbology=None tags=[]\n", - "description='Land Cover derived from MODIS/Terra+Aqua Land Cover' display_name='Land Cover' id=UUID('76695309-3b13-4571-8dba-bb48891eabd8') name='land_cover' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ClassificationMeasurement(classes={'0': 'Water Bodies', '1': 'Evergreen Needleleaf Forests', '2': 'Evergreen Broadleaf Forests', '3': 'Deciduous Needleleaf Forests', '4': 'Deciduous Broadleaf Forests', '5': 'Mixed Forests', '6': 'Closed Shrublands', '7': 'Open Shrublands', '8': 'Woody Savannas', '9': 'Savannas', '10': 'Grasslands', '11': 'Permanent Wetlands', '12': 'Croplands', '13': 'Urban and Built-Up', '14': 'Cropland-Natural Vegetation Mosaics', '15': 'Snow and Ice', '16': 'Barren or Sparsely Vegetated'}, measurement='Land Cover', type='classification'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={}), name='land_cover')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=8210266876799999, start=-8334601228800000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedPlotResultDescriptor', 'TypedRasterResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'7': [188, 221, 190, 255], '3': [157, 194, 63, 255], '1': [30, 129, 62, 255], '8': [224, 223, 133, 255], '14': [162, 159, 66, 255], '4': [159, 225, 127, 255], '5': [125, 194, 127, 255], '6': [195, 127, 126, 255], '16': [192, 192, 192, 255], '11': [66, 128, 189, 255], '13': [253, 2, 0, 255], '2': [59, 194, 212, 255], '9': [226, 221, 7, 255], '12': [225, 222, 127, 255], '15': [255, 255, 255, 255], '10': [223, 192, 125, 255], '0': [134, 201, 227, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'LogarithmicGradient', 'LinearGradient', 'PaletteColorizer'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'PolygonSymbology', 'RasterSymbology', 'PointSymbology', 'LineSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='Land Cover' display_name='Land Cover' id=UUID('6af78b4a-abc5-4a19-aa4e-3f9960c5496b') name='MCD12C1' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ClassificationMeasurement(classes={'0': 'Water Bodies', '1': 'Evergreen Needleleaf Forests', '2': 'Evergreen Broadleaf Forests', '3': 'Deciduous Needleleaf Forests', '4': 'Deciduous Broadleleaf Forests', '5': 'Mixed Forests', '6': 'Closed Shrublands', '7': 'Open Shrublands', '8': 'Woody Savannas', '9': 'Savannas', '10': 'Grasslands', '11': 'Permanent Wtlands', '12': 'Croplands', '13': 'Urban and Built-Up', '14': 'Cropland-Natural Vegetation Mosaics', '15': 'Snow and Ice', '16': 'Barren or Sparsely Vegetated'}, measurement='Land Cover', type='classification'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={}), name='band')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=None, dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedPlotResultDescriptor', 'TypedRasterResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[0, 0, 255, 255], value=0.0), Breakpoint(color=[0, 255, 0, 255], value=8.0), Breakpoint(color=[255, 0, 0, 255], value=16.0)], no_data_color=[0, 0, 0, 0], over_color=[0, 0, 0, 0], type='linearGradient', under_color=[0, 0, 0, 0]), one_of_schemas={'LogarithmicGradient', 'LinearGradient', 'PaletteColorizer'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'PolygonSymbology', 'RasterSymbology', 'PointSymbology', 'LineSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='A mock dataset' display_name='Mock' id=UUID('a152cbd6-a370-4ad2-ba70-d3bf9eba0d28') name='Mock' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=1.0, y=2.0), upper_right_coordinate=Coordinate2D(x=1.0, y=2.0)), columns={}, data_type=, spatial_reference='EPSG:4326', time=TimeInterval(end=8210266876799999, start=-8334601228800000), type='vector'), one_of_schemas={'TypedPlotResultDescriptor', 'TypedRasterResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='MockDatasetDataSource' symbology=None tags=[]\n", - "description='Ports from Natural Earth' display_name='Natural Earth 10m Ports' id=UUID('c6020fd2-3c77-40a4-a726-e8b1bdb5c306') name='ne_10m_ports' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=-171.75795, y=-54.809444), upper_right_coordinate=Coordinate2D(x=179.309364, y=78.226111)), columns={'scalerank': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={})), 'name': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={})), 'natlscale': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={})), 'website': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={})), 'featurecla': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={}))}, data_type=, spatial_reference='EPSG:4326', time=TimeInterval(end=8210266876799999, start=-8334601228800000), type='vector'), one_of_schemas={'TypedPlotResultDescriptor', 'TypedRasterResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='OgrSource' symbology=None tags=[]\n", - "description='Ports from Natural Earth reprojected to EPSG:3857' display_name='Natural Earth 10m Ports 3857' id=UUID('65a574ac-3338-42c8-940b-8306155bdb6d') name='ne_10_ports_3857' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=-19120007.589356, y=-7324970.649647), upper_right_coordinate=Coordinate2D(x=19960627.094946, y=14490886.335637)), columns={'scalerank': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={})), 'natlscale': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={})), 'website': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={})), 'name': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={})), 'featurecla': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={}))}, data_type=, spatial_reference='EPSG:3857', time=TimeInterval(end=8210266876799999, start=-8334601228800000), type='vector'), one_of_schemas={'TypedPlotResultDescriptor', 'TypedRasterResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='OgrSource' symbology=None tags=[]\n", - "description='This data derived from Natural Earth 1 portrays the world environment in an idealized manner with little human influence. The softly blended colors of Natural Earth 2 are ideal for historical mapping, because it shows the world much as it looked before the modern era.' display_name='Natural Earth II – Blue' id=UUID('5a81b82d-d1ee-4348-986e-427cac9753b1') name='ne2_raster_blue' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={}), name='blue')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=8210266876799999, start=-8334601228800000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedPlotResultDescriptor', 'TypedRasterResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[247, 251, 255, 255], value=0.0), Breakpoint(color=[106, 173, 213, 255], value=127.0), Breakpoint(color=[246, 250, 254, 255], value=255.0)], no_data_color=[0, 0, 0, 0], over_color=[246, 250, 254, 255], type='linearGradient', under_color=[247, 251, 255, 255]), one_of_schemas={'LogarithmicGradient', 'LinearGradient', 'PaletteColorizer'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'PolygonSymbology', 'RasterSymbology', 'PointSymbology', 'LineSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='This data derived from Natural Earth 1 portrays the world environment in an idealized manner with little human influence. The softly blended colors of Natural Earth 2 are ideal for historical mapping, because it shows the world much as it looked before the modern era.' display_name='Natural Earth II – Green' id=UUID('8a65fa50-5d6f-427b-a417-8bead2ccc830') name='ne2_raster_green' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={}), name='green')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=8210266876799999, start=-8334601228800000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedPlotResultDescriptor', 'TypedRasterResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[247, 252, 245, 255], value=0.0), Breakpoint(color=[115, 195, 117, 255], value=127.0), Breakpoint(color=[246, 251, 244, 255], value=255.0)], no_data_color=[0, 0, 0, 0], over_color=[246, 251, 244, 255], type='linearGradient', under_color=[247, 252, 245, 255]), one_of_schemas={'LogarithmicGradient', 'LinearGradient', 'PaletteColorizer'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'PolygonSymbology', 'RasterSymbology', 'PointSymbology', 'LineSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='This data derived from Natural Earth 1 portrays the world environment in an idealized manner with little human influence. The softly blended colors of Natural Earth 2 are ideal for historical mapping, because it shows the world much as it looked before the modern era.' display_name='Natural Earth II – Red' id=UUID('2118657d-d1dd-44e0-8278-57b3aa7b588e') name='ne2_raster_red' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={}), name='red')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=8210266876799999, start=-8334601228800000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedPlotResultDescriptor', 'TypedRasterResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[255, 245, 240, 255], value=0.0), Breakpoint(color=[250, 105, 73, 255], value=127.0), Breakpoint(color=[254, 244, 239, 255], value=255.0)], no_data_color=[0, 0, 0, 0], over_color=[254, 244, 239, 255], type='linearGradient', under_color=[255, 245, 240, 255]), one_of_schemas={'LogarithmicGradient', 'LinearGradient', 'PaletteColorizer'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'PolygonSymbology', 'RasterSymbology', 'PointSymbology', 'LineSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='NDVI data from MODIS' display_name='NDVI' id=UUID('c6a3a85b-306f-403c-8c41-cf96186473f6') name='ndvi' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ContinuousMeasurement(measurement='vegetation', type='continuous', unit=None), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=1404172800000, start=1388534400000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1388534400000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedPlotResultDescriptor', 'TypedRasterResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'253': [11, 36, 3, 255], '81': [168, 160, 94, 255], '185': [66, 84, 33, 255], '99': [150, 147, 65, 255], '111': [137, 139, 50, 255], '12': [227, 214, 198, 255], '91': [158, 153, 77, 255], '180': [70, 88, 33, 255], '120': [127, 133, 39, 255], '132': [114, 124, 30, 255], '51': [195, 181, 142, 255], '152': [94, 109, 32, 255], '7': [231, 218, 205, 255], '84': [165, 158, 89, 255], '10': [228, 215, 201, 255], '56': [191, 177, 134, 255], '135': [111, 122, 31, 255], '250': [13, 39, 3, 255], '140': [106, 118, 31, 255], '28': [214, 200, 175, 255], '252': [12, 37, 3, 255], '24': [217, 203, 181, 255], '144': [102, 115, 32, 255], '156': [90, 106, 33, 255], '19': [221, 207, 188, 255], '112': [135, 138, 49, 255], '34': [209, 195, 167, 255], '153': [93, 109, 32, 255], '32': [211, 196, 170, 255], '59': [188, 175, 130, 255], '103': [145, 145, 60, 255], '129': [117, 127, 30, 255], '247': [15, 41, 2, 255], '254': [11, 36, 3, 255], '236': [22, 49, 1, 255], '90': [159, 153, 78, 255], '52': [194, 181, 140, 255], '54': [193, 179, 137, 255], '251': [13, 38, 3, 255], '55': [192, 178, 136, 255], '162': [85, 102, 33, 255], '228': [27, 54, 0, 255], '113': [134, 138, 48, 255], '195': [57, 76, 29, 255], '232': [24, 52, 1, 255], '242': [18, 44, 2, 255], '87': [162, 156, 84, 255], '134': [112, 123, 31, 255], '8': [230, 217, 204, 255], '179': [71, 88, 33, 255], '174': [75, 92, 33, 255], '9': [229, 216, 202, 255], '31': [212, 197, 171, 255], '0': [236, 224, 215, 0], '151': [95, 110, 32, 255], '147': [99, 113, 32, 255], '48': [198, 184, 146, 255], '44': [201, 187, 152, 255], '27': [215, 200, 177, 255], '67': [181, 169, 117, 255], '108': [140, 141, 54, 255], '26': [216, 201, 178, 255], '114': [133, 137, 46, 255], '79': [170, 161, 97, 255], '199': [53, 74, 25, 255], '130': [116, 126, 30, 255], '244': [17, 43, 2, 255], '47': [199, 185, 148, 255], '63': [185, 172, 124, 255], '42': [203, 188, 155, 255], '187': [64, 82, 33, 255], '82': [167, 159, 92, 255], '25': [217, 202, 180, 255], '196': [56, 76, 28, 255], '164': [83, 100, 33, 255], '11': [227, 214, 199, 255], '211': [42, 66, 12, 255], '155': [91, 107, 33, 255], '193': [59, 78, 31, 255], '29': [214, 199, 174, 255], '159': [87, 104, 33, 255], '104': [144, 144, 59, 255], '192': [60, 78, 32, 255], '1': [235, 223, 214, 255], '76': [172, 163, 102, 255], '92': [157, 152, 75, 255], '50': [196, 182, 143, 255], '184': [67, 84, 33, 255], '191': [61, 79, 33, 255], '101': [147, 146, 63, 255], '230': [26, 53, 1, 255], '83': [166, 158, 90, 255], '142': [104, 117, 31, 255], '43': [202, 188, 153, 255], '137': [109, 121, 31, 255], '18': [222, 208, 189, 255], '249': [14, 39, 2, 255], '17': [223, 209, 191, 255], '60': [188, 174, 128, 255], '95': [154, 150, 70, 255], '53': [193, 180, 139, 255], '241': [19, 45, 2, 255], '127': [119, 128, 30, 255], '74': [174, 164, 105, 255], '94': [155, 151, 72, 255], '105': [143, 143, 58, 255], '45': [200, 186, 150, 255], '167': [81, 98, 33, 255], '163': [84, 101, 33, 255], '233': [24, 51, 1, 255], '210': [43, 67, 13, 255], '77': [171, 162, 100, 255], '100': [149, 147, 64, 255], '189': [63, 81, 33, 255], '148': [98, 112, 32, 255], '212': [41, 65, 11, 255], '221': [32, 59, 2, 255], '170': [78, 95, 33, 255], '118': [129, 134, 41, 255], '68': [180, 169, 116, 255], '166': [81, 99, 33, 255], '183': [68, 85, 33, 255], '198': [54, 74, 26, 255], '58': [189, 176, 131, 255], '203': [49, 71, 21, 255], '160': [86, 103, 33, 255], '123': [123, 131, 35, 255], '158': [88, 105, 33, 255], '110': [138, 140, 51, 255], '13': [226, 213, 197, 255], '176': [73, 91, 33, 255], '149': [97, 112, 32, 255], '97': [152, 149, 68, 255], '177': [72, 90, 33, 255], '157': [89, 106, 33, 255], '88': [161, 155, 82, 255], '141': [105, 118, 31, 255], '117': [130, 135, 43, 255], '224': [29, 57, 0, 255], '121': [126, 132, 38, 255], '62': [186, 173, 125, 255], '188': [63, 81, 33, 255], '124': [122, 130, 34, 255], '165': [82, 99, 33, 255], '39': [205, 191, 159, 255], '72': [176, 166, 109, 255], '64': [184, 171, 122, 255], '109': [139, 140, 53, 255], '16': [224, 210, 192, 255], '227': [28, 55, 0, 255], '131': [115, 125, 30, 255], '106': [142, 142, 56, 255], '231': [25, 52, 1, 255], '22': [219, 205, 184, 255], '146': [100, 114, 32, 255], '78': [170, 162, 99, 255], '40': [204, 190, 158, 255], '169': [79, 96, 33, 255], '243': [18, 44, 2, 255], '172': [76, 94, 33, 255], '216': [37, 63, 7, 255], '240': [19, 46, 2, 255], '49': [197, 183, 145, 255], '38': [206, 192, 161, 255], '6': [231, 219, 206, 255], '213': [40, 65, 10, 255], '154': [92, 108, 33, 255], '222': [31, 59, 1, 255], '2': [234, 222, 212, 255], '171': [77, 95, 33, 255], '57': [190, 177, 133, 255], '200': [52, 73, 24, 255], '234': [23, 50, 1, 255], '204': [48, 70, 20, 255], '226': [28, 56, 0, 255], '150': [96, 111, 32, 255], '37': [207, 192, 162, 255], '125': [121, 129, 33, 255], '237': [21, 48, 1, 255], '116': [131, 136, 44, 255], '41': [204, 189, 156, 255], '23': [218, 204, 182, 255], '245': [16, 42, 2, 255], '209': [44, 67, 14, 255], '205': [47, 70, 19, 255], '202': [50, 72, 22, 255], '143': [103, 116, 32, 255], '86': [163, 156, 85, 255], '93': [156, 151, 73, 255], '220': [33, 60, 3, 255], '73': [175, 165, 107, 255], '161': [85, 102, 33, 255], '219': [34, 61, 4, 255], '20': [221, 207, 187, 255], '119': [128, 134, 40, 255], '5': [232, 220, 208, 255], '186': [65, 83, 33, 255], '201': [51, 72, 23, 255], '65': [183, 171, 121, 255], '122': [124, 131, 36, 255], '96': [153, 149, 69, 255], '178': [72, 89, 33, 255], '229': [26, 54, 1, 255], '223': [30, 58, 0, 255], '30': [213, 198, 172, 255], '145': [101, 115, 32, 255], '139': [107, 119, 31, 255], '168': [80, 97, 33, 255], '4': [233, 221, 209, 255], '190': [62, 80, 33, 255], '35': [209, 194, 165, 255], '33': [210, 195, 168, 255], '69': [179, 168, 114, 255], '115': [132, 136, 45, 255], '126': [120, 129, 31, 255], '70': [178, 167, 112, 255], '175': [74, 92, 33, 255], '107': [141, 142, 55, 255], '214': [39, 64, 9, 255], '218': [35, 61, 5, 255], '98': [151, 148, 66, 255], '66': [182, 170, 119, 255], '85': [164, 157, 87, 255], '194': [58, 77, 30, 255], '239': [20, 47, 2, 255], '36': [208, 193, 164, 255], '173': [76, 93, 33, 255], '215': [38, 63, 8, 255], '235': [23, 49, 1, 255], '46': [199, 185, 149, 255], '246': [16, 41, 2, 255], '71': [177, 167, 111, 255], '15': [224, 211, 194, 255], '217': [36, 62, 6, 255], '207': [46, 69, 17, 255], '80': [169, 160, 95, 255], '225': [29, 57, 0, 255], '21': [220, 206, 185, 255], '133': [113, 124, 31, 255], '182': [68, 86, 33, 255], '208': [45, 68, 15, 255], '197': [55, 75, 27, 255], '128': [118, 127, 30, 255], '102': [146, 145, 61, 255], '138': [108, 120, 31, 255], '14': [225, 212, 195, 255], '136': [110, 121, 31, 255], '238': [21, 47, 1, 255], '89': [160, 154, 80, 255], '61': [187, 174, 127, 255], '181': [69, 87, 33, 255], '206': [46, 69, 18, 255], '248': [14, 40, 2, 255], '255': [0, 0, 0, 255], '75': [173, 164, 104, 255], '3': [234, 221, 211, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'LogarithmicGradient', 'LinearGradient', 'PaletteColorizer'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'PolygonSymbology', 'RasterSymbology', 'PointSymbology', 'LineSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='NDVI data from MODIS reprojected to EPSG:3857' display_name='NDVI3857' id=UUID('2c925a61-db3c-49a6-941b-94acdbd00215') name='ndvi_3857' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-20037508.342789244, y=19971868.880408563), x_pixel_size=14052.95025804874, y_pixel_size=-14057.881117788405), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:3857', time=TimeDescriptor(bounds=TimeInterval(end=1404172800000, start=1388534400000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1388534400000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedPlotResultDescriptor', 'TypedRasterResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=None tags=[]\n", - "description='NDVI data from MODIS' display_name='NDVI as GdalMetaDataList' id=UUID('6667843d-7c0f-4d12-86d1-a9939a9a2a1b') name='ndvi_list' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=1404172800000, start=1388534400000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1388534400000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedPlotResultDescriptor', 'TypedRasterResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'43': [202, 188, 153, 255], '51': [195, 181, 142, 255], '53': [193, 180, 139, 255], '104': [144, 144, 59, 255], '28': [214, 200, 175, 255], '77': [171, 162, 100, 255], '44': [201, 187, 152, 255], '192': [60, 78, 32, 255], '247': [15, 41, 2, 255], '201': [51, 72, 23, 255], '184': [67, 84, 33, 255], '233': [24, 51, 1, 255], '37': [207, 192, 162, 255], '116': [131, 136, 44, 255], '97': [152, 149, 68, 255], '189': [63, 81, 33, 255], '49': [197, 183, 145, 255], '79': [170, 161, 97, 255], '225': [29, 57, 0, 255], '193': [59, 78, 31, 255], '149': [97, 112, 32, 255], '111': [137, 139, 50, 255], '127': [119, 128, 30, 255], '108': [140, 141, 54, 255], '3': [234, 221, 211, 255], '176': [73, 91, 33, 255], '0': [236, 224, 215, 0], '110': [138, 140, 51, 255], '94': [155, 151, 72, 255], '206': [46, 69, 18, 255], '82': [167, 159, 92, 255], '74': [174, 164, 105, 255], '72': [176, 166, 109, 255], '11': [227, 214, 199, 255], '231': [25, 52, 1, 255], '26': [216, 201, 178, 255], '141': [105, 118, 31, 255], '21': [220, 206, 185, 255], '185': [66, 84, 33, 255], '194': [58, 77, 30, 255], '163': [84, 101, 33, 255], '98': [151, 148, 66, 255], '117': [130, 135, 43, 255], '211': [42, 66, 12, 255], '106': [142, 142, 56, 255], '160': [86, 103, 33, 255], '76': [172, 163, 102, 255], '248': [14, 40, 2, 255], '177': [72, 90, 33, 255], '115': [132, 136, 45, 255], '139': [107, 119, 31, 255], '137': [109, 121, 31, 255], '179': [71, 88, 33, 255], '150': [96, 111, 32, 255], '241': [19, 45, 2, 255], '154': [92, 108, 33, 255], '25': [217, 202, 180, 255], '253': [11, 36, 3, 255], '243': [18, 44, 2, 255], '187': [64, 82, 33, 255], '7': [231, 218, 205, 255], '200': [52, 73, 24, 255], '100': [149, 147, 64, 255], '15': [224, 211, 194, 255], '223': [30, 58, 0, 255], '174': [75, 92, 33, 255], '221': [32, 59, 2, 255], '214': [39, 64, 9, 255], '4': [233, 221, 209, 255], '162': [85, 102, 33, 255], '41': [204, 189, 156, 255], '8': [230, 217, 204, 255], '81': [168, 160, 94, 255], '250': [13, 39, 3, 255], '132': [114, 124, 30, 255], '254': [11, 36, 3, 255], '229': [26, 54, 1, 255], '83': [166, 158, 90, 255], '252': [12, 37, 3, 255], '93': [156, 151, 73, 255], '126': [120, 129, 31, 255], '67': [181, 169, 117, 255], '96': [153, 149, 69, 255], '222': [31, 59, 1, 255], '128': [118, 127, 30, 255], '183': [68, 85, 33, 255], '75': [173, 164, 104, 255], '6': [231, 219, 206, 255], '91': [158, 153, 77, 255], '50': [196, 182, 143, 255], '230': [26, 53, 1, 255], '17': [223, 209, 191, 255], '216': [37, 63, 7, 255], '85': [164, 157, 87, 255], '35': [209, 194, 165, 255], '103': [145, 145, 60, 255], '207': [46, 69, 17, 255], '212': [41, 65, 11, 255], '16': [224, 210, 192, 255], '34': [209, 195, 167, 255], '144': [102, 115, 32, 255], '232': [24, 52, 1, 255], '36': [208, 193, 164, 255], '13': [226, 213, 197, 255], '199': [53, 74, 25, 255], '30': [213, 198, 172, 255], '140': [106, 118, 31, 255], '203': [49, 71, 21, 255], '39': [205, 191, 159, 255], '251': [13, 38, 3, 255], '153': [93, 109, 32, 255], '196': [56, 76, 28, 255], '182': [68, 86, 33, 255], '249': [14, 39, 2, 255], '87': [162, 156, 84, 255], '197': [55, 75, 27, 255], '151': [95, 110, 32, 255], '255': [0, 0, 0, 255], '130': [116, 126, 30, 255], '156': [90, 106, 33, 255], '129': [117, 127, 30, 255], '65': [183, 171, 121, 255], '69': [179, 168, 114, 255], '219': [34, 61, 4, 255], '42': [203, 188, 155, 255], '38': [206, 192, 161, 255], '5': [232, 220, 208, 255], '180': [70, 88, 33, 255], '238': [21, 47, 1, 255], '167': [81, 98, 33, 255], '190': [62, 80, 33, 255], '155': [91, 107, 33, 255], '178': [72, 89, 33, 255], '145': [101, 115, 32, 255], '61': [187, 174, 127, 255], '152': [94, 109, 32, 255], '29': [214, 199, 174, 255], '134': [112, 123, 31, 255], '22': [219, 205, 184, 255], '64': [184, 171, 122, 255], '204': [48, 70, 20, 255], '245': [16, 42, 2, 255], '172': [76, 94, 33, 255], '164': [83, 100, 33, 255], '133': [113, 124, 31, 255], '52': [194, 181, 140, 255], '188': [63, 81, 33, 255], '70': [178, 167, 112, 255], '112': [135, 138, 49, 255], '80': [169, 160, 95, 255], '84': [165, 158, 89, 255], '88': [161, 155, 82, 255], '122': [124, 131, 36, 255], '102': [146, 145, 61, 255], '215': [38, 63, 8, 255], '119': [128, 134, 40, 255], '71': [177, 167, 111, 255], '181': [69, 87, 33, 255], '159': [87, 104, 33, 255], '202': [50, 72, 22, 255], '95': [154, 150, 70, 255], '90': [159, 153, 78, 255], '27': [215, 200, 177, 255], '121': [126, 132, 38, 255], '12': [227, 214, 198, 255], '40': [204, 190, 158, 255], '86': [163, 156, 85, 255], '237': [21, 48, 1, 255], '169': [79, 96, 33, 255], '101': [147, 146, 63, 255], '78': [170, 162, 99, 255], '138': [108, 120, 31, 255], '191': [61, 79, 33, 255], '10': [228, 215, 201, 255], '136': [110, 121, 31, 255], '107': [141, 142, 55, 255], '89': [160, 154, 80, 255], '242': [18, 44, 2, 255], '224': [29, 57, 0, 255], '143': [103, 116, 32, 255], '148': [98, 112, 32, 255], '125': [121, 129, 33, 255], '240': [19, 46, 2, 255], '92': [157, 152, 75, 255], '208': [45, 68, 15, 255], '246': [16, 41, 2, 255], '118': [129, 134, 41, 255], '239': [20, 47, 2, 255], '173': [76, 93, 33, 255], '166': [81, 99, 33, 255], '227': [28, 55, 0, 255], '48': [198, 184, 146, 255], '175': [74, 92, 33, 255], '33': [210, 195, 168, 255], '66': [182, 170, 119, 255], '123': [123, 131, 35, 255], '9': [229, 216, 202, 255], '142': [104, 117, 31, 255], '105': [143, 143, 58, 255], '68': [180, 169, 116, 255], '218': [35, 61, 5, 255], '147': [99, 113, 32, 255], '59': [188, 175, 130, 255], '131': [115, 125, 30, 255], '234': [23, 50, 1, 255], '46': [199, 185, 149, 255], '58': [189, 176, 131, 255], '109': [139, 140, 53, 255], '45': [200, 186, 150, 255], '54': [193, 179, 137, 255], '19': [221, 207, 188, 255], '114': [133, 137, 46, 255], '32': [211, 196, 170, 255], '60': [188, 174, 128, 255], '210': [43, 67, 13, 255], '18': [222, 208, 189, 255], '1': [235, 223, 214, 255], '209': [44, 67, 14, 255], '244': [17, 43, 2, 255], '120': [127, 133, 39, 255], '113': [134, 138, 48, 255], '217': [36, 62, 6, 255], '235': [23, 49, 1, 255], '195': [57, 76, 29, 255], '23': [218, 204, 182, 255], '198': [54, 74, 26, 255], '186': [65, 83, 33, 255], '47': [199, 185, 148, 255], '62': [186, 173, 125, 255], '73': [175, 165, 107, 255], '205': [47, 70, 19, 255], '171': [77, 95, 33, 255], '57': [190, 177, 133, 255], '56': [191, 177, 134, 255], '220': [33, 60, 3, 255], '170': [78, 95, 33, 255], '236': [22, 49, 1, 255], '99': [150, 147, 65, 255], '228': [27, 54, 0, 255], '14': [225, 212, 195, 255], '20': [221, 207, 187, 255], '55': [192, 178, 136, 255], '63': [185, 172, 124, 255], '135': [111, 122, 31, 255], '124': [122, 130, 34, 255], '165': [82, 99, 33, 255], '213': [40, 65, 10, 255], '226': [28, 56, 0, 255], '158': [88, 105, 33, 255], '157': [89, 106, 33, 255], '31': [212, 197, 171, 255], '161': [85, 102, 33, 255], '2': [234, 222, 212, 255], '168': [80, 97, 33, 255], '24': [217, 203, 181, 255], '146': [100, 114, 32, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'LogarithmicGradient', 'LinearGradient', 'PaletteColorizer'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'PolygonSymbology', 'RasterSymbology', 'PointSymbology', 'LineSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='NDVI data from MODIS but with flipped y-axis' display_name='NDVI flipped y-axis' id=UUID('85a0b8b7-cb47-425e-a5d5-c9b82201d5a6') name='ndvi_flipped_axis' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ContinuousMeasurement(measurement='vegetation', type='continuous', unit=None), one_of_schemas={'UnitlessMeasurement', 'ClassificationMeasurement', 'ContinuousMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=-90.0), x_pixel_size=0.1, y_pixel_size=0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=-1), top_left_idx=GridIdx2D(x_idx=0, y_idx=-1800)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=1404172800000, start=1388534400000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1388534400000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedPlotResultDescriptor', 'TypedRasterResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'203': [49, 71, 21, 255], '148': [98, 112, 32, 255], '65': [183, 171, 121, 255], '7': [231, 218, 205, 255], '163': [84, 101, 33, 255], '143': [103, 116, 32, 255], '169': [79, 96, 33, 255], '115': [132, 136, 45, 255], '89': [160, 154, 80, 255], '98': [151, 148, 66, 255], '156': [90, 106, 33, 255], '213': [40, 65, 10, 255], '158': [88, 105, 33, 255], '73': [175, 165, 107, 255], '140': [106, 118, 31, 255], '221': [32, 59, 2, 255], '194': [58, 77, 30, 255], '252': [12, 37, 3, 255], '87': [162, 156, 84, 255], '186': [65, 83, 33, 255], '125': [121, 129, 33, 255], '124': [122, 130, 34, 255], '101': [147, 146, 63, 255], '121': [126, 132, 38, 255], '61': [187, 174, 127, 255], '21': [220, 206, 185, 255], '56': [191, 177, 134, 255], '183': [68, 85, 33, 255], '99': [150, 147, 65, 255], '26': [216, 201, 178, 255], '134': [112, 123, 31, 255], '249': [14, 39, 2, 255], '180': [70, 88, 33, 255], '105': [143, 143, 58, 255], '190': [62, 80, 33, 255], '171': [77, 95, 33, 255], '211': [42, 66, 12, 255], '112': [135, 138, 49, 255], '201': [51, 72, 23, 255], '23': [218, 204, 182, 255], '123': [123, 131, 35, 255], '178': [72, 89, 33, 255], '58': [189, 176, 131, 255], '67': [181, 169, 117, 255], '66': [182, 170, 119, 255], '154': [92, 108, 33, 255], '71': [177, 167, 111, 255], '79': [170, 161, 97, 255], '174': [75, 92, 33, 255], '238': [21, 47, 1, 255], '104': [144, 144, 59, 255], '44': [201, 187, 152, 255], '189': [63, 81, 33, 255], '234': [23, 50, 1, 255], '12': [227, 214, 198, 255], '46': [199, 185, 149, 255], '164': [83, 100, 33, 255], '246': [16, 41, 2, 255], '243': [18, 44, 2, 255], '120': [127, 133, 39, 255], '39': [205, 191, 159, 255], '70': [178, 167, 112, 255], '31': [212, 197, 171, 255], '62': [186, 173, 125, 255], '30': [213, 198, 172, 255], '150': [96, 111, 32, 255], '229': [26, 54, 1, 255], '107': [141, 142, 55, 255], '165': [82, 99, 33, 255], '184': [67, 84, 33, 255], '223': [30, 58, 0, 255], '149': [97, 112, 32, 255], '48': [198, 184, 146, 255], '40': [204, 190, 158, 255], '215': [38, 63, 8, 255], '131': [115, 125, 30, 255], '117': [130, 135, 43, 255], '209': [44, 67, 14, 255], '157': [89, 106, 33, 255], '231': [25, 52, 1, 255], '64': [184, 171, 122, 255], '228': [27, 54, 0, 255], '0': [236, 224, 215, 0], '114': [133, 137, 46, 255], '127': [119, 128, 30, 255], '72': [176, 166, 109, 255], '147': [99, 113, 32, 255], '25': [217, 202, 180, 255], '91': [158, 153, 77, 255], '22': [219, 205, 184, 255], '242': [18, 44, 2, 255], '63': [185, 172, 124, 255], '10': [228, 215, 201, 255], '153': [93, 109, 32, 255], '37': [207, 192, 162, 255], '241': [19, 45, 2, 255], '159': [87, 104, 33, 255], '110': [138, 140, 51, 255], '254': [11, 36, 3, 255], '248': [14, 40, 2, 255], '51': [195, 181, 142, 255], '139': [107, 119, 31, 255], '93': [156, 151, 73, 255], '103': [145, 145, 60, 255], '173': [76, 93, 33, 255], '182': [68, 86, 33, 255], '84': [165, 158, 89, 255], '118': [129, 134, 41, 255], '253': [11, 36, 3, 255], '232': [24, 52, 1, 255], '74': [174, 164, 105, 255], '247': [15, 41, 2, 255], '42': [203, 188, 155, 255], '116': [131, 136, 44, 255], '69': [179, 168, 114, 255], '166': [81, 99, 33, 255], '28': [214, 200, 175, 255], '36': [208, 193, 164, 255], '142': [104, 117, 31, 255], '162': [85, 102, 33, 255], '185': [66, 84, 33, 255], '197': [55, 75, 27, 255], '198': [54, 74, 26, 255], '152': [94, 109, 32, 255], '76': [172, 163, 102, 255], '179': [71, 88, 33, 255], '151': [95, 110, 32, 255], '240': [19, 46, 2, 255], '168': [80, 97, 33, 255], '133': [113, 124, 31, 255], '214': [39, 64, 9, 255], '219': [34, 61, 4, 255], '20': [221, 207, 187, 255], '59': [188, 175, 130, 255], '6': [231, 219, 206, 255], '96': [153, 149, 69, 255], '188': [63, 81, 33, 255], '119': [128, 134, 40, 255], '235': [23, 49, 1, 255], '172': [76, 94, 33, 255], '208': [45, 68, 15, 255], '13': [226, 213, 197, 255], '141': [105, 118, 31, 255], '45': [200, 186, 150, 255], '108': [140, 141, 54, 255], '113': [134, 138, 48, 255], '136': [110, 121, 31, 255], '132': [114, 124, 30, 255], '137': [109, 121, 31, 255], '126': [120, 129, 31, 255], '216': [37, 63, 7, 255], '233': [24, 51, 1, 255], '50': [196, 182, 143, 255], '9': [229, 216, 202, 255], '88': [161, 155, 82, 255], '181': [69, 87, 33, 255], '177': [72, 90, 33, 255], '5': [232, 220, 208, 255], '217': [36, 62, 6, 255], '3': [234, 221, 211, 255], '207': [46, 69, 17, 255], '34': [209, 195, 167, 255], '230': [26, 53, 1, 255], '195': [57, 76, 29, 255], '144': [102, 115, 32, 255], '77': [171, 162, 100, 255], '94': [155, 151, 72, 255], '27': [215, 200, 177, 255], '227': [28, 55, 0, 255], '237': [21, 48, 1, 255], '128': [118, 127, 30, 255], '187': [64, 82, 33, 255], '54': [193, 179, 137, 255], '68': [180, 169, 116, 255], '167': [81, 98, 33, 255], '16': [224, 210, 192, 255], '146': [100, 114, 32, 255], '82': [167, 159, 92, 255], '122': [124, 131, 36, 255], '224': [29, 57, 0, 255], '222': [31, 59, 1, 255], '205': [47, 70, 19, 255], '111': [137, 139, 50, 255], '19': [221, 207, 188, 255], '18': [222, 208, 189, 255], '206': [46, 69, 18, 255], '145': [101, 115, 32, 255], '41': [204, 189, 156, 255], '236': [22, 49, 1, 255], '138': [108, 120, 31, 255], '210': [43, 67, 13, 255], '135': [111, 122, 31, 255], '220': [33, 60, 3, 255], '78': [170, 162, 99, 255], '191': [61, 79, 33, 255], '244': [17, 43, 2, 255], '155': [91, 107, 33, 255], '60': [188, 174, 128, 255], '90': [159, 153, 78, 255], '11': [227, 214, 199, 255], '130': [116, 126, 30, 255], '33': [210, 195, 168, 255], '53': [193, 180, 139, 255], '129': [117, 127, 30, 255], '106': [142, 142, 56, 255], '32': [211, 196, 170, 255], '86': [163, 156, 85, 255], '75': [173, 164, 104, 255], '161': [85, 102, 33, 255], '160': [86, 103, 33, 255], '52': [194, 181, 140, 255], '199': [53, 74, 25, 255], '192': [60, 78, 32, 255], '43': [202, 188, 153, 255], '85': [164, 157, 87, 255], '92': [157, 152, 75, 255], '4': [233, 221, 209, 255], '35': [209, 194, 165, 255], '97': [152, 149, 68, 255], '251': [13, 38, 3, 255], '225': [29, 57, 0, 255], '24': [217, 203, 181, 255], '212': [41, 65, 11, 255], '170': [78, 95, 33, 255], '83': [166, 158, 90, 255], '193': [59, 78, 31, 255], '2': [234, 222, 212, 255], '57': [190, 177, 133, 255], '239': [20, 47, 2, 255], '29': [214, 199, 174, 255], '95': [154, 150, 70, 255], '1': [235, 223, 214, 255], '109': [139, 140, 53, 255], '226': [28, 56, 0, 255], '102': [146, 145, 61, 255], '81': [168, 160, 94, 255], '55': [192, 178, 136, 255], '204': [48, 70, 20, 255], '15': [224, 211, 194, 255], '175': [74, 92, 33, 255], '176': [73, 91, 33, 255], '250': [13, 39, 3, 255], '218': [35, 61, 5, 255], '14': [225, 212, 195, 255], '255': [0, 0, 0, 255], '49': [197, 183, 145, 255], '200': [52, 73, 24, 255], '80': [169, 160, 95, 255], '100': [149, 147, 64, 255], '38': [206, 192, 161, 255], '245': [16, 42, 2, 255], '17': [223, 209, 191, 255], '47': [199, 185, 148, 255], '196': [56, 76, 28, 255], '202': [50, 72, 22, 255], '8': [230, 217, 204, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'LogarithmicGradient', 'LinearGradient', 'PaletteColorizer'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'PolygonSymbology', 'RasterSymbology', 'PointSymbology', 'LineSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='Some points in Europe in 2014' display_name='Points with Time' id=UUID('32865f1a-04e5-42f3-96e3-630b931b8136') name='points_with_time' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=3.966206, y=45.903036), upper_right_coordinate=Coordinate2D(x=19.171284, y=51.847343)), columns={}, data_type=, spatial_reference='EPSG:4326', time=TimeInterval(end=1404172800000, start=1396310400000), type='vector'), one_of_schemas={'TypedPlotResultDescriptor', 'TypedRasterResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='OgrSource' symbology=None tags=[]\n" + "description='Boundaries of Germany' display_name='Germany' id=UUID('908a5a68-66e2-47d7-97d6-f76db0fb950b') name='germany_outline' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=5.85248986800011, y=47.2711209110001), upper_right_coordinate=Coordinate2D(x=15.022059367000098, y=55.0653343770001)), columns={}, data_type=, spatial_reference='EPSG:4326', time=TimeInterval(end=8210266876799999, start=-8334601228800000), type='vector'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='OgrSource' symbology=None tags=[]\n", + "description='Land Cover' display_name='Land Cover' id=UUID('ecf79015-2a73-4729-81a7-475af3681433') name='MCD12C1' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ClassificationMeasurement(classes={'0': 'Water Bodies', '1': 'Evergreen Needleleaf Forests', '2': 'Evergreen Broadleaf Forests', '3': 'Deciduous Needleleaf Forests', '4': 'Deciduous Broadleleaf Forests', '5': 'Mixed Forests', '6': 'Closed Shrublands', '7': 'Open Shrublands', '8': 'Woody Savannas', '9': 'Savannas', '10': 'Grasslands', '11': 'Permanent Wtlands', '12': 'Croplands', '13': 'Urban and Built-Up', '14': 'Cropland-Natural Vegetation Mosaics', '15': 'Snow and Ice', '16': 'Barren or Sparsely Vegetated'}, measurement='Land Cover', type='classification'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='band')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=None, dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[0, 0, 255, 255], value=0.0), Breakpoint(color=[0, 255, 0, 255], value=8.0), Breakpoint(color=[255, 0, 0, 255], value=16.0)], no_data_color=[0, 0, 0, 0], over_color=[0, 0, 0, 0], type='linearGradient', under_color=[0, 0, 0, 0]), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='Land Cover derived from MODIS/Terra+Aqua Land Cover' display_name='Land Cover' id=UUID('953e51df-d4c7-49be-9cb5-2a91186fa94c') name='land_cover' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ClassificationMeasurement(classes={'0': 'Water Bodies', '1': 'Evergreen Needleleaf Forests', '2': 'Evergreen Broadleaf Forests', '3': 'Deciduous Needleleaf Forests', '4': 'Deciduous Broadleaf Forests', '5': 'Mixed Forests', '6': 'Closed Shrublands', '7': 'Open Shrublands', '8': 'Woody Savannas', '9': 'Savannas', '10': 'Grasslands', '11': 'Permanent Wetlands', '12': 'Croplands', '13': 'Urban and Built-Up', '14': 'Cropland-Natural Vegetation Mosaics', '15': 'Snow and Ice', '16': 'Barren or Sparsely Vegetated'}, measurement='Land Cover', type='classification'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='land_cover')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=8210266876799999, start=-8334601228800000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'6': [195, 127, 126, 255], '10': [223, 192, 125, 255], '5': [125, 194, 127, 255], '12': [225, 222, 127, 255], '4': [159, 225, 127, 255], '9': [226, 221, 7, 255], '0': [134, 201, 227, 255], '1': [30, 129, 62, 255], '3': [157, 194, 63, 255], '16': [192, 192, 192, 255], '2': [59, 194, 212, 255], '8': [224, 223, 133, 255], '7': [188, 221, 190, 255], '15': [255, 255, 255, 255], '11': [66, 128, 189, 255], '14': [162, 159, 66, 255], '13': [253, 2, 0, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='A mock dataset' display_name='Mock' id=UUID('15f32eae-313e-4257-b112-6664cb147b3b') name='Mock' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=1.0, y=2.0), upper_right_coordinate=Coordinate2D(x=1.0, y=2.0)), columns={}, data_type=, spatial_reference='EPSG:4326', time=TimeInterval(end=8210266876799999, start=-8334601228800000), type='vector'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='MockDatasetDataSource' symbology=None tags=[]\n", + "description='NDVI data from MODIS' display_name='NDVI' id=UUID('1e266f41-10f4-477a-8cc5-e1f541828540') name='ndvi' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ContinuousMeasurement(measurement='vegetation', type='continuous', unit=None), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=1404172800000, start=1388534400000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1388534400000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'74': [174, 164, 105, 255], '78': [170, 162, 99, 255], '167': [81, 98, 33, 255], '91': [158, 153, 77, 255], '242': [18, 44, 2, 255], '178': [72, 89, 33, 255], '46': [199, 185, 149, 255], '197': [55, 75, 27, 255], '174': [75, 92, 33, 255], '90': [159, 153, 78, 255], '238': [21, 47, 1, 255], '54': [193, 179, 137, 255], '115': [132, 136, 45, 255], '177': [72, 90, 33, 255], '55': [192, 178, 136, 255], '127': [119, 128, 30, 255], '22': [219, 205, 184, 255], '71': [177, 167, 111, 255], '134': [112, 123, 31, 255], '97': [152, 149, 68, 255], '84': [165, 158, 89, 255], '240': [19, 46, 2, 255], '80': [169, 160, 95, 255], '217': [36, 62, 6, 255], '244': [17, 43, 2, 255], '236': [22, 49, 1, 255], '207': [46, 69, 17, 255], '151': [95, 110, 32, 255], '69': [179, 168, 114, 255], '36': [208, 193, 164, 255], '201': [51, 72, 23, 255], '129': [117, 127, 30, 255], '209': [44, 67, 14, 255], '161': [85, 102, 33, 255], '163': [84, 101, 33, 255], '3': [234, 221, 211, 255], '6': [231, 219, 206, 255], '206': [46, 69, 18, 255], '187': [64, 82, 33, 255], '43': [202, 188, 153, 255], '188': [63, 81, 33, 255], '237': [21, 48, 1, 255], '88': [161, 155, 82, 255], '4': [233, 221, 209, 255], '253': [11, 36, 3, 255], '228': [27, 54, 0, 255], '68': [180, 169, 116, 255], '229': [26, 54, 1, 255], '7': [231, 218, 205, 255], '65': [183, 171, 121, 255], '9': [229, 216, 202, 255], '146': [100, 114, 32, 255], '64': [184, 171, 122, 255], '57': [190, 177, 133, 255], '203': [49, 71, 21, 255], '128': [118, 127, 30, 255], '252': [12, 37, 3, 255], '239': [20, 47, 2, 255], '184': [67, 84, 33, 255], '24': [217, 203, 181, 255], '195': [57, 76, 29, 255], '235': [23, 49, 1, 255], '113': [134, 138, 48, 255], '179': [71, 88, 33, 255], '34': [209, 195, 167, 255], '31': [212, 197, 171, 255], '254': [11, 36, 3, 255], '138': [108, 120, 31, 255], '72': [176, 166, 109, 255], '18': [222, 208, 189, 255], '110': [138, 140, 51, 255], '248': [14, 40, 2, 255], '183': [68, 85, 33, 255], '139': [107, 119, 31, 255], '155': [91, 107, 33, 255], '114': [133, 137, 46, 255], '133': [113, 124, 31, 255], '131': [115, 125, 30, 255], '38': [206, 192, 161, 255], '246': [16, 41, 2, 255], '111': [137, 139, 50, 255], '56': [191, 177, 134, 255], '234': [23, 50, 1, 255], '59': [188, 175, 130, 255], '39': [205, 191, 159, 255], '158': [88, 105, 33, 255], '112': [135, 138, 49, 255], '175': [74, 92, 33, 255], '87': [162, 156, 84, 255], '125': [121, 129, 33, 255], '227': [28, 55, 0, 255], '25': [217, 202, 180, 255], '241': [19, 45, 2, 255], '32': [211, 196, 170, 255], '251': [13, 38, 3, 255], '93': [156, 151, 73, 255], '94': [155, 151, 72, 255], '37': [207, 192, 162, 255], '226': [28, 56, 0, 255], '166': [81, 99, 33, 255], '136': [110, 121, 31, 255], '137': [109, 121, 31, 255], '145': [101, 115, 32, 255], '193': [59, 78, 31, 255], '82': [167, 159, 92, 255], '233': [24, 51, 1, 255], '190': [62, 80, 33, 255], '198': [54, 74, 26, 255], '205': [47, 70, 19, 255], '21': [220, 206, 185, 255], '250': [13, 39, 3, 255], '170': [78, 95, 33, 255], '165': [82, 99, 33, 255], '20': [221, 207, 187, 255], '153': [93, 109, 32, 255], '223': [30, 58, 0, 255], '73': [175, 165, 107, 255], '17': [223, 209, 191, 255], '247': [15, 41, 2, 255], '75': [173, 164, 104, 255], '245': [16, 42, 2, 255], '16': [224, 210, 192, 255], '160': [86, 103, 33, 255], '176': [73, 91, 33, 255], '224': [29, 57, 0, 255], '49': [197, 183, 145, 255], '255': [0, 0, 0, 255], '150': [96, 111, 32, 255], '79': [170, 161, 97, 255], '8': [230, 217, 204, 255], '76': [172, 163, 102, 255], '102': [146, 145, 61, 255], '117': [130, 135, 43, 255], '144': [102, 115, 32, 255], '77': [171, 162, 100, 255], '63': [185, 172, 124, 255], '221': [32, 59, 2, 255], '51': [195, 181, 142, 255], '13': [226, 213, 197, 255], '124': [122, 130, 34, 255], '100': [149, 147, 64, 255], '196': [56, 76, 28, 255], '61': [187, 174, 127, 255], '154': [92, 108, 33, 255], '101': [147, 146, 63, 255], '27': [215, 200, 177, 255], '62': [186, 173, 125, 255], '202': [50, 72, 22, 255], '208': [45, 68, 15, 255], '60': [188, 174, 128, 255], '169': [79, 96, 33, 255], '30': [213, 198, 172, 255], '11': [227, 214, 199, 255], '19': [221, 207, 188, 255], '162': [85, 102, 33, 255], '70': [178, 167, 112, 255], '156': [90, 106, 33, 255], '181': [69, 87, 33, 255], '147': [99, 113, 32, 255], '42': [203, 188, 155, 255], '212': [41, 65, 11, 255], '120': [127, 133, 39, 255], '132': [114, 124, 30, 255], '168': [80, 97, 33, 255], '199': [53, 74, 25, 255], '45': [200, 186, 150, 255], '149': [97, 112, 32, 255], '140': [106, 118, 31, 255], '116': [131, 136, 44, 255], '230': [26, 53, 1, 255], '40': [204, 190, 158, 255], '192': [60, 78, 32, 255], '191': [61, 79, 33, 255], '85': [164, 157, 87, 255], '216': [37, 63, 7, 255], '171': [77, 95, 33, 255], '211': [42, 66, 12, 255], '89': [160, 154, 80, 255], '50': [196, 182, 143, 255], '5': [232, 220, 208, 255], '135': [111, 122, 31, 255], '143': [103, 116, 32, 255], '215': [38, 63, 8, 255], '152': [94, 109, 32, 255], '157': [89, 106, 33, 255], '33': [210, 195, 168, 255], '204': [48, 70, 20, 255], '28': [214, 200, 175, 255], '44': [201, 187, 152, 255], '52': [194, 181, 140, 255], '159': [87, 104, 33, 255], '53': [193, 180, 139, 255], '219': [34, 61, 4, 255], '141': [105, 118, 31, 255], '41': [204, 189, 156, 255], '213': [40, 65, 10, 255], '173': [76, 93, 33, 255], '95': [154, 150, 70, 255], '142': [104, 117, 31, 255], '106': [142, 142, 56, 255], '118': [129, 134, 41, 255], '107': [141, 142, 55, 255], '83': [166, 158, 90, 255], '10': [228, 215, 201, 255], '222': [31, 59, 1, 255], '186': [65, 83, 33, 255], '164': [83, 100, 33, 255], '243': [18, 44, 2, 255], '48': [198, 184, 146, 255], '232': [24, 52, 1, 255], '108': [140, 141, 54, 255], '35': [209, 194, 165, 255], '126': [120, 129, 31, 255], '14': [225, 212, 195, 255], '26': [216, 201, 178, 255], '67': [181, 169, 117, 255], '172': [76, 94, 33, 255], '66': [182, 170, 119, 255], '249': [14, 39, 2, 255], '2': [234, 222, 212, 255], '103': [145, 145, 60, 255], '47': [199, 185, 148, 255], '185': [66, 84, 33, 255], '200': [52, 73, 24, 255], '123': [123, 131, 35, 255], '121': [126, 132, 38, 255], '225': [29, 57, 0, 255], '231': [25, 52, 1, 255], '180': [70, 88, 33, 255], '23': [218, 204, 182, 255], '96': [153, 149, 69, 255], '29': [214, 199, 174, 255], '98': [151, 148, 66, 255], '104': [144, 144, 59, 255], '99': [150, 147, 65, 255], '218': [35, 61, 5, 255], '109': [139, 140, 53, 255], '1': [235, 223, 214, 255], '86': [163, 156, 85, 255], '148': [98, 112, 32, 255], '0': [236, 224, 215, 0], '12': [227, 214, 198, 255], '15': [224, 211, 194, 255], '214': [39, 64, 9, 255], '189': [63, 81, 33, 255], '122': [124, 131, 36, 255], '130': [116, 126, 30, 255], '220': [33, 60, 3, 255], '194': [58, 77, 30, 255], '58': [189, 176, 131, 255], '182': [68, 86, 33, 255], '81': [168, 160, 94, 255], '92': [157, 152, 75, 255], '105': [143, 143, 58, 255], '119': [128, 134, 40, 255], '210': [43, 67, 13, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='NDVI data from MODIS, downscaled 3x' display_name='NDVI Downscaled 3x' id=UUID('11f7f1a6-8f8f-419b-91e3-601d8cd68652') name='ndvi_downscaled_3x' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ContinuousMeasurement(measurement='vegetation', type='continuous', unit=None), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=1199, y_idx=599), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=1746057600000, start=1735689600000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1735689600000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'119': [128, 134, 40, 255], '220': [33, 60, 3, 255], '243': [18, 44, 2, 255], '83': [166, 158, 90, 255], '113': [134, 138, 48, 255], '141': [105, 118, 31, 255], '105': [143, 143, 58, 255], '218': [35, 61, 5, 255], '21': [220, 206, 185, 255], '109': [139, 140, 53, 255], '251': [13, 38, 3, 255], '121': [126, 132, 38, 255], '137': [109, 121, 31, 255], '26': [216, 201, 178, 255], '245': [16, 42, 2, 255], '184': [67, 84, 33, 255], '196': [56, 76, 28, 255], '72': [176, 166, 109, 255], '115': [132, 136, 45, 255], '118': [129, 134, 41, 255], '57': [190, 177, 133, 255], '225': [29, 57, 0, 255], '181': [69, 87, 33, 255], '1': [235, 223, 214, 255], '102': [146, 145, 61, 255], '107': [141, 142, 55, 255], '31': [212, 197, 171, 255], '146': [100, 114, 32, 255], '20': [221, 207, 187, 255], '28': [214, 200, 175, 255], '195': [57, 76, 29, 255], '17': [223, 209, 191, 255], '201': [51, 72, 23, 255], '233': [24, 51, 1, 255], '120': [127, 133, 39, 255], '34': [209, 195, 167, 255], '111': [137, 139, 50, 255], '203': [49, 71, 21, 255], '209': [44, 67, 14, 255], '44': [201, 187, 152, 255], '194': [58, 77, 30, 255], '41': [204, 189, 156, 255], '18': [222, 208, 189, 255], '231': [25, 52, 1, 255], '227': [28, 55, 0, 255], '14': [225, 212, 195, 255], '212': [41, 65, 11, 255], '55': [192, 178, 136, 255], '205': [47, 70, 19, 255], '213': [40, 65, 10, 255], '42': [203, 188, 155, 255], '80': [169, 160, 95, 255], '123': [123, 131, 35, 255], '177': [72, 90, 33, 255], '208': [45, 68, 15, 255], '91': [158, 153, 77, 255], '29': [214, 199, 174, 255], '3': [234, 221, 211, 255], '164': [83, 100, 33, 255], '86': [163, 156, 85, 255], '186': [65, 83, 33, 255], '46': [199, 185, 149, 255], '229': [26, 54, 1, 255], '128': [118, 127, 30, 255], '134': [112, 123, 31, 255], '64': [184, 171, 122, 255], '99': [150, 147, 65, 255], '132': [114, 124, 30, 255], '179': [71, 88, 33, 255], '152': [94, 109, 32, 255], '15': [224, 211, 194, 255], '93': [156, 151, 73, 255], '103': [145, 145, 60, 255], '71': [177, 167, 111, 255], '36': [208, 193, 164, 255], '190': [62, 80, 33, 255], '228': [27, 54, 0, 255], '70': [178, 167, 112, 255], '114': [133, 137, 46, 255], '56': [191, 177, 134, 255], '242': [18, 44, 2, 255], '76': [172, 163, 102, 255], '116': [131, 136, 44, 255], '131': [115, 125, 30, 255], '82': [167, 159, 92, 255], '236': [22, 49, 1, 255], '12': [227, 214, 198, 255], '240': [19, 46, 2, 255], '47': [199, 185, 148, 255], '92': [157, 152, 75, 255], '219': [34, 61, 4, 255], '180': [70, 88, 33, 255], '217': [36, 62, 6, 255], '127': [119, 128, 30, 255], '98': [151, 148, 66, 255], '136': [110, 121, 31, 255], '215': [38, 63, 8, 255], '151': [95, 110, 32, 255], '4': [233, 221, 209, 255], '11': [227, 214, 199, 255], '2': [234, 222, 212, 255], '247': [15, 41, 2, 255], '197': [55, 75, 27, 255], '206': [46, 69, 18, 255], '108': [140, 141, 54, 255], '157': [89, 106, 33, 255], '182': [68, 86, 33, 255], '174': [75, 92, 33, 255], '244': [17, 43, 2, 255], '239': [20, 47, 2, 255], '130': [116, 126, 30, 255], '224': [29, 57, 0, 255], '45': [200, 186, 150, 255], '16': [224, 210, 192, 255], '89': [160, 154, 80, 255], '144': [102, 115, 32, 255], '249': [14, 39, 2, 255], '84': [165, 158, 89, 255], '148': [98, 112, 32, 255], '171': [77, 95, 33, 255], '32': [211, 196, 170, 255], '149': [97, 112, 32, 255], '97': [152, 149, 68, 255], '59': [188, 175, 130, 255], '145': [101, 115, 32, 255], '125': [121, 129, 33, 255], '5': [232, 220, 208, 255], '40': [204, 190, 158, 255], '168': [80, 97, 33, 255], '52': [194, 181, 140, 255], '124': [122, 130, 34, 255], '232': [24, 52, 1, 255], '69': [179, 168, 114, 255], '230': [26, 53, 1, 255], '200': [52, 73, 24, 255], '234': [23, 50, 1, 255], '104': [144, 144, 59, 255], '33': [210, 195, 168, 255], '129': [117, 127, 30, 255], '24': [217, 203, 181, 255], '88': [161, 155, 82, 255], '62': [186, 173, 125, 255], '202': [50, 72, 22, 255], '178': [72, 89, 33, 255], '100': [149, 147, 64, 255], '248': [14, 40, 2, 255], '23': [218, 204, 182, 255], '142': [104, 117, 31, 255], '58': [189, 176, 131, 255], '68': [180, 169, 116, 255], '22': [219, 205, 184, 255], '77': [171, 162, 100, 255], '252': [12, 37, 3, 255], '222': [31, 59, 1, 255], '199': [53, 74, 25, 255], '235': [23, 49, 1, 255], '193': [59, 78, 31, 255], '238': [21, 47, 1, 255], '133': [113, 124, 31, 255], '167': [81, 98, 33, 255], '65': [183, 171, 121, 255], '138': [108, 120, 31, 255], '27': [215, 200, 177, 255], '85': [164, 157, 87, 255], '67': [181, 169, 117, 255], '255': [0, 0, 0, 255], '207': [46, 69, 17, 255], '37': [207, 192, 162, 255], '8': [230, 217, 204, 255], '49': [197, 183, 145, 255], '210': [43, 67, 13, 255], '25': [217, 202, 180, 255], '117': [130, 135, 43, 255], '254': [11, 36, 3, 255], '139': [107, 119, 31, 255], '189': [63, 81, 33, 255], '48': [198, 184, 146, 255], '198': [54, 74, 26, 255], '154': [92, 108, 33, 255], '122': [124, 131, 36, 255], '7': [231, 218, 205, 255], '9': [229, 216, 202, 255], '237': [21, 48, 1, 255], '253': [11, 36, 3, 255], '160': [86, 103, 33, 255], '0': [236, 224, 215, 0], '140': [106, 118, 31, 255], '135': [111, 122, 31, 255], '156': [90, 106, 33, 255], '61': [187, 174, 127, 255], '53': [193, 180, 139, 255], '50': [196, 182, 143, 255], '159': [87, 104, 33, 255], '150': [96, 111, 32, 255], '43': [202, 188, 153, 255], '221': [32, 59, 2, 255], '191': [61, 79, 33, 255], '188': [63, 81, 33, 255], '158': [88, 105, 33, 255], '54': [193, 179, 137, 255], '78': [170, 162, 99, 255], '63': [185, 172, 124, 255], '13': [226, 213, 197, 255], '87': [162, 156, 84, 255], '95': [154, 150, 70, 255], '163': [84, 101, 33, 255], '6': [231, 219, 206, 255], '30': [213, 198, 172, 255], '39': [205, 191, 159, 255], '110': [138, 140, 51, 255], '126': [120, 129, 31, 255], '38': [206, 192, 161, 255], '216': [37, 63, 7, 255], '73': [175, 165, 107, 255], '223': [30, 58, 0, 255], '96': [153, 149, 69, 255], '143': [103, 116, 32, 255], '226': [28, 56, 0, 255], '147': [99, 113, 32, 255], '74': [174, 164, 105, 255], '172': [76, 94, 33, 255], '79': [170, 161, 97, 255], '169': [79, 96, 33, 255], '112': [135, 138, 49, 255], '170': [78, 95, 33, 255], '81': [168, 160, 94, 255], '204': [48, 70, 20, 255], '35': [209, 194, 165, 255], '241': [19, 45, 2, 255], '75': [173, 164, 104, 255], '183': [68, 85, 33, 255], '10': [228, 215, 201, 255], '176': [73, 91, 33, 255], '175': [74, 92, 33, 255], '155': [91, 107, 33, 255], '166': [81, 99, 33, 255], '162': [85, 102, 33, 255], '165': [82, 99, 33, 255], '250': [13, 39, 3, 255], '187': [64, 82, 33, 255], '185': [66, 84, 33, 255], '246': [16, 41, 2, 255], '161': [85, 102, 33, 255], '51': [195, 181, 142, 255], '66': [182, 170, 119, 255], '153': [93, 109, 32, 255], '19': [221, 207, 188, 255], '90': [159, 153, 78, 255], '211': [42, 66, 12, 255], '173': [76, 93, 33, 255], '60': [188, 174, 128, 255], '101': [147, 146, 63, 255], '94': [155, 151, 72, 255], '214': [39, 64, 9, 255], '106': [142, 142, 56, 255], '192': [60, 78, 32, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='NDVI data from MODIS' display_name='NDVI as GdalMetaDataList' id=UUID('c91e3baf-48e5-4bf5-8cd0-3d917f4621f0') name='ndvi_list' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=1404172800000, start=1388534400000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1388534400000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'142': [104, 117, 31, 255], '29': [214, 199, 174, 255], '48': [198, 184, 146, 255], '135': [111, 122, 31, 255], '227': [28, 55, 0, 255], '78': [170, 162, 99, 255], '139': [107, 119, 31, 255], '241': [19, 45, 2, 255], '88': [161, 155, 82, 255], '28': [214, 200, 175, 255], '63': [185, 172, 124, 255], '43': [202, 188, 153, 255], '57': [190, 177, 133, 255], '85': [164, 157, 87, 255], '244': [17, 43, 2, 255], '93': [156, 151, 73, 255], '30': [213, 198, 172, 255], '179': [71, 88, 33, 255], '167': [81, 98, 33, 255], '113': [134, 138, 48, 255], '21': [220, 206, 185, 255], '120': [127, 133, 39, 255], '219': [34, 61, 4, 255], '175': [74, 92, 33, 255], '210': [43, 67, 13, 255], '153': [93, 109, 32, 255], '149': [97, 112, 32, 255], '35': [209, 194, 165, 255], '125': [121, 129, 33, 255], '75': [173, 164, 104, 255], '140': [106, 118, 31, 255], '144': [102, 115, 32, 255], '116': [131, 136, 44, 255], '18': [222, 208, 189, 255], '118': [129, 134, 41, 255], '91': [158, 153, 77, 255], '228': [27, 54, 0, 255], '246': [16, 41, 2, 255], '201': [51, 72, 23, 255], '218': [35, 61, 5, 255], '252': [12, 37, 3, 255], '96': [153, 149, 69, 255], '25': [217, 202, 180, 255], '213': [40, 65, 10, 255], '137': [109, 121, 31, 255], '73': [175, 165, 107, 255], '70': [178, 167, 112, 255], '65': [183, 171, 121, 255], '188': [63, 81, 33, 255], '39': [205, 191, 159, 255], '224': [29, 57, 0, 255], '33': [210, 195, 168, 255], '154': [92, 108, 33, 255], '108': [140, 141, 54, 255], '127': [119, 128, 30, 255], '130': [116, 126, 30, 255], '54': [193, 179, 137, 255], '183': [68, 85, 33, 255], '168': [80, 97, 33, 255], '81': [168, 160, 94, 255], '198': [54, 74, 26, 255], '31': [212, 197, 171, 255], '117': [130, 135, 43, 255], '225': [29, 57, 0, 255], '204': [48, 70, 20, 255], '51': [195, 181, 142, 255], '20': [221, 207, 187, 255], '177': [72, 90, 33, 255], '133': [113, 124, 31, 255], '215': [38, 63, 8, 255], '111': [137, 139, 50, 255], '112': [135, 138, 49, 255], '44': [201, 187, 152, 255], '217': [36, 62, 6, 255], '99': [150, 147, 65, 255], '32': [211, 196, 170, 255], '187': [64, 82, 33, 255], '69': [179, 168, 114, 255], '109': [139, 140, 53, 255], '107': [141, 142, 55, 255], '15': [224, 211, 194, 255], '40': [204, 190, 158, 255], '61': [187, 174, 127, 255], '83': [166, 158, 90, 255], '194': [58, 77, 30, 255], '243': [18, 44, 2, 255], '197': [55, 75, 27, 255], '208': [45, 68, 15, 255], '236': [22, 49, 1, 255], '0': [236, 224, 215, 0], '3': [234, 221, 211, 255], '136': [110, 121, 31, 255], '231': [25, 52, 1, 255], '36': [208, 193, 164, 255], '178': [72, 89, 33, 255], '49': [197, 183, 145, 255], '211': [42, 66, 12, 255], '76': [172, 163, 102, 255], '2': [234, 222, 212, 255], '250': [13, 39, 3, 255], '161': [85, 102, 33, 255], '156': [90, 106, 33, 255], '232': [24, 52, 1, 255], '105': [143, 143, 58, 255], '26': [216, 201, 178, 255], '150': [96, 111, 32, 255], '245': [16, 42, 2, 255], '41': [204, 189, 156, 255], '186': [65, 83, 33, 255], '102': [146, 145, 61, 255], '59': [188, 175, 130, 255], '205': [47, 70, 19, 255], '23': [218, 204, 182, 255], '162': [85, 102, 33, 255], '95': [154, 150, 70, 255], '255': [0, 0, 0, 255], '47': [199, 185, 148, 255], '229': [26, 54, 1, 255], '184': [67, 84, 33, 255], '206': [46, 69, 18, 255], '191': [61, 79, 33, 255], '24': [217, 203, 181, 255], '67': [181, 169, 117, 255], '164': [83, 100, 33, 255], '124': [122, 130, 34, 255], '254': [11, 36, 3, 255], '185': [66, 84, 33, 255], '143': [103, 116, 32, 255], '189': [63, 81, 33, 255], '234': [23, 50, 1, 255], '132': [114, 124, 30, 255], '122': [124, 131, 36, 255], '165': [82, 99, 33, 255], '34': [209, 195, 167, 255], '55': [192, 178, 136, 255], '92': [157, 152, 75, 255], '199': [53, 74, 25, 255], '145': [101, 115, 32, 255], '159': [87, 104, 33, 255], '239': [20, 47, 2, 255], '72': [176, 166, 109, 255], '126': [120, 129, 31, 255], '5': [232, 220, 208, 255], '101': [147, 146, 63, 255], '86': [163, 156, 85, 255], '110': [138, 140, 51, 255], '216': [37, 63, 7, 255], '237': [21, 48, 1, 255], '169': [79, 96, 33, 255], '53': [193, 180, 139, 255], '4': [233, 221, 209, 255], '6': [231, 219, 206, 255], '22': [219, 205, 184, 255], '157': [89, 106, 33, 255], '180': [70, 88, 33, 255], '195': [57, 76, 29, 255], '46': [199, 185, 149, 255], '193': [59, 78, 31, 255], '123': [123, 131, 35, 255], '128': [118, 127, 30, 255], '19': [221, 207, 188, 255], '203': [49, 71, 21, 255], '221': [32, 59, 2, 255], '181': [69, 87, 33, 255], '152': [94, 109, 32, 255], '238': [21, 47, 1, 255], '242': [18, 44, 2, 255], '171': [77, 95, 33, 255], '240': [19, 46, 2, 255], '212': [41, 65, 11, 255], '45': [200, 186, 150, 255], '115': [132, 136, 45, 255], '104': [144, 144, 59, 255], '64': [184, 171, 122, 255], '71': [177, 167, 111, 255], '100': [149, 147, 64, 255], '192': [60, 78, 32, 255], '249': [14, 39, 2, 255], '196': [56, 76, 28, 255], '14': [225, 212, 195, 255], '98': [151, 148, 66, 255], '62': [186, 173, 125, 255], '247': [15, 41, 2, 255], '11': [227, 214, 199, 255], '1': [235, 223, 214, 255], '226': [28, 56, 0, 255], '12': [227, 214, 198, 255], '146': [100, 114, 32, 255], '207': [46, 69, 17, 255], '176': [73, 91, 33, 255], '60': [188, 174, 128, 255], '163': [84, 101, 33, 255], '68': [180, 169, 116, 255], '174': [75, 92, 33, 255], '17': [223, 209, 191, 255], '222': [31, 59, 1, 255], '121': [126, 132, 38, 255], '16': [224, 210, 192, 255], '27': [215, 200, 177, 255], '233': [24, 51, 1, 255], '131': [115, 125, 30, 255], '89': [160, 154, 80, 255], '134': [112, 123, 31, 255], '220': [33, 60, 3, 255], '172': [76, 94, 33, 255], '42': [203, 188, 155, 255], '148': [98, 112, 32, 255], '79': [170, 161, 97, 255], '90': [159, 153, 78, 255], '147': [99, 113, 32, 255], '190': [62, 80, 33, 255], '103': [145, 145, 60, 255], '182': [68, 86, 33, 255], '80': [169, 160, 95, 255], '138': [108, 120, 31, 255], '37': [207, 192, 162, 255], '235': [23, 49, 1, 255], '155': [91, 107, 33, 255], '209': [44, 67, 14, 255], '38': [206, 192, 161, 255], '97': [152, 149, 68, 255], '230': [26, 53, 1, 255], '170': [78, 95, 33, 255], '151': [95, 110, 32, 255], '50': [196, 182, 143, 255], '166': [81, 99, 33, 255], '84': [165, 158, 89, 255], '223': [30, 58, 0, 255], '82': [167, 159, 92, 255], '129': [117, 127, 30, 255], '119': [128, 134, 40, 255], '87': [162, 156, 84, 255], '56': [191, 177, 134, 255], '94': [155, 151, 72, 255], '74': [174, 164, 105, 255], '58': [189, 176, 131, 255], '7': [231, 218, 205, 255], '114': [133, 137, 46, 255], '202': [50, 72, 22, 255], '200': [52, 73, 24, 255], '106': [142, 142, 56, 255], '158': [88, 105, 33, 255], '214': [39, 64, 9, 255], '9': [229, 216, 202, 255], '66': [182, 170, 119, 255], '141': [105, 118, 31, 255], '52': [194, 181, 140, 255], '248': [14, 40, 2, 255], '13': [226, 213, 197, 255], '8': [230, 217, 204, 255], '160': [86, 103, 33, 255], '10': [228, 215, 201, 255], '77': [171, 162, 100, 255], '173': [76, 93, 33, 255], '251': [13, 38, 3, 255], '253': [11, 36, 3, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='NDVI data from MODIS but with flipped y-axis' display_name='NDVI flipped y-axis' id=UUID('f34a2da5-e8cf-4eed-ba57-b10d75249c0d') name='ndvi_flipped_axis' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ContinuousMeasurement(measurement='vegetation', type='continuous', unit=None), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=-90.0), x_pixel_size=0.1, y_pixel_size=0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=-1), top_left_idx=GridIdx2D(x_idx=0, y_idx=-1800)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=1404172800000, start=1388534400000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1388534400000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'23': [218, 204, 182, 255], '138': [108, 120, 31, 255], '113': [134, 138, 48, 255], '236': [22, 49, 1, 255], '163': [84, 101, 33, 255], '75': [173, 164, 104, 255], '202': [50, 72, 22, 255], '80': [169, 160, 95, 255], '141': [105, 118, 31, 255], '221': [32, 59, 2, 255], '115': [132, 136, 45, 255], '112': [135, 138, 49, 255], '105': [143, 143, 58, 255], '248': [14, 40, 2, 255], '106': [142, 142, 56, 255], '47': [199, 185, 148, 255], '11': [227, 214, 199, 255], '43': [202, 188, 153, 255], '150': [96, 111, 32, 255], '32': [211, 196, 170, 255], '172': [76, 94, 33, 255], '104': [144, 144, 59, 255], '119': [128, 134, 40, 255], '143': [103, 116, 32, 255], '61': [187, 174, 127, 255], '187': [64, 82, 33, 255], '211': [42, 66, 12, 255], '52': [194, 181, 140, 255], '252': [12, 37, 3, 255], '183': [68, 85, 33, 255], '108': [140, 141, 54, 255], '9': [229, 216, 202, 255], '41': [204, 189, 156, 255], '68': [180, 169, 116, 255], '212': [41, 65, 11, 255], '100': [149, 147, 64, 255], '229': [26, 54, 1, 255], '54': [193, 179, 137, 255], '167': [81, 98, 33, 255], '14': [225, 212, 195, 255], '117': [130, 135, 43, 255], '91': [158, 153, 77, 255], '131': [115, 125, 30, 255], '89': [160, 154, 80, 255], '6': [231, 219, 206, 255], '222': [31, 59, 1, 255], '79': [170, 161, 97, 255], '38': [206, 192, 161, 255], '201': [51, 72, 23, 255], '18': [222, 208, 189, 255], '240': [19, 46, 2, 255], '191': [61, 79, 33, 255], '69': [179, 168, 114, 255], '34': [209, 195, 167, 255], '146': [100, 114, 32, 255], '238': [21, 47, 1, 255], '158': [88, 105, 33, 255], '203': [49, 71, 21, 255], '255': [0, 0, 0, 255], '29': [214, 199, 174, 255], '147': [99, 113, 32, 255], '110': [138, 140, 51, 255], '60': [188, 174, 128, 255], '197': [55, 75, 27, 255], '178': [72, 89, 33, 255], '214': [39, 64, 9, 255], '48': [198, 184, 146, 255], '118': [129, 134, 41, 255], '92': [157, 152, 75, 255], '111': [137, 139, 50, 255], '96': [153, 149, 69, 255], '66': [182, 170, 119, 255], '134': [112, 123, 31, 255], '250': [13, 39, 3, 255], '161': [85, 102, 33, 255], '159': [87, 104, 33, 255], '59': [188, 175, 130, 255], '72': [176, 166, 109, 255], '186': [65, 83, 33, 255], '182': [68, 86, 33, 255], '164': [83, 100, 33, 255], '81': [168, 160, 94, 255], '1': [235, 223, 214, 255], '27': [215, 200, 177, 255], '226': [28, 56, 0, 255], '190': [62, 80, 33, 255], '232': [24, 52, 1, 255], '156': [90, 106, 33, 255], '35': [209, 194, 165, 255], '177': [72, 90, 33, 255], '37': [207, 192, 162, 255], '5': [232, 220, 208, 255], '166': [81, 99, 33, 255], '8': [230, 217, 204, 255], '175': [74, 92, 33, 255], '165': [82, 99, 33, 255], '136': [110, 121, 31, 255], '180': [70, 88, 33, 255], '233': [24, 51, 1, 255], '174': [75, 92, 33, 255], '63': [185, 172, 124, 255], '148': [98, 112, 32, 255], '2': [234, 222, 212, 255], '140': [106, 118, 31, 255], '73': [175, 165, 107, 255], '132': [114, 124, 30, 255], '235': [23, 49, 1, 255], '192': [60, 78, 32, 255], '26': [216, 201, 178, 255], '10': [228, 215, 201, 255], '200': [52, 73, 24, 255], '93': [156, 151, 73, 255], '70': [178, 167, 112, 255], '97': [152, 149, 68, 255], '65': [183, 171, 121, 255], '12': [227, 214, 198, 255], '194': [58, 77, 30, 255], '53': [193, 180, 139, 255], '67': [181, 169, 117, 255], '205': [47, 70, 19, 255], '234': [23, 50, 1, 255], '196': [56, 76, 28, 255], '253': [11, 36, 3, 255], '239': [20, 47, 2, 255], '88': [161, 155, 82, 255], '116': [131, 136, 44, 255], '157': [89, 106, 33, 255], '13': [226, 213, 197, 255], '62': [186, 173, 125, 255], '129': [117, 127, 30, 255], '21': [220, 206, 185, 255], '184': [67, 84, 33, 255], '78': [170, 162, 99, 255], '71': [177, 167, 111, 255], '76': [172, 163, 102, 255], '219': [34, 61, 4, 255], '56': [191, 177, 134, 255], '122': [124, 131, 36, 255], '31': [212, 197, 171, 255], '3': [234, 221, 211, 255], '208': [45, 68, 15, 255], '199': [53, 74, 25, 255], '149': [97, 112, 32, 255], '94': [155, 151, 72, 255], '44': [201, 187, 152, 255], '4': [233, 221, 209, 255], '179': [71, 88, 33, 255], '40': [204, 190, 158, 255], '220': [33, 60, 3, 255], '42': [203, 188, 155, 255], '144': [102, 115, 32, 255], '50': [196, 182, 143, 255], '83': [166, 158, 90, 255], '0': [236, 224, 215, 0], '17': [223, 209, 191, 255], '46': [199, 185, 149, 255], '193': [59, 78, 31, 255], '15': [224, 211, 194, 255], '254': [11, 36, 3, 255], '243': [18, 44, 2, 255], '162': [85, 102, 33, 255], '49': [197, 183, 145, 255], '224': [29, 57, 0, 255], '39': [205, 191, 159, 255], '231': [25, 52, 1, 255], '137': [109, 121, 31, 255], '135': [111, 122, 31, 255], '139': [107, 119, 31, 255], '228': [27, 54, 0, 255], '216': [37, 63, 7, 255], '160': [86, 103, 33, 255], '87': [162, 156, 84, 255], '28': [214, 200, 175, 255], '153': [93, 109, 32, 255], '245': [16, 42, 2, 255], '55': [192, 178, 136, 255], '51': [195, 181, 142, 255], '247': [15, 41, 2, 255], '107': [141, 142, 55, 255], '121': [126, 132, 38, 255], '33': [210, 195, 168, 255], '16': [224, 210, 192, 255], '225': [29, 57, 0, 255], '114': [133, 137, 46, 255], '251': [13, 38, 3, 255], '204': [48, 70, 20, 255], '64': [184, 171, 122, 255], '170': [78, 95, 33, 255], '99': [150, 147, 65, 255], '109': [139, 140, 53, 255], '168': [80, 97, 33, 255], '242': [18, 44, 2, 255], '185': [66, 84, 33, 255], '82': [167, 159, 92, 255], '206': [46, 69, 18, 255], '237': [21, 48, 1, 255], '45': [200, 186, 150, 255], '173': [76, 93, 33, 255], '7': [231, 218, 205, 255], '215': [38, 63, 8, 255], '130': [116, 126, 30, 255], '57': [190, 177, 133, 255], '101': [147, 146, 63, 255], '155': [91, 107, 33, 255], '90': [159, 153, 78, 255], '145': [101, 115, 32, 255], '77': [171, 162, 100, 255], '218': [35, 61, 5, 255], '126': [120, 129, 31, 255], '230': [26, 53, 1, 255], '154': [92, 108, 33, 255], '249': [14, 39, 2, 255], '19': [221, 207, 188, 255], '98': [151, 148, 66, 255], '171': [77, 95, 33, 255], '74': [174, 164, 105, 255], '24': [217, 203, 181, 255], '120': [127, 133, 39, 255], '102': [146, 145, 61, 255], '227': [28, 55, 0, 255], '217': [36, 62, 6, 255], '223': [30, 58, 0, 255], '176': [73, 91, 33, 255], '189': [63, 81, 33, 255], '169': [79, 96, 33, 255], '128': [118, 127, 30, 255], '142': [104, 117, 31, 255], '103': [145, 145, 60, 255], '95': [154, 150, 70, 255], '58': [189, 176, 131, 255], '30': [213, 198, 172, 255], '181': [69, 87, 33, 255], '209': [44, 67, 14, 255], '152': [94, 109, 32, 255], '20': [221, 207, 187, 255], '151': [95, 110, 32, 255], '123': [123, 131, 35, 255], '188': [63, 81, 33, 255], '86': [163, 156, 85, 255], '244': [17, 43, 2, 255], '22': [219, 205, 184, 255], '127': [119, 128, 30, 255], '124': [122, 130, 34, 255], '246': [16, 41, 2, 255], '125': [121, 129, 33, 255], '210': [43, 67, 13, 255], '195': [57, 76, 29, 255], '198': [54, 74, 26, 255], '133': [113, 124, 31, 255], '36': [208, 193, 164, 255], '85': [164, 157, 87, 255], '213': [40, 65, 10, 255], '207': [46, 69, 17, 255], '25': [217, 202, 180, 255], '241': [19, 45, 2, 255], '84': [165, 158, 89, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='NDVI data from MODIS reprojected to EPSG:3857' display_name='NDVI3857' id=UUID('f6a3767f-d4e1-49e7-b3de-a6207d756e16') name='ndvi_3857' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-20037508.342789244, y=19971868.880408563), x_pixel_size=14052.95025804874, y_pixel_size=-14057.881117788405), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:3857', time=TimeDescriptor(bounds=TimeInterval(end=1404172800000, start=1388534400000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1388534400000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=None tags=[]\n", + "description='Ports from Natural Earth' display_name='Natural Earth 10m Ports' id=UUID('6f5281ba-286e-4e20-b554-92761195653d') name='ne_10m_ports' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=-171.75795, y=-54.809444), upper_right_coordinate=Coordinate2D(x=179.309364, y=78.226111)), columns={'scalerank': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'website': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'name': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'natlscale': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'featurecla': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}))}, data_type=, spatial_reference='EPSG:4326', time=TimeInterval(end=8210266876799999, start=-8334601228800000), type='vector'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='OgrSource' symbology=None tags=[]\n", + "description='Ports from Natural Earth reprojected to EPSG:3857' display_name='Natural Earth 10m Ports 3857' id=UUID('393692e6-50e8-462a-9cb5-d3752d6dce93') name='ne_10_ports_3857' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=-19120007.589356, y=-7324970.649647), upper_right_coordinate=Coordinate2D(x=19960627.094946, y=14490886.335637)), columns={'scalerank': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'natlscale': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'name': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'website': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'featurecla': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}))}, data_type=, spatial_reference='EPSG:3857', time=TimeInterval(end=8210266876799999, start=-8334601228800000), type='vector'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='OgrSource' symbology=None tags=[]\n", + "description='This data derived from Natural Earth 1 portrays the world environment in an idealized manner with little human influence. The softly blended colors of Natural Earth 2 are ideal for historical mapping, because it shows the world much as it looked before the modern era.' display_name='Natural Earth II – Blue' id=UUID('cedd0707-3675-4b2c-95a4-612007f84636') name='ne2_raster_blue' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='blue')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=8210266876799999, start=-8334601228800000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[247, 251, 255, 255], value=0.0), Breakpoint(color=[106, 173, 213, 255], value=127.0), Breakpoint(color=[246, 250, 254, 255], value=255.0)], no_data_color=[0, 0, 0, 0], over_color=[246, 250, 254, 255], type='linearGradient', under_color=[247, 251, 255, 255]), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='This data derived from Natural Earth 1 portrays the world environment in an idealized manner with little human influence. The softly blended colors of Natural Earth 2 are ideal for historical mapping, because it shows the world much as it looked before the modern era.' display_name='Natural Earth II – Green' id=UUID('f8f1dcd2-07fc-4a93-8ac0-85840bf79982') name='ne2_raster_green' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='green')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=8210266876799999, start=-8334601228800000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[247, 252, 245, 255], value=0.0), Breakpoint(color=[115, 195, 117, 255], value=127.0), Breakpoint(color=[246, 251, 244, 255], value=255.0)], no_data_color=[0, 0, 0, 0], over_color=[246, 251, 244, 255], type='linearGradient', under_color=[247, 252, 245, 255]), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='This data derived from Natural Earth 1 portrays the world environment in an idealized manner with little human influence. The softly blended colors of Natural Earth 2 are ideal for historical mapping, because it shows the world much as it looked before the modern era.' display_name='Natural Earth II – Red' id=UUID('c9e2e051-a0bf-4f9e-8e48-bb4ccca4993f') name='ne2_raster_red' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='red')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=8210266876799999, start=-8334601228800000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[255, 245, 240, 255], value=0.0), Breakpoint(color=[250, 105, 73, 255], value=127.0), Breakpoint(color=[254, 244, 239, 255], value=255.0)], no_data_color=[0, 0, 0, 0], over_color=[254, 244, 239, 255], type='linearGradient', under_color=[255, 245, 240, 255]), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='Some points in Europe in 2014' display_name='Points with Time' id=UUID('532343e7-67f9-423f-8daa-4c6a661776d6') name='points_with_time' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=3.966206, y=45.903036), upper_right_coordinate=Coordinate2D(x=19.171284, y=51.847343)), columns={}, data_type=, spatial_reference='EPSG:4326', time=TimeInterval(end=1404172800000, start=1396310400000), type='vector'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='OgrSource' symbology=None tags=[]\n" ] } ], @@ -317,7 +319,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -331,7 +333,7 @@ " band: Land Cover (0: Water Bodies, 1: Evergreen Needleleaf Forests, 2: Evergreen Broadleaf Forests, 3: Deciduous Needleleaf Forests, 4: Deciduous Broadleleaf Forests, 5: Mixed Forests, 6: Closed Shrublands, 7: Open Shrublands, 8: Woody Savannas, 9: Savannas, 10: Grasslands, 11: Permanent Wtlands, 12: Croplands, 13: Urban and Built-Up, 14: Cropland-Natural Vegetation Mosaics, 15: Snow and Ice, 16: Barren or Sparsely Vegetated)" ] }, - "execution_count": 8, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -365,24 +367,16 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 20, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/droenner/git/geoengine-python/.venv/lib/python3.12/site-packages/owslib/coverage/wcs110.py:86: FutureWarning: Truth-testing of elements was a source of confusion and will always return True in future versions. Use specific 'len(elem)' or 'elem is not None' test instead.\n", - " elem = self._capabilities.find(self.ns.OWS('ServiceProvider')) or self._capabilities.find(self.ns.OWS('ServiceProvider')) # noqa\n" - ] - }, { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 9, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, @@ -421,7 +415,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -441,7 +435,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -455,7 +449,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/droenner/git/geoengine-python/.venv/lib/python3.12/site-packages/owslib/coverage/wcs110.py:86: FutureWarning: Truth-testing of elements was a source of confusion and will always return True in future versions. Use specific 'len(elem)' or 'elem is not None' test instead.\n", + "/home/michael/git/geoengine-python/.venv/lib/python3.12/site-packages/owslib/coverage/wcs110.py:86: FutureWarning: Truth-testing of elements was a source of confusion and will always return True in future versions. Use specific 'len(elem)' or 'elem is not None' test instead.\n", " elem = self._capabilities.find(self.ns.OWS('ServiceProvider')) or self._capabilities.find(self.ns.OWS('ServiceProvider')) # noqa\n" ] } diff --git a/geoengine/types.py b/geoengine/types.py index 4623f0ae..b5f2707c 100644 --- a/geoengine/types.py +++ b/geoengine/types.py @@ -1752,18 +1752,6 @@ def __init__(self, x_min: float, y_max: float, x_pixel_size: float, y_pixel_size self.x_pixel_size = x_pixel_size self.y_pixel_size = y_pixel_size - @classmethod - def from_response_gdal_geo_transform( - cls, response: geoengine_openapi_client.GdalDatasetGeoTransform - ) -> GeoTransform: - """Parse a geotransform from an HTTP JSON response""" - return GeoTransform( - x_min=response.origin_coordinate.x, - y_max=response.origin_coordinate.y, - x_pixel_size=response.x_pixel_size, - y_pixel_size=response.y_pixel_size, - ) - @classmethod def from_response(cls, response: geoengine_openapi_client.GeoTransform) -> GeoTransform: """Parse a geotransform from an HTTP JSON response""" @@ -1785,16 +1773,6 @@ def to_api_dict(self) -> geoengine_openapi_client.GeoTransform: y_pixel_size=self.y_pixel_size, ) - def to_api_dict_gdal_geo_transform(self) -> geoengine_openapi_client.GdalDatasetGeoTransform: - return geoengine_openapi_client.GdalDatasetGeoTransform( - origin_coordinate=geoengine_openapi_client.Coordinate2D( - x=self.x_min, - y=self.y_max, - ), - x_pixel_size=self.x_pixel_size, - y_pixel_size=self.y_pixel_size, - ) - def to_gdal(self) -> tuple[float, float, float, float, float, float]: """Convert to a GDAL geotransform""" return (self.x_min, self.x_pixel_size, 0, self.y_max, 0, self.y_pixel_size) From a98d210bb819573aec3c18f534cc429ccdfb822a Mon Sep 17 00:00:00 2001 From: Michael Mattig Date: Thu, 22 Jan 2026 13:26:13 +0100 Subject: [PATCH 2/2] fix example --- examples/add_public_raster_dataset.ipynb | 84 +++++++++++++----------- 1 file changed, 46 insertions(+), 38 deletions(-) diff --git a/examples/add_public_raster_dataset.ipynb b/examples/add_public_raster_dataset.ipynb index 5a082946..c398f1fe 100644 --- a/examples/add_public_raster_dataset.ipynb +++ b/examples/add_public_raster_dataset.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 84, "metadata": {}, "outputs": [], "source": [ @@ -32,7 +32,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 85, "metadata": {}, "outputs": [], "source": [ @@ -49,17 +49,17 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 86, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[Volume(name='test_data', path='test_data/'),\n", - " Volume(name='geodata', path='/home/michael/geodata/')]" + "[Volume(name='geodata', path='/home/michael/geodata/'),\n", + " Volume(name='test_data', path='test_data/')]" ] }, - "execution_count": 14, + "execution_count": 86, "metadata": {}, "output_type": "execute_result" } @@ -79,16 +79,16 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 87, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "GdalMetaDataStatic(cache_ttl=None, params=GdalDatasetParameters(allow_alphaband_as_mask=True, file_not_found_handling=, file_path='raster/landcover/landcover.tif', gdal_config_options=None, gdal_open_options=None, geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=0.1), height=1800, no_data_value=None, properties_mapping=None, rasterband_channel=1, width=3600), result_descriptor=RasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ClassificationMeasurement(classes={'0': 'Water Bodies', '1': 'Evergreen Needleleaf Forests', '2': 'Evergreen Broadleaf Forests', '3': 'Deciduous Needleleaf Forests', '4': 'Deciduous Broadleleaf Forests', '5': 'Mixed Forests', '6': 'Closed Shrublands', '7': 'Open Shrublands', '8': 'Woody Savannas', '9': 'Savannas', '10': 'Grasslands', '11': 'Permanent Wtlands', '12': 'Croplands', '13': 'Urban and Built-Up', '14': 'Cropland-Natural Vegetation Mosaics', '15': 'Snow and Ice', '16': 'Barren or Sparsely Vegetated'}, measurement='Land Cover', type='classification'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='band')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=None, dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'}))), time=None, type='GdalStatic')" + "GdalMetaDataStatic(cache_ttl=None, params=GdalDatasetParameters(allow_alphaband_as_mask=True, file_not_found_handling=, file_path='raster/landcover/landcover.tif', gdal_config_options=None, gdal_open_options=None, geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), height=1800, no_data_value=None, properties_mapping=None, rasterband_channel=1, width=3600), result_descriptor=RasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ClassificationMeasurement(classes={'0': 'Water Bodies', '1': 'Evergreen Needleleaf Forests', '2': 'Evergreen Broadleaf Forests', '3': 'Deciduous Needleleaf Forests', '4': 'Deciduous Broadleleaf Forests', '5': 'Mixed Forests', '6': 'Closed Shrublands', '7': 'Open Shrublands', '8': 'Woody Savannas', '9': 'Savannas', '10': 'Grasslands', '11': 'Permanent Wtlands', '12': 'Croplands', '13': 'Urban and Built-Up', '14': 'Cropland-Natural Vegetation Mosaics', '15': 'Snow and Ice', '16': 'Barren or Sparsely Vegetated'}, measurement='Land Cover', type='classification'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='band')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=None, dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'}))), time=None, type='GdalStatic')" ] }, - "execution_count": 15, + "execution_count": 87, "metadata": {}, "output_type": "execute_result" } @@ -115,7 +115,7 @@ " \"geoTransform\": {\n", " \"originCoordinate\": {\"x\": origin[0], \"y\": origin[1]},\n", " \"xPixelSize\": x_pixel_size,\n", - " \"yPixelSize\": x_pixel_size,\n", + " \"yPixelSize\": y_pixel_size,\n", " },\n", " \"width\": width,\n", " \"height\": height,\n", @@ -182,7 +182,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 88, "metadata": {}, "outputs": [ { @@ -191,7 +191,7 @@ "AddDataset(description='Land Cover', display_name='Land Cover', name='MCD12C1', provenance=[Provenance(citation='The data was obtained from . The layer Majority_Land_Cover_Type_1 was extracted, downscaled and saved as landcover.tif.', license='All data distributed by the LP DAAC contain no restrictions on the data reuse. (https://lpdaac.usgs.gov/resources/faqs/#am-i-allowed-to-reuse-lp-daac-data).', uri='https://lpdaac.usgs.gov/products/mcd12c1v006/')], source_operator='GdalSource', symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[0, 0, 255, 255], value=0), Breakpoint(color=[0, 255, 0, 255], value=8), Breakpoint(color=[255, 0, 0, 255], value=16)], no_data_color=[0, 0, 0, 0], over_color=[0, 0, 0, 0], type='linearGradient', under_color=[0, 0, 0, 0]), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}), tags=None)" ] }, - "execution_count": 16, + "execution_count": 88, "metadata": {}, "output_type": "execute_result" } @@ -241,7 +241,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 89, "metadata": {}, "outputs": [ { @@ -250,7 +250,7 @@ "MCD12C1" ] }, - "execution_count": 17, + "execution_count": 89, "metadata": {}, "output_type": "execute_result" } @@ -279,28 +279,28 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 90, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "description='Boundaries of Germany' display_name='Germany' id=UUID('908a5a68-66e2-47d7-97d6-f76db0fb950b') name='germany_outline' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=5.85248986800011, y=47.2711209110001), upper_right_coordinate=Coordinate2D(x=15.022059367000098, y=55.0653343770001)), columns={}, data_type=, spatial_reference='EPSG:4326', time=TimeInterval(end=8210266876799999, start=-8334601228800000), type='vector'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='OgrSource' symbology=None tags=[]\n", - "description='Land Cover' display_name='Land Cover' id=UUID('ecf79015-2a73-4729-81a7-475af3681433') name='MCD12C1' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ClassificationMeasurement(classes={'0': 'Water Bodies', '1': 'Evergreen Needleleaf Forests', '2': 'Evergreen Broadleaf Forests', '3': 'Deciduous Needleleaf Forests', '4': 'Deciduous Broadleleaf Forests', '5': 'Mixed Forests', '6': 'Closed Shrublands', '7': 'Open Shrublands', '8': 'Woody Savannas', '9': 'Savannas', '10': 'Grasslands', '11': 'Permanent Wtlands', '12': 'Croplands', '13': 'Urban and Built-Up', '14': 'Cropland-Natural Vegetation Mosaics', '15': 'Snow and Ice', '16': 'Barren or Sparsely Vegetated'}, measurement='Land Cover', type='classification'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='band')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=None, dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[0, 0, 255, 255], value=0.0), Breakpoint(color=[0, 255, 0, 255], value=8.0), Breakpoint(color=[255, 0, 0, 255], value=16.0)], no_data_color=[0, 0, 0, 0], over_color=[0, 0, 0, 0], type='linearGradient', under_color=[0, 0, 0, 0]), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='Land Cover derived from MODIS/Terra+Aqua Land Cover' display_name='Land Cover' id=UUID('953e51df-d4c7-49be-9cb5-2a91186fa94c') name='land_cover' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ClassificationMeasurement(classes={'0': 'Water Bodies', '1': 'Evergreen Needleleaf Forests', '2': 'Evergreen Broadleaf Forests', '3': 'Deciduous Needleleaf Forests', '4': 'Deciduous Broadleaf Forests', '5': 'Mixed Forests', '6': 'Closed Shrublands', '7': 'Open Shrublands', '8': 'Woody Savannas', '9': 'Savannas', '10': 'Grasslands', '11': 'Permanent Wetlands', '12': 'Croplands', '13': 'Urban and Built-Up', '14': 'Cropland-Natural Vegetation Mosaics', '15': 'Snow and Ice', '16': 'Barren or Sparsely Vegetated'}, measurement='Land Cover', type='classification'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='land_cover')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=8210266876799999, start=-8334601228800000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'6': [195, 127, 126, 255], '10': [223, 192, 125, 255], '5': [125, 194, 127, 255], '12': [225, 222, 127, 255], '4': [159, 225, 127, 255], '9': [226, 221, 7, 255], '0': [134, 201, 227, 255], '1': [30, 129, 62, 255], '3': [157, 194, 63, 255], '16': [192, 192, 192, 255], '2': [59, 194, 212, 255], '8': [224, 223, 133, 255], '7': [188, 221, 190, 255], '15': [255, 255, 255, 255], '11': [66, 128, 189, 255], '14': [162, 159, 66, 255], '13': [253, 2, 0, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='A mock dataset' display_name='Mock' id=UUID('15f32eae-313e-4257-b112-6664cb147b3b') name='Mock' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=1.0, y=2.0), upper_right_coordinate=Coordinate2D(x=1.0, y=2.0)), columns={}, data_type=, spatial_reference='EPSG:4326', time=TimeInterval(end=8210266876799999, start=-8334601228800000), type='vector'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='MockDatasetDataSource' symbology=None tags=[]\n", - "description='NDVI data from MODIS' display_name='NDVI' id=UUID('1e266f41-10f4-477a-8cc5-e1f541828540') name='ndvi' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ContinuousMeasurement(measurement='vegetation', type='continuous', unit=None), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=1404172800000, start=1388534400000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1388534400000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'74': [174, 164, 105, 255], '78': [170, 162, 99, 255], '167': [81, 98, 33, 255], '91': [158, 153, 77, 255], '242': [18, 44, 2, 255], '178': [72, 89, 33, 255], '46': [199, 185, 149, 255], '197': [55, 75, 27, 255], '174': [75, 92, 33, 255], '90': [159, 153, 78, 255], '238': [21, 47, 1, 255], '54': [193, 179, 137, 255], '115': [132, 136, 45, 255], '177': [72, 90, 33, 255], '55': [192, 178, 136, 255], '127': [119, 128, 30, 255], '22': [219, 205, 184, 255], '71': [177, 167, 111, 255], '134': [112, 123, 31, 255], '97': [152, 149, 68, 255], '84': [165, 158, 89, 255], '240': [19, 46, 2, 255], '80': [169, 160, 95, 255], '217': [36, 62, 6, 255], '244': [17, 43, 2, 255], '236': [22, 49, 1, 255], '207': [46, 69, 17, 255], '151': [95, 110, 32, 255], '69': [179, 168, 114, 255], '36': [208, 193, 164, 255], '201': [51, 72, 23, 255], '129': [117, 127, 30, 255], '209': [44, 67, 14, 255], '161': [85, 102, 33, 255], '163': [84, 101, 33, 255], '3': [234, 221, 211, 255], '6': [231, 219, 206, 255], '206': [46, 69, 18, 255], '187': [64, 82, 33, 255], '43': [202, 188, 153, 255], '188': [63, 81, 33, 255], '237': [21, 48, 1, 255], '88': [161, 155, 82, 255], '4': [233, 221, 209, 255], '253': [11, 36, 3, 255], '228': [27, 54, 0, 255], '68': [180, 169, 116, 255], '229': [26, 54, 1, 255], '7': [231, 218, 205, 255], '65': [183, 171, 121, 255], '9': [229, 216, 202, 255], '146': [100, 114, 32, 255], '64': [184, 171, 122, 255], '57': [190, 177, 133, 255], '203': [49, 71, 21, 255], '128': [118, 127, 30, 255], '252': [12, 37, 3, 255], '239': [20, 47, 2, 255], '184': [67, 84, 33, 255], '24': [217, 203, 181, 255], '195': [57, 76, 29, 255], '235': [23, 49, 1, 255], '113': [134, 138, 48, 255], '179': [71, 88, 33, 255], '34': [209, 195, 167, 255], '31': [212, 197, 171, 255], '254': [11, 36, 3, 255], '138': [108, 120, 31, 255], '72': [176, 166, 109, 255], '18': [222, 208, 189, 255], '110': [138, 140, 51, 255], '248': [14, 40, 2, 255], '183': [68, 85, 33, 255], '139': [107, 119, 31, 255], '155': [91, 107, 33, 255], '114': [133, 137, 46, 255], '133': [113, 124, 31, 255], '131': [115, 125, 30, 255], '38': [206, 192, 161, 255], '246': [16, 41, 2, 255], '111': [137, 139, 50, 255], '56': [191, 177, 134, 255], '234': [23, 50, 1, 255], '59': [188, 175, 130, 255], '39': [205, 191, 159, 255], '158': [88, 105, 33, 255], '112': [135, 138, 49, 255], '175': [74, 92, 33, 255], '87': [162, 156, 84, 255], '125': [121, 129, 33, 255], '227': [28, 55, 0, 255], '25': [217, 202, 180, 255], '241': [19, 45, 2, 255], '32': [211, 196, 170, 255], '251': [13, 38, 3, 255], '93': [156, 151, 73, 255], '94': [155, 151, 72, 255], '37': [207, 192, 162, 255], '226': [28, 56, 0, 255], '166': [81, 99, 33, 255], '136': [110, 121, 31, 255], '137': [109, 121, 31, 255], '145': [101, 115, 32, 255], '193': [59, 78, 31, 255], '82': [167, 159, 92, 255], '233': [24, 51, 1, 255], '190': [62, 80, 33, 255], '198': [54, 74, 26, 255], '205': [47, 70, 19, 255], '21': [220, 206, 185, 255], '250': [13, 39, 3, 255], '170': [78, 95, 33, 255], '165': [82, 99, 33, 255], '20': [221, 207, 187, 255], '153': [93, 109, 32, 255], '223': [30, 58, 0, 255], '73': [175, 165, 107, 255], '17': [223, 209, 191, 255], '247': [15, 41, 2, 255], '75': [173, 164, 104, 255], '245': [16, 42, 2, 255], '16': [224, 210, 192, 255], '160': [86, 103, 33, 255], '176': [73, 91, 33, 255], '224': [29, 57, 0, 255], '49': [197, 183, 145, 255], '255': [0, 0, 0, 255], '150': [96, 111, 32, 255], '79': [170, 161, 97, 255], '8': [230, 217, 204, 255], '76': [172, 163, 102, 255], '102': [146, 145, 61, 255], '117': [130, 135, 43, 255], '144': [102, 115, 32, 255], '77': [171, 162, 100, 255], '63': [185, 172, 124, 255], '221': [32, 59, 2, 255], '51': [195, 181, 142, 255], '13': [226, 213, 197, 255], '124': [122, 130, 34, 255], '100': [149, 147, 64, 255], '196': [56, 76, 28, 255], '61': [187, 174, 127, 255], '154': [92, 108, 33, 255], '101': [147, 146, 63, 255], '27': [215, 200, 177, 255], '62': [186, 173, 125, 255], '202': [50, 72, 22, 255], '208': [45, 68, 15, 255], '60': [188, 174, 128, 255], '169': [79, 96, 33, 255], '30': [213, 198, 172, 255], '11': [227, 214, 199, 255], '19': [221, 207, 188, 255], '162': [85, 102, 33, 255], '70': [178, 167, 112, 255], '156': [90, 106, 33, 255], '181': [69, 87, 33, 255], '147': [99, 113, 32, 255], '42': [203, 188, 155, 255], '212': [41, 65, 11, 255], '120': [127, 133, 39, 255], '132': [114, 124, 30, 255], '168': [80, 97, 33, 255], '199': [53, 74, 25, 255], '45': [200, 186, 150, 255], '149': [97, 112, 32, 255], '140': [106, 118, 31, 255], '116': [131, 136, 44, 255], '230': [26, 53, 1, 255], '40': [204, 190, 158, 255], '192': [60, 78, 32, 255], '191': [61, 79, 33, 255], '85': [164, 157, 87, 255], '216': [37, 63, 7, 255], '171': [77, 95, 33, 255], '211': [42, 66, 12, 255], '89': [160, 154, 80, 255], '50': [196, 182, 143, 255], '5': [232, 220, 208, 255], '135': [111, 122, 31, 255], '143': [103, 116, 32, 255], '215': [38, 63, 8, 255], '152': [94, 109, 32, 255], '157': [89, 106, 33, 255], '33': [210, 195, 168, 255], '204': [48, 70, 20, 255], '28': [214, 200, 175, 255], '44': [201, 187, 152, 255], '52': [194, 181, 140, 255], '159': [87, 104, 33, 255], '53': [193, 180, 139, 255], '219': [34, 61, 4, 255], '141': [105, 118, 31, 255], '41': [204, 189, 156, 255], '213': [40, 65, 10, 255], '173': [76, 93, 33, 255], '95': [154, 150, 70, 255], '142': [104, 117, 31, 255], '106': [142, 142, 56, 255], '118': [129, 134, 41, 255], '107': [141, 142, 55, 255], '83': [166, 158, 90, 255], '10': [228, 215, 201, 255], '222': [31, 59, 1, 255], '186': [65, 83, 33, 255], '164': [83, 100, 33, 255], '243': [18, 44, 2, 255], '48': [198, 184, 146, 255], '232': [24, 52, 1, 255], '108': [140, 141, 54, 255], '35': [209, 194, 165, 255], '126': [120, 129, 31, 255], '14': [225, 212, 195, 255], '26': [216, 201, 178, 255], '67': [181, 169, 117, 255], '172': [76, 94, 33, 255], '66': [182, 170, 119, 255], '249': [14, 39, 2, 255], '2': [234, 222, 212, 255], '103': [145, 145, 60, 255], '47': [199, 185, 148, 255], '185': [66, 84, 33, 255], '200': [52, 73, 24, 255], '123': [123, 131, 35, 255], '121': [126, 132, 38, 255], '225': [29, 57, 0, 255], '231': [25, 52, 1, 255], '180': [70, 88, 33, 255], '23': [218, 204, 182, 255], '96': [153, 149, 69, 255], '29': [214, 199, 174, 255], '98': [151, 148, 66, 255], '104': [144, 144, 59, 255], '99': [150, 147, 65, 255], '218': [35, 61, 5, 255], '109': [139, 140, 53, 255], '1': [235, 223, 214, 255], '86': [163, 156, 85, 255], '148': [98, 112, 32, 255], '0': [236, 224, 215, 0], '12': [227, 214, 198, 255], '15': [224, 211, 194, 255], '214': [39, 64, 9, 255], '189': [63, 81, 33, 255], '122': [124, 131, 36, 255], '130': [116, 126, 30, 255], '220': [33, 60, 3, 255], '194': [58, 77, 30, 255], '58': [189, 176, 131, 255], '182': [68, 86, 33, 255], '81': [168, 160, 94, 255], '92': [157, 152, 75, 255], '105': [143, 143, 58, 255], '119': [128, 134, 40, 255], '210': [43, 67, 13, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='NDVI data from MODIS, downscaled 3x' display_name='NDVI Downscaled 3x' id=UUID('11f7f1a6-8f8f-419b-91e3-601d8cd68652') name='ndvi_downscaled_3x' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ContinuousMeasurement(measurement='vegetation', type='continuous', unit=None), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=1199, y_idx=599), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=1746057600000, start=1735689600000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1735689600000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'119': [128, 134, 40, 255], '220': [33, 60, 3, 255], '243': [18, 44, 2, 255], '83': [166, 158, 90, 255], '113': [134, 138, 48, 255], '141': [105, 118, 31, 255], '105': [143, 143, 58, 255], '218': [35, 61, 5, 255], '21': [220, 206, 185, 255], '109': [139, 140, 53, 255], '251': [13, 38, 3, 255], '121': [126, 132, 38, 255], '137': [109, 121, 31, 255], '26': [216, 201, 178, 255], '245': [16, 42, 2, 255], '184': [67, 84, 33, 255], '196': [56, 76, 28, 255], '72': [176, 166, 109, 255], '115': [132, 136, 45, 255], '118': [129, 134, 41, 255], '57': [190, 177, 133, 255], '225': [29, 57, 0, 255], '181': [69, 87, 33, 255], '1': [235, 223, 214, 255], '102': [146, 145, 61, 255], '107': [141, 142, 55, 255], '31': [212, 197, 171, 255], '146': [100, 114, 32, 255], '20': [221, 207, 187, 255], '28': [214, 200, 175, 255], '195': [57, 76, 29, 255], '17': [223, 209, 191, 255], '201': [51, 72, 23, 255], '233': [24, 51, 1, 255], '120': [127, 133, 39, 255], '34': [209, 195, 167, 255], '111': [137, 139, 50, 255], '203': [49, 71, 21, 255], '209': [44, 67, 14, 255], '44': [201, 187, 152, 255], '194': [58, 77, 30, 255], '41': [204, 189, 156, 255], '18': [222, 208, 189, 255], '231': [25, 52, 1, 255], '227': [28, 55, 0, 255], '14': [225, 212, 195, 255], '212': [41, 65, 11, 255], '55': [192, 178, 136, 255], '205': [47, 70, 19, 255], '213': [40, 65, 10, 255], '42': [203, 188, 155, 255], '80': [169, 160, 95, 255], '123': [123, 131, 35, 255], '177': [72, 90, 33, 255], '208': [45, 68, 15, 255], '91': [158, 153, 77, 255], '29': [214, 199, 174, 255], '3': [234, 221, 211, 255], '164': [83, 100, 33, 255], '86': [163, 156, 85, 255], '186': [65, 83, 33, 255], '46': [199, 185, 149, 255], '229': [26, 54, 1, 255], '128': [118, 127, 30, 255], '134': [112, 123, 31, 255], '64': [184, 171, 122, 255], '99': [150, 147, 65, 255], '132': [114, 124, 30, 255], '179': [71, 88, 33, 255], '152': [94, 109, 32, 255], '15': [224, 211, 194, 255], '93': [156, 151, 73, 255], '103': [145, 145, 60, 255], '71': [177, 167, 111, 255], '36': [208, 193, 164, 255], '190': [62, 80, 33, 255], '228': [27, 54, 0, 255], '70': [178, 167, 112, 255], '114': [133, 137, 46, 255], '56': [191, 177, 134, 255], '242': [18, 44, 2, 255], '76': [172, 163, 102, 255], '116': [131, 136, 44, 255], '131': [115, 125, 30, 255], '82': [167, 159, 92, 255], '236': [22, 49, 1, 255], '12': [227, 214, 198, 255], '240': [19, 46, 2, 255], '47': [199, 185, 148, 255], '92': [157, 152, 75, 255], '219': [34, 61, 4, 255], '180': [70, 88, 33, 255], '217': [36, 62, 6, 255], '127': [119, 128, 30, 255], '98': [151, 148, 66, 255], '136': [110, 121, 31, 255], '215': [38, 63, 8, 255], '151': [95, 110, 32, 255], '4': [233, 221, 209, 255], '11': [227, 214, 199, 255], '2': [234, 222, 212, 255], '247': [15, 41, 2, 255], '197': [55, 75, 27, 255], '206': [46, 69, 18, 255], '108': [140, 141, 54, 255], '157': [89, 106, 33, 255], '182': [68, 86, 33, 255], '174': [75, 92, 33, 255], '244': [17, 43, 2, 255], '239': [20, 47, 2, 255], '130': [116, 126, 30, 255], '224': [29, 57, 0, 255], '45': [200, 186, 150, 255], '16': [224, 210, 192, 255], '89': [160, 154, 80, 255], '144': [102, 115, 32, 255], '249': [14, 39, 2, 255], '84': [165, 158, 89, 255], '148': [98, 112, 32, 255], '171': [77, 95, 33, 255], '32': [211, 196, 170, 255], '149': [97, 112, 32, 255], '97': [152, 149, 68, 255], '59': [188, 175, 130, 255], '145': [101, 115, 32, 255], '125': [121, 129, 33, 255], '5': [232, 220, 208, 255], '40': [204, 190, 158, 255], '168': [80, 97, 33, 255], '52': [194, 181, 140, 255], '124': [122, 130, 34, 255], '232': [24, 52, 1, 255], '69': [179, 168, 114, 255], '230': [26, 53, 1, 255], '200': [52, 73, 24, 255], '234': [23, 50, 1, 255], '104': [144, 144, 59, 255], '33': [210, 195, 168, 255], '129': [117, 127, 30, 255], '24': [217, 203, 181, 255], '88': [161, 155, 82, 255], '62': [186, 173, 125, 255], '202': [50, 72, 22, 255], '178': [72, 89, 33, 255], '100': [149, 147, 64, 255], '248': [14, 40, 2, 255], '23': [218, 204, 182, 255], '142': [104, 117, 31, 255], '58': [189, 176, 131, 255], '68': [180, 169, 116, 255], '22': [219, 205, 184, 255], '77': [171, 162, 100, 255], '252': [12, 37, 3, 255], '222': [31, 59, 1, 255], '199': [53, 74, 25, 255], '235': [23, 49, 1, 255], '193': [59, 78, 31, 255], '238': [21, 47, 1, 255], '133': [113, 124, 31, 255], '167': [81, 98, 33, 255], '65': [183, 171, 121, 255], '138': [108, 120, 31, 255], '27': [215, 200, 177, 255], '85': [164, 157, 87, 255], '67': [181, 169, 117, 255], '255': [0, 0, 0, 255], '207': [46, 69, 17, 255], '37': [207, 192, 162, 255], '8': [230, 217, 204, 255], '49': [197, 183, 145, 255], '210': [43, 67, 13, 255], '25': [217, 202, 180, 255], '117': [130, 135, 43, 255], '254': [11, 36, 3, 255], '139': [107, 119, 31, 255], '189': [63, 81, 33, 255], '48': [198, 184, 146, 255], '198': [54, 74, 26, 255], '154': [92, 108, 33, 255], '122': [124, 131, 36, 255], '7': [231, 218, 205, 255], '9': [229, 216, 202, 255], '237': [21, 48, 1, 255], '253': [11, 36, 3, 255], '160': [86, 103, 33, 255], '0': [236, 224, 215, 0], '140': [106, 118, 31, 255], '135': [111, 122, 31, 255], '156': [90, 106, 33, 255], '61': [187, 174, 127, 255], '53': [193, 180, 139, 255], '50': [196, 182, 143, 255], '159': [87, 104, 33, 255], '150': [96, 111, 32, 255], '43': [202, 188, 153, 255], '221': [32, 59, 2, 255], '191': [61, 79, 33, 255], '188': [63, 81, 33, 255], '158': [88, 105, 33, 255], '54': [193, 179, 137, 255], '78': [170, 162, 99, 255], '63': [185, 172, 124, 255], '13': [226, 213, 197, 255], '87': [162, 156, 84, 255], '95': [154, 150, 70, 255], '163': [84, 101, 33, 255], '6': [231, 219, 206, 255], '30': [213, 198, 172, 255], '39': [205, 191, 159, 255], '110': [138, 140, 51, 255], '126': [120, 129, 31, 255], '38': [206, 192, 161, 255], '216': [37, 63, 7, 255], '73': [175, 165, 107, 255], '223': [30, 58, 0, 255], '96': [153, 149, 69, 255], '143': [103, 116, 32, 255], '226': [28, 56, 0, 255], '147': [99, 113, 32, 255], '74': [174, 164, 105, 255], '172': [76, 94, 33, 255], '79': [170, 161, 97, 255], '169': [79, 96, 33, 255], '112': [135, 138, 49, 255], '170': [78, 95, 33, 255], '81': [168, 160, 94, 255], '204': [48, 70, 20, 255], '35': [209, 194, 165, 255], '241': [19, 45, 2, 255], '75': [173, 164, 104, 255], '183': [68, 85, 33, 255], '10': [228, 215, 201, 255], '176': [73, 91, 33, 255], '175': [74, 92, 33, 255], '155': [91, 107, 33, 255], '166': [81, 99, 33, 255], '162': [85, 102, 33, 255], '165': [82, 99, 33, 255], '250': [13, 39, 3, 255], '187': [64, 82, 33, 255], '185': [66, 84, 33, 255], '246': [16, 41, 2, 255], '161': [85, 102, 33, 255], '51': [195, 181, 142, 255], '66': [182, 170, 119, 255], '153': [93, 109, 32, 255], '19': [221, 207, 188, 255], '90': [159, 153, 78, 255], '211': [42, 66, 12, 255], '173': [76, 93, 33, 255], '60': [188, 174, 128, 255], '101': [147, 146, 63, 255], '94': [155, 151, 72, 255], '214': [39, 64, 9, 255], '106': [142, 142, 56, 255], '192': [60, 78, 32, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='NDVI data from MODIS' display_name='NDVI as GdalMetaDataList' id=UUID('c91e3baf-48e5-4bf5-8cd0-3d917f4621f0') name='ndvi_list' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=1404172800000, start=1388534400000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1388534400000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'142': [104, 117, 31, 255], '29': [214, 199, 174, 255], '48': [198, 184, 146, 255], '135': [111, 122, 31, 255], '227': [28, 55, 0, 255], '78': [170, 162, 99, 255], '139': [107, 119, 31, 255], '241': [19, 45, 2, 255], '88': [161, 155, 82, 255], '28': [214, 200, 175, 255], '63': [185, 172, 124, 255], '43': [202, 188, 153, 255], '57': [190, 177, 133, 255], '85': [164, 157, 87, 255], '244': [17, 43, 2, 255], '93': [156, 151, 73, 255], '30': [213, 198, 172, 255], '179': [71, 88, 33, 255], '167': [81, 98, 33, 255], '113': [134, 138, 48, 255], '21': [220, 206, 185, 255], '120': [127, 133, 39, 255], '219': [34, 61, 4, 255], '175': [74, 92, 33, 255], '210': [43, 67, 13, 255], '153': [93, 109, 32, 255], '149': [97, 112, 32, 255], '35': [209, 194, 165, 255], '125': [121, 129, 33, 255], '75': [173, 164, 104, 255], '140': [106, 118, 31, 255], '144': [102, 115, 32, 255], '116': [131, 136, 44, 255], '18': [222, 208, 189, 255], '118': [129, 134, 41, 255], '91': [158, 153, 77, 255], '228': [27, 54, 0, 255], '246': [16, 41, 2, 255], '201': [51, 72, 23, 255], '218': [35, 61, 5, 255], '252': [12, 37, 3, 255], '96': [153, 149, 69, 255], '25': [217, 202, 180, 255], '213': [40, 65, 10, 255], '137': [109, 121, 31, 255], '73': [175, 165, 107, 255], '70': [178, 167, 112, 255], '65': [183, 171, 121, 255], '188': [63, 81, 33, 255], '39': [205, 191, 159, 255], '224': [29, 57, 0, 255], '33': [210, 195, 168, 255], '154': [92, 108, 33, 255], '108': [140, 141, 54, 255], '127': [119, 128, 30, 255], '130': [116, 126, 30, 255], '54': [193, 179, 137, 255], '183': [68, 85, 33, 255], '168': [80, 97, 33, 255], '81': [168, 160, 94, 255], '198': [54, 74, 26, 255], '31': [212, 197, 171, 255], '117': [130, 135, 43, 255], '225': [29, 57, 0, 255], '204': [48, 70, 20, 255], '51': [195, 181, 142, 255], '20': [221, 207, 187, 255], '177': [72, 90, 33, 255], '133': [113, 124, 31, 255], '215': [38, 63, 8, 255], '111': [137, 139, 50, 255], '112': [135, 138, 49, 255], '44': [201, 187, 152, 255], '217': [36, 62, 6, 255], '99': [150, 147, 65, 255], '32': [211, 196, 170, 255], '187': [64, 82, 33, 255], '69': [179, 168, 114, 255], '109': [139, 140, 53, 255], '107': [141, 142, 55, 255], '15': [224, 211, 194, 255], '40': [204, 190, 158, 255], '61': [187, 174, 127, 255], '83': [166, 158, 90, 255], '194': [58, 77, 30, 255], '243': [18, 44, 2, 255], '197': [55, 75, 27, 255], '208': [45, 68, 15, 255], '236': [22, 49, 1, 255], '0': [236, 224, 215, 0], '3': [234, 221, 211, 255], '136': [110, 121, 31, 255], '231': [25, 52, 1, 255], '36': [208, 193, 164, 255], '178': [72, 89, 33, 255], '49': [197, 183, 145, 255], '211': [42, 66, 12, 255], '76': [172, 163, 102, 255], '2': [234, 222, 212, 255], '250': [13, 39, 3, 255], '161': [85, 102, 33, 255], '156': [90, 106, 33, 255], '232': [24, 52, 1, 255], '105': [143, 143, 58, 255], '26': [216, 201, 178, 255], '150': [96, 111, 32, 255], '245': [16, 42, 2, 255], '41': [204, 189, 156, 255], '186': [65, 83, 33, 255], '102': [146, 145, 61, 255], '59': [188, 175, 130, 255], '205': [47, 70, 19, 255], '23': [218, 204, 182, 255], '162': [85, 102, 33, 255], '95': [154, 150, 70, 255], '255': [0, 0, 0, 255], '47': [199, 185, 148, 255], '229': [26, 54, 1, 255], '184': [67, 84, 33, 255], '206': [46, 69, 18, 255], '191': [61, 79, 33, 255], '24': [217, 203, 181, 255], '67': [181, 169, 117, 255], '164': [83, 100, 33, 255], '124': [122, 130, 34, 255], '254': [11, 36, 3, 255], '185': [66, 84, 33, 255], '143': [103, 116, 32, 255], '189': [63, 81, 33, 255], '234': [23, 50, 1, 255], '132': [114, 124, 30, 255], '122': [124, 131, 36, 255], '165': [82, 99, 33, 255], '34': [209, 195, 167, 255], '55': [192, 178, 136, 255], '92': [157, 152, 75, 255], '199': [53, 74, 25, 255], '145': [101, 115, 32, 255], '159': [87, 104, 33, 255], '239': [20, 47, 2, 255], '72': [176, 166, 109, 255], '126': [120, 129, 31, 255], '5': [232, 220, 208, 255], '101': [147, 146, 63, 255], '86': [163, 156, 85, 255], '110': [138, 140, 51, 255], '216': [37, 63, 7, 255], '237': [21, 48, 1, 255], '169': [79, 96, 33, 255], '53': [193, 180, 139, 255], '4': [233, 221, 209, 255], '6': [231, 219, 206, 255], '22': [219, 205, 184, 255], '157': [89, 106, 33, 255], '180': [70, 88, 33, 255], '195': [57, 76, 29, 255], '46': [199, 185, 149, 255], '193': [59, 78, 31, 255], '123': [123, 131, 35, 255], '128': [118, 127, 30, 255], '19': [221, 207, 188, 255], '203': [49, 71, 21, 255], '221': [32, 59, 2, 255], '181': [69, 87, 33, 255], '152': [94, 109, 32, 255], '238': [21, 47, 1, 255], '242': [18, 44, 2, 255], '171': [77, 95, 33, 255], '240': [19, 46, 2, 255], '212': [41, 65, 11, 255], '45': [200, 186, 150, 255], '115': [132, 136, 45, 255], '104': [144, 144, 59, 255], '64': [184, 171, 122, 255], '71': [177, 167, 111, 255], '100': [149, 147, 64, 255], '192': [60, 78, 32, 255], '249': [14, 39, 2, 255], '196': [56, 76, 28, 255], '14': [225, 212, 195, 255], '98': [151, 148, 66, 255], '62': [186, 173, 125, 255], '247': [15, 41, 2, 255], '11': [227, 214, 199, 255], '1': [235, 223, 214, 255], '226': [28, 56, 0, 255], '12': [227, 214, 198, 255], '146': [100, 114, 32, 255], '207': [46, 69, 17, 255], '176': [73, 91, 33, 255], '60': [188, 174, 128, 255], '163': [84, 101, 33, 255], '68': [180, 169, 116, 255], '174': [75, 92, 33, 255], '17': [223, 209, 191, 255], '222': [31, 59, 1, 255], '121': [126, 132, 38, 255], '16': [224, 210, 192, 255], '27': [215, 200, 177, 255], '233': [24, 51, 1, 255], '131': [115, 125, 30, 255], '89': [160, 154, 80, 255], '134': [112, 123, 31, 255], '220': [33, 60, 3, 255], '172': [76, 94, 33, 255], '42': [203, 188, 155, 255], '148': [98, 112, 32, 255], '79': [170, 161, 97, 255], '90': [159, 153, 78, 255], '147': [99, 113, 32, 255], '190': [62, 80, 33, 255], '103': [145, 145, 60, 255], '182': [68, 86, 33, 255], '80': [169, 160, 95, 255], '138': [108, 120, 31, 255], '37': [207, 192, 162, 255], '235': [23, 49, 1, 255], '155': [91, 107, 33, 255], '209': [44, 67, 14, 255], '38': [206, 192, 161, 255], '97': [152, 149, 68, 255], '230': [26, 53, 1, 255], '170': [78, 95, 33, 255], '151': [95, 110, 32, 255], '50': [196, 182, 143, 255], '166': [81, 99, 33, 255], '84': [165, 158, 89, 255], '223': [30, 58, 0, 255], '82': [167, 159, 92, 255], '129': [117, 127, 30, 255], '119': [128, 134, 40, 255], '87': [162, 156, 84, 255], '56': [191, 177, 134, 255], '94': [155, 151, 72, 255], '74': [174, 164, 105, 255], '58': [189, 176, 131, 255], '7': [231, 218, 205, 255], '114': [133, 137, 46, 255], '202': [50, 72, 22, 255], '200': [52, 73, 24, 255], '106': [142, 142, 56, 255], '158': [88, 105, 33, 255], '214': [39, 64, 9, 255], '9': [229, 216, 202, 255], '66': [182, 170, 119, 255], '141': [105, 118, 31, 255], '52': [194, 181, 140, 255], '248': [14, 40, 2, 255], '13': [226, 213, 197, 255], '8': [230, 217, 204, 255], '160': [86, 103, 33, 255], '10': [228, 215, 201, 255], '77': [171, 162, 100, 255], '173': [76, 93, 33, 255], '251': [13, 38, 3, 255], '253': [11, 36, 3, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='NDVI data from MODIS but with flipped y-axis' display_name='NDVI flipped y-axis' id=UUID('f34a2da5-e8cf-4eed-ba57-b10d75249c0d') name='ndvi_flipped_axis' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ContinuousMeasurement(measurement='vegetation', type='continuous', unit=None), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=-90.0), x_pixel_size=0.1, y_pixel_size=0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=-1), top_left_idx=GridIdx2D(x_idx=0, y_idx=-1800)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=1404172800000, start=1388534400000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1388534400000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'23': [218, 204, 182, 255], '138': [108, 120, 31, 255], '113': [134, 138, 48, 255], '236': [22, 49, 1, 255], '163': [84, 101, 33, 255], '75': [173, 164, 104, 255], '202': [50, 72, 22, 255], '80': [169, 160, 95, 255], '141': [105, 118, 31, 255], '221': [32, 59, 2, 255], '115': [132, 136, 45, 255], '112': [135, 138, 49, 255], '105': [143, 143, 58, 255], '248': [14, 40, 2, 255], '106': [142, 142, 56, 255], '47': [199, 185, 148, 255], '11': [227, 214, 199, 255], '43': [202, 188, 153, 255], '150': [96, 111, 32, 255], '32': [211, 196, 170, 255], '172': [76, 94, 33, 255], '104': [144, 144, 59, 255], '119': [128, 134, 40, 255], '143': [103, 116, 32, 255], '61': [187, 174, 127, 255], '187': [64, 82, 33, 255], '211': [42, 66, 12, 255], '52': [194, 181, 140, 255], '252': [12, 37, 3, 255], '183': [68, 85, 33, 255], '108': [140, 141, 54, 255], '9': [229, 216, 202, 255], '41': [204, 189, 156, 255], '68': [180, 169, 116, 255], '212': [41, 65, 11, 255], '100': [149, 147, 64, 255], '229': [26, 54, 1, 255], '54': [193, 179, 137, 255], '167': [81, 98, 33, 255], '14': [225, 212, 195, 255], '117': [130, 135, 43, 255], '91': [158, 153, 77, 255], '131': [115, 125, 30, 255], '89': [160, 154, 80, 255], '6': [231, 219, 206, 255], '222': [31, 59, 1, 255], '79': [170, 161, 97, 255], '38': [206, 192, 161, 255], '201': [51, 72, 23, 255], '18': [222, 208, 189, 255], '240': [19, 46, 2, 255], '191': [61, 79, 33, 255], '69': [179, 168, 114, 255], '34': [209, 195, 167, 255], '146': [100, 114, 32, 255], '238': [21, 47, 1, 255], '158': [88, 105, 33, 255], '203': [49, 71, 21, 255], '255': [0, 0, 0, 255], '29': [214, 199, 174, 255], '147': [99, 113, 32, 255], '110': [138, 140, 51, 255], '60': [188, 174, 128, 255], '197': [55, 75, 27, 255], '178': [72, 89, 33, 255], '214': [39, 64, 9, 255], '48': [198, 184, 146, 255], '118': [129, 134, 41, 255], '92': [157, 152, 75, 255], '111': [137, 139, 50, 255], '96': [153, 149, 69, 255], '66': [182, 170, 119, 255], '134': [112, 123, 31, 255], '250': [13, 39, 3, 255], '161': [85, 102, 33, 255], '159': [87, 104, 33, 255], '59': [188, 175, 130, 255], '72': [176, 166, 109, 255], '186': [65, 83, 33, 255], '182': [68, 86, 33, 255], '164': [83, 100, 33, 255], '81': [168, 160, 94, 255], '1': [235, 223, 214, 255], '27': [215, 200, 177, 255], '226': [28, 56, 0, 255], '190': [62, 80, 33, 255], '232': [24, 52, 1, 255], '156': [90, 106, 33, 255], '35': [209, 194, 165, 255], '177': [72, 90, 33, 255], '37': [207, 192, 162, 255], '5': [232, 220, 208, 255], '166': [81, 99, 33, 255], '8': [230, 217, 204, 255], '175': [74, 92, 33, 255], '165': [82, 99, 33, 255], '136': [110, 121, 31, 255], '180': [70, 88, 33, 255], '233': [24, 51, 1, 255], '174': [75, 92, 33, 255], '63': [185, 172, 124, 255], '148': [98, 112, 32, 255], '2': [234, 222, 212, 255], '140': [106, 118, 31, 255], '73': [175, 165, 107, 255], '132': [114, 124, 30, 255], '235': [23, 49, 1, 255], '192': [60, 78, 32, 255], '26': [216, 201, 178, 255], '10': [228, 215, 201, 255], '200': [52, 73, 24, 255], '93': [156, 151, 73, 255], '70': [178, 167, 112, 255], '97': [152, 149, 68, 255], '65': [183, 171, 121, 255], '12': [227, 214, 198, 255], '194': [58, 77, 30, 255], '53': [193, 180, 139, 255], '67': [181, 169, 117, 255], '205': [47, 70, 19, 255], '234': [23, 50, 1, 255], '196': [56, 76, 28, 255], '253': [11, 36, 3, 255], '239': [20, 47, 2, 255], '88': [161, 155, 82, 255], '116': [131, 136, 44, 255], '157': [89, 106, 33, 255], '13': [226, 213, 197, 255], '62': [186, 173, 125, 255], '129': [117, 127, 30, 255], '21': [220, 206, 185, 255], '184': [67, 84, 33, 255], '78': [170, 162, 99, 255], '71': [177, 167, 111, 255], '76': [172, 163, 102, 255], '219': [34, 61, 4, 255], '56': [191, 177, 134, 255], '122': [124, 131, 36, 255], '31': [212, 197, 171, 255], '3': [234, 221, 211, 255], '208': [45, 68, 15, 255], '199': [53, 74, 25, 255], '149': [97, 112, 32, 255], '94': [155, 151, 72, 255], '44': [201, 187, 152, 255], '4': [233, 221, 209, 255], '179': [71, 88, 33, 255], '40': [204, 190, 158, 255], '220': [33, 60, 3, 255], '42': [203, 188, 155, 255], '144': [102, 115, 32, 255], '50': [196, 182, 143, 255], '83': [166, 158, 90, 255], '0': [236, 224, 215, 0], '17': [223, 209, 191, 255], '46': [199, 185, 149, 255], '193': [59, 78, 31, 255], '15': [224, 211, 194, 255], '254': [11, 36, 3, 255], '243': [18, 44, 2, 255], '162': [85, 102, 33, 255], '49': [197, 183, 145, 255], '224': [29, 57, 0, 255], '39': [205, 191, 159, 255], '231': [25, 52, 1, 255], '137': [109, 121, 31, 255], '135': [111, 122, 31, 255], '139': [107, 119, 31, 255], '228': [27, 54, 0, 255], '216': [37, 63, 7, 255], '160': [86, 103, 33, 255], '87': [162, 156, 84, 255], '28': [214, 200, 175, 255], '153': [93, 109, 32, 255], '245': [16, 42, 2, 255], '55': [192, 178, 136, 255], '51': [195, 181, 142, 255], '247': [15, 41, 2, 255], '107': [141, 142, 55, 255], '121': [126, 132, 38, 255], '33': [210, 195, 168, 255], '16': [224, 210, 192, 255], '225': [29, 57, 0, 255], '114': [133, 137, 46, 255], '251': [13, 38, 3, 255], '204': [48, 70, 20, 255], '64': [184, 171, 122, 255], '170': [78, 95, 33, 255], '99': [150, 147, 65, 255], '109': [139, 140, 53, 255], '168': [80, 97, 33, 255], '242': [18, 44, 2, 255], '185': [66, 84, 33, 255], '82': [167, 159, 92, 255], '206': [46, 69, 18, 255], '237': [21, 48, 1, 255], '45': [200, 186, 150, 255], '173': [76, 93, 33, 255], '7': [231, 218, 205, 255], '215': [38, 63, 8, 255], '130': [116, 126, 30, 255], '57': [190, 177, 133, 255], '101': [147, 146, 63, 255], '155': [91, 107, 33, 255], '90': [159, 153, 78, 255], '145': [101, 115, 32, 255], '77': [171, 162, 100, 255], '218': [35, 61, 5, 255], '126': [120, 129, 31, 255], '230': [26, 53, 1, 255], '154': [92, 108, 33, 255], '249': [14, 39, 2, 255], '19': [221, 207, 188, 255], '98': [151, 148, 66, 255], '171': [77, 95, 33, 255], '74': [174, 164, 105, 255], '24': [217, 203, 181, 255], '120': [127, 133, 39, 255], '102': [146, 145, 61, 255], '227': [28, 55, 0, 255], '217': [36, 62, 6, 255], '223': [30, 58, 0, 255], '176': [73, 91, 33, 255], '189': [63, 81, 33, 255], '169': [79, 96, 33, 255], '128': [118, 127, 30, 255], '142': [104, 117, 31, 255], '103': [145, 145, 60, 255], '95': [154, 150, 70, 255], '58': [189, 176, 131, 255], '30': [213, 198, 172, 255], '181': [69, 87, 33, 255], '209': [44, 67, 14, 255], '152': [94, 109, 32, 255], '20': [221, 207, 187, 255], '151': [95, 110, 32, 255], '123': [123, 131, 35, 255], '188': [63, 81, 33, 255], '86': [163, 156, 85, 255], '244': [17, 43, 2, 255], '22': [219, 205, 184, 255], '127': [119, 128, 30, 255], '124': [122, 130, 34, 255], '246': [16, 41, 2, 255], '125': [121, 129, 33, 255], '210': [43, 67, 13, 255], '195': [57, 76, 29, 255], '198': [54, 74, 26, 255], '133': [113, 124, 31, 255], '36': [208, 193, 164, 255], '85': [164, 157, 87, 255], '213': [40, 65, 10, 255], '207': [46, 69, 17, 255], '25': [217, 202, 180, 255], '241': [19, 45, 2, 255], '84': [165, 158, 89, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='NDVI data from MODIS reprojected to EPSG:3857' display_name='NDVI3857' id=UUID('f6a3767f-d4e1-49e7-b3de-a6207d756e16') name='ndvi_3857' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-20037508.342789244, y=19971868.880408563), x_pixel_size=14052.95025804874, y_pixel_size=-14057.881117788405), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:3857', time=TimeDescriptor(bounds=TimeInterval(end=1404172800000, start=1388534400000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1388534400000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=None tags=[]\n", - "description='Ports from Natural Earth' display_name='Natural Earth 10m Ports' id=UUID('6f5281ba-286e-4e20-b554-92761195653d') name='ne_10m_ports' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=-171.75795, y=-54.809444), upper_right_coordinate=Coordinate2D(x=179.309364, y=78.226111)), columns={'scalerank': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'website': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'name': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'natlscale': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'featurecla': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}))}, data_type=, spatial_reference='EPSG:4326', time=TimeInterval(end=8210266876799999, start=-8334601228800000), type='vector'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='OgrSource' symbology=None tags=[]\n", - "description='Ports from Natural Earth reprojected to EPSG:3857' display_name='Natural Earth 10m Ports 3857' id=UUID('393692e6-50e8-462a-9cb5-d3752d6dce93') name='ne_10_ports_3857' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=-19120007.589356, y=-7324970.649647), upper_right_coordinate=Coordinate2D(x=19960627.094946, y=14490886.335637)), columns={'scalerank': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'natlscale': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'name': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'website': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'featurecla': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}))}, data_type=, spatial_reference='EPSG:3857', time=TimeInterval(end=8210266876799999, start=-8334601228800000), type='vector'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='OgrSource' symbology=None tags=[]\n", - "description='This data derived from Natural Earth 1 portrays the world environment in an idealized manner with little human influence. The softly blended colors of Natural Earth 2 are ideal for historical mapping, because it shows the world much as it looked before the modern era.' display_name='Natural Earth II – Blue' id=UUID('cedd0707-3675-4b2c-95a4-612007f84636') name='ne2_raster_blue' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='blue')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=8210266876799999, start=-8334601228800000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[247, 251, 255, 255], value=0.0), Breakpoint(color=[106, 173, 213, 255], value=127.0), Breakpoint(color=[246, 250, 254, 255], value=255.0)], no_data_color=[0, 0, 0, 0], over_color=[246, 250, 254, 255], type='linearGradient', under_color=[247, 251, 255, 255]), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='This data derived from Natural Earth 1 portrays the world environment in an idealized manner with little human influence. The softly blended colors of Natural Earth 2 are ideal for historical mapping, because it shows the world much as it looked before the modern era.' display_name='Natural Earth II – Green' id=UUID('f8f1dcd2-07fc-4a93-8ac0-85840bf79982') name='ne2_raster_green' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='green')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=8210266876799999, start=-8334601228800000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[247, 252, 245, 255], value=0.0), Breakpoint(color=[115, 195, 117, 255], value=127.0), Breakpoint(color=[246, 251, 244, 255], value=255.0)], no_data_color=[0, 0, 0, 0], over_color=[246, 251, 244, 255], type='linearGradient', under_color=[247, 252, 245, 255]), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='This data derived from Natural Earth 1 portrays the world environment in an idealized manner with little human influence. The softly blended colors of Natural Earth 2 are ideal for historical mapping, because it shows the world much as it looked before the modern era.' display_name='Natural Earth II – Red' id=UUID('c9e2e051-a0bf-4f9e-8e48-bb4ccca4993f') name='ne2_raster_red' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='red')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=8210266876799999, start=-8334601228800000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[255, 245, 240, 255], value=0.0), Breakpoint(color=[250, 105, 73, 255], value=127.0), Breakpoint(color=[254, 244, 239, 255], value=255.0)], no_data_color=[0, 0, 0, 0], over_color=[254, 244, 239, 255], type='linearGradient', under_color=[255, 245, 240, 255]), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", - "description='Some points in Europe in 2014' display_name='Points with Time' id=UUID('532343e7-67f9-423f-8daa-4c6a661776d6') name='points_with_time' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=3.966206, y=45.903036), upper_right_coordinate=Coordinate2D(x=19.171284, y=51.847343)), columns={}, data_type=, spatial_reference='EPSG:4326', time=TimeInterval(end=1404172800000, start=1396310400000), type='vector'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='OgrSource' symbology=None tags=[]\n" + "description='Boundaries of Germany' display_name='Germany' id=UUID('c67a098e-c169-4178-a013-87c4fa30f817') name='germany_outline' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=5.85248986800011, y=47.2711209110001), upper_right_coordinate=Coordinate2D(x=15.022059367000098, y=55.0653343770001)), columns={}, data_type=, spatial_reference='EPSG:4326', time=TimeInterval(end=8210266876799999, start=-8334601228800000), type='vector'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='OgrSource' symbology=None tags=[]\n", + "description='Land Cover derived from MODIS/Terra+Aqua Land Cover' display_name='Land Cover' id=UUID('6e0d56d3-eb5b-44d7-951c-2ca7e62fb574') name='land_cover' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ClassificationMeasurement(classes={'0': 'Water Bodies', '1': 'Evergreen Needleleaf Forests', '2': 'Evergreen Broadleaf Forests', '3': 'Deciduous Needleleaf Forests', '4': 'Deciduous Broadleaf Forests', '5': 'Mixed Forests', '6': 'Closed Shrublands', '7': 'Open Shrublands', '8': 'Woody Savannas', '9': 'Savannas', '10': 'Grasslands', '11': 'Permanent Wetlands', '12': 'Croplands', '13': 'Urban and Built-Up', '14': 'Cropland-Natural Vegetation Mosaics', '15': 'Snow and Ice', '16': 'Barren or Sparsely Vegetated'}, measurement='Land Cover', type='classification'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='land_cover')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=8210266876799999, start=-8334601228800000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'0': [134, 201, 227, 255], '5': [125, 194, 127, 255], '15': [255, 255, 255, 255], '7': [188, 221, 190, 255], '11': [66, 128, 189, 255], '9': [226, 221, 7, 255], '12': [225, 222, 127, 255], '8': [224, 223, 133, 255], '14': [162, 159, 66, 255], '2': [59, 194, 212, 255], '3': [157, 194, 63, 255], '6': [195, 127, 126, 255], '1': [30, 129, 62, 255], '10': [223, 192, 125, 255], '16': [192, 192, 192, 255], '4': [159, 225, 127, 255], '13': [253, 2, 0, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='Land Cover' display_name='Land Cover' id=UUID('14cfd556-b616-40fb-a59a-22bdbaad424b') name='MCD12C1' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ClassificationMeasurement(classes={'0': 'Water Bodies', '1': 'Evergreen Needleleaf Forests', '2': 'Evergreen Broadleaf Forests', '3': 'Deciduous Needleleaf Forests', '4': 'Deciduous Broadleleaf Forests', '5': 'Mixed Forests', '6': 'Closed Shrublands', '7': 'Open Shrublands', '8': 'Woody Savannas', '9': 'Savannas', '10': 'Grasslands', '11': 'Permanent Wtlands', '12': 'Croplands', '13': 'Urban and Built-Up', '14': 'Cropland-Natural Vegetation Mosaics', '15': 'Snow and Ice', '16': 'Barren or Sparsely Vegetated'}, measurement='Land Cover', type='classification'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='band')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=None, dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[0, 0, 255, 255], value=0.0), Breakpoint(color=[0, 255, 0, 255], value=8.0), Breakpoint(color=[255, 0, 0, 255], value=16.0)], no_data_color=[0, 0, 0, 0], over_color=[0, 0, 0, 0], type='linearGradient', under_color=[0, 0, 0, 0]), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='A mock dataset' display_name='Mock' id=UUID('4396cef7-1c56-4cd9-baf7-e789bd291bc0') name='Mock' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=1.0, y=2.0), upper_right_coordinate=Coordinate2D(x=1.0, y=2.0)), columns={}, data_type=, spatial_reference='EPSG:4326', time=TimeInterval(end=8210266876799999, start=-8334601228800000), type='vector'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='MockDatasetDataSource' symbology=None tags=[]\n", + "description='NDVI data from MODIS' display_name='NDVI' id=UUID('af8240ce-71bd-4375-bad2-c69917fe5e52') name='ndvi' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ContinuousMeasurement(measurement='vegetation', type='continuous', unit=None), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=1404172800000, start=1388534400000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1388534400000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'240': [19, 46, 2, 255], '67': [181, 169, 117, 255], '63': [185, 172, 124, 255], '185': [66, 84, 33, 255], '110': [138, 140, 51, 255], '102': [146, 145, 61, 255], '152': [94, 109, 32, 255], '238': [21, 47, 1, 255], '150': [96, 111, 32, 255], '42': [203, 188, 155, 255], '155': [91, 107, 33, 255], '26': [216, 201, 178, 255], '119': [128, 134, 40, 255], '247': [15, 41, 2, 255], '187': [64, 82, 33, 255], '158': [88, 105, 33, 255], '193': [59, 78, 31, 255], '94': [155, 151, 72, 255], '199': [53, 74, 25, 255], '194': [58, 77, 30, 255], '61': [187, 174, 127, 255], '147': [99, 113, 32, 255], '58': [189, 176, 131, 255], '8': [230, 217, 204, 255], '174': [75, 92, 33, 255], '144': [102, 115, 32, 255], '62': [186, 173, 125, 255], '25': [217, 202, 180, 255], '97': [152, 149, 68, 255], '204': [48, 70, 20, 255], '48': [198, 184, 146, 255], '205': [47, 70, 19, 255], '182': [68, 86, 33, 255], '13': [226, 213, 197, 255], '224': [29, 57, 0, 255], '91': [158, 153, 77, 255], '171': [77, 95, 33, 255], '21': [220, 206, 185, 255], '207': [46, 69, 17, 255], '51': [195, 181, 142, 255], '38': [206, 192, 161, 255], '114': [133, 137, 46, 255], '112': [135, 138, 49, 255], '68': [180, 169, 116, 255], '252': [12, 37, 3, 255], '173': [76, 93, 33, 255], '96': [153, 149, 69, 255], '227': [28, 55, 0, 255], '116': [131, 136, 44, 255], '37': [207, 192, 162, 255], '5': [232, 220, 208, 255], '188': [63, 81, 33, 255], '86': [163, 156, 85, 255], '166': [81, 99, 33, 255], '133': [113, 124, 31, 255], '162': [85, 102, 33, 255], '210': [43, 67, 13, 255], '244': [17, 43, 2, 255], '169': [79, 96, 33, 255], '6': [231, 219, 206, 255], '101': [147, 146, 63, 255], '124': [122, 130, 34, 255], '177': [72, 90, 33, 255], '80': [169, 160, 95, 255], '216': [37, 63, 7, 255], '167': [81, 98, 33, 255], '220': [33, 60, 3, 255], '36': [208, 193, 164, 255], '49': [197, 183, 145, 255], '22': [219, 205, 184, 255], '146': [100, 114, 32, 255], '24': [217, 203, 181, 255], '10': [228, 215, 201, 255], '217': [36, 62, 6, 255], '99': [150, 147, 65, 255], '31': [212, 197, 171, 255], '192': [60, 78, 32, 255], '195': [57, 76, 29, 255], '235': [23, 49, 1, 255], '223': [30, 58, 0, 255], '243': [18, 44, 2, 255], '19': [221, 207, 188, 255], '41': [204, 189, 156, 255], '186': [65, 83, 33, 255], '12': [227, 214, 198, 255], '179': [71, 88, 33, 255], '196': [56, 76, 28, 255], '4': [233, 221, 209, 255], '145': [101, 115, 32, 255], '254': [11, 36, 3, 255], '128': [118, 127, 30, 255], '248': [14, 40, 2, 255], '111': [137, 139, 50, 255], '250': [13, 39, 3, 255], '202': [50, 72, 22, 255], '180': [70, 88, 33, 255], '35': [209, 194, 165, 255], '255': [0, 0, 0, 255], '197': [55, 75, 27, 255], '15': [224, 211, 194, 255], '73': [175, 165, 107, 255], '115': [132, 136, 45, 255], '43': [202, 188, 153, 255], '92': [157, 152, 75, 255], '226': [28, 56, 0, 255], '82': [167, 159, 92, 255], '201': [51, 72, 23, 255], '161': [85, 102, 33, 255], '52': [194, 181, 140, 255], '131': [115, 125, 30, 255], '237': [21, 48, 1, 255], '3': [234, 221, 211, 255], '203': [49, 71, 21, 255], '57': [190, 177, 133, 255], '60': [188, 174, 128, 255], '88': [161, 155, 82, 255], '141': [105, 118, 31, 255], '45': [200, 186, 150, 255], '163': [84, 101, 33, 255], '190': [62, 80, 33, 255], '165': [82, 99, 33, 255], '7': [231, 218, 205, 255], '228': [27, 54, 0, 255], '104': [144, 144, 59, 255], '117': [130, 135, 43, 255], '29': [214, 199, 174, 255], '66': [182, 170, 119, 255], '109': [139, 140, 53, 255], '134': [112, 123, 31, 255], '198': [54, 74, 26, 255], '137': [109, 121, 31, 255], '251': [13, 38, 3, 255], '159': [87, 104, 33, 255], '23': [218, 204, 182, 255], '153': [93, 109, 32, 255], '130': [116, 126, 30, 255], '172': [76, 94, 33, 255], '69': [179, 168, 114, 255], '229': [26, 54, 1, 255], '230': [26, 53, 1, 255], '0': [236, 224, 215, 0], '46': [199, 185, 149, 255], '178': [72, 89, 33, 255], '1': [235, 223, 214, 255], '40': [204, 190, 158, 255], '143': [103, 116, 32, 255], '214': [39, 64, 9, 255], '219': [34, 61, 4, 255], '156': [90, 106, 33, 255], '149': [97, 112, 32, 255], '241': [19, 45, 2, 255], '246': [16, 41, 2, 255], '129': [117, 127, 30, 255], '90': [159, 153, 78, 255], '71': [177, 167, 111, 255], '34': [209, 195, 167, 255], '16': [224, 210, 192, 255], '64': [184, 171, 122, 255], '50': [196, 182, 143, 255], '107': [141, 142, 55, 255], '72': [176, 166, 109, 255], '56': [191, 177, 134, 255], '221': [32, 59, 2, 255], '70': [178, 167, 112, 255], '160': [86, 103, 33, 255], '135': [111, 122, 31, 255], '28': [214, 200, 175, 255], '32': [211, 196, 170, 255], '2': [234, 222, 212, 255], '218': [35, 61, 5, 255], '157': [89, 106, 33, 255], '65': [183, 171, 121, 255], '118': [129, 134, 41, 255], '27': [215, 200, 177, 255], '139': [107, 119, 31, 255], '98': [151, 148, 66, 255], '55': [192, 178, 136, 255], '120': [127, 133, 39, 255], '20': [221, 207, 187, 255], '17': [223, 209, 191, 255], '47': [199, 185, 148, 255], '84': [165, 158, 89, 255], '236': [22, 49, 1, 255], '132': [114, 124, 30, 255], '140': [106, 118, 31, 255], '78': [170, 162, 99, 255], '85': [164, 157, 87, 255], '215': [38, 63, 8, 255], '54': [193, 179, 137, 255], '79': [170, 161, 97, 255], '245': [16, 42, 2, 255], '127': [119, 128, 30, 255], '239': [20, 47, 2, 255], '208': [45, 68, 15, 255], '95': [154, 150, 70, 255], '75': [173, 164, 104, 255], '76': [172, 163, 102, 255], '106': [142, 142, 56, 255], '234': [23, 50, 1, 255], '81': [168, 160, 94, 255], '142': [104, 117, 31, 255], '181': [69, 87, 33, 255], '138': [108, 120, 31, 255], '222': [31, 59, 1, 255], '233': [24, 51, 1, 255], '168': [80, 97, 33, 255], '231': [25, 52, 1, 255], '200': [52, 73, 24, 255], '242': [18, 44, 2, 255], '44': [201, 187, 152, 255], '125': [121, 129, 33, 255], '39': [205, 191, 159, 255], '213': [40, 65, 10, 255], '126': [120, 129, 31, 255], '30': [213, 198, 172, 255], '9': [229, 216, 202, 255], '113': [134, 138, 48, 255], '154': [92, 108, 33, 255], '189': [63, 81, 33, 255], '100': [149, 147, 64, 255], '253': [11, 36, 3, 255], '83': [166, 158, 90, 255], '211': [42, 66, 12, 255], '77': [171, 162, 100, 255], '225': [29, 57, 0, 255], '232': [24, 52, 1, 255], '33': [210, 195, 168, 255], '103': [145, 145, 60, 255], '74': [174, 164, 105, 255], '93': [156, 151, 73, 255], '183': [68, 85, 33, 255], '184': [67, 84, 33, 255], '53': [193, 180, 139, 255], '121': [126, 132, 38, 255], '108': [140, 141, 54, 255], '11': [227, 214, 199, 255], '212': [41, 65, 11, 255], '191': [61, 79, 33, 255], '136': [110, 121, 31, 255], '176': [73, 91, 33, 255], '170': [78, 95, 33, 255], '175': [74, 92, 33, 255], '59': [188, 175, 130, 255], '123': [123, 131, 35, 255], '87': [162, 156, 84, 255], '18': [222, 208, 189, 255], '148': [98, 112, 32, 255], '209': [44, 67, 14, 255], '164': [83, 100, 33, 255], '206': [46, 69, 18, 255], '105': [143, 143, 58, 255], '151': [95, 110, 32, 255], '249': [14, 39, 2, 255], '122': [124, 131, 36, 255], '14': [225, 212, 195, 255], '89': [160, 154, 80, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='NDVI data from MODIS, downscaled 3x' display_name='NDVI Downscaled 3x' id=UUID('1208abe3-17a9-4f3c-bb24-e37f33500477') name='ndvi_downscaled_3x' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ContinuousMeasurement(measurement='vegetation', type='continuous', unit=None), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=1199, y_idx=599), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=1746057600000, start=1735689600000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1735689600000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'230': [26, 53, 1, 255], '143': [103, 116, 32, 255], '83': [166, 158, 90, 255], '145': [101, 115, 32, 255], '250': [13, 39, 3, 255], '140': [106, 118, 31, 255], '33': [210, 195, 168, 255], '149': [97, 112, 32, 255], '238': [21, 47, 1, 255], '105': [143, 143, 58, 255], '19': [221, 207, 188, 255], '180': [70, 88, 33, 255], '116': [131, 136, 44, 255], '80': [169, 160, 95, 255], '24': [217, 203, 181, 255], '25': [217, 202, 180, 255], '85': [164, 157, 87, 255], '147': [99, 113, 32, 255], '198': [54, 74, 26, 255], '14': [225, 212, 195, 255], '21': [220, 206, 185, 255], '246': [16, 41, 2, 255], '166': [81, 99, 33, 255], '221': [32, 59, 2, 255], '110': [138, 140, 51, 255], '117': [130, 135, 43, 255], '186': [65, 83, 33, 255], '6': [231, 219, 206, 255], '252': [12, 37, 3, 255], '151': [95, 110, 32, 255], '229': [26, 54, 1, 255], '235': [23, 49, 1, 255], '232': [24, 52, 1, 255], '236': [22, 49, 1, 255], '129': [117, 127, 30, 255], '178': [72, 89, 33, 255], '13': [226, 213, 197, 255], '188': [63, 81, 33, 255], '227': [28, 55, 0, 255], '65': [183, 171, 121, 255], '40': [204, 190, 158, 255], '199': [53, 74, 25, 255], '150': [96, 111, 32, 255], '152': [94, 109, 32, 255], '99': [150, 147, 65, 255], '183': [68, 85, 33, 255], '234': [23, 50, 1, 255], '170': [78, 95, 33, 255], '247': [15, 41, 2, 255], '245': [16, 42, 2, 255], '55': [192, 178, 136, 255], '31': [212, 197, 171, 255], '103': [145, 145, 60, 255], '100': [149, 147, 64, 255], '63': [185, 172, 124, 255], '1': [235, 223, 214, 255], '22': [219, 205, 184, 255], '108': [140, 141, 54, 255], '54': [193, 179, 137, 255], '92': [157, 152, 75, 255], '58': [189, 176, 131, 255], '254': [11, 36, 3, 255], '56': [191, 177, 134, 255], '123': [123, 131, 35, 255], '193': [59, 78, 31, 255], '219': [34, 61, 4, 255], '133': [113, 124, 31, 255], '141': [105, 118, 31, 255], '125': [121, 129, 33, 255], '15': [224, 211, 194, 255], '90': [159, 153, 78, 255], '82': [167, 159, 92, 255], '153': [93, 109, 32, 255], '248': [14, 40, 2, 255], '121': [126, 132, 38, 255], '17': [223, 209, 191, 255], '53': [193, 180, 139, 255], '49': [197, 183, 145, 255], '164': [83, 100, 33, 255], '162': [85, 102, 33, 255], '32': [211, 196, 170, 255], '66': [182, 170, 119, 255], '88': [161, 155, 82, 255], '94': [155, 151, 72, 255], '244': [17, 43, 2, 255], '239': [20, 47, 2, 255], '37': [207, 192, 162, 255], '28': [214, 200, 175, 255], '174': [75, 92, 33, 255], '119': [128, 134, 40, 255], '249': [14, 39, 2, 255], '107': [141, 142, 55, 255], '231': [25, 52, 1, 255], '154': [92, 108, 33, 255], '36': [208, 193, 164, 255], '84': [165, 158, 89, 255], '222': [31, 59, 1, 255], '135': [111, 122, 31, 255], '23': [218, 204, 182, 255], '144': [102, 115, 32, 255], '61': [187, 174, 127, 255], '225': [29, 57, 0, 255], '146': [100, 114, 32, 255], '214': [39, 64, 9, 255], '217': [36, 62, 6, 255], '124': [122, 130, 34, 255], '62': [186, 173, 125, 255], '206': [46, 69, 18, 255], '98': [151, 148, 66, 255], '242': [18, 44, 2, 255], '137': [109, 121, 31, 255], '195': [57, 76, 29, 255], '196': [56, 76, 28, 255], '223': [30, 58, 0, 255], '182': [68, 86, 33, 255], '189': [63, 81, 33, 255], '11': [227, 214, 199, 255], '130': [116, 126, 30, 255], '12': [227, 214, 198, 255], '42': [203, 188, 155, 255], '68': [180, 169, 116, 255], '104': [144, 144, 59, 255], '142': [104, 117, 31, 255], '205': [47, 70, 19, 255], '87': [162, 156, 84, 255], '72': [176, 166, 109, 255], '208': [45, 68, 15, 255], '9': [229, 216, 202, 255], '3': [234, 221, 211, 255], '157': [89, 106, 33, 255], '106': [142, 142, 56, 255], '226': [28, 56, 0, 255], '26': [216, 201, 178, 255], '243': [18, 44, 2, 255], '91': [158, 153, 77, 255], '89': [160, 154, 80, 255], '167': [81, 98, 33, 255], '197': [55, 75, 27, 255], '30': [213, 198, 172, 255], '112': [135, 138, 49, 255], '52': [194, 181, 140, 255], '190': [62, 80, 33, 255], '216': [37, 63, 7, 255], '39': [205, 191, 159, 255], '173': [76, 93, 33, 255], '233': [24, 51, 1, 255], '132': [114, 124, 30, 255], '46': [199, 185, 149, 255], '122': [124, 131, 36, 255], '78': [170, 162, 99, 255], '69': [179, 168, 114, 255], '192': [60, 78, 32, 255], '74': [174, 164, 105, 255], '79': [170, 161, 97, 255], '228': [27, 54, 0, 255], '207': [46, 69, 17, 255], '218': [35, 61, 5, 255], '70': [178, 167, 112, 255], '97': [152, 149, 68, 255], '201': [51, 72, 23, 255], '187': [64, 82, 33, 255], '131': [115, 125, 30, 255], '101': [147, 146, 63, 255], '7': [231, 218, 205, 255], '177': [72, 90, 33, 255], '18': [222, 208, 189, 255], '20': [221, 207, 187, 255], '95': [154, 150, 70, 255], '64': [184, 171, 122, 255], '241': [19, 45, 2, 255], '202': [50, 72, 22, 255], '169': [79, 96, 33, 255], '210': [43, 67, 13, 255], '57': [190, 177, 133, 255], '212': [41, 65, 11, 255], '47': [199, 185, 148, 255], '200': [52, 73, 24, 255], '179': [71, 88, 33, 255], '128': [118, 127, 30, 255], '45': [200, 186, 150, 255], '155': [91, 107, 33, 255], '44': [201, 187, 152, 255], '204': [48, 70, 20, 255], '175': [74, 92, 33, 255], '16': [224, 210, 192, 255], '161': [85, 102, 33, 255], '159': [87, 104, 33, 255], '171': [77, 95, 33, 255], '111': [137, 139, 50, 255], '224': [29, 57, 0, 255], '96': [153, 149, 69, 255], '60': [188, 174, 128, 255], '134': [112, 123, 31, 255], '253': [11, 36, 3, 255], '220': [33, 60, 3, 255], '255': [0, 0, 0, 255], '71': [177, 167, 111, 255], '29': [214, 199, 174, 255], '158': [88, 105, 33, 255], '81': [168, 160, 94, 255], '2': [234, 222, 212, 255], '109': [139, 140, 53, 255], '4': [233, 221, 209, 255], '41': [204, 189, 156, 255], '168': [80, 97, 33, 255], '86': [163, 156, 85, 255], '251': [13, 38, 3, 255], '73': [175, 165, 107, 255], '240': [19, 46, 2, 255], '118': [129, 134, 41, 255], '93': [156, 151, 73, 255], '34': [209, 195, 167, 255], '114': [133, 137, 46, 255], '77': [171, 162, 100, 255], '165': [82, 99, 33, 255], '213': [40, 65, 10, 255], '160': [86, 103, 33, 255], '10': [228, 215, 201, 255], '127': [119, 128, 30, 255], '27': [215, 200, 177, 255], '211': [42, 66, 12, 255], '51': [195, 181, 142, 255], '0': [236, 224, 215, 0], '67': [181, 169, 117, 255], '163': [84, 101, 33, 255], '38': [206, 192, 161, 255], '5': [232, 220, 208, 255], '191': [61, 79, 33, 255], '35': [209, 194, 165, 255], '176': [73, 91, 33, 255], '59': [188, 175, 130, 255], '203': [49, 71, 21, 255], '184': [67, 84, 33, 255], '172': [76, 94, 33, 255], '8': [230, 217, 204, 255], '102': [146, 145, 61, 255], '136': [110, 121, 31, 255], '181': [69, 87, 33, 255], '148': [98, 112, 32, 255], '139': [107, 119, 31, 255], '156': [90, 106, 33, 255], '126': [120, 129, 31, 255], '185': [66, 84, 33, 255], '138': [108, 120, 31, 255], '215': [38, 63, 8, 255], '43': [202, 188, 153, 255], '120': [127, 133, 39, 255], '50': [196, 182, 143, 255], '75': [173, 164, 104, 255], '115': [132, 136, 45, 255], '76': [172, 163, 102, 255], '194': [58, 77, 30, 255], '113': [134, 138, 48, 255], '48': [198, 184, 146, 255], '209': [44, 67, 14, 255], '237': [21, 48, 1, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='NDVI data from MODIS' display_name='NDVI as GdalMetaDataList' id=UUID('1d27b1de-0eb4-41ac-b673-a3330211628d') name='ndvi_list' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=1404172800000, start=1388534400000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1388534400000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'61': [187, 174, 127, 255], '66': [182, 170, 119, 255], '124': [122, 130, 34, 255], '245': [16, 42, 2, 255], '196': [56, 76, 28, 255], '16': [224, 210, 192, 255], '34': [209, 195, 167, 255], '255': [0, 0, 0, 255], '130': [116, 126, 30, 255], '5': [232, 220, 208, 255], '147': [99, 113, 32, 255], '115': [132, 136, 45, 255], '83': [166, 158, 90, 255], '116': [131, 136, 44, 255], '32': [211, 196, 170, 255], '168': [80, 97, 33, 255], '203': [49, 71, 21, 255], '39': [205, 191, 159, 255], '31': [212, 197, 171, 255], '195': [57, 76, 29, 255], '234': [23, 50, 1, 255], '118': [129, 134, 41, 255], '0': [236, 224, 215, 0], '181': [69, 87, 33, 255], '114': [133, 137, 46, 255], '221': [32, 59, 2, 255], '144': [102, 115, 32, 255], '157': [89, 106, 33, 255], '133': [113, 124, 31, 255], '241': [19, 45, 2, 255], '77': [171, 162, 100, 255], '71': [177, 167, 111, 255], '8': [230, 217, 204, 255], '246': [16, 41, 2, 255], '3': [234, 221, 211, 255], '239': [20, 47, 2, 255], '108': [140, 141, 54, 255], '57': [190, 177, 133, 255], '215': [38, 63, 8, 255], '23': [218, 204, 182, 255], '162': [85, 102, 33, 255], '164': [83, 100, 33, 255], '40': [204, 190, 158, 255], '102': [146, 145, 61, 255], '45': [200, 186, 150, 255], '82': [167, 159, 92, 255], '1': [235, 223, 214, 255], '216': [37, 63, 7, 255], '107': [141, 142, 55, 255], '222': [31, 59, 1, 255], '7': [231, 218, 205, 255], '218': [35, 61, 5, 255], '145': [101, 115, 32, 255], '41': [204, 189, 156, 255], '100': [149, 147, 64, 255], '125': [121, 129, 33, 255], '198': [54, 74, 26, 255], '46': [199, 185, 149, 255], '104': [144, 144, 59, 255], '166': [81, 99, 33, 255], '152': [94, 109, 32, 255], '206': [46, 69, 18, 255], '54': [193, 179, 137, 255], '163': [84, 101, 33, 255], '12': [227, 214, 198, 255], '95': [154, 150, 70, 255], '110': [138, 140, 51, 255], '139': [107, 119, 31, 255], '10': [228, 215, 201, 255], '197': [55, 75, 27, 255], '238': [21, 47, 1, 255], '159': [87, 104, 33, 255], '214': [39, 64, 9, 255], '165': [82, 99, 33, 255], '224': [29, 57, 0, 255], '233': [24, 51, 1, 255], '167': [81, 98, 33, 255], '88': [161, 155, 82, 255], '37': [207, 192, 162, 255], '103': [145, 145, 60, 255], '249': [14, 39, 2, 255], '190': [62, 80, 33, 255], '171': [77, 95, 33, 255], '158': [88, 105, 33, 255], '134': [112, 123, 31, 255], '244': [17, 43, 2, 255], '89': [160, 154, 80, 255], '251': [13, 38, 3, 255], '53': [193, 180, 139, 255], '69': [179, 168, 114, 255], '121': [126, 132, 38, 255], '67': [181, 169, 117, 255], '160': [86, 103, 33, 255], '242': [18, 44, 2, 255], '180': [70, 88, 33, 255], '63': [185, 172, 124, 255], '204': [48, 70, 20, 255], '225': [29, 57, 0, 255], '68': [180, 169, 116, 255], '44': [201, 187, 152, 255], '208': [45, 68, 15, 255], '78': [170, 162, 99, 255], '182': [68, 86, 33, 255], '58': [189, 176, 131, 255], '49': [197, 183, 145, 255], '21': [220, 206, 185, 255], '18': [222, 208, 189, 255], '97': [152, 149, 68, 255], '22': [219, 205, 184, 255], '226': [28, 56, 0, 255], '76': [172, 163, 102, 255], '212': [41, 65, 11, 255], '30': [213, 198, 172, 255], '200': [52, 73, 24, 255], '250': [13, 39, 3, 255], '90': [159, 153, 78, 255], '240': [19, 46, 2, 255], '146': [100, 114, 32, 255], '35': [209, 194, 165, 255], '136': [110, 121, 31, 255], '177': [72, 90, 33, 255], '19': [221, 207, 188, 255], '93': [156, 151, 73, 255], '74': [174, 164, 105, 255], '187': [64, 82, 33, 255], '56': [191, 177, 134, 255], '179': [71, 88, 33, 255], '178': [72, 89, 33, 255], '217': [36, 62, 6, 255], '194': [58, 77, 30, 255], '38': [206, 192, 161, 255], '235': [23, 49, 1, 255], '87': [162, 156, 84, 255], '55': [192, 178, 136, 255], '50': [196, 182, 143, 255], '253': [11, 36, 3, 255], '127': [119, 128, 30, 255], '188': [63, 81, 33, 255], '213': [40, 65, 10, 255], '237': [21, 48, 1, 255], '220': [33, 60, 3, 255], '72': [176, 166, 109, 255], '170': [78, 95, 33, 255], '70': [178, 167, 112, 255], '129': [117, 127, 30, 255], '132': [114, 124, 30, 255], '169': [79, 96, 33, 255], '201': [51, 72, 23, 255], '17': [223, 209, 191, 255], '189': [63, 81, 33, 255], '48': [198, 184, 146, 255], '75': [173, 164, 104, 255], '128': [118, 127, 30, 255], '207': [46, 69, 17, 255], '113': [134, 138, 48, 255], '79': [170, 161, 97, 255], '47': [199, 185, 148, 255], '81': [168, 160, 94, 255], '11': [227, 214, 199, 255], '209': [44, 67, 14, 255], '199': [53, 74, 25, 255], '131': [115, 125, 30, 255], '138': [108, 120, 31, 255], '92': [157, 152, 75, 255], '174': [75, 92, 33, 255], '191': [61, 79, 33, 255], '13': [226, 213, 197, 255], '6': [231, 219, 206, 255], '64': [184, 171, 122, 255], '101': [147, 146, 63, 255], '120': [127, 133, 39, 255], '192': [60, 78, 32, 255], '151': [95, 110, 32, 255], '228': [27, 54, 0, 255], '24': [217, 203, 181, 255], '96': [153, 149, 69, 255], '26': [216, 201, 178, 255], '141': [105, 118, 31, 255], '135': [111, 122, 31, 255], '154': [92, 108, 33, 255], '185': [66, 84, 33, 255], '210': [43, 67, 13, 255], '111': [137, 139, 50, 255], '223': [30, 58, 0, 255], '231': [25, 52, 1, 255], '20': [221, 207, 187, 255], '126': [120, 129, 31, 255], '205': [47, 70, 19, 255], '143': [103, 116, 32, 255], '27': [215, 200, 177, 255], '155': [91, 107, 33, 255], '80': [169, 160, 95, 255], '99': [150, 147, 65, 255], '94': [155, 151, 72, 255], '62': [186, 173, 125, 255], '105': [143, 143, 58, 255], '4': [233, 221, 209, 255], '60': [188, 174, 128, 255], '112': [135, 138, 49, 255], '161': [85, 102, 33, 255], '106': [142, 142, 56, 255], '137': [109, 121, 31, 255], '229': [26, 54, 1, 255], '65': [183, 171, 121, 255], '117': [130, 135, 43, 255], '123': [123, 131, 35, 255], '175': [74, 92, 33, 255], '2': [234, 222, 212, 255], '142': [104, 117, 31, 255], '14': [225, 212, 195, 255], '232': [24, 52, 1, 255], '119': [128, 134, 40, 255], '153': [93, 109, 32, 255], '183': [68, 85, 33, 255], '173': [76, 93, 33, 255], '243': [18, 44, 2, 255], '85': [164, 157, 87, 255], '202': [50, 72, 22, 255], '91': [158, 153, 77, 255], '252': [12, 37, 3, 255], '28': [214, 200, 175, 255], '230': [26, 53, 1, 255], '156': [90, 106, 33, 255], '33': [210, 195, 168, 255], '29': [214, 199, 174, 255], '236': [22, 49, 1, 255], '42': [203, 188, 155, 255], '219': [34, 61, 4, 255], '184': [67, 84, 33, 255], '172': [76, 94, 33, 255], '248': [14, 40, 2, 255], '150': [96, 111, 32, 255], '98': [151, 148, 66, 255], '176': [73, 91, 33, 255], '186': [65, 83, 33, 255], '149': [97, 112, 32, 255], '84': [165, 158, 89, 255], '254': [11, 36, 3, 255], '59': [188, 175, 130, 255], '193': [59, 78, 31, 255], '109': [139, 140, 53, 255], '36': [208, 193, 164, 255], '140': [106, 118, 31, 255], '9': [229, 216, 202, 255], '211': [42, 66, 12, 255], '122': [124, 131, 36, 255], '25': [217, 202, 180, 255], '73': [175, 165, 107, 255], '52': [194, 181, 140, 255], '247': [15, 41, 2, 255], '86': [163, 156, 85, 255], '51': [195, 181, 142, 255], '148': [98, 112, 32, 255], '43': [202, 188, 153, 255], '227': [28, 55, 0, 255], '15': [224, 211, 194, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='NDVI data from MODIS but with flipped y-axis' display_name='NDVI flipped y-axis' id=UUID('888d00bb-af31-459e-9146-9e6130484367') name='ndvi_flipped_axis' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=ContinuousMeasurement(measurement='vegetation', type='continuous', unit=None), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=-90.0), x_pixel_size=0.1, y_pixel_size=0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=-1), top_left_idx=GridIdx2D(x_idx=0, y_idx=-1800)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=1404172800000, start=1388534400000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1388534400000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=PaletteColorizer(colors={'81': [168, 160, 94, 255], '227': [28, 55, 0, 255], '139': [107, 119, 31, 255], '157': [89, 106, 33, 255], '98': [151, 148, 66, 255], '84': [165, 158, 89, 255], '183': [68, 85, 33, 255], '72': [176, 166, 109, 255], '176': [73, 91, 33, 255], '185': [66, 84, 33, 255], '85': [164, 157, 87, 255], '140': [106, 118, 31, 255], '125': [121, 129, 33, 255], '39': [205, 191, 159, 255], '122': [124, 131, 36, 255], '142': [104, 117, 31, 255], '68': [180, 169, 116, 255], '104': [144, 144, 59, 255], '42': [203, 188, 155, 255], '148': [98, 112, 32, 255], '91': [158, 153, 77, 255], '73': [175, 165, 107, 255], '188': [63, 81, 33, 255], '204': [48, 70, 20, 255], '245': [16, 42, 2, 255], '187': [64, 82, 33, 255], '236': [22, 49, 1, 255], '8': [230, 217, 204, 255], '235': [23, 49, 1, 255], '97': [152, 149, 68, 255], '143': [103, 116, 32, 255], '168': [80, 97, 33, 255], '110': [138, 140, 51, 255], '246': [16, 41, 2, 255], '226': [28, 56, 0, 255], '6': [231, 219, 206, 255], '215': [38, 63, 8, 255], '251': [13, 38, 3, 255], '165': [82, 99, 33, 255], '163': [84, 101, 33, 255], '186': [65, 83, 33, 255], '152': [94, 109, 32, 255], '137': [109, 121, 31, 255], '128': [118, 127, 30, 255], '254': [11, 36, 3, 255], '195': [57, 76, 29, 255], '191': [61, 79, 33, 255], '153': [93, 109, 32, 255], '232': [24, 52, 1, 255], '211': [42, 66, 12, 255], '86': [163, 156, 85, 255], '15': [224, 211, 194, 255], '103': [145, 145, 60, 255], '135': [111, 122, 31, 255], '10': [228, 215, 201, 255], '193': [59, 78, 31, 255], '100': [149, 147, 64, 255], '158': [88, 105, 33, 255], '216': [37, 63, 7, 255], '174': [75, 92, 33, 255], '237': [21, 48, 1, 255], '209': [44, 67, 14, 255], '159': [87, 104, 33, 255], '113': [134, 138, 48, 255], '255': [0, 0, 0, 255], '114': [133, 137, 46, 255], '150': [96, 111, 32, 255], '23': [218, 204, 182, 255], '149': [97, 112, 32, 255], '25': [217, 202, 180, 255], '136': [110, 121, 31, 255], '192': [60, 78, 32, 255], '49': [197, 183, 145, 255], '252': [12, 37, 3, 255], '117': [130, 135, 43, 255], '96': [153, 149, 69, 255], '154': [92, 108, 33, 255], '242': [18, 44, 2, 255], '64': [184, 171, 122, 255], '44': [201, 187, 152, 255], '43': [202, 188, 153, 255], '124': [122, 130, 34, 255], '231': [25, 52, 1, 255], '107': [141, 142, 55, 255], '53': [193, 180, 139, 255], '30': [213, 198, 172, 255], '89': [160, 154, 80, 255], '26': [216, 201, 178, 255], '177': [72, 90, 33, 255], '74': [174, 164, 105, 255], '228': [27, 54, 0, 255], '229': [26, 54, 1, 255], '253': [11, 36, 3, 255], '247': [15, 41, 2, 255], '33': [210, 195, 168, 255], '20': [221, 207, 187, 255], '200': [52, 73, 24, 255], '208': [45, 68, 15, 255], '221': [32, 59, 2, 255], '144': [102, 115, 32, 255], '182': [68, 86, 33, 255], '75': [173, 164, 104, 255], '162': [85, 102, 33, 255], '234': [23, 50, 1, 255], '217': [36, 62, 6, 255], '205': [47, 70, 19, 255], '175': [74, 92, 33, 255], '1': [235, 223, 214, 255], '88': [161, 155, 82, 255], '180': [70, 88, 33, 255], '11': [227, 214, 199, 255], '108': [140, 141, 54, 255], '57': [190, 177, 133, 255], '248': [14, 40, 2, 255], '93': [156, 151, 73, 255], '213': [40, 65, 10, 255], '112': [135, 138, 49, 255], '151': [95, 110, 32, 255], '111': [137, 139, 50, 255], '240': [19, 46, 2, 255], '230': [26, 53, 1, 255], '92': [157, 152, 75, 255], '80': [169, 160, 95, 255], '132': [114, 124, 30, 255], '48': [198, 184, 146, 255], '31': [212, 197, 171, 255], '224': [29, 57, 0, 255], '115': [132, 136, 45, 255], '47': [199, 185, 148, 255], '79': [170, 161, 97, 255], '116': [131, 136, 44, 255], '210': [43, 67, 13, 255], '9': [229, 216, 202, 255], '173': [76, 93, 33, 255], '3': [234, 221, 211, 255], '207': [46, 69, 17, 255], '121': [126, 132, 38, 255], '225': [29, 57, 0, 255], '29': [214, 199, 174, 255], '134': [112, 123, 31, 255], '58': [189, 176, 131, 255], '249': [14, 39, 2, 255], '7': [231, 218, 205, 255], '105': [143, 143, 58, 255], '178': [72, 89, 33, 255], '201': [51, 72, 23, 255], '24': [217, 203, 181, 255], '145': [101, 115, 32, 255], '198': [54, 74, 26, 255], '160': [86, 103, 33, 255], '99': [150, 147, 65, 255], '27': [215, 200, 177, 255], '171': [77, 95, 33, 255], '214': [39, 64, 9, 255], '82': [167, 159, 92, 255], '4': [233, 221, 209, 255], '161': [85, 102, 33, 255], '196': [56, 76, 28, 255], '190': [62, 80, 33, 255], '50': [196, 182, 143, 255], '70': [178, 167, 112, 255], '62': [186, 173, 125, 255], '32': [211, 196, 170, 255], '218': [35, 61, 5, 255], '130': [116, 126, 30, 255], '51': [195, 181, 142, 255], '102': [146, 145, 61, 255], '181': [69, 87, 33, 255], '126': [120, 129, 31, 255], '78': [170, 162, 99, 255], '17': [223, 209, 191, 255], '36': [208, 193, 164, 255], '233': [24, 51, 1, 255], '239': [20, 47, 2, 255], '38': [206, 192, 161, 255], '166': [81, 99, 33, 255], '223': [30, 58, 0, 255], '141': [105, 118, 31, 255], '2': [234, 222, 212, 255], '83': [166, 158, 90, 255], '35': [209, 194, 165, 255], '71': [177, 167, 111, 255], '250': [13, 39, 3, 255], '40': [204, 190, 158, 255], '194': [58, 77, 30, 255], '18': [222, 208, 189, 255], '63': [185, 172, 124, 255], '156': [90, 106, 33, 255], '45': [200, 186, 150, 255], '119': [128, 134, 40, 255], '189': [63, 81, 33, 255], '5': [232, 220, 208, 255], '13': [226, 213, 197, 255], '16': [224, 210, 192, 255], '55': [192, 178, 136, 255], '203': [49, 71, 21, 255], '77': [171, 162, 100, 255], '37': [207, 192, 162, 255], '244': [17, 43, 2, 255], '95': [154, 150, 70, 255], '12': [227, 214, 198, 255], '199': [53, 74, 25, 255], '167': [81, 98, 33, 255], '219': [34, 61, 4, 255], '155': [91, 107, 33, 255], '56': [191, 177, 134, 255], '222': [31, 59, 1, 255], '66': [182, 170, 119, 255], '22': [219, 205, 184, 255], '59': [188, 175, 130, 255], '52': [194, 181, 140, 255], '120': [127, 133, 39, 255], '146': [100, 114, 32, 255], '241': [19, 45, 2, 255], '127': [119, 128, 30, 255], '101': [147, 146, 63, 255], '179': [71, 88, 33, 255], '60': [188, 174, 128, 255], '129': [117, 127, 30, 255], '14': [225, 212, 195, 255], '212': [41, 65, 11, 255], '147': [99, 113, 32, 255], '133': [113, 124, 31, 255], '169': [79, 96, 33, 255], '184': [67, 84, 33, 255], '90': [159, 153, 78, 255], '65': [183, 171, 121, 255], '106': [142, 142, 56, 255], '69': [179, 168, 114, 255], '61': [187, 174, 127, 255], '170': [78, 95, 33, 255], '118': [129, 134, 41, 255], '172': [76, 94, 33, 255], '19': [221, 207, 188, 255], '21': [220, 206, 185, 255], '0': [236, 224, 215, 0], '76': [172, 163, 102, 255], '94': [155, 151, 72, 255], '123': [123, 131, 35, 255], '131': [115, 125, 30, 255], '41': [204, 189, 156, 255], '46': [199, 185, 149, 255], '54': [193, 179, 137, 255], '67': [181, 169, 117, 255], '87': [162, 156, 84, 255], '243': [18, 44, 2, 255], '28': [214, 200, 175, 255], '109': [139, 140, 53, 255], '220': [33, 60, 3, 255], '206': [46, 69, 18, 255], '164': [83, 100, 33, 255], '197': [55, 75, 27, 255], '238': [21, 47, 1, 255], '202': [50, 72, 22, 255], '138': [108, 120, 31, 255], '34': [209, 195, 167, 255]}, default_color=[0, 0, 0, 0], no_data_color=[0, 0, 0, 0], type='palette'), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='NDVI data from MODIS reprojected to EPSG:3857' display_name='NDVI3857' id=UUID('e6fb27b1-b8d0-43e4-b90d-bddefea905ea') name='ndvi_3857' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='ndvi')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-20037508.342789244, y=19971868.880408563), x_pixel_size=14052.95025804874, y_pixel_size=-14057.881117788405), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:3857', time=TimeDescriptor(bounds=TimeInterval(end=1404172800000, start=1388534400000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf(origin=1388534400000, step=TimeStep(granularity=, step=1), type='regular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=None tags=[]\n", + "description='Ports from Natural Earth' display_name='Natural Earth 10m Ports' id=UUID('d12f7a14-371a-4a5b-8361-202405b40ceb') name='ne_10m_ports' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=-171.75795, y=-54.809444), upper_right_coordinate=Coordinate2D(x=179.309364, y=78.226111)), columns={'scalerank': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'featurecla': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'website': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'name': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'natlscale': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}))}, data_type=, spatial_reference='EPSG:4326', time=TimeInterval(end=8210266876799999, start=-8334601228800000), type='vector'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='OgrSource' symbology=None tags=[]\n", + "description='Ports from Natural Earth reprojected to EPSG:3857' display_name='Natural Earth 10m Ports 3857' id=UUID('8b87784d-36d6-4d53-9c60-2f63a3383434') name='ne_10_ports_3857' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=-19120007.589356, y=-7324970.649647), upper_right_coordinate=Coordinate2D(x=19960627.094946, y=14490886.335637)), columns={'featurecla': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'natlscale': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'website': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'name': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={})), 'scalerank': VectorColumnInfo(data_type=, measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}))}, data_type=, spatial_reference='EPSG:3857', time=TimeInterval(end=8210266876799999, start=-8334601228800000), type='vector'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='OgrSource' symbology=None tags=[]\n", + "description='This data derived from Natural Earth 1 portrays the world environment in an idealized manner with little human influence. The softly blended colors of Natural Earth 2 are ideal for historical mapping, because it shows the world much as it looked before the modern era.' display_name='Natural Earth II – Blue' id=UUID('86d29ea5-a5a1-4a92-9df4-dcb71d3a4dfb') name='ne2_raster_blue' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='blue')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=8210266876799999, start=-8334601228800000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[247, 251, 255, 255], value=0.0), Breakpoint(color=[106, 173, 213, 255], value=127.0), Breakpoint(color=[246, 250, 254, 255], value=255.0)], no_data_color=[0, 0, 0, 0], over_color=[246, 250, 254, 255], type='linearGradient', under_color=[247, 251, 255, 255]), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='This data derived from Natural Earth 1 portrays the world environment in an idealized manner with little human influence. The softly blended colors of Natural Earth 2 are ideal for historical mapping, because it shows the world much as it looked before the modern era.' display_name='Natural Earth II – Green' id=UUID('cf4efb88-be15-46b0-8883-3343311b94a1') name='ne2_raster_green' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='green')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=8210266876799999, start=-8334601228800000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[247, 252, 245, 255], value=0.0), Breakpoint(color=[115, 195, 117, 255], value=127.0), Breakpoint(color=[246, 251, 244, 255], value=255.0)], no_data_color=[0, 0, 0, 0], over_color=[246, 251, 244, 255], type='linearGradient', under_color=[247, 252, 245, 255]), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='This data derived from Natural Earth 1 portrays the world environment in an idealized manner with little human influence. The softly blended colors of Natural Earth 2 are ideal for historical mapping, because it shows the world much as it looked before the modern era.' display_name='Natural Earth II – Red' id=UUID('9754cbe2-d15e-4691-b055-f24ff20b2343') name='ne2_raster_red' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedRasterResultDescriptor(bands=[RasterBandDescriptor(measurement=Measurement(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=UnitlessMeasurement(type='unitless'), one_of_schemas={'UnitlessMeasurement', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='red')], data_type=, spatial_grid=SpatialGridDescriptor(descriptor=, spatial_grid=SpatialGridDefinition(geo_transform=GeoTransform(origin_coordinate=Coordinate2D(x=-180.0, y=90.0), x_pixel_size=0.1, y_pixel_size=-0.1), grid_bounds=GridBoundingBox2D(bottom_right_idx=GridIdx2D(x_idx=3599, y_idx=1799), top_left_idx=GridIdx2D(x_idx=0, y_idx=0)))), spatial_reference='EPSG:4326', time=TimeDescriptor(bounds=TimeInterval(end=8210266876799999, start=-8334601228800000), dimension=TimeDimension(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=TimeDimensionOneOf1(type='irregular'), one_of_schemas={'TimeDimensionOneOf', 'TimeDimensionOneOf1'})), type='raster'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='GdalSource' symbology=Symbology(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=RasterSymbology(opacity=1.0, raster_colorizer=RasterColorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, actual_instance=SingleBandRasterColorizer(band=0, band_colorizer=Colorizer(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=LinearGradient(breakpoints=[Breakpoint(color=[255, 245, 240, 255], value=0.0), Breakpoint(color=[250, 105, 73, 255], value=127.0), Breakpoint(color=[254, 244, 239, 255], value=255.0)], no_data_color=[0, 0, 0, 0], over_color=[254, 244, 239, 255], type='linearGradient', under_color=[255, 245, 240, 255]), one_of_schemas={'PaletteColorizer', 'LinearGradient', 'LogarithmicGradient'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'MultiBandRasterColorizer', 'SingleBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'LineSymbology', 'PolygonSymbology'}, discriminator_value_class_map={}) tags=[]\n", + "description='Some points in Europe in 2014' display_name='Points with Time' id=UUID('67869fba-b33c-4717-be46-d99164dcedfe') name='points_with_time' result_descriptor=TypedResultDescriptor(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, actual_instance=TypedVectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=3.966206, y=45.903036), upper_right_coordinate=Coordinate2D(x=19.171284, y=51.847343)), columns={}, data_type=, spatial_reference='EPSG:4326', time=TimeInterval(end=1404172800000, start=1396310400000), type='vector'), one_of_schemas={'TypedRasterResultDescriptor', 'TypedPlotResultDescriptor', 'TypedVectorResultDescriptor'}, discriminator_value_class_map={}) source_operator='OgrSource' symbology=None tags=[]\n" ] } ], @@ -319,7 +319,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 91, "metadata": {}, "outputs": [ { @@ -333,7 +333,7 @@ " band: Land Cover (0: Water Bodies, 1: Evergreen Needleleaf Forests, 2: Evergreen Broadleaf Forests, 3: Deciduous Needleleaf Forests, 4: Deciduous Broadleleaf Forests, 5: Mixed Forests, 6: Closed Shrublands, 7: Open Shrublands, 8: Woody Savannas, 9: Savannas, 10: Grasslands, 11: Permanent Wtlands, 12: Croplands, 13: Urban and Built-Up, 14: Cropland-Natural Vegetation Mosaics, 15: Snow and Ice, 16: Barren or Sparsely Vegetated)" ] }, - "execution_count": 19, + "execution_count": 91, "metadata": {}, "output_type": "execute_result" } @@ -367,22 +367,30 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 92, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/michael/git/geoengine-python/.venv/lib/python3.12/site-packages/owslib/coverage/wcs110.py:86: FutureWarning: Truth-testing of elements was a source of confusion and will always return True in future versions. Use specific 'len(elem)' or 'elem is not None' test instead.\n", + " elem = self._capabilities.find(self.ns.OWS('ServiceProvider')) or self._capabilities.find(self.ns.OWS('ServiceProvider')) # noqa\n" + ] + }, { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 20, + "execution_count": 92, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAHHCAYAAAC2rPKaAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAASNBJREFUeJzt3Xl8U1X+//F3CjRla8vSNqClLDJssmiRWkRR6FAUHfiKisqwyQ9cigswCIwIimIFHECRRfxqwYWBwYVRhkFrAcWhApZFAamoCBVIAbGtLF1o7u8PhnyNXWiTlNykr+fjcR7Sk3NPPidF8/Es91oMwzAEAAAQgIJ8HQAAAEBVIdEBAAABi0QHAAAELBIdAAAQsEh0AABAwCLRAQAAAYtEBwAABCwSHQAAELBIdAAAQMAi0YGpPPXUU7JYLDpx4oSvQ3FaunSpLBaLfvzxR1+HElA2btwoi8WijRs3VvraC39PfGH27Nlq2bKlatSooS5duvgkBgAVR6IDmNCpU6c0bdo09e3bVw0bNpTFYtHSpUt9HZZbFi5c6Lex/97HH3+sxx9/XNddd51SUlL03HPPXbL3zsnJ0ejRoxUREaG6devqpptu0vbt2y/Z+wP+qqavAwBQ0okTJzR9+nQ1a9ZMnTt3dmvWwywWLlyoxo0ba/jw4S71N9xwg86ePavg4GDfBOaG9evXKygoSK+99toljdvhcKhfv37atWuXJkyYoMaNG2vhwoW68cYblZGRodatW1+yWAB/Q6IDmFCTJk109OhR2Ww2ffnll7rmmmt8HZLXBQUFKSQkxKcxnD59WnXr1q1w+2PHjql27dqXPDl75513tHnzZq1atUp33HGHJOmuu+7SH/7wB02bNk3Lly+/pPEA/oSlK5jSiRMndNdddyk0NFSNGjXSo48+qvz8fJc2KSkp6tWrlyIjI2W1WtW+fXstWrSoRF/NmzfXrbfeqs8//1zdunVTSEiIWrZsqTfeeKNE2z179qhXr16qXbu2Lr/8cj377LNyOBxVNs6yWK1W2Ww2r/c7f/58dejQQXXq1FGDBg3UtWtXly/JC3tf9u3b55XPv3nz5tqzZ48+/fRTWSwWWSwW3XjjjZJK36OzadMm3XnnnWrWrJmsVquio6M1duxYnT171uOxDx8+XPXq1dP333+vW265RfXr19fgwYMlnZ8xmTdvnjp06KCQkBBFRUXp/vvv1y+//OK83mKxKCUlRadPn3aO5VItyb3zzjuKiorS7bff7qyLiIjQXXfdpX/+858qKCi4JHEA/ogZHZjSXXfdpebNmys5OVlffPGFXnrpJf3yyy8uycmiRYvUoUMH/elPf1LNmjX14Ycf6qGHHpLD4VBSUpJLf999953uuOMOjRw5UsOGDdPrr7+u4cOHKzY2Vh06dJAk2e123XTTTTp37pwmTZqkunXrasmSJapdu3aFYi4oKNCvv/5aobaNGzeu4CfhPa+++qoeeeQR3XHHHc7E5auvvtKWLVt07733urT11uc/b948Pfzww6pXr56eeOIJSVJUVFSZMa5atUpnzpzRgw8+qEaNGmnr1q2aP3++fvrpJ61atcrjz+DcuXNKTExUjx499MILL6hOnTqSpPvvv19Lly7ViBEj9Mgjj+jAgQN6+eWXtWPHDv3nP/9RrVq19Oabb2rJkiXaunWr/vd//1eS1L179zLf68yZMzpz5sxFY6pRo4YaNGhQbpsdO3bo6quvVlCQ6/+bduvWTUuWLNG3336rjh07XvS9gGrJAExk2rRphiTjT3/6k0v9Qw89ZEgydu3a5aw7c+ZMiesTExONli1butTFxMQYkozPPvvMWXfs2DHDarUa48ePd9Y99thjhiRjy5YtLu3CwsIMScaBAwfKjT0lJcWQVKFSGdu2bTMkGSkpKZW67vf69+9vdOjQodw2VfH5d+jQwejZs2eJths2bDAkGRs2bCi3z+TkZMNisRgHDx4sEWdlDBs2zJBkTJo0yaV+06ZNhiTj7bffdqlft25difphw4YZdevWrdD7XYjxYiUmJuaifdWtW9e47777StT/61//MiQZ69atq1BMQHXEjA5M6fczMg8//LAWLlyotWvXqlOnTpLkMtOSm5uroqIi9ezZUx999JFyc3MVFhbmfL19+/a6/vrrnT9HRESoTZs2+uGHH5x1a9eu1bXXXqtu3bq5tBs8eLAWLlx40ZgTExOVmppa+cFeIuHh4frpp5+0bdu2i+758fbnX1G/7fP06dM6e/asunfvLsMwtGPHDjVr1qzSff7egw8+6PLzqlWrFBYWpj/+8Y8utzWIjY1VvXr1tGHDhhIzXhUxdOhQ9ejR46LtKjJjePbsWVmt1hL1F/Y4eWNpDwhUJDowpd+fImnVqpWCgoJc7mXzn//8R9OmTVN6enqJJYLff9GW9gXZoEEDlz0YBw8eVFxcXIl2bdq0qVDMTZo0UZMmTSrU1hcmTpyoTz75RN26ddMVV1yhPn366N5779V1111Xoq23P/+KOnTokKZOnaoPPvjA5XdzoU9P1axZU5dffrlL3f79+5Wbm6vIyMhSrzl27Jhb79WyZUu1bNnSrWt/r3bt2qXuw7mwb6qiy6tAdUSiA7/w+5vDff/99+rdu7fatm2rOXPmKDo6WsHBwVq7dq3mzp1bYgNxjRo1Su3XMAyvxXj27NkKfxlXxUbji2nXrp0yMzO1Zs0arVu3Tu+++64WLlyoqVOn6umnny73Wk8//4ooLi7WH//4R508eVITJ05U27ZtVbduXR0+fFjDhw/3yqZwq9VaYp+Lw+FQZGSk3n777VKviYiIcOu9Tp06pVOnTl20XY0aNS76HhdO4f3ehbqmTZu6FSNQHZDowJT279+vFi1aOH/+7rvv5HA41Lx5c0nShx9+qIKCAn3wwQcuszUbNmxw+z1jYmK0f//+EvWZmZkVun7lypUaMWJEhdp6M8GqjLp162rQoEEaNGiQCgsLdfvtt2vGjBmaPHmyy1Fvb37+Fb2D8ddff61vv/1Wy5Yt09ChQ531Vb0c2KpVK33yySe67rrrvDoz8sILL1w0gZTO/7272F23u3Tpok2bNsnhcLgkalu2bFGdOnX0hz/8wdNwgYBFogNTWrBggfr06eP8ef78+ZKkm2++WdL/zdD8NmHIzc1VSkqK2+95yy23aN68edq6datzn87x48fL/D/93zP7Hp2ff/5ZjRo1cv4cHBys9u3b69///reKiopcEh1vfv5169ZVTk7OReMrrU/DMPTiiy9WZHhuu+uuu7Rw4UI988wzJe50fO7cOZ06dUrh4eGV7tebe3TuuOMOvfPOO3rvvfec99E5ceKEVq1apdtuu63U/TsAziPRgSkdOHBAf/rTn9S3b1+lp6frrbfe0r333qvOnTtLkvr06aPg4GDddtttuv/++3Xq1Cm9+uqrioyMLHWKvyIef/xxvfnmm+rbt68effRR5/HymJgYffXVVxe93tt7dF5++WXl5OToyJEjks7Povz000+Szm8OvrAH5sKx6JSUlBJ3H/6tPn36yGaz6brrrlNUVJS++eYbvfzyy+rXr5/q16/v0tabn39sbKwWLVqkZ599VldccYUiIyPVq1evEvG1bdtWrVq10l/+8hcdPnxYoaGhevfdd0vs1fG2nj176v7771dycrJ27typPn36qFatWtq/f79WrVqlF1980ZlcVIY39+jccccduvbaazVixAjt3bvXeWfk4uLiCs0aAdWaD098ASVcOJK7d+9e44477jDq169vNGjQwBgzZoxx9uxZl7YffPCB0alTJyMkJMRo3ry5MXPmTOP1118vcRQ8JibG6NevX4n36tmzZ4ljz1999ZXRs2dPIyQkxLjsssuMZ555xnjttdcqdLzc2y4ciy+t/DaW+fPnV+iI8SuvvGLccMMNRqNGjQyr1Wq0atXKmDBhgpGbm+tsUxWfv91uN/r162fUr1/fkOT8zEs7Xr53714jISHBqFevntG4cWNj1KhRxq5du0ocr3f3eHl5R8OXLFlixMbGGrVr1zbq169vdOzY0Xj88ceNI0eOVLiPqnTy5Elj5MiRRqNGjYw6deoYPXv2NLZt2+aTWAB/YjEMH20WAOAVd911l3788Udt3brV476eeuopPf300zp+/LhPbmoIAN7G0hXgxwzD0MaNG/XWW2/5OhQAMCUSHcCPWSwWt+/zEihyc3MvesM8XxznB2AOJDoA/Nqjjz6qZcuWlduGFXqg+mKPDgC/tnfvXufJtLIkJCRcomgAmA2JDgAACFhBF28CAADgn9ij8zsOh0NHjhxR/fr1K3zregBA9WMYhn799Vc1bdq0xDPUvCk/P1+FhYVe6Ss4ONjlLujVAYnO7xw5ckTR0dG+DgMA4CeysrJ0+eWXV0nf+fn5ahFTT/ZjxV7pz2az6cCBA9Uq2SHR+Z0Lt8KPfnqKgqrRXwQAQOU48vOVNe3ZEo9Q8abCwkLZjxXrYEZzhdb3bNYo71eHYmJ/VGFhIYlOdXZhuSooJIREBwBwUZdim0O9+hbVq+/Z+zhUPbdjkOgAAGByxYZDxR6ekS42HN4Jxs+Q6AAAYHIOGXLIs0zH0+v9FcfLAQBAwGJGBwAAk3PIIU8XnjzvwT+R6AAAYHLFhqFiDx9k4On1/oqlKwAAELCY0QEAwOTYjOw+Eh0AAEzOIUPFJDpuYekKAAAELGZ0AAAwOZau3EeiAwCAyXHqyn0sXQEAgIDFjA4AACbn+G/xtI/qyG9mdIqLi/Xkk0+qRYsWql27tlq1aqVnnnlGxm+m4gzD0NSpU9WkSRPVrl1bCQkJ2r9/vw+jBgDAc8X/PXXlaamO/CbRmTlzphYtWqSXX35Z33zzjWbOnKlZs2Zp/vz5zjazZs3SSy+9pMWLF2vLli2qW7euEhMTlZ+f78PIAQDwTLHhnVId+c3S1ebNm9W/f3/169dPktS8eXP9/e9/19atWyWdn82ZN2+epkyZov79+0uS3njjDUVFRWn16tW6++67fRY7AADwDb+Z0enevbvS0tL07bffSpJ27dqlzz//XDfffLMk6cCBA7Lb7UpISHBeExYWpri4OKWnp/skZgAAvMHhpVId+c2MzqRJk5SXl6e2bduqRo0aKi4u1owZMzR48GBJkt1ulyRFRUW5XBcVFeV8rTQFBQUqKChw/pyXl1cF0QMA4D6HLCqWxeM+qiO/mdH5xz/+obffflvLly/X9u3btWzZMr3wwgtatmyZR/0mJycrLCzMWaKjo70UMQAA8DW/SXQmTJigSZMm6e6771bHjh01ZMgQjR07VsnJyZIkm80mScrOzna5Ljs72/laaSZPnqzc3FxnycrKqrpBAADgBofhnVId+U2ic+bMGQUFuYZbo0YNORznVx1btGghm82mtLQ05+t5eXnasmWL4uPjy+zXarUqNDTUpQAAYCbF/1268rRUR36zR+e2227TjBkz1KxZM3Xo0EE7duzQnDlzdN9990mSLBaLHnvsMT377LNq3bq1WrRooSeffFJNmzbVgAEDfBs8AADwCb9JdObPn68nn3xSDz30kI4dO6amTZvq/vvv19SpU51tHn/8cZ0+fVqjR49WTk6OevTooXXr1ikkJMSHkQMA4BlvzMhU1xkdi2FU06d8lSEvL09hYWGKmfmsgkiQAABlcOTn6+DEKcrNza2ybQ8XvpM+391U9ep7ttvk1K8O9bjySJXGa0Z+s0cHAACgsvxm6QoAgOqKpSv3kegAAGByxQpSsYeLMMVeisXfkOgAAGByhmGRw/BsRsbw8Hp/xR4dAAAQsJjRAQDA5Nij4z5mdAAAMLliI8grpbIWLFig5s2bKyQkRHFxcdq6dWu57VetWqW2bdsqJCREHTt21Nq1a8ts+8ADD8hisWjevHmVjqsySHQAAEAJK1eu1Lhx4zRt2jRt375dnTt3VmJioo4dO1Zq+82bN+uee+7RyJEjtWPHDg0YMEADBgzQ7t27S7R9//339cUXX6hp06ZVPQwSHQAAzM4hixwK8rBUbulqzpw5GjVqlEaMGKH27dtr8eLFqlOnjl5//fVS27/44ovq27evJkyYoHbt2umZZ57R1VdfrZdfftml3eHDh/Xwww/r7bffVq1atdz+TCqKRAcAAJPz5kM98/LyXEpBQUGJ9yssLFRGRoYSEhKcdUFBQUpISFB6enqpMaanp7u0l6TExESX9g6HQ0OGDNGECRPUoUMHb3w0F0WiAwBANRIdHa2wsDBnSU5OLtHmxIkTKi4uVlRUlEt9VFSU7HZ7qf3a7faLtp85c6Zq1qypRx55xAsjqRhOXQEAYHLubiZ27eP8oy2zsrJcnnVltVo96reiMjIy9OKLL2r79u2yWC7dCTBmdAAAMLnze3Q8L5IUGhrqUkpLdBo3bqwaNWooOzvbpT47O1s2m63UGG02W7ntN23apGPHjqlZs2aqWbOmatasqYMHD2r8+PFq3ry5Fz6l0pHoAAAAF8HBwYqNjVVaWpqzzuFwKC0tTfHx8aVeEx8f79JeklJTU53thwwZoq+++ko7d+50lqZNm2rChAn66KOPqmwsLF0BAGByDi8868oho1Ltx40bp2HDhqlr167q1q2b5s2bp9OnT2vEiBGSpKFDh+qyyy5z7vF59NFH1bNnT/3tb39Tv379tGLFCn355ZdasmSJJKlRo0Zq1KiRy3vUqlVLNptNbdq08Whs5SHRAQDA5Ly5R6eiBg0apOPHj2vq1Kmy2+3q0qWL1q1b59xwfOjQIQUF/V9M3bt31/LlyzVlyhT99a9/VevWrbV69WpdeeWVHsXtKYthVHLkAS4vL09hYWGKmfmsgkJCfB0OAMCkHPn5OjhxinJzc10293rThe+k5TuvVJ36NTzq68yvxbq3y+4qjdeM2KMDAAACFktXAACYXLFhUbHh4UM9PbzeX5HoAABgcsVe2IxcXMnNyIGCpSsAABCwmNEBAMDkHEaQHB6eunJU07NHJDoAAJgcS1fuY+kKAAAELGZ0AAAwOYc8PzXl8E4ofodEBwAAk3MoSA6PHwFRPRdxqueoAQBAtcCMDgAAJuedZ11Vz7kNEh0AAEzOIYsc8nSPDndGBgAAJsSMjvv8atSHDx/Wn//8ZzVq1Ei1a9dWx44d9eWXXzpfNwxDU6dOVZMmTVS7dm0lJCRo//79PowYAAD4kt8kOr/88ouuu+461apVS//+97+1d+9e/e1vf1ODBg2cbWbNmqWXXnpJixcv1pYtW1S3bl0lJiYqPz/fh5EDAOCZCzcM9LRUR36zdDVz5kxFR0crJSXFWdeiRQvnnw3D0Lx58zRlyhT1799fkvTGG28oKipKq1ev1t13333JYwYAwBschkUOT++jU02fXu436d0HH3ygrl276s4771RkZKSuuuoqvfrqq87XDxw4ILvdroSEBGddWFiY4uLilJ6e7ouQAQCAj/lNovPDDz9o0aJFat26tT766CM9+OCDeuSRR7Rs2TJJkt1ulyRFRUW5XBcVFeV8rTQFBQXKy8tzKQAAmInDC8tW1fWGgX6zdOVwONS1a1c999xzkqSrrrpKu3fv1uLFizVs2DC3+01OTtbTTz/trTABAPA67zy9vHomOn4z6iZNmqh9+/Yude3atdOhQ4ckSTabTZKUnZ3t0iY7O9v5WmkmT56s3NxcZ8nKyvJy5AAAwFf8JtG57rrrlJmZ6VL37bffKiYmRtL5jck2m01paWnO1/Py8rRlyxbFx8eX2a/ValVoaKhLAQDATIpl8Uqpjvxm6Wrs2LHq3r27nnvuOd11113aunWrlixZoiVLlkiSLBaLHnvsMT377LNq3bq1WrRooSeffFJNmzbVgAEDfBs8AAAeYOnKfX6T6FxzzTV6//33NXnyZE2fPl0tWrTQvHnzNHjwYGebxx9/XKdPn9bo0aOVk5OjHj16aN26dQoJCfFh5AAAwFf8JtGRpFtvvVW33nprma9bLBZNnz5d06dPv4RRAQBQtYolj5eeir0Tit/xq0QHAIDqiKUr95HoAABgcjzU033Vc9QAAKBaYEYHAACTM2SRw8M9OgbHywEAgBmxdOW+6jlqAABQLTCjAwCAyTkMixyGZ0tPnl7vr0h0AAAwuQtPIPe0j+qoeo4aAABUC8zoAABgcixduY9EBwAAk3MoSA4PF2E8vd5fVc9RAwCAaoEZHQAATK7YsKjYw6UnT6/3VyQ6AACYHHt03EeiAwCAyRleeHq5wZ2RAQAAAgszOgAAmFyxLCr28KGcnl7vr0h0AAAwOYfh+R4bh+GlYPwMS1cAACBgMaMDAIDJObywGdnT6/0ViQ4AACbnkEUOD/fYeHq9v6qe6R0AAKgWmNEBAMDkuDOy+0h0AAAwOfbouK96jhoAAFQLzOgAAGByDnnhWVfVdDMyiQ4AACZneOHUlUGiAwAAzIinl7uPPToAACBgMaMDAIDJcerKfX476ueff14Wi0WPPfaYsy4/P19JSUlq1KiR6tWrp4EDByo7O9t3QQIA4AUXlq48LdWRXyY627Zt0yuvvKJOnTq51I8dO1YffvihVq1apU8//VRHjhzR7bff7qMoAQCAr/ldonPq1CkNHjxYr776qho0aOCsz83N1WuvvaY5c+aoV69eio2NVUpKijZv3qwvvvjChxEDAOCZC8+68rRUR36X6CQlJalfv35KSEhwqc/IyFBRUZFLfdu2bdWsWTOlp6df6jABAPAalq7c51ebkVesWKHt27dr27ZtJV6z2+0KDg5WeHi4S31UVJTsdnuZfRYUFKigoMD5c15entfiBQAAvuU3MzpZWVl69NFH9fbbbyskJMRr/SYnJyssLMxZoqOjvdY3AADewIyO+/wm0cnIyNCxY8d09dVXq2bNmqpZs6Y+/fRTvfTSS6pZs6aioqJUWFionJwcl+uys7Nls9nK7Hfy5MnKzc11lqysrCoeCQAAlUOi4z6/Wbrq3bu3vv76a5e6ESNGqG3btpo4caKio6NVq1YtpaWlaeDAgZKkzMxMHTp0SPHx8WX2a7VaZbVaqzR2AADgG36T6NSvX19XXnmlS13dunXVqFEjZ/3IkSM1btw4NWzYUKGhoXr44YcVHx+va6+91hchAwDgFTwCwn1+s3RVEXPnztWtt96qgQMH6oYbbpDNZtN7773n67AAAPCIIc+PmBtuvO+CBQvUvHlzhYSEKC4uTlu3bi23/apVq9S2bVuFhISoY8eOWrt2rfO1oqIiTZw4UR07dlTdunXVtGlTDR06VEeOHHEjsorz60Rn48aNmjdvnvPnkJAQLViwQCdPntTp06f13nvvlbs/BwAAf+CLPTorV67UuHHjNG3aNG3fvl2dO3dWYmKijh07Vmr7zZs365577tHIkSO1Y8cODRgwQAMGDNDu3bslSWfOnNH27dv15JNPavv27XrvvfeUmZmpP/3pTx5/PuWxGIbhTpIXsPLy8hQWFqaYmc8qyIunuwAAgcWRn6+DE6coNzdXoaGhVfIeF76Tev3rAdWs69l+0nOnC7S+3+IKxxsXF6drrrlGL7/8siTJ4XAoOjpaDz/8sCZNmlSi/aBBg3T69GmtWbPGWXfttdeqS5cuWrx4canvsW3bNnXr1k0HDx5Us2bN3BxZ+fx6RgcAgOrAmzM6eXl5LuW395K7oLCwUBkZGS434Q0KClJCQkKZN+FNT08vcTPfxMTEcm/am5ubK4vFUuIeeN5EogMAgMl5M9GJjo52uX9ccnJyifc7ceKEiouLFRUV5VJf3k147XZ7pdrn5+dr4sSJuueee6psRkzyo1NXAADAc1lZWS6JhS9usVJUVKS77rpLhmFo0aJFVfpeJDoAAJicN4+Xh4aGXnQGpXHjxqpRo4ays7Nd6su7Ca/NZqtQ+wtJzsGDB7V+/foqnc2RWLoCAMD0DMPilVJRwcHBio2NVVpamrPO4XAoLS2tzJvwxsfHu7SXpNTUVJf2F5Kc/fv365NPPlGjRo0q+UlUHjM6AACghHHjxmnYsGHq2rWrunXrpnnz5un06dMaMWKEJGno0KG67LLLnHt8Hn30UfXs2VN/+9vf1K9fP61YsUJffvmllixZIul8knPHHXdo+/btWrNmjYqLi537dxo2bKjg4OAqGQeJDgAAJnfhpn+e9lEZgwYN0vHjxzV16lTZ7XZ16dJF69atc244PnTokIKC/m9hqHv37lq+fLmmTJmiv/71r2rdurVWr17tfHrB4cOH9cEHH0iSunTp4vJeGzZs0I033uj+4MpBogMAgMn56hEQY8aM0ZgxY0p9bePGjSXq7rzzTt15552ltm/evLl8ces+9ugAAICAxYwOAAAmV9nNxGX1UR2R6AAAYHI8vdx9JDoAAJgcMzruY48OAAAIWMzoAABgcoYXlq6q64wOiQ4AACZnSPL0ZPalP9htDixdAQCAgMWMDgAAJueQRZZLfGfkQEGiAwCAyXHqyn0sXQEAgIDFjA4AACbnMCyycMNAt5DoAABgcobhhVNX1fTYFUtXAAAgYDGjAwCAybEZ2X0kOgAAmByJjvtIdAAAMDk2I7uPPToAACBgMaMDAIDJcerKfSQ6AACY3PlEx9M9Ol4Kxs+wdAUAAAIWMzoAAJgcp67c5zczOsnJybrmmmtUv359RUZGasCAAcrMzHRpk5+fr6SkJDVq1Ej16tXTwIEDlZ2d7aOIAQDwDsNLpTrym0Tn008/VVJSkr744gulpqaqqKhIffr00enTp51txo4dqw8//FCrVq3Sp59+qiNHjuj222/3YdQAAMCX/Gbpat26dS4/L126VJGRkcrIyNANN9yg3Nxcvfbaa1q+fLl69eolSUpJSVG7du30xRdf6Nprr/VF2AAAeIylK/f5zYzO7+Xm5kqSGjZsKEnKyMhQUVGREhISnG3atm2rZs2aKT09vcx+CgoKlJeX51IAADAV1q7c5peJjsPh0GOPPabrrrtOV155pSTJbrcrODhY4eHhLm2joqJkt9vL7Cs5OVlhYWHOEh0dXZWhAwBQef+d0fGkiBkd/5GUlKTdu3drxYoVHvc1efJk5ebmOktWVpYXIgQAAGbgN3t0LhgzZozWrFmjzz77TJdffrmz3mazqbCwUDk5OS6zOtnZ2bLZbGX2Z7VaZbVaqzJkAAA8wp2R3ec3MzqGYWjMmDF6//33tX79erVo0cLl9djYWNWqVUtpaWnOuszMTB06dEjx8fGXOlwAALzG02Urb2xm9ld+M6OTlJSk5cuX65///Kfq16/v3HcTFham2rVrKywsTCNHjtS4cePUsGFDhYaG6uGHH1Z8fDwnrgAAqKb8JtFZtGiRJOnGG290qU9JSdHw4cMlSXPnzlVQUJAGDhyogoICJSYmauHChZc4UgAAvMwbm4mZ0TE3owKLiyEhIVqwYIEWLFhwCSICAODSYI+O+/xmjw4AAEBl+c2MDgAA1ZY3bvhXTWd0SHQAADA5HgHhPpauAABAwGJGBwAAf1BNl548RaIDAIDJsXTlPhIdAADMjs3IbmOPDgAACFjM6AAAYHqW/xZP+6h+SHQAADA7lq7cxtIVAAAIWMzoAABgdszouI1EBwAAs+Pp5W5j6QoAAAQsZnQAADA5wzhfPO2jOiLRAQDA7Nij4zaWrgAAQMBiRgcAALNjM7LbSHQAADA5i3G+eNpHdUSiAwCA2bFHx23s0QEAAAGLGR0AAMyOPTpuI9EBAMDsWLpyG0tXAAAgYDGjAwCA2TGj4zYSHQAAzI5Ex20sXQEAgIDFjA4AAGbHqSu3kegAAGBy3BnZfSxdAQCAgBWQic6CBQvUvHlzhYSEKC4uTlu3bvV1SAAAuM/wUqmkyn6frlq1Sm3btlVISIg6duyotWvXug7DMDR16lQ1adJEtWvXVkJCgvbv31/5wCqh0onOsGHD9Nlnn1VFLF6xcuVKjRs3TtOmTdP27dvVuXNnJSYm6tixY74ODQAAv1HZ79PNmzfrnnvu0ciRI7Vjxw4NGDBAAwYM0O7du51tZs2apZdeekmLFy/Wli1bVLduXSUmJio/P7/KxlHpRCc3N1cJCQlq3bq1nnvuOR0+fLgq4nLbnDlzNGrUKI0YMULt27fX4sWLVadOHb3++uu+Dg0AALdY9H/7dNwulXzPyn6fvvjii+rbt68mTJigdu3a6ZlnntHVV1+tl19+WdL52Zx58+ZpypQp6t+/vzp16qQ33nhDR44c0erVqz36fMpT6URn9erVOnz4sB588EGtXLlSzZs3180336x33nlHRUVFVRFjhRUWFiojI0MJCQnOuqCgICUkJCg9Pb3UawoKCpSXl+dSAAAIVL//zisoKCjRxp3v0/T0dJf2kpSYmOhsf+DAAdntdpc2YWFhiouLK7NPb3Brj05ERITGjRunXbt2acuWLbriiis0ZMgQNW3aVGPHjq3y9baynDhxQsXFxYqKinKpj4qKkt1uL/Wa5ORkhYWFOUt0dPSlCBUAgIq7cLzc0yIpOjra5XsvOTm5xNu5831qt9vLbX/hn5Xp0xs82ox89OhRpaamKjU1VTVq1NAtt9yir7/+Wu3bt9fcuXO9FWOVmjx5snJzc50lKyvL1yEBAODKi5uRs7KyXL73Jk+efEmHcqlV+j46RUVF+uCDD5SSkqKPP/5YnTp10mOPPaZ7771XoaGhkqT3339f9913n8aOHev1gMvTuHFj1ahRQ9nZ2S712dnZstlspV5jtVpltVovRXgAAPhcaGio8/u6LO58n9pstnLbX/hndna2mjRp4tKmS5culR1GhVV6RqdJkyYaNWqUYmJitHXrVn355Zd64IEHXD60m266SeHh4d6Ms0KCg4MVGxurtLQ0Z53D4VBaWpri4+MveTwAAHjFJT5e7s73aXx8vEt7SUpNTXW2b9GihWw2m0ubvLw8bdmypUq/oys9ozN37lzdeeedCgkJKbNNeHi4Dhw44FFg7ho3bpyGDRumrl27qlu3bpo3b55Onz6tESNG+CQeAAA85Ys7I1/s+3To0KG67LLLnHt8Hn30UfXs2VN/+9vf1K9fP61YsUJffvmllixZcv79LRY99thjevbZZ9W6dWu1aNFCTz75pJo2baoBAwZ4NrhyVDrRGTJkSFXE4TWDBg3S8ePHNXXqVNntdnXp0kXr1q0rsfkJAACU7WLfp4cOHVJQ0P8tDHXv3l3Lly/XlClT9Ne//lWtW7fW6tWrdeWVVzrbPP744zp9+rRGjx6tnJwc9ejRQ+vWrSt38sRTFsMwqunTL0qXl5ensLAwxcx8VkFV+MEDAPybIz9fBydOUW5u7kX3vLjrwndS82dnePyd5MjP149TnqjSeM2Ih3oCAGB2bj7CoUQf1VBAPusKAABAYkYHAADT88Vm5EBBogMAgNn95s7GHvVRDZHoAABgduzRcRt7dAAAQMBiRgcAAJNjj477SHQAADA7lq7cxtIVAAAIWMzoAABgdl5YuqquMzokOgAAmB1LV25j6QoAAAQsZnQAADA7ZnTcRqIDAIDJcbzcfSxdAQCAgEWiAwAAAhZLVwAAmB17dNxGogMAgMmxR8d9LF0BAICAxYwOAAD+oJrOyHiKRAcAALNjj47bWLoCAAABixkdAABMjs3I7iPRAQDA7Fi6chtLVwAAIGAxowMAgMmxdOU+Eh0AAMyOpSu3sXQFAAACFjM6AACYHTM6biPRAQDA5Nij4z6/WLr68ccfNXLkSLVo0UK1a9dWq1atNG3aNBUWFrq0++qrr3T99dcrJCRE0dHRmjVrlo8iBgDAiwwvlWrIL2Z09u3bJ4fDoVdeeUVXXHGFdu/erVGjRun06dN64YUXJEl5eXnq06ePEhIStHjxYn399de67777FB4ertGjR/t4BAAAwBf8ItHp27ev+vbt6/y5ZcuWyszM1KJFi5yJzttvv63CwkK9/vrrCg4OVocOHbRz507NmTOHRAcA4N/Yo+M2v1i6Kk1ubq4aNmzo/Dk9PV033HCDgoODnXWJiYnKzMzUL7/8UmY/BQUFysvLcykAAJjJhT06npbqyC8Tne+++07z58/X/fff76yz2+2KiopyaXfhZ7vdXmZfycnJCgsLc5bo6OiqCRoAAFxyPk10Jk2aJIvFUm7Zt2+fyzWHDx9W3759deedd2rUqFEexzB58mTl5uY6S1ZWlsd9AgDgVWxGdptP9+iMHz9ew4cPL7dNy5YtnX8+cuSIbrrpJnXv3l1LlixxaWez2ZSdne1Sd+Fnm81WZv9Wq1VWq7WSkQMAcOlwvNx9Pk10IiIiFBERUaG2hw8f1k033aTY2FilpKQoKMh1Mio+Pl5PPPGEioqKVKtWLUlSamqq2rRpowYNGng9dgAAYH5+sUfn8OHDuvHGG9WsWTO98MILOn78uOx2u8vem3vvvVfBwcEaOXKk9uzZo5UrV+rFF1/UuHHjfBg5AABewNKV2/zieHlqaqq+++47fffdd7r88stdXjOM87+5sLAwffzxx0pKSlJsbKwaN26sqVOncrQcAOD/OF7uNr9IdIYPH37RvTyS1KlTJ23atKnqAwIAAH7BLxIdAACqM8t/i6d9VEckOgAAmB1LV24j0QEAwOQ4Xu4+vzh1BQAA4A5mdAAAMDuWrtxGogMAgD+opomKp1i6AgAAAYsZHQAATI7NyO4j0QEAwOzYo+M2lq4AAEDAYkYHAACTY+nKfSQ6AACYHUtXbmPpCgAABCxmdAAAMDmWrtxHogMAgNmxdOU2Eh0AAMyORMdt7NEBAAABixkdAABMjj067iPRAQDA7Fi6chtLVwAAIGAxowMAgMlZDEMWw7MpGU+v91ckOgAAmB1LV25j6QoAAHjk5MmTGjx4sEJDQxUeHq6RI0fq1KlT5V6Tn5+vpKQkNWrUSPXq1dPAgQOVnZ3tfH3Xrl265557FB0drdq1a6tdu3Z68cUXKx0biQ4AACZ34dSVp6WqDB48WHv27FFqaqrWrFmjzz77TKNHjy73mrFjx+rDDz/UqlWr9Omnn+rIkSO6/fbbna9nZGQoMjJSb731lvbs2aMnnnhCkydP1ssvv1yp2Fi6AgDA7Ey8dPXNN99o3bp12rZtm7p27SpJmj9/vm655Ra98MILatq0aYlrcnNz9dprr2n58uXq1auXJCklJUXt2rXTF198oWuvvVb33XefyzUtW7ZUenq63nvvPY0ZM6bC8TGjAwBANZKXl+dSCgoKPOovPT1d4eHhziRHkhISEhQUFKQtW7aUek1GRoaKioqUkJDgrGvbtq2aNWum9PT0Mt8rNzdXDRs2rFR8JDoAAJicN5euoqOjFRYW5izJyckexWa32xUZGelSV7NmTTVs2FB2u73Ma4KDgxUeHu5SHxUVVeY1mzdv1sqVKy+6JPZ7LF0BAGB2Xly6ysrKUmhoqLPaarWW2nzSpEmaOXNmuV1+8803HgZVMbt371b//v01bdo09enTp1LXkugAAGBy3nwERGhoqEuiU5bx48dr+PDh5bZp2bKlbDabjh075lJ/7tw5nTx5UjabrdTrbDabCgsLlZOT4zKrk52dXeKavXv3qnfv3ho9erSmTJly0bh/j0QHAACUEBERoYiIiIu2i4+PV05OjjIyMhQbGytJWr9+vRwOh+Li4kq9JjY2VrVq1VJaWpoGDhwoScrMzNShQ4cUHx/vbLdnzx716tVLw4YN04wZM9wah9/t0SkoKFCXLl1ksVi0c+dOl9e++uorXX/99QoJCVF0dLRmzZrlmyABAPAmw0ulCrRr1059+/bVqFGjtHXrVv3nP//RmDFjdPfddztPXB0+fFht27bV1q1bJUlhYWEaOXKkxo0bpw0bNigjI0MjRoxQfHy8rr32Wknnl6tuuukm9enTR+PGjZPdbpfdbtfx48crFZ/fJTqPP/54qUfV8vLy1KdPH8XExCgjI0OzZ8/WU089pSVLlvggSgAAvMus99CRpLfffltt27ZV7969dcstt6hHjx4u379FRUXKzMzUmTNnnHVz587VrbfeqoEDB+qGG26QzWbTe++953z9nXfe0fHjx/XWW2+pSZMmznLNNddUKjaLYfjPwy/+/e9/a9y4cXr33XfVoUMH7dixQ126dJEkLVq0SE888YRzJ7d0fiPV6tWrtW/fvgq/R15ensLCwhQz81kFhYRUxTAAAAHAkZ+vgxOnKDc3t0J7Xtxx4Tsp9q4ZqlnLs++kc0X5yvjHE1Uarxn5zYxOdna2Ro0apTfffFN16tQp8Xp6erpuuOEGZ5IjSYmJicrMzNQvv/xSZr8FBQUl7ikAAICpGIZ3SjXkF4mOYRgaPny4HnjgAZcbEv2W3W5XVFSUS92Fn8s6ky9JycnJLvcTiI6O9l7gAAB4gdkfAWFmPk10Jk2aJIvFUm7Zt2+f5s+fr19//VWTJ0/2egyTJ09Wbm6us2RlZXn9PQAAgG/49Hh5Rc/or1+/Xunp6SVuatS1a1cNHjxYy5Ytk81mc3nqqSTnz2Wd45fO3yiprJslAQBgCiZ+1pXZ+TTRqegZ/ZdeeknPPvus8+cjR44oMTFRK1eudJ7Rj4+P1xNPPKGioiLVqlVLkpSamqo2bdqoQYMGVTMAAAAuAYvjfPG0j+rIL24Y2KxZM5ef69WrJ0lq1aqVLr/8cknSvffeq6efflojR47UxIkTtXv3br344ouaO3fuJY8XAACYg18kOhURFhamjz/+WElJSYqNjVXjxo01derUSj/8CwAA02Hpym1+meg0b95cpd3+p1OnTtq0aZMPIgIAoOp481lX1Y1fJjoAAFQr3rgPDvfRAQAACCzM6AAAYHIsXbmPRAcAALNjM7LbWLoCAAABixkdAABMjqUr95HoAABgdpy6chtLVwAAIGAxowMAgMmxdOU+Eh0AAMyOU1duY+kKAAAELGZ0AAAwOZau3EeiAwCA2TmM88XTPqohEh0AAMyOPTpuY48OAAAIWMzoAABgchZ5YY+OVyLxPyQ6AACYHXdGdhtLVwAAIGAxowMAgMlxvNx9JDoAAJgdp67cxtIVAAAIWMzoAABgchbDkMXDzcSeXu+vSHQAADA7x3+Lp31UQyxdAQCAgMWMDgAAJsfSlftIdAAAMDtOXbmNRAcAALPjzshuY48OAAAIWMzoAABgctwZ2X0kOgAAmB1LV27zq6Wrf/3rX4qLi1Pt2rXVoEEDDRgwwOX1Q4cOqV+/fqpTp44iIyM1YcIEnTt3zjfBAgAAn/ObGZ13331Xo0aN0nPPPadevXrp3Llz2r17t/P14uJi9evXTzabTZs3b9bRo0c1dOhQ1apVS88995wPIwcAwDMWx/niaR/VkV8kOufOndOjjz6q2bNna+TIkc769u3bO//88ccfa+/evfrkk08UFRWlLl266JlnntHEiRP11FNPKTg42BehAwDgOZau3OYXS1fbt2/X4cOHFRQUpKuuukpNmjTRzTff7DKjk56ero4dOyoqKspZl5iYqLy8PO3Zs6fMvgsKCpSXl+dSAABAYPCLROeHH36QJD311FOaMmWK1qxZowYNGujGG2/UyZMnJUl2u90lyZHk/Nlut5fZd3JyssLCwpwlOjq6ikYBAICbDC+Vasinic6kSZNksVjKLfv27ZPDcX5h8YknntDAgQMVGxurlJQUWSwWrVq1yqMYJk+erNzcXGfJysryxtAAAPCaC4+A8LRURz7dozN+/HgNHz683DYtW7bU0aNHJbnuybFarWrZsqUOHTokSbLZbNq6davLtdnZ2c7XymK1WmW1Wt0JHwAAmJxPE52IiAhFRERctF1sbKysVqsyMzPVo0cPSVJRUZF+/PFHxcTESJLi4+M1Y8YMHTt2TJGRkZKk1NRUhYaGuiRIAAD4HTYju80vTl2FhobqgQce0LRp0xQdHa2YmBjNnj1bknTnnXdKkvr06aP27dtryJAhmjVrlux2u6ZMmaKkpCRmbAAA/s2Q5Onx8OqZ5/hHoiNJs2fPVs2aNTVkyBCdPXtWcXFxWr9+vRo0aCBJqlGjhtasWaMHH3xQ8fHxqlu3roYNG6bp06f7OHIAADzjjT027NExuVq1aumFF17QCy+8UGabmJgYrV279hJGBQAAzMxvEh0AAKotQ17Yo+OVSPwOiQ4AAGbHZmS3+cUNAwEAANzBjA4AAGbnkGTxQh/VEIkOAAAmx6kr97F0BQAAAhYzOgAAmB2bkd1GogMAgNmR6LiNpSsAABCwmNEBAMDsmNFxG4kOAABmx/Fyt5HoAABgchwvdx97dAAAQMAi0QEAwOwu7NHxtFSRkydPavDgwQoNDVV4eLhGjhypU6dOlXtNfn6+kpKS1KhRI9WrV08DBw5UdnZ2qW1//vlnXX755bJYLMrJyalUbCQ6AACYncPwTqkigwcP1p49e5Samqo1a9bos88+0+jRo8u9ZuzYsfrwww+1atUqffrppzpy5Ihuv/32UtuOHDlSnTp1cis2Eh0AAOC2b775RuvWrdP//u//Ki4uTj169ND8+fO1YsUKHTlypNRrcnNz9dprr2nOnDnq1auXYmNjlZKSos2bN+uLL75wabto0SLl5OToL3/5i1vxkegAAGB2Jl66Sk9PV3h4uLp27eqsS0hIUFBQkLZs2VLqNRkZGSoqKlJCQoKzrm3btmrWrJnS09OddXv37tX06dP1xhtvKCjIvZSFU1cAAJieNxKV89fn5eW51FqtVlmtVrd7tdvtioyMdKmrWbOmGjZsKLvdXuY1wcHBCg8Pd6mPiopyXlNQUKB77rlHs2fPVrNmzfTDDz+4FR8zOgAAVCPR0dEKCwtzluTk5FLbTZo0SRaLpdyyb9++Kotz8uTJateunf785z971A8zOgAAmJ0X74yclZWl0NBQZ3VZsznjx4/X8OHDy+2yZcuWstlsOnbsmEv9uXPndPLkSdlstlKvs9lsKiwsVE5OjsusTnZ2tvOa9evX6+uvv9Y777zz3/DPx9+4cWM98cQTevrpp8uN7QISHQAAzM5h6MLSk2d9SKGhoS6JTlkiIiIUERFx0Xbx8fHKyclRRkaGYmNjJZ1PUhwOh+Li4kq9JjY2VrVq1VJaWpoGDhwoScrMzNShQ4cUHx8vSXr33Xd19uxZ5zXbtm3Tfffdp02bNqlVq1YXjesCEh0AAOC2du3aqW/fvho1apQWL16soqIijRkzRnfffbeaNm0qSTp8+LB69+6tN954Q926dVNYWJhGjhypcePGqWHDhgoNDdXDDz+s+Ph4XXvttZJUIpk5ceKE8/1+v7enPCQ6AACYneE4Xzzto4q8/fbbGjNmjHr37q2goCANHDhQL730kvP1oqIiZWZm6syZM866uXPnOtsWFBQoMTFRCxcu9HpsJDoAAJidyZ9e3rBhQy1fvrzM15s3b+7cY3NBSEiIFixYoAULFlToPW688cYSfVQEiQ4AAGbnxT061Q3HywEAQMBiRgcAALMz+dKVmZHoAABgdoa8kOh4JRK/w9IVAAAIWMzoAABgdixduc1vZnS+/fZb9e/fX40bN1ZoaKh69OihDRs2uLQ5dOiQ+vXrpzp16igyMlITJkzQuXPnfBQxAABe4nB4p1RDfpPo3HrrrTp37pzWr1+vjIwMde7cWbfeeqvzKafFxcXq16+fCgsLtXnzZi1btkxLly7V1KlTfRw5AADwFb9IdE6cOKH9+/dr0qRJ6tSpk1q3bq3nn39eZ86c0e7duyVJH3/8sfbu3au33npLXbp00c0336xnnnlGCxYsUGFhoY9HAACABy4sXXlaqiG/SHQaNWqkNm3a6I033tDp06d17tw5vfLKK4qMjHQ+QCw9PV0dO3ZUVFSU87rExETl5eVpz549ZfZdUFCgvLw8lwIAgKmQ6LjNLzYjWywWffLJJxowYIDq16+voKAgRUZGat26dWrQoIEkyW63uyQ5kpw/X1jeKk1ycnKFH/UOAAD8i09ndCZNmiSLxVJu2bdvnwzDUFJSkiIjI7Vp0yZt3bpVAwYM0G233aajR496FMPkyZOVm5vrLFlZWV4aHQAAXuIwvFOqIZ/O6IwfP17Dhw8vt03Lli21fv16rVmzRr/88otCQ0MlSQsXLlRqaqqWLVumSZMmyWazaevWrS7XZmdnS5JsNluZ/VutVlmtVs8GAgBAFTIMhwwPnz7u6fX+yqeJTkREhCIiIi7a7sJj3YOCXCeggoKC5Pjvcbn4+HjNmDFDx44dU2RkpCQpNTVVoaGhat++vZcjBwDgEjK8MCNTTffo+MVm5Pj4eDVo0EDDhg3Trl279O2332rChAk6cOCA+vXrJ0nq06eP2rdvryFDhmjXrl366KOPNGXKFCUlJTFjAwBANeUXiU7jxo21bt06nTp1Sr169VLXrl31+eef65///Kc6d+4sSapRo4bWrFmjGjVqKD4+Xn/+8581dOhQTZ8+3cfRAwDgIU5duc0vTl1JUteuXfXRRx+V2yYmJkZr1669RBEBAHCJOBySxcM9NtV0j45fzOgAAAC4w29mdAAAqLYMQxKbkd1BogMAgMkZDocMD5euquvxcpauAABAwGJGBwAAs2Ppym0kOgAAmJ3DkCwkOu5g6QoAAAQsZnQAADA7w5Dk6X10queMDokOAAAmZzgMGR4uXRkkOgAAwJQMhzyf0eF4OQAAQEBhRgcAAJNj6cp9JDoAAJgdS1duI9H5nQsZryM/38eRAADM7ML3xKWYKTmnIo/vF3hORd4Jxs9YjOo6l1WGn376SdHR0b4OAwDgJ7KysnT55ZdXSd/5+flq0aKF7Ha7V/qz2Ww6cOCAQkJCvNKfPyDR+R2Hw6EjR46ofv36slgsPokhLy9P0dHRysrKUmhoqE9iqCqMzT8xNv/E2KqWYRj69ddf1bRpUwUFVd3Znvz8fBUWFnqlr+Dg4GqV5EgsXZUQFBRUZZl5ZYWGhgbcf5wuYGz+ibH5J8ZWdcLCwqr8PUJCQqpdcuJNHC8HAAABi0QHAAAELBIdE7JarZo2bZqsVquvQ/E6xuafGJt/YmwAm5EBAEAAY0YHAAAELBIdAAAQsEh0AABAwCLRAQAAAYtEx4dmzJih7t27q06dOgoPDy+1jcViKVFWrFjh0mbjxo26+uqrZbVadcUVV2jp0qVVH/xFVGRshw4dUr9+/VSnTh1FRkZqwoQJOnfunEsbM46tNM2bNy/xe3r++edd2nz11Ve6/vrrFRISoujoaM2aNctH0VbOggUL1Lx5c4WEhCguLk5bt271dUiV9tRTT5X4/bRt29b5en5+vpKSktSoUSPVq1dPAwcOVHZ2tg8jLt9nn32m2267TU2bNpXFYtHq1atdXjcMQ1OnTlWTJk1Uu3ZtJSQkaP/+/S5tTp48qcGDBys0NFTh4eEaOXKkTp06dQlHUbqLjW348OElfpd9+/Z1aWPWscE3SHR8qLCwUHfeeacefPDBctulpKTo6NGjzjJgwADnawcOHFC/fv100003aefOnXrsscf0//7f/9NHH31UxdGX72JjKy4uVr9+/VRYWKjNmzdr2bJlWrp0qaZOnepsY9axlWX69Okuv6eHH37Y+VpeXp769OmjmJgYZWRkaPbs2Xrqqae0ZMkSH0Z8cStXrtS4ceM0bdo0bd++XZ07d1ZiYqKOHTvm69AqrUOHDi6/n88//9z52tixY/Xhhx9q1apV+vTTT3XkyBHdfvvtPoy2fKdPn1bnzp21YMGCUl+fNWuWXnrpJS1evFhbtmxR3bp1lZiYqPzfPKx48ODB2rNnj1JTU7VmzRp99tlnGj169KUaQpkuNjZJ6tu3r8vv8u9//7vL62YdG3zEgM+lpKQYYWFhpb4myXj//ffLvPbxxx83OnTo4FI3aNAgIzEx0YsRuq+ssa1du9YICgoy7Ha7s27RokVGaGioUVBQYBiG+cf2WzExMcbcuXPLfH3hwoVGgwYNnGMzDMOYOHGi0aZNm0sQnfu6detmJCUlOX8uLi42mjZtaiQnJ/swqsqbNm2a0blz51Jfy8nJMWrVqmWsWrXKWffNN98Ykoz09PRLFKH7fv/fCIfDYdhsNmP27NnOupycHMNqtRp///vfDcMwjL179xqSjG3btjnb/Pvf/zYsFotx+PDhSxb7xZT2379hw4YZ/fv3L/MafxkbLh1mdPxAUlKSGjdurG7duun111+X8ZtbH6WnpyshIcGlfWJiotLT0y91mJWSnp6ujh07KioqylmXmJiovLw87dmzx9nGn8b2/PPPq1GjRrrqqqs0e/Zsl2W49PR03XDDDQoODnbWJSYmKjMzU7/88osvwr2owsJCZWRkuPwOgoKClJCQYNrfQXn279+vpk2bqmXLlho8eLAOHTokScrIyFBRUZHLONu2batmzZr55TgPHDggu93uMp6wsDDFxcU5x5Oenq7w8HB17drV2SYhIUFBQUHasmXLJY+5sjZu3KjIyEi1adNGDz74oH7++Wfna/4+NngfD/U0uenTp6tXr16qU6eOPv74Yz300EM6deqUHnnkEUmS3W53SRYkKSoqSnl5eTp79qxq167ti7Avqqy4L7xWXhszju2RRx7R1VdfrYYNG2rz5s2aPHmyjh49qjlz5kg6P5YWLVq4XPPb8TZo0OCSx3wxJ06cUHFxcam/g3379vkoKvfExcVp6dKlatOmjY4ePaqnn35a119/vXbv3i273a7g4OASe8mioqKcfxf9yYWYS/u9/fbfrcjISJfXa9asqYYNG5p+zH379tXtt9+uFi1a6Pvvv9df//pX3XzzzUpPT1eNGjX8emyoGiQ6XjZp0iTNnDmz3DbffPONy0bI8jz55JPOP1911VU6ffq0Zs+e7Ux0LiVvj83sKjPecePGOes6deqk4OBg3X///UpOTuYW9SZw8803O//cqVMnxcXFKSYmRv/4xz9MlTDj4u6++27nnzt27KhOnTqpVatW2rhxo3r37u3DyGBWJDpeNn78eA0fPrzcNi1btnS7/7i4OD3zzDMqKCiQ1WqVzWYrcTokOztboaGhXv8PuDfHZrPZSpzeuTAOm83m/OelGltpPBlvXFyczp07px9//FFt2rQpcyzS/43XbBo3bqwaNWqUGrdZY66o8PBw/eEPf9B3332nP/7xjyosLFROTo7LrI6/jvNCzNnZ2WrSpImzPjs7W126dHG2+f2G8nPnzunkyZN+N+aWLVuqcePG+u6779S7d++AGhu8g0THyyIiIhQREVFl/e/cuVMNGjRwzhLEx8dr7dq1Lm1SU1MVHx/v9ff25tji4+M1Y8YMHTt2zDnNnJqaqtDQULVv397Z5lKNrTSejHfnzp0KCgpyji0+Pl5PPPGEioqKVKtWLUnnx9KmTRtTLltJUnBwsGJjY5WWluY86edwOJSWlqYxY8b4NjgPnTp1St9//72GDBmi2NhY1apVS2lpaRo4cKAkKTMzU4cOHbpkf9e8qUWLFrLZbEpLS3MmNnl5edqyZYvzFGR8fLxycnKUkZGh2NhYSdL69evlcDgUFxfnq9Dd8tNPP+nnn392JnWBNDZ4ia93Q1dnBw8eNHbs2GE8/fTTRr169YwdO3YYO3bsMH799VfDMAzjgw8+MF599VXj66+/Nvbv328sXLjQqFOnjjF16lRnHz/88INRp04dY8KECcY333xjLFiwwKhRo4axbt06Xw3LMIyLj+3cuXPGlVdeafTp08fYuXOnsW7dOiMiIsKYPHmysw+zju33Nm/ebMydO9fYuXOn8f333xtvvfWWERERYQwdOtTZJicnx4iKijKGDBli7N6921ixYoVRp04d45VXXvFh5Be3YsUKw2q1GkuXLjX27t1rjB492ggPD3c5LecPxo8fb2zcuNE4cOCA8Z///MdISEgwGjdubBw7dswwDMN44IEHjGbNmhnr1683vvzySyM+Pt6Ij4/3cdRl+/XXX53/Tkky5syZY+zYscM4ePCgYRiG8fzzzxvh4eHGP//5T+Orr74y+vfvb7Ro0cI4e/ass4++ffsaV111lbFlyxbj888/N1q3bm3cc889vhqSU3lj+/XXX42//OUvRnp6unHgwAHjk08+Ma6++mqjdevWRn5+vrMPs44NvkGi40PDhg0zJJUoGzZsMAzj/JHILl26GPXq1TPq1q1rdO7c2Vi8eLFRXFzs0s+GDRuMLl26GMHBwUbLli2NlJSUSz+Y37nY2AzDMH788Ufj5ptvNmrXrm00btzYGD9+vFFUVOTSjxnH9nsZGRlGXFycERYWZoSEhBjt2rUznnvuOZf/8BqGYezatcvo0aOHYbVajcsuu8x4/vnnfRRx5cyfP99o1qyZERwcbHTr1s344osvfB1SpQ0aNMho0qSJERwcbFx22WXGoEGDjO+++875+tmzZ42HHnrIaNCggVGnTh3jf/7nf4yjR4/6MOLybdiwodR/v4YNG2YYxvkj5k8++aQRFRVlWK1Wo3fv3kZmZqZLHz///LNxzz33GPXq1TNCQ0ONESNGOP9HxJfKG9uZM2eMPn36GBEREUatWrWMmJgYY9SoUSUSb7OODb5hMYzfnFUGAAAIINxHBwAABCwSHQAAELBIdAAAQMAi0QEAAAGLRAcAAAQsEh0AABCwSHQAAEDAItEBAAABi0QHAAAELBIdAAAQsEh0AJTq+PHjstlseu6555x1mzdvVnBwsNLS0nwYGQBUHM+6AlCmtWvXasCAAdq8ebPatGmjLl26qH///pozZ46vQwOACiHRAVCupKQkffLJJ+ratau+/vprbdu2TVar1ddhAUCFkOgAKNfZs2d15ZVXKisrSxkZGerYsaOvQwKACmOPDoByff/99zpy5IgcDod+/PFHX4cDAJXCjA6AMhUWFqpbt27q0qWL2rRpo3nz5unrr79WZGSkr0MDgAoh0QFQpgkTJuidd97Rrl27VK9ePfXs2VNhYWFas2aNr0MDgAph6QpAqTZu3Kh58+bpzTffVGhoqIKCgvTmm29q06ZNWrRoka/DA4AKYUYHAAAELGZ0AABAwCLRAQAAAYtEBwAABCwSHQAAELBIdAAAQMAi0QEAAAGLRAcAAAQsEh0AABCwSHQAAEDAItEBAAABi0QHAAAELBIdAAAQsP4/orSyhbE53wEAAAAASUVORK5CYII=", + "image/png": "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", "text/plain": [ "
" ] @@ -415,7 +423,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 93, "metadata": {}, "outputs": [], "source": [ @@ -435,7 +443,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 94, "metadata": {}, "outputs": [ {