diff --git a/examples/add_public_raster_dataset.ipynb b/examples/add_public_raster_dataset.ipynb index 8834f9c7..4d02d114 100644 --- a/examples/add_public_raster_dataset.ipynb +++ b/examples/add_public_raster_dataset.ipynb @@ -69,11 +69,10 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "## Define metadata" + "## Select volume" ] }, { @@ -84,7 +83,7 @@ { "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=['ClassificationMeasurement', 'ContinuousMeasurement', 'UnitlessMeasurement'], discriminator_value_class_map={}), name='band')], bbox=SpatialPartition2D(lower_right_coordinate=Coordinate2D(x=180.0, y=-90.0), upper_left_coordinate=Coordinate2D(x=-180.0, y=90.0)), data_type=, resolution=SpatialResolution(x=0.1, y=0.1), spatial_reference='EPSG:4326', time=None), time=None, type='GdalStatic')" + "Volume(name='test_data', path='test_data/')" ] }, "execution_count": 4, @@ -92,6 +91,35 @@ "output_type": "execute_result" } ], + "source": [ + "volume = ge.volume_by_name(\"test_data\")\n", + "volume" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define metadata" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "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', 'ContinuousMeasurement', 'ClassificationMeasurement'}, discriminator_value_class_map={}), name='band')], bbox=SpatialPartition2D(lower_right_coordinate=Coordinate2D(x=180.0, y=-90.0), upper_left_coordinate=Coordinate2D(x=-180.0, y=90.0)), data_type=, resolution=SpatialResolution(x=0.1, y=0.1), spatial_reference='EPSG:4326', time=None), time=None, type='GdalStatic')" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "file_path = \"raster/landcover/landcover.tif\" # specify file path relative to volume path\n", "\n", @@ -174,16 +202,16 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "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=['LinearGradient', 'LogarithmicGradient', 'PaletteColorizer'], discriminator_value_class_map={}), type='singleBand'), one_of_schemas=['MultiBandRasterColorizer', 'SingleBandRasterColorizer'], discriminator_value_class_map={}), type='raster'), one_of_schemas=['LineSymbology', 'PointSymbology', 'PolygonSymbology', 'RasterSymbology'], 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={'LogarithmicGradient', 'LinearGradient', 'PaletteColorizer'}, discriminator_value_class_map={}), type='singleBand'), one_of_schemas={'SingleBandRasterColorizer', 'MultiBandRasterColorizer'}, discriminator_value_class_map={}), type='raster'), one_of_schemas={'RasterSymbology', 'PointSymbology', 'PolygonSymbology', 'LineSymbology'}, discriminator_value_class_map={}), tags=None)" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -232,7 +260,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -241,16 +269,14 @@ "MCD12C1" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "volume = volumes[0]\n", - "\n", "dataset_name = ge.add_dataset(\n", - " volumes[0],\n", + " volume,\n", " add_dataset_properties,\n", " geoengine_openapi_client.MetaDataDefinition(\n", " meta_data,\n", @@ -270,16 +296,16 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[]" + "" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -298,7 +324,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -310,7 +336,7 @@ " band: Land Cover (0: Water Bodies, 1: Evergreen Needleleaf Forests, 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, 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)" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -344,30 +370,30 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/home/droenner/git/geoengine-python2/env/lib/python3.10/site-packages/owslib/coverage/wcs110.py:85: FutureWarning: The behavior of this method will change in future versions. Use specific 'len(elem)' or 'elem is not None' test instead.\n", + "/home/droenner/git/geoengine-python2/env/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": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAHHCAYAAACC1TOGAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAR6xJREFUeJzt3XlcVdXeP/DPAeEwHkSmA1dG82I4gGESak5xQS+a3jStzHD4qSlmiteBWwJaSg6PUo7Zk2hdK691NTOjCOfECYccEodQSQWyFASV6azfH+Z5OgIynH3Y++Dn/XqtV561917ru8Dg61pr760SQggQERERycBC7gCIiIjo0cVEhIiIiGTDRISIiIhkw0SEiIiIZMNEhIiIiGTDRISIiIhkw0SEiIiIZMNEhIiIiGTDRISIiIhkw0SEFCUpKQkqlQrXr1+XOxS9tWvXQqVS4eLFi3KH0qTs3LkTKpUKO3furPe19/+eyGHhwoUICAiApaUlQkJCZImBqClhIkKkQMXFxUhMTESfPn3QokULqFQqrF27Vu6wGmTFihVmG/uDvvvuO0yfPh1du3ZFamoq5s2b12h937x5E2PHjoWbmxvs7e3Rq1cvHDlypNH6JzKVZnIHQERVXb9+HXPmzIGPjw+Cg4MbNGugFCtWrICrqytGjBhhUN+9e3fcuXMH1tbW8gTWANu3b4eFhQU+/PDDRo1bp9MhOjoax48fx7Rp0+Dq6ooVK1agZ8+eyMrKQuvWrRstFiKpMREhUiBPT09cu3YNWq0Whw8fxpNPPil3SJKzsLCAjY2NrDGUlJTA3t6+zucXFBTA1ta20ZOnzz//HPv27cPGjRsxePBgAMCQIUPw17/+FYmJifjkk08aNR4iKXFphhTp+vXrGDJkCDQaDVxcXPD666/j7t27Buekpqaid+/ecHd3h1qtRlBQEFauXFmlLT8/P/Tr1w979+5F586dYWNjg4CAAHz00UdVzj116hR69+4NW1tbtGzZEm+//TZ0Op3JxlkTtVoNrVYrebtLly5F27ZtYWdnB2dnZ3Tq1Mngl9j9vRdnzpyR5Ovv5+eHU6dOYdeuXVCpVFCpVOjZsyeA6veI7NmzB88//zx8fHygVqvh7e2NKVOm4M6dO0aPfcSIEXBwcMCFCxfw97//HY6Ojhg2bBiAezMOKSkpaNu2LWxsbODh4YFx48bhxo0b+utVKhVSU1NRUlKiH0tjLTl9/vnn8PDwwHPPPaevc3Nzw5AhQ/Dll1+itLS0UeIgMgXOiJAiDRkyBH5+fkhOTsb+/fvx3nvv4caNGwbJw8qVK9G2bVs8++yzaNasGb766itMmDABOp0OsbGxBu2dP38egwcPxujRoxETE4M1a9ZgxIgRCA0NRdu2bQEAeXl56NWrFyoqKjBz5kzY29tj9erVsLW1rVPMpaWluHXrVp3OdXV1reNXQjoffPABJk2ahMGDB+sTix9//BEHDhzASy+9ZHCuVF//lJQUvPbaa3BwcMAbb7wBAPDw8Kgxxo0bN+L27dsYP348XFxccPDgQSxduhS//PILNm7caPTXoKKiAlFRUejWrRsWLVoEOzs7AMC4ceOwdu1ajBw5EpMmTUJOTg6WLVuGo0eP4ocffoCVlRU+/vhjrF69GgcPHsT//u//AgC6dOlSY1+3b9/G7du3a43J0tISzs7ODz3n6NGjeOKJJ2BhYfhvx86dO2P16tU4e/Ys2rdvX2tfRIokiBQkMTFRABDPPvusQf2ECRMEAHH8+HF93e3bt6tcHxUVJQICAgzqfH19BQCxe/dufV1BQYFQq9Vi6tSp+rrJkycLAOLAgQMG5zk5OQkAIicn56Gxp6amCgB1KvVx6NAhAUCkpqbW67oHDRgwQLRt2/ah55ji69+2bVvRo0ePKufu2LFDABA7dux4aJvJyclCpVKJS5cuVYmzPmJiYgQAMXPmTIP6PXv2CABi/fr1BvVpaWlV6mNiYoS9vX2d+rsfY23F19e31rbs7e3FqFGjqtR//fXXAoBIS0urU0xESsQZEVKkB2c0XnvtNaxYsQLbtm1Dhw4dAMBgpqKwsBDl5eXo0aMHvv32WxQWFsLJyUl/PCgoCE8//bT+s5ubGwIDA/Hzzz/r67Zt24annnoKnTt3Njhv2LBhWLFiRa0xR0VFIT09vf6DbSTNmzfHL7/8gkOHDtW650Tqr39d/bnNkpIS3LlzB126dIEQAkePHoWPj0+923zQ+PHjDT5v3LgRTk5O+Nvf/mZw23hoaCgcHBywY8eOKjNGdfHKK6+gW7dutZ5Xlxm3O3fuQK1WV6m/v8dGiqUrIrkwESFFevAugFatWsHCwsLgWR4//PADEhMTkZmZWWUK/MFfhNX9AnN2djbYA3Dp0iWEhYVVOS8wMLBOMXt6esLT07NO58phxowZ+P7779G5c2c89thjiIyMxEsvvYSuXbtWOVfqr39dXb58GQkJCdiyZYvB9+Z+m8Zq1qwZWrZsaVB37tw5FBYWwt3dvdprCgoKGtRXQEAAAgICGnTtg2xtbavdB3J/305dlw+JlIiJCJmFBx9edeHCBTzzzDNo06YNFi9eDG9vb1hbW2Pbtm1YsmRJlQ2mlpaW1bYrhJAsxjt37tT5l6UpNqLW5vHHH0d2dja2bt2KtLQ0fPHFF1ixYgUSEhIwe/bsh15r7Ne/LiorK/G3v/0Nv//+O2bMmIE2bdrA3t4eV65cwYgRIyTZNKxWq6vss9DpdHB3d8f69eurvcbNza1BfRUXF6O4uLjW8ywtLWvt4/5dVA+6X+fl5dWgGImUgIkIKdK5c+fg7++v/3z+/HnodDr4+fkBAL766iuUlpZiy5YtBrMdO3bsaHCfvr6+OHfuXJX67OzsOl2/YcMGjBw5sk7nSpkA1Ye9vT2GDh2KoUOHoqysDM899xzmzp2L+Ph4g1tppfz61/UJqCdOnMDZs2exbt06vPLKK/p6Uy93tWrVCt9//z26du0q6czCokWLak3wgHt/72p7am9ISAj27NkDnU5nkEgdOHAAdnZ2+Otf/2psuESyYSJCirR8+XJERkbqPy9duhQA0LdvXwD/N8Px51/ohYWFSE1NbXCff//735GSkoKDBw/q94n8+uuvNf5L+UFK3yPy22+/wcXFRf/Z2toaQUFB+Oabb1BeXm6QiEj59be3t8fNmzdrja+6NoUQePfdd+syvAYbMmQIVqxYgbfeeqvKk1IrKipQXFyM5s2b17tdKfeIDB48GJ9//jn++9//6p8jcv36dWzcuBH9+/evdv8IkblgIkKKlJOTg2effRZ9+vRBZmYm/v3vf+Oll15CcHAwACAyMhLW1tbo378/xo0bh+LiYnzwwQdwd3evdgq7LqZPn46PP/4Yffr0weuvv66/fdfX1xc//vhjrddLvUdk2bJluHnzJq5evQrg3izEL7/8AuDe5tH7ezDu33aamppa5emlfxYZGQmtVouuXbvCw8MDP/30E5YtW4bo6Gg4OjoanCvl1z80NBQrV67E22+/jcceewzu7u7o3bt3lfjatGmDVq1a4Z///CeuXLkCjUaDL774ospeEan16NED48aNQ3JyMo4dO4bIyEhYWVnh3Llz2LhxI9599139L//6kHKPyODBg/HUU09h5MiROH36tP7JqpWVlXWadSFSNBnv2CGq4v4tj6dPnxaDBw8Wjo6OwtnZWUycOFHcuXPH4NwtW7aIDh06CBsbG+Hn5yfmz58v1qxZU+VWW19fXxEdHV2lrx49elS5rfTHH38UPXr0EDY2NuIvf/mLeOutt8SHH35Yp9t3pXb/tuPqyp9jWbp0aZ1u4Xz//fdF9+7dhYuLi1Cr1aJVq1Zi2rRporCwUH+OKb7+eXl5Ijo6Wjg6OgoA+q95dbfvnj59WkRERAgHBwfh6uoqxowZI44fP17l9uWG3r77sFtvV69eLUJDQ4Wtra1wdHQU7du3F9OnTxdXr16tcxum9Pvvv4vRo0cLFxcXYWdnJ3r06CEOHTokSyxEUlIJIdNiNRFJYsiQIbh48SIOHjxodFtJSUmYPXs2fv31V1keukZEjx4uzRCZMSEEdu7ciX//+99yh0JE1CBMRIjMmEqlavBzLpqKwsLCWh/oJcft0kRUN0xEiMisvf7661i3bt1Dz+EKNJFycY8IEZm106dP6+8sqklEREQjRUPUdOzevRsLFy5EVlYWrl27hk2bNmHgwIEG5/z000+YMWMGdu3ahYqKCgQFBeGLL76o1+sYOCNCRGYtKCgIQUFBcodB1OSUlJQgODgYo0aNwnPPPVfl+IULF9CtWzeMHj0as2fPhkajwalTpwyeSVQXnBEhIiKih1KpVFVmRF544QVYWVnh448/Nqptzog8QKfT4erVq3B0dKzzo6mJiOjRI4TArVu34OXlVeUdRlK6e/cuysrKJGlLCFHld5tara7303l1Oh2+/vprTJ8+HVFRUTh69Cj8/f0RHx9fZfmmLkHRn+Tm5tb4ECkWFhYWFpYHS25ursl+J925c0do3S0li9XBwaFKXWJiYq1xABCbNm3Sf7527ZoAIOzs7MTixYvF0aNHRXJyslCpVGLnzp31GiNnRB5w/1HX3fB3NIOVzNEQEZFSVaAce7GtyisSpFRWVoa8gkpcyvKDxtG4WZeiWzr4hl5Ebm4uNBqNvr4h7yq6/zbsAQMGYMqUKQDuvZxx3759WLVqFXr06FHntpiIPOD+lFUzWKGZiokIERHVQNz7T2Ms4zs4quDgaFw/Oty7XqPRGCQiDeHq6opmzZpV2Sj++OOPY+/evfVqi4kIERGRwlUKHSqF8W1IxdraGk8++SSys7MN6s+ePQtfX996tcVEhIiISOF0ENDBuEykvtcXFxfj/Pnz+s85OTk4duwYWrRoAR8fH0ybNg1Dhw5F9+7d0atXL6SlpeGrr77Czp0769UPExEiIiKq4vDhw+jVq5f+c1xcHAAgJiYGa9euxT/+8Q+sWrUKycnJmDRpEgIDA/HFF1+gW7du9eqHiQgREZHC6aCDsQsr9W2hZ8+etb4eYdSoURg1apQxYTERISIiUrpKIVBp5PNHjb3eVEz3BBYiIiKiWnBGhIiISOHk2KzaWJiIEBERKZwOApVNNBHh0gwRERHJhjMiRERECselGSIiIpIN75ohIiIiMgHOiBARESmc7o9ibBtKZDYzIpWVlZg1axb8/f1ha2uLVq1a4a233jJ46psQAgkJCfD09IStrS0iIiJw7tw5GaMmIiIyXuUfd80YW5TIbBKR+fPnY+XKlVi2bBl++uknzJ8/HwsWLMDSpUv15yxYsADvvfceVq1ahQMHDsDe3h5RUVG4e/eujJETEREZp1JIU5TIbJZm9u3bhwEDBiA6OhoA4Ofnh08//RQHDx4EcG82JCUlBW+++SYGDBgAAPjoo4/g4eGBzZs344UXXpAtdiIiIqqe2cyIdOnSBRkZGTh79iwA4Pjx49i7dy/69u0L4N7rifPy8hAREaG/xsnJCWFhYcjMzJQlZiIiIinoJCpKZDYzIjNnzkRRURHatGkDS0tLVFZWYu7cuRg2bBgAIC8vDwDg4eFhcJ2Hh4f+WHVKS0tRWlqq/1xUVGSC6ImIiBpOBxUqoTK6DSUymxmR//znP1i/fj0++eQTHDlyBOvWrcOiRYuwbt06o9pNTk6Gk5OTvnh7e0sUMREREdXGbBKRadOmYebMmXjhhRfQvn17DB8+HFOmTEFycjIAQKvVAgDy8/MNrsvPz9cfq058fDwKCwv1JTc313SDICIiagCdkKYokdkszdy+fRsWFoZ5k6WlJXS6e6te/v7+0Gq1yMjIQEhICIB7yywHDhzA+PHja2xXrVZDrVabLG65/PJFO5P30XLQSZP3sezSDybvY+DhcSZtf3On903aPgBM9O1q8j6aim+vHjdp+1FewSZtHwAuz+5i8j4s2pl+mboxfoY0FZUSLM0Ye72pmE0i0r9/f8ydOxc+Pj5o27Ytjh49isWLF2PUqFEAAJVKhcmTJ+Ptt99G69at4e/vj1mzZsHLywsDBw6UN3giIiKqltkkIkuXLsWsWbMwYcIEFBQUwMvLC+PGjUNCQoL+nOnTp6OkpARjx47FzZs30a1bN6SlpcHGxkbGyImIiIzDGREFcHR0REpKClJSUmo8R6VSYc6cOZgzZ07jBUZERGRiOqGCThh514yR15uK2WxWJSIioqbHbGZEiIiIHlVcmiEiIiLZVMIClUYuYlRKFIvUmIgQEREpnJBgj4jgHhEiIiIiQ5wRISIiUjjuESEiIiLZVAoLVAoj94go9BHvXJohIiIi2XBGhIiISOF0UEFn5NyBDsqcEmEiQkREpHBNeY8Il2aIiIhINpwRISIiUjhpNqtyaYaIiIga4N4eESNfeselGSIiIiJDnBEhIiJSOJ0E75pR6l0znBEhIiJSuPt7RIwt9bF79270798fXl5eUKlU2Lx5c43nvvrqq1CpVEhJSan32JiIEBERKZwOFpKU+igpKUFwcDCWL1/+0PM2bdqE/fv3w8vLq0Fj49IMERERVdG3b1/07dv3oedcuXIFr732Gr799ltER0c3qB8mIkRERApXKVSoFEY+0OyP64uKigzq1Wo11Gp1vdvT6XQYPnw4pk2bhrZt2zY4LiYiMriQ8pTJ+wic8LPJ+/h5dheT9zHR1+RdoCVOmrT9iehq0vYbyy9ftDN5H/ZfO5q8j+iO7iZt/0JKgEnbv0dn+h6KbEzeR2P8ndKd1Jis7cq7d4F5X5qsfYO+JNisWvnHZlVvb2+D+sTERCQlJdW7vfnz56NZs2aYNGmSUXExESEiInqE5ObmQqP5vwStIbMhWVlZePfdd3HkyBGoVMbN1HCzKhERkcLphIUkBQA0Go1BaUgismfPHhQUFMDHxwfNmjVDs2bNcOnSJUydOhV+fn71aoszIkRERAon5dKMFIYPH46IiAiDuqioKAwfPhwjR46sV1tMRIiIiKiK4uJinD9/Xv85JycHx44dQ4sWLeDj4wMXFxeD862srKDVahEYGFivfpiIEBERKZwOMPqumfpucT58+DB69eql/xwXFwcAiImJwdq1a42K5c+YiBARESlcQx5IVl0b9dGzZ0+Ieryx9+LFi/WM6B5uViUiIiLZcEaEiIhI4Rryrpjq2lAiJiJEREQKp4MKOhi7R8S4602FiQgREZHCNeUZEWVGVYMrV67g5ZdfhouLC2xtbdG+fXscPnxYf1wIgYSEBHh6esLW1hYRERE4d+6cjBETERHRw5hNInLjxg107doVVlZW+Oabb3D69Gn8z//8D5ydnfXnLFiwAO+99x5WrVqFAwcOwN7eHlFRUbh7966MkRMRERnn/gPNjC1KZDZLM/Pnz4e3tzdSU1P1df7+/vo/CyGQkpKCN998EwMGDAAAfPTRR/Dw8MDmzZvxwgsvNHrMREREUtAJFXTGPkfEyOtNRZnpUTW2bNmCTp064fnnn4e7uzs6duyIDz74QH88JycHeXl5Bo+cdXJyQlhYGDIzM+UImYiIiGphNonIzz//jJUrV6J169b49ttvMX78eEyaNAnr1q0DAOTl5QEAPDw8DK7z8PDQH6tOaWkpioqKDAoREZGS6CRYljH2gWimYjZLMzqdDp06dcK8efMAAB07dsTJkyexatUqxMTENLjd5ORkzJ49W6owiYiIJPfnt+ca04YSKTOqanh6eiIoKMig7vHHH8fly5cBAFqtFgCQn59vcE5+fr7+WHXi4+NRWFioL7m5uRJHTkRERDUxm0Ska9euyM7ONqg7e/YsfH19AdzbuKrVapGRkaE/XlRUhAMHDiA8PLzGdtVqNTQajUEhIiJSkkqoJClKZDZLM1OmTEGXLl0wb948DBkyBAcPHsTq1auxevVqAIBKpcLkyZPx9ttvo3Xr1vD398esWbPg5eWFgQMHyhs8ERGREZry0ozZJCJPPvkkNm3ahPj4eMyZMwf+/v5ISUnBsGHD9OdMnz4dJSUlGDt2LG7evIlu3bohLS0NNjY2MkZORERENTGbRAQA+vXrh379+tV4XKVSYc6cOZgzZ04jRkVERGRalYDRSyuV0oQiObNKRIiIiB5FXJohSbWavN/kfXx99bjJ+xh52fSPzt+PLibvo9xJZ9L2G+P73Rjsv3Y0eR9tx54yeR8Ho31M2r4axSZtv7GU5jqYvI+WI0+avA9TqhDluNBIffGld0REREQmwBkRIiIihRNQQWfkHhHB23eJiIioIbg0Q0RERGQCnBEhIiJSOJ1QQSeMW1ox9npTYSJCRESkcPffoGtsG0qkzKiIiIjokcAZESIiIoXj0gwRERHJRgcL6IxcxDD2elNRZlRERET0SOCMCBERkcJVChUqjVxaMfZ6U2EiQkREpHDcI0JERESyERK8fVfwyapEREREhjgjQkREpHCVUKHSyJfWGXu9qTARISIiUjidMH6Ph05IFIzEuDRDREREsuGMCBERkcLpJNisauz1pqLMqIiIiEhPB5UkpT52796N/v37w8vLCyqVCps3b9YfKy8vx4wZM9C+fXvY29vDy8sLr7zyCq5evVrvsTERISIioipKSkoQHByM5cuXVzl2+/ZtHDlyBLNmzcKRI0fw3//+F9nZ2Xj22Wfr3Q+XZoiIiBROjier9u3bF3379q32mJOTE9LT0w3qli1bhs6dO+Py5cvw8fGpcz9MRIiIiBTOHPaIFBYWQqVSoXnz5vW6jokIERHRI6SoqMjgs1qthlqtNqrNu3fvYsaMGXjxxReh0WjqdS0TkSYquuPfTN7HxRXuJu/D7Vilyfuw3XTA5H00Bc5rMk3fydj6/QBriFPh603eR1MQNShY7hDoT3SQ4F0zf2xW9fb2NqhPTExEUlJSg9stLy/HkCFDIITAypUr6309ExEiIiKFEw2466W6NgAgNzfXYNbCmNmQ+0nIpUuXsH379nrPhgBMRIiIiBRPyrfvajSaBiUMD7qfhJw7dw47duyAi4tLg9phIkJERERVFBcX4/z58/rPOTk5OHbsGFq0aAFPT08MHjwYR44cwdatW1FZWYm8vDwAQIsWLWBtbV3nfpiIEBERKZwcd80cPnwYvXr10n+Oi4sDAMTExCApKQlbtmwBAISEhBhct2PHDvTs2bPO/ZjtA83eeecdqFQqTJ48WV939+5dxMbGwsXFBQ4ODhg0aBDy8/PlC5KIiEgC95dmjC310bNnTwghqpS1a9fCz8+v2mNCiHolIYCZJiKHDh3C+++/jw4dOhjUT5kyBV999RU2btyIXbt24erVq3juuedkipKIiIhqY3aJSHFxMYYNG4YPPvgAzs7O+vrCwkJ8+OGHWLx4MXr37o3Q0FCkpqZi37592L9/v4wRExERGUeOd800FrNLRGJjYxEdHY2IiAiD+qysLJSXlxvUt2nTBj4+PsjMbITnHxAREZmIHEszjcWsNqt+9tlnOHLkCA4dOlTlWF5eHqytras8WtbDw0O/k7c6paWlKC0t1X9+8IlzREREZDpmMyOSm5uL119/HevXr4eNjY1k7SYnJ8PJyUlfHnziHBERkdya8oyI2SQiWVlZKCgowBNPPIFmzZqhWbNm2LVrF9577z00a9YMHh4eKCsrw82bNw2uy8/Ph1arrbHd+Ph4FBYW6ktubq6JR0JERFQ/TTkRMZulmWeeeQYnTpwwqBs5ciTatGmDGTNmwNvbG1ZWVsjIyMCgQYMAANnZ2bh8+TLCw8NrbFeKl/0QERFRw5hNIuLo6Ih27doZ1Nnb28PFxUVfP3r0aMTFxaFFixbQaDR47bXXEB4ejqeeekqOkImIiCQh5SPelcZsEpG6WLJkCSwsLDBo0CCUlpYiKioKK1askDssIiIiowhAgpfeKZNZJyI7d+40+GxjY4Ply5dj+fLl8gRERERkAk15RsRsNqsSERFR02PWMyJERESPgqY8I8JEhIiISOGaciLCpRkiIiKSDWdEiIiIFK4pz4gwESEiIlI4IVQQRiYSxl5vKlyaISIiItlwRqSJqsgvaIRe3E3eg+2mAybvoyn49upxuUOgP4y8/LTJ+9izP8jkfbTCfpP3QXWng8roB5oZe72pMBEhIiJSuKa8R4RLM0RERCQbzogQEREpXFPerMpEhIiISOGa8tIMExEiIiKFa8ozItwjQkRERLLhjAgREZHCCQmWZpQ6I8JEhIiISOEEACGMb0OJuDRDREREsuGMCBERkcLpoIKKT1YlIiIiOfCuGSIiIiIT4IwIERGRwumECio+0IyIiIjkIIQEd80o9LYZLs0QERGRbDgjQkREpHBNebMqExEiIiKFa8qJCJdmiIiIFO7+23eNLfWxe/du9O/fH15eXlCpVNi8ebPBcSEEEhIS4OnpCVtbW0RERODcuXP1HhsTESIiIqqipKQEwcHBWL58ebXHFyxYgPfeew+rVq3CgQMHYG9vj6ioKNy9e7de/XBphoiISOHkuGumb9++6Nu3bw1tCaSkpODNN9/EgAEDAAAfffQRPDw8sHnzZrzwwgt17oczIkRERAp3LxFRGVmkiycnJwd5eXmIiIjQ1zk5OSEsLAyZmZn1aoszIkRERI+QoqIig89qtRpqtbpebeTl5QEAPDw8DOo9PDz0x+qKiQg1WMtBJ+UOgf7QNnOYyfs4Fb7e5H00hiivYJO277XfpM0DAJ5+6rTJ+7hq8h6oPqS8a8bb29ugPjExEUlJSUa1bQyzWZpJTk7Gk08+CUdHR7i7u2PgwIHIzs42OOfu3buIjY2Fi4sLHBwcMGjQIOTn58sUMRERkTSERAUAcnNzUVhYqC/x8fH1jker1QJAld+x+fn5+mN1ZTaJyK5duxAbG4v9+/cjPT0d5eXliIyMRElJif6cKVOm4KuvvsLGjRuxa9cuXL16Fc8995yMURMRESmLRqMxKPVdlgEAf39/aLVaZGRk6OuKiopw4MABhIeH16sts1maSUtLM/i8du1auLu7IysrC927d0dhYSE+/PBDfPLJJ+jduzcAIDU1FY8//jj279+Pp556So6wiYiIjCbHA82Ki4tx/vx5/eecnBwcO3YMLVq0gI+PDyZPnoy3334brVu3hr+/P2bNmgUvLy8MHDiwXv2YTSLyoMLCQgBAixYtAABZWVkoLy832MHbpk0b+Pj4IDMzs8ZEpLS0FKWlpfrPD27iISIikt2f11aMaaMeDh8+jF69euk/x8XFAQBiYmKwdu1aTJ8+HSUlJRg7dixu3ryJbt26IS0tDTY2NvXqxywTEZ1Oh8mTJ6Nr165o164dgHs7eK2trdG8eXODc2vbwZucnIzZs2ebMlwiIiLjSDAjgnpe37NnT4iH3POrUqkwZ84czJkzx6iwzGaPyJ/Fxsbi5MmT+Oyzz4xuKz4+3mDTTm5urgQREhERUV2Y3YzIxIkTsXXrVuzevRstW7bU12u1WpSVleHmzZsGsyK17eBtyP3TREREjUmOJ6s2FrOZERFCYOLEidi0aRO2b98Of39/g+OhoaGwsrIy2MGbnZ2Ny5cv13sHLxERkZIY/1RVCZZ2TMRsZkRiY2PxySef4Msvv4Sjo6N+34eTkxNsbW3h5OSE0aNHIy4uDi1atIBGo8Frr72G8PBw3jFDRESkUGaTiKxcuRLAvc0zf5aamooRI0YAAJYsWQILCwsMGjQIpaWliIqKwooVKxo5UiIiIokJVb03m1bbhgKZTSLysJ2799nY2GD58uU1vrKYiIjIHHGPCBEREZEJmM2MCBER0SNLhgeaNRYmIkRERAonxyPeGwuXZoiIiEg2nBEhIiIyBwpdWjEWExEiIiKFa8pLM0xEiIiIlK4Jb1blHhEiIiKSDWdEiIiIFE/1RzG2DeVhIkJERKR0XJohIiIikh5nROiRdyHFtG9nbjV5v0nbB4CWg06avI+A1NEm76MxtMZhk7Z/9akik7YPAJbtAk3eB2D6cVA9NOEZESYiRERESteE377LpRkiIiKSDWdEiIiIFE6Ie8XYNpSIiQgREZHSNeE9IlyaISIiItlwRoSIiEjpmvBmVSYiRERECqcS94qxbSgRExEiIiKl4x4RIiIiIulxRoSIiEjpuEeEiIiIZMOlGSIiIiLpcUaEiIhI6ZrwjAgTESIiIqVrwokIl2aIiIhINpwRISIiUjreNUNERERyacpPVuXSDBEREcmmSSYiy5cvh5+fH2xsbBAWFoaDBw/KHRIREVHDCYlKHVVWVmLWrFnw9/eHra0tWrVqhbfeegtCSD+tUu9EJCYmBrt375Y8EKls2LABcXFxSExMxJEjRxAcHIyoqCgUFBTIHRoREZFZmD9/PlauXIlly5bhp59+wvz587FgwQIsXbpU8r7qnYgUFhYiIiICrVu3xrx583DlyhXJgzLG4sWLMWbMGIwcORJBQUFYtWoV7OzssGbNGrlDIyIiahAV/m+fSINLPfrbt28fBgwYgOjoaPj5+WHw4MGIjIw0yQpDvRORzZs348qVKxg/fjw2bNgAPz8/9O3bF59//jnKy8slD7A+ysrKkJWVhYiICH2dhYUFIiIikJmZWe01paWlKCoqMihERERN1YO/80pLS6uc06VLF2RkZODs2bMAgOPHj2Pv3r3o27ev5PE06K4ZNzc3xMXFIS4uDkeOHEFqaiqGDx8OBwcHvPzyy5gwYQJat24tday1un79OiorK+Hh4WFQ7+HhgTNnzlR7TXJyMmbPnt0Y4VEDnEvtZPI+2vzPDZO2X2nS1htP65GHTd5HY3y/m4LKk9lyhyAJy3aBJu+jqXytpLx919vb26A6MTERSUlJBnUzZ85EUVER2rRpA0tLS1RWVmLu3LkYNmyYcTFUw6jNqteuXUN6ejrS09NhaWmJv//97zhx4gSCgoKwZMkSqWI0qfj4eBQWFupLbm6u3CEREREZknCzam5ursHvvfj4+Crd/ec//8H69evxySef4MiRI1i3bh0WLVqEdevWST60es+IlJeXY8uWLUhNTcV3332HDh06YPLkyXjppZeg0WgAAJs2bcKoUaMwZcoUyQN+GFdXV1haWiI/P9+gPj8/H1qtttpr1Go11Gp1Y4RHREQkO41Go/99XZNp06Zh5syZeOGFFwAA7du3x6VLl5CcnIyYmBhJ46l3IuLp6QmdTocXX3wRBw8eREhISJVzevXqhebNm0sQXv1YW1sjNDQUGRkZGDhwIABAp9MhIyMDEydObPR4iIiIJNHI75q5ffs2LCwMF00sLS2h0+mMDKKqeiciS5YswfPPPw8bG5saz2nevDlycnKMCqyh4uLiEBMTg06dOqFz585ISUlBSUkJRo4cKUs8RERExmrsJ6v2798fc+fOhY+PD9q2bYujR49i8eLFGDVqlHFBVKPeicjw4cMlD0JKQ4cOxa+//oqEhATk5eUhJCQEaWlpVTawEhERUfWWLl2KWbNmYcKECSgoKICXlxfGjRuHhIQEyftqku+amThxIpdiiIio6WjkpRlHR0ekpKQgJSXFyE5r1yQTESIioialkRORxtQk3zVDRERE5oEzIkRERArX2JtVGxMTESIiIqWT8MmqSsNEhIiISOm4R4SIiIhIepwRISIiUjjuESEiIiL5cGmGiIiISHqcESEiIlI6CZZmlDojwkSEiIhI6bg0Q0RERCQ9zogQEREpXROeEWEiQkREpHBN+fZdLs0QERGRbJiIEBERkWy4NEOK1nrkYZP3UfyPMJO2b3vSpM0Tma3Kk9lyh2A+uEeEiIiI5MI9IkREREQmwBkRIiIic6DQGQ1jMREhIiJSuia8R4RLM0RERCQbzogQEREpXFPerMpEhIiISOm4NENEREQkPc6IEBERKRyXZoiIiEg+XJohIiIikh5nRIiIiJSuCc+IMBEhIiJSuKa8R8QslmYuXryI0aNHw9/fH7a2tmjVqhUSExNRVlZmcN6PP/6Ip59+GjY2NvD29saCBQtkipiIiEhCQqKiQGYxI3LmzBnodDq8//77eOyxx3Dy5EmMGTMGJSUlWLRoEQCgqKgIkZGRiIiIwKpVq3DixAmMGjUKzZs3x9ixY2UeAREREVXHLBKRPn36oE+fPvrPAQEByM7OxsqVK/WJyPr161FWVoY1a9bA2toabdu2xbFjx7B48WImIkREZN6a8B4Rs1iaqU5hYSFatGih/5yZmYnu3bvD2tpaXxcVFYXs7GzcuHGjxnZKS0tRVFRkUIiIiJTk/h4RY4sSmWUicv78eSxduhTjxo3T1+Xl5cHDw8PgvPuf8/LyamwrOTkZTk5O+uLt7W2aoImIiKgKWRORmTNnQqVSPbScOXPG4JorV66gT58+eP755zFmzBijY4iPj0dhYaG+5ObmGt0mERGRpGTYrHrlyhW8/PLLcHFxga2tLdq3b4/Dhw9LMpw/k3WPyNSpUzFixIiHnhMQEKD/89WrV9GrVy906dIFq1evNjhPq9UiPz/foO7+Z61WW2P7arUaarW6npETERE1nsa+fffGjRvo2rUrevXqhW+++QZubm44d+4cnJ2djQuiGrImIm5ubnBzc6vTuVeuXEGvXr0QGhqK1NRUWFgYTuaEh4fjjTfeQHl5OaysrAAA6enpCAwMNMkXjoiIqKmaP38+vL29kZqaqq/z9/c3SV9msUfkypUr6NmzJ3x8fLBo0SL8+uuvyMvLM9j78dJLL8Ha2hqjR4/GqVOnsGHDBrz77ruIi4uTMXIiIiIJSLg08+ANGqWlpVW627JlCzp16oTnn38e7u7u6NixIz744AOTDM0sbt9NT0/H+fPncf78ebRs2dLgmBD3vrJOTk747rvvEBsbi9DQULi6uiIhIYG37lKtfnm20qTtt95k0uablNYjpV9/poa5PLuL3CFIwidxn9whSEPC23cfvCkjMTERSUlJBnU///wzVq5cibi4OPzrX//CoUOHMGnSJFhbWyMmJsbIQAyZRSIyYsSIWveSAECHDh2wZ88e0wdERERkpnJzc6HRaPSfq9snqdPp0KlTJ8ybNw8A0LFjR5w8eRKrVq2SPBExi6UZIiKiR5lKogIAGo3GoFSXiHh6eiIoKMig7vHHH8fly5clH5tZzIgQERE90hr5yapdu3ZFdna2Qd3Zs2fh6+trZBBVcUaEiIhI4Rr7yapTpkzB/v37MW/ePJw/fx6ffPIJVq9ejdjYWMnHxkSEiIiIDDz55JPYtGkTPv30U7Rr1w5vvfUWUlJSMGzYMMn74tIMERGR0snw0rt+/fqhX79+RnZaOyYiRERE5kChL60zFpdmiIiISDacESEiIlK4xn7XTGNiIkJERKR0MuwRaSxcmiEiIiLZcEaEiIhI4bg0Q0RERPLh0gwRERGR9DgjQkREpHBcmiEiIiL5NOGlGSYiRERESteEExHuESEiIiLZcEaEiIhI4bhHhIiIiOTDpRkiIiIi6XFGhIiISOFUQkAljJvSMPZ6U2EiQo+81iMPyx0CkeL4JO6TOwT6My7NEBEREUmPMyJEREQKx7tmiIiISD5cmiEiIiKSHmdEiIiIFI5LM0RERCSfJrw0w0SEiIhI4ZryjAj3iBAREZFszC4RKS0tRUhICFQqFY4dO2Zw7Mcff8TTTz8NGxsbeHt7Y8GCBfIESUREJCUhUVEgs0tEpk+fDi8vryr1RUVFiIyMhK+vL7KysrBw4UIkJSVh9erVMkRJREQkrfvLMw0tSmVWe0S++eYbfPfdd/jiiy/wzTffGBxbv349ysrKsGbNGlhbW6Nt27Y4duwYFi9ejLFjx8oUMRERET2M2cyI5OfnY8yYMfj4449hZ2dX5XhmZia6d+8Oa2trfV1UVBSys7Nx48aNGtstLS1FUVGRQSEiIlIUIaQpCmQWiYgQAiNGjMCrr76KTp06VXtOXl4ePDw8DOruf87Ly6ux7eTkZDg5OemLt7e3dIETERFJwNhlGSUvz8iaiMycORMqleqh5cyZM1i6dClu3bqF+Ph4yWOIj49HYWGhvuTm5kreBxEREVVP1j0iU6dOxYgRIx56TkBAALZv347MzEyo1WqDY506dcKwYcOwbt06aLVa5OfnGxy//1mr1dbYvlqtrtIuERGRovCBZqbh5uYGNze3Ws9777338Pbbb+s/X716FVFRUdiwYQPCwsIAAOHh4XjjjTdQXl4OKysrAEB6ejoCAwPh7OxsmgEQERE1ApXuXjG2DSUyi7tmfHx8DD47ODgAAFq1aoWWLVsCAF566SXMnj0bo0ePxowZM3Dy5Em8++67WLJkSaPHS0RERHVjFolIXTg5OeG7775DbGwsQkND4erqioSEBN66S0RE5q8JL82YxV0zD/Lz84MQAiEhIQb1HTp0wJ49e3D37l388ssvmDFjhjwBEhERSUjuu2beeecdqFQqTJ48WbIx3ddkZkSIiIiaLCmeA9LA6w8dOoT3338fHTp0MK7/GpjljAgRERGZXnFxMYYNG4YPPvjAZDd+MBEhIiJSOCmXZh58mnhpaWmN/cbGxiI6OhoREREmGxsTESIiIqWT8O273t7eBk8UT05OrrbLzz77DEeOHKnxuFS4R4SIiOgRkpubC41Go/9c3UM9c3Nz8frrryM9PR02NjYmjYeJCBERkcJJ8a6Y+9drNBqDRKQ6WVlZKCgowBNPPKGvq6ysxO7du7Fs2TKUlpbC0tLSuID+wESEiIhI6Rr5rplnnnkGJ06cMKgbOXIk2rRpgxkzZkiWhABMRIiIiOgBjo6OaNeunUGdvb09XFxcqtQbi4kIERGRwkm5NKM0TESIiIiUTgGPeN+5c6eRAVSPt+8SERGRbDgjQkREpHBcmiEiIiL56MS9YmwbCsREhIiISOkUsEfEVLhHhIiIiGTDGREiIiKFU0GCPSKSRCI9JiJERERK18hPVm1MXJohIiIi2XBGhIiISOF4+y4RERHJh3fNEBEREUmPMyJEREQKpxICKiM3mxp7vakwESEiIlI63R/F2DYUiEszREREJBvOiBARESkcl2aIiIhIPk34rhkmIkRERErHJ6sSERERSY8zIkRERArHJ6sSERGRfLg0owxff/01wsLCYGtrC2dnZwwcONDg+OXLlxEdHQ07Ozu4u7tj2rRpqKiokCdYIiIiqpXZzIh88cUXGDNmDObNm4fevXujoqICJ0+e1B+vrKxEdHQ0tFot9u3bh2vXruGVV16BlZUV5s2bJ2PkRERExlHp7hVj21Ais0hEKioq8Prrr2PhwoUYPXq0vj4oKEj/5++++w6nT5/G999/Dw8PD4SEhOCtt97CjBkzkJSUBGtrazlCJyIiMh6XZuR15MgRXLlyBRYWFujYsSM8PT3Rt29fgxmRzMxMtG/fHh4eHvq6qKgoFBUV4dSpUzW2XVpaiqKiIoNCREREjcMsEpGff/4ZAJCUlIQ333wTW7duhbOzM3r27Inff/8dAJCXl2eQhADQf87Ly6ux7eTkZDg5OemLt7e3iUZBRETUQEKiokCyJiIzZ86ESqV6aDlz5gx0unsLW2+88QYGDRqE0NBQpKamQqVSYePGjUbFEB8fj8LCQn3Jzc2VYmhERESSuf+Id2OLEsm6R2Tq1KkYMWLEQ88JCAjAtWvXABjuCVGr1QgICMDly5cBAFqtFgcPHjS4Nj8/X3+sJmq1Gmq1uiHhExERkZFkTUTc3Nzg5uZW63mhoaFQq9XIzs5Gt27dAADl5eW4ePEifH19AQDh4eGYO3cuCgoK4O7uDgBIT0+HRqMxSGCIiIjMThPerGoWd81oNBq8+uqrSExMhLe3N3x9fbFw4UIAwPPPPw8AiIyMRFBQEIYPH44FCxYgLy8Pb775JmJjYznjQURE5k0AMPb2W2XmIeaRiADAwoUL0axZMwwfPhx37txBWFgYtm/fDmdnZwCApaUltm7divHjxyM8PBz29vaIiYnBnDlzZI6ciIjIOFLs8eAeESNZWVlh0aJFWLRoUY3n+Pr6Ytu2bY0YFRERERnDbBIRIiKiR5aABHtEJIlEckxEiIiIlK4Jb1Y1iweaERERUdPEGREiIiKl0wFQSdCGAnFGhIiISOEa+8mqycnJePLJJ+Ho6Ah3d3cMHDgQ2dnZJhkbExEiIiIysGvXLsTGxmL//v1IT09HeXk5IiMjUVJSInlfXJohIiJSukberJqWlmbwee3atXB3d0dWVha6d+9uXBwPYCJCRESkdDLfNVNYWAgAaNGihXExVIOJCBER0SOkqKjI4HNtL3/V6XSYPHkyunbtinbt2kkeDxMRarBll34weR8TfbuavI+moDG+F0TmqMn8DJFwRsTb29ugOjExEUlJSTVeFhsbi5MnT2Lv3r3G9V8DJiJERERKJ+Htu7m5udBoNPrqh82GTJw4EVu3bsXu3bvRsmVLIwOoHhMRIiIihZPypXcajcYgEamOEAKvvfYaNm3ahJ07d8Lf39+ovh+GiQgREREZiI2NxSeffIIvv/wSjo6OyMvLAwA4OTnB1tZW0r74HBEiIiKlu79HxNhSRytXrkRhYSF69uwJT09PfdmwYYPkQ+OMCBERkdLpBKAycrOqru7Xi0Z8QR5nRIiIiEg2nBEhIiJSOpkfaGZKTESIiIgUT4JEBMpMRLg0Q0RERLLhjAgREZHScWmGiIiIZKMTMHpppR53zTQmLs0QERGRbDgjQkREpHRCd68Y24YCMREhIiJSOu4RISIiItlwjwgRERGR9DgjQkREpHRcmiEiIiLZCEiQiEgSieS4NENERESy4YwIERGR0jXhpRmzmRE5e/YsBgwYAFdXV2g0GnTr1g07duwwOOfy5cuIjo6GnZ0d3N3dMW3aNFRUVMgUMRERkUR0OmmKAplNItKvXz9UVFRg+/btyMrKQnBwMPr164e8vDwAQGVlJaKjo1FWVoZ9+/Zh3bp1WLt2LRISEmSOnIiIiGqiEkKhczV/cv36dbi5uWH37t14+umnAQC3bt2CRqNBeno6IiIi8M0336Bfv364evUqPDw8AACrVq3CjBkz8Ouvv8La2rpOfRUVFcHJyQk9MQDNVFYmGc+ySz+YpF0iImo8xbd06NQ2H4WFhdBoNCbp4/7vpAi30WhmUbffYzWp0JXh+18/NGm8DWEWMyIuLi4IDAzERx99hJKSElRUVOD999+Hu7s7QkNDAQCZmZlo3769PgkBgKioKBQVFeHUqVM1tl1aWoqioiKDQkREpCj394gYWxTILDarqlQqfP/99xg4cCAcHR1hYWEBd3d3pKWlwdnZGQCQl5dnkIQA0H++v3xTneTkZMyePdt0wRMREVGNZJ0RmTlzJlQq1UPLmTNnIIRAbGws3N3dsWfPHhw8eBADBw5E//79ce3aNaNiiI+PR2Fhob7k5uZKNDoiIiKJ6IQ0RYFknRGZOnUqRowY8dBzAgICsH37dmzduhU3btzQr2utWLEC6enpWLduHWbOnAmtVouDBw8aXJufnw8A0Gq1NbavVquhVquNGwgREZEJCaGDMPLtucZebyqyJiJubm5wc3Or9bzbt28DACwsDCdwLCwsoPvjdqTw8HDMnTsXBQUFcHd3BwCkp6dDo9EgKChI4siJiIgakZBgRkOhe0TMYrNqeHg4nJ2dERMTg+PHj+Ps2bOYNm0acnJyEB0dDQCIjIxEUFAQhg8fjuPHj+Pbb7/Fm2++idjYWM54EBERKZRZJCKurq5IS0tDcXExevfujU6dOmHv3r348ssvERwcDACwtLTE1q1bYWlpifDwcLz88st45ZVXMGfOHJmjJyIiMhLvmpFfp06d8O233z70HF9fX2zbtq2RIiIiImokOh2gMnKPh0L3iJjFjAgRERE1TWYzI0JERPTIEgJA09ysykSEiIhI4YROB2Hk0oxSb9/l0gwRERHJhjMiRERESselGSIiIpKNTgCqppmIcGmGiIiIZMMZESIiIqUTAoCxzxFR5owIExEiIiKFEzoBYeTSjFBoIsKlGSIiIqUTOmlKPS1fvhx+fn6wsbFBWFhYlbfcS4GJCBEREVWxYcMGxMXFITExEUeOHEFwcDCioqJQUFAgaT9MRIiIiBRO6IQkpT4WL16MMWPGYOTIkQgKCsKqVatgZ2eHNWvWSDo2JiJERERK18hLM2VlZcjKykJERIS+zsLCAhEREcjMzJR0aNys+oD7m3kqUG70s2NqUnxLmY/ZJSKiuisuvvezvDE2gUrxO6kC5QCAoqIig3q1Wg21Wm1Qd/36dVRWVsLDw8Og3sPDA2fOnDEukAcwEXnArVu3AAB7sc1kfXRqa7KmiYiokd26dQtOTk4madva2hparRZ786T5neTg4ABvb2+DusTERCQlJUnSfkMwEXmAl5cXcnNz4ejoCJVKJUsMRUVF8Pb2Rm5uLjQajSwxmArHZp44NvPEsZmWEAK3bt2Cl5eXyfqwsbFBTk4OysrKJGlPCFHld9uDsyEA4OrqCktLS+Tn5xvU5+fnQ6vVShLLfUxEHmBhYYGWLVvKHQYAQKPRNLkfHvdxbOaJYzNPHJvpmGom5M9sbGxgY2Nj8n7+zNraGqGhocjIyMDAgQMBADqdDhkZGZg4caKkfTERISIioiri4uIQExODTp06oXPnzkhJSUFJSQlGjhwpaT9MRIiIiKiKoUOH4tdff0VCQgLy8vIQEhKCtLS0KhtYjcVERIHUajUSExOrXbczdxybeeLYzBPHRsaaOHGi5EsxD1IJpT58noiIiJo8PtCMiIiIZMNEhIiIiGTDRISIiIhkw0SEiIiIZMNEREZz585Fly5dYGdnh+bNm1d7jkqlqlI+++wzg3N27tyJJ554Amq1Go899hjWrl1r+uBrUZexXb58GdHR0bCzs4O7uzumTZuGiooKg3OUOLbq+Pn5Vfk+vfPOOwbn/Pjjj3j66adhY2MDb29vLFiwQKZo62f58uXw8/ODjY0NwsLCcPDgQblDqrekpKQq3582bdroj9+9exexsbFwcXGBg4MDBg0aVOWJkkqye/du9O/fH15eXlCpVNi8ebPBcSEEEhIS4OnpCVtbW0RERODcuXMG5/z+++8YNmwYNBoNmjdvjtGjR6O4uLgRR1G92sY2YsSIKt/LPn36GJyj1LFR9ZiIyKisrAzPP/88xo8f/9DzUlNTce3aNX25/5Q7AMjJyUF0dDR69eqFY8eOYfLkyfh//+//4dtvvzVx9A9X29gqKysRHR2NsrIy7Nu3D+vWrcPatWuRkJCgP0epY6vJnDlzDL5Pr732mv5YUVERIiMj4evri6ysLCxcuBBJSUlYvXq1jBHXbsOGDYiLi0NiYiKOHDmC4OBgREVFoaCgQO7Q6q1t27YG35+9e/fqj02ZMgVfffUVNm7ciF27duHq1at47rnnZIz24UpKShAcHIzly5dXe3zBggV47733sGrVKhw4cAD29vaIiorC3bt39ecMGzYMp06dQnp6OrZu3Yrdu3dj7NixjTWEGtU2NgDo06ePwffy008/NTiu1LFRDQTJLjU1VTg5OVV7DIDYtGlTjddOnz5dtG3b1qBu6NChIioqSsIIG66msW3btk1YWFiIvLw8fd3KlSuFRqMRpaWlQgjlj+3PfH19xZIlS2o8vmLFCuHs7KwfmxBCzJgxQwQGBjZCdA3XuXNnERsbq/9cWVkpvLy8RHJysoxR1V9iYqIIDg6u9tjNmzeFlZWV2Lhxo77up59+EgBEZmZmI0XYcA/+jNDpdEKr1YqFCxfq627evCnUarX49NNPhRBCnD59WgAQhw4d0p/zzTffCJVKJa5cudJosdemup9/MTExYsCAATVeYy5jo//DGREzEBsbC1dXV3Tu3Blr1qwxeOV0ZmYmIiIiDM6PiopCZmZmY4dZL5mZmWjfvr3BE/qioqJQVFSEU6dO6c8xp7G98847cHFxQceOHbFw4UKDZabMzEx0794d1tbW+rqoqChkZ2fjxo0bcoRbq7KyMmRlZRl8DywsLBAREaHY78HDnDt3Dl5eXggICMCwYcNw+fJlAEBWVhbKy8sNxtmmTRv4+PiY5ThzcnKQl5dnMB4nJyeEhYXpx5OZmYnmzZujU6dO+nMiIiJgYWGBAwcONHrM9bVz5064u7sjMDAQ48ePx2+//aY/Zu5jexTxyaoKN2fOHPTu3Rt2dnb47rvvMGHCBBQXF2PSpEkAgLy8vCqP2/Xw8EBRURHu3LkDW1tbOcKuVU1x3z/2sHOUOLZJkybhiSeeQIsWLbBv3z7Ex8fj2rVrWLx4MYB7Y/H39ze45s/jdXZ2bvSYa3P9+nVUVlZW+z04c+aMTFE1TFhYGNauXYvAwEBcu3YNs2fPxtNPP42TJ08iLy8P1tbWVfYyeXh46P8umpP7MVf3ffvz/1vu7u4Gx5s1a4YWLVoofsx9+vTBc889B39/f1y4cAH/+te/0LdvX2RmZsLS0tKsx/aoYiIisZkzZ2L+/PkPPeenn34y2Cj3MLNmzdL/uWPHjigpKcHChQv1iUhjknpsSlef8cbFxenrOnToAGtra4wbNw7Jycl8BLUC9O3bV//nDh06ICwsDL6+vvjPf/6jqISWavfCCy/o/9y+fXt06NABrVq1ws6dO/HMM8/IGBk1FBMRiU2dOhUjRox46DkBAQENbj8sLAxvvfUWSktLoVarodVqq+zuz8/Ph0ajkfwHrJRj02q1Ve6+uD8OrVar/29jja06xow3LCwMFRUVuHjxIgIDA2scC/B/41UaV1dXWFpaVhu3UmOuq+bNm+Ovf/0rzp8/j7/97W8oKyvDzZs3DWZFzHWc92POz8+Hp6envj4/Px8hISH6cx7ccFxRUYHff//d7MYcEBAAV1dXnD9/Hs8880yTGtujgomIxNzc3ODm5may9o8dOwZnZ2f9v7LDw8Oxbds2g3PS09MRHh4ued9Sji08PBxz585FQUGBfho1PT0dGo0GQUFB+nMaa2zVMWa8x44dg4WFhX5s4eHheOONN1BeXg4rKysA98YSGBioyGUZALC2tkZoaCgyMjL0d2rpdDpkZGSY/CVYplZcXIwLFy5g+PDhCA0NhZWVFTIyMjBo0CAAQHZ2Ni5fvtxof9ek5O/vD61Wi4yMDH3iUVRUhAMHDujvYgsPD8fNmzeRlZWF0NBQAMD27duh0+kQFhYmV+gN8ssvv+C3337TJ11NaWyPDLl3yz7KLl26JI4ePSpmz54tHBwcxNGjR8XRo0fFrVu3hBBCbNmyRXzwwQfixIkT4ty5c2LFihXCzs5OJCQk6Nv4+eefhZ2dnZg2bZr46aefxPLly4WlpaVIS0uTa1hCiNrHVlFRIdq1ayciIyPFsWPHRFpamnBzcxPx8fH6NpQ6tgft27dPLFmyRBw7dkxcuHBB/Pvf/xZubm7ilVde0Z9z8+ZN4eHhIYYPHy5OnjwpPvvsM2FnZyfef/99GSOv3WeffSbUarVYu3atOH36tBg7dqxo3ry5wd1O5mDq1Kli586dIicnR/zwww8iIiJCuLq6ioKCAiGEEK+++qrw8fER27dvF4cPHxbh4eEiPDxc5qhrduvWLf3/UwDE4sWLxdGjR8WlS5eEEEK88847onnz5uLLL78UP/74oxgwYIDw9/cXd+7c0bfRp08f0bFjR3HgwAGxd+9e0bp1a/Hiiy/KNSS9h43t1q1b4p///KfIzMwUOTk54vvvvxdPPPGEaN26tbh7966+DaWOjarHRERGMTExAkCVsmPHDiHEvVvOQkJChIODg7C3txfBwcFi1apVorKy0qCdHTt2iJCQEGFtbS0CAgJEampq4w/mAbWNTQghLl68KPr27StsbW2Fq6urmDp1qigvLzdoR4lje1BWVpYICwsTTk5OwsbGRjz++ONi3rx5Bj8YhRDi+PHjolu3bkKtVou//OUv4p133pEp4vpZunSp8PHxEdbW1qJz585i//79codUb0OHDhWenp7C2tpa/OUvfxFDhw4V58+f1x+/c+eOmDBhgnB2dhZ2dnbiH//4h7h27ZqMET/cjh07qv3/KyYmRghx7xbeWbNmCQ8PD6FWq8UzzzwjsrOzDdr47bffxIsvvigcHByERqMRI0eO1P9DQU4PG9vt27dFZGSkcHNzE1ZWVsLX11eMGTOmSmKs1LFR9VRC/OleUCIiIqJGxOeIEBERkWyYiBAREZFsmIgQERGRbJiIEBERkWyYiBAREZFsmIgQERGRbJiIEBERkWyYiBAREZFsmIgQERGRbJiIEBERkWyYiBBRtX799VdotVrMmzdPX7dv3z5YW1sjIyNDxsiIqCnhu2aIqEbbtm3DwIEDsW/fPgQGBiIkJAQDBgzA4sWL5Q6NiJoIJiJE9FCxsbH4/vvv0alTJ5w4cQKHDh2CWq2WOywiaiKYiBDRQ925cwft2rVDbm4usrKy0L59e7lDIqImhHtEiOihLly4gKtXr0Kn0+HixYtyh0NETQxnRIioRmVlZejcuTNCQkIQGBiIlJQUnDhxAu7u7nKHRkRNBBMRIqrRtGnT8Pnnn+P48eNwcHBAjx494OTkhK1bt8odGhE1EVyaIaJq7dy5EykpKfj444+h0WhgYWGBjz/+GHv27MHKlSvlDo+ImgjOiBAREZFsOCNCREREsmEiQkRERLJhIkJERESyYSJCREREsmEiQkRERLJhIkJERESyYSJCREREsmEiQkRERLJhIkJERESyYSJCREREsmEiQkRERLJhIkJERESy+f+UwuMMMGgHiwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -400,7 +426,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -420,7 +446,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -434,7 +460,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/droenner/git/geoengine-python2/env/lib/python3.10/site-packages/owslib/coverage/wcs110.py:85: FutureWarning: The behavior of this method will change in future versions. Use specific 'len(elem)' or 'elem is not None' test instead.\n", + "/home/droenner/git/geoengine-python2/env/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" ] } @@ -469,7 +495,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.3" }, "orig_nbformat": 4, "vscode": { diff --git a/examples/add_public_vector_dataset.ipynb b/examples/add_public_vector_dataset.ipynb index f97481a4..aa7c9b80 100644 --- a/examples/add_public_vector_dataset.ipynb +++ b/examples/add_public_vector_dataset.ipynb @@ -68,11 +68,10 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - " Define metadata" + "Select volume" ] }, { @@ -83,7 +82,7 @@ { "data": { "text/plain": [ - "MetaDataDefinition(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, oneof_schema_5_validator=None, oneof_schema_6_validator=None, actual_instance=OgrMetaData(loading_info=OgrSourceDataset(attribute_query=None, cache_ttl=None, columns=OgrSourceColumnSpec(bool=None, datetime=None, float=[], format_specifics=None, int=[], rename=None, text=[], x='', y=''), data_type=, default_geometry=None, file_name='vector/data/germany_polygon.gpkg', force_ogr_spatial_filter=None, force_ogr_time_filter=None, layer_name='test_germany', on_error=, sql_query=None, time=OgrSourceDatasetTimeType(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=OgrSourceDatasetTimeTypeNone(type='none'), one_of_schemas=['OgrSourceDatasetTimeTypeNone', 'OgrSourceDatasetTimeTypeStart', 'OgrSourceDatasetTimeTypeStartDuration', 'OgrSourceDatasetTimeTypeStartEnd'], discriminator_value_class_map={})), result_descriptor=VectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=5.85249, y=47.271121), upper_right_coordinate=Coordinate2D(x=15.022059, y=55.065334)), columns={}, data_type=, spatial_reference='EPSG:4326', time=None), type='OgrMetaData'), one_of_schemas=['GdalMetaDataList', 'GdalMetaDataRegular', 'GdalMetaDataStatic', 'GdalMetadataNetCdfCf', 'MockMetaData', 'OgrMetaData'], discriminator_value_class_map={})" + "Volume(name='test_data', path='test_data/')" ] }, "execution_count": 4, @@ -91,6 +90,35 @@ "output_type": "execute_result" } ], + "source": [ + "volume = ge.volume_by_name(\"test_data\")\n", + "volume" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + " Define metadata" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "MetaDataDefinition(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, oneof_schema_5_validator=None, oneof_schema_6_validator=None, actual_instance=OgrMetaData(loading_info=OgrSourceDataset(attribute_query=None, cache_ttl=None, columns=OgrSourceColumnSpec(bool=None, datetime=None, var_float=[], format_specifics=None, int=[], rename=None, text=[], x='', y=''), data_type=, default_geometry=None, file_name='vector/data/germany_polygon.gpkg', force_ogr_spatial_filter=None, force_ogr_time_filter=None, layer_name='test_germany', on_error=, sql_query=None, time=OgrSourceDatasetTimeType(oneof_schema_1_validator=None, oneof_schema_2_validator=None, oneof_schema_3_validator=None, oneof_schema_4_validator=None, actual_instance=OgrSourceDatasetTimeTypeNone(type='none'), one_of_schemas={'OgrSourceDatasetTimeTypeNone', 'OgrSourceDatasetTimeTypeStartDuration', 'OgrSourceDatasetTimeTypeStartEnd', 'OgrSourceDatasetTimeTypeStart'}, discriminator_value_class_map={})), result_descriptor=VectorResultDescriptor(bbox=BoundingBox2D(lower_left_coordinate=Coordinate2D(x=5.85249, y=47.271121), upper_right_coordinate=Coordinate2D(x=15.022059, y=55.065334)), columns={}, data_type=, spatial_reference='EPSG:4326', time=None), type='OgrMetaData'), one_of_schemas={'GdalMetaDataList', 'GdalMetaDataStatic', 'GdalMetadataNetCdfCf', 'GdalMetaDataRegular', 'OgrMetaData', 'MockMetaData'}, discriminator_value_class_map={})" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "file_path = \"vector/data/germany_polygon.gpkg\" # specify file path relative to volume path\n", "\n", @@ -132,7 +160,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -141,7 +169,7 @@ "AddDataset(description='Germany polygon for testing purposes', display_name='Germany Polygon', name='germany_polygon', provenance=[Provenance(citation='Geo Engine et.al (2023)', license='TODO', uri='TODO')], source_operator='OgrSource', symbology=None, tags=None)" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -175,7 +203,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -184,14 +212,12 @@ "germany_polygon" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "volume = [v for v in volumes if v.name == \"test_data\"][0] # this is the \"test_data\" volume\n", - "\n", "dataset_name = ge.add_dataset(volume, add_dataset_properties, meta_data)\n", "\n", "dataset_name" @@ -207,7 +233,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -218,7 +244,7 @@ "Columns:" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -255,7 +281,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -264,13 +290,13 @@ "" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -304,7 +330,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -324,7 +350,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -366,7 +392,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.3" }, "orig_nbformat": 4, "vscode": { diff --git a/geoengine/__init__.py b/geoengine/__init__.py index 41278829..0715d74a 100644 --- a/geoengine/__init__.py +++ b/geoengine/__init__.py @@ -33,9 +33,11 @@ add_dataset, add_or_replace_dataset_with_permissions, dataset_info_by_name, + dataset_metadata_by_name, delete_dataset, list_datasets, upload_dataframe, + volume_by_name, volumes, ) from .error import ( diff --git a/geoengine/datasets.py b/geoengine/datasets.py index e7663c1b..6591da77 100644 --- a/geoengine/datasets.py +++ b/geoengine/datasets.py @@ -6,6 +6,7 @@ import tempfile from abc import abstractmethod +from collections.abc import Iterator from enum import Enum from pathlib import Path from typing import Literal, NamedTuple @@ -286,7 +287,8 @@ class AddDatasetProperties: name: str | None display_name: str description: str - source_operator: Literal["GdalSource", "OgrSource"] # TODO: add more operators + # TODO: add more operators + source_operator: Literal["GdalSource", "OgrSource"] symbology: RasterSymbology | None # TODO: add vector symbology if needed provenance: list[Provenance] | None @@ -537,6 +539,20 @@ def volumes(timeout: int = 60) -> list[Volume]: return [Volume.from_response(v) for v in response] +def volume_by_name(volume_name: str, timeout: int = 60) -> Volume | None: + """Returns a volume with the specified name or None if none exists""" + vols = volumes(timeout) + vols = [v for v in vols if v.name == volume_name] + + if len(vols) == 0: + return None + + if len(vols) > 1: + raise KeyError(f"Volume name {volume_name} is not unique") + + return vols[0] + + def add_dataset( data_store: Volume | UploadId, properties: AddDatasetProperties, @@ -619,7 +635,7 @@ class DatasetListOrder(Enum): NAME_DESC = "NameDesc" -def list_datasets( +def list_datasets_page( offset: int = 0, limit: int = 20, order: DatasetListOrder = DatasetListOrder.NAME_ASC, @@ -643,6 +659,38 @@ def list_datasets( return response +def list_datasets( + offset: int = 0, + limit: int = 200, + order: DatasetListOrder = DatasetListOrder.NAME_ASC, + name_filter: str | None = None, + timeout: int = 60, +) -> Iterator[geoengine_openapi_client.DatasetListing]: + """List datasets""" + + page_size = 20 + page_count = 0 + + while True: + element_num = page_size * page_count + + if element_num >= limit: + break + + page = list_datasets_page( + element_num + offset, page_size, order=order, name_filter=name_filter, timeout=timeout + ) + page_count += 1 + + if len(page) == 0: + break + + for c, p in enumerate(page): + if element_num + c > limit: + break + yield p + + def dataset_info_by_name( dataset_name: DatasetName | str, timeout: int = 60 ) -> geoengine_openapi_client.models.Dataset | None: @@ -663,3 +711,25 @@ def dataset_info_by_name( if isinstance(e_body, str) and "CannotLoadDataset" not in e_body: raise e return res + + +def dataset_metadata_by_name( + dataset_name: DatasetName | str, timeout: int = 60 +) -> geoengine_openapi_client.models.MetaDataDefinition | None: + """Get dataset information.""" + + if not isinstance(dataset_name, DatasetName): + dataset_name = DatasetName(dataset_name) + + session = get_session() + + with geoengine_openapi_client.ApiClient(session.configuration) as api_client: + datasets_api = geoengine_openapi_client.DatasetsApi(api_client) + res = None + try: + res = datasets_api.get_loading_info_handler(str(dataset_name), _request_timeout=timeout) + except geoengine_openapi_client.exceptions.BadRequestException as e: + e_body = e.body + if isinstance(e_body, str) and "CannotLoadDataset" not in e_body: + raise e + return res diff --git a/tests/test_datasets.py b/tests/test_datasets.py index a5ad6b52..2d34b925 100644 --- a/tests/test_datasets.py +++ b/tests/test_datasets.py @@ -31,6 +31,8 @@ def test_list_datasets(self): offset=0, limit=10, order=ge.DatasetListOrder.NAME_ASC, name_filter="Natural Earth II" ) + datasets = list(datasets) + self.assertEqual(len(datasets), 3) dataset = datasets[0] @@ -48,7 +50,7 @@ def test_add_dataset(self): ge.initialize(ge_instance.address(), credentials=("admin@localhost", "adminadmin")) - volumes = ge.volumes() + volume = ge.volume_by_name("test_data") geo_transform = ge.GeoTransform(x_min=180.0, y_max=90.0, x_pixel_size=0.1, y_pixel_size=-0.1) @@ -71,23 +73,23 @@ def test_add_dataset(self): result_descriptor_measurement = ge.ClassificationMeasurement( measurement="Land Cover", 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", + 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", }, ) @@ -105,6 +107,7 @@ def test_add_dataset(self): "time": None, "params": gdal_params, "resultDescriptor": result_descriptor.to_api_dict().to_dict(), + "cacheTtl": 0, } ) @@ -138,16 +141,28 @@ def test_add_dataset(self): ], ) + metadata_for_api = geoengine_openapi_client.MetaDataDefinition( + meta_data, + ) + dataset_name = ge.add_dataset( - volumes[0], + volume, add_dataset_properties, - geoengine_openapi_client.MetaDataDefinition( - meta_data, - ), + metadata_for_api, ) self.assertEqual(dataset_name, ge.DatasetName("MCD12C1_test")) - self.assertEqual(len(ge.list_datasets(name_filter="Land Cover TEST")), 1) + self.assertEqual(len(list(ge.list_datasets(name_filter="Land Cover TEST"))), 1) + + metadata_from_api = ge.dataset_metadata_by_name(dataset_name) + self.assertEqual( + metadata_from_api.actual_instance.result_descriptor, metadata_for_api.actual_instance.result_descriptor + ) + self.assertTrue( + metadata_from_api.actual_instance.params.file_path.endswith( + metadata_for_api.actual_instance.params.file_path + ) + ) def test_add_dataset_with_permissions(self): """Test `add_datset`.""" @@ -158,7 +173,7 @@ def test_add_dataset_with_permissions(self): ge.initialize(ge_instance.address(), credentials=("admin@localhost", "adminadmin")) - volumes = ge.volumes() + volume = ge.volume_by_name("test_data") geo_transform = ge.GeoTransform(x_min=180.0, y_max=90.0, x_pixel_size=0.1, y_pixel_size=-0.1) @@ -181,23 +196,23 @@ def test_add_dataset_with_permissions(self): result_descriptor_measurement = ge.ClassificationMeasurement( measurement="Land Cover", 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", + 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", }, ) @@ -244,7 +259,7 @@ def test_add_dataset_with_permissions(self): permisions = [(REGISTERED_USER_ROLE_ID, Permission.READ)] dataset_name = ge.add_or_replace_dataset_with_permissions( - volumes[0], + volume, add_dataset_properties, geoengine_openapi_client.MetaDataDefinition( meta_data, @@ -253,7 +268,7 @@ def test_add_dataset_with_permissions(self): ) self.assertEqual(dataset_name, ge.DatasetName("MCD12C1_test")) - self.assertEqual(len(ge.list_datasets(name_filter="Land Cover TEST")), 1) + self.assertEqual(len(list(ge.list_datasets(name_filter="Land Cover TEST"))), 1) dataset_info = ge.dataset_info_by_name(ge.DatasetName("MCD12C1_test")) self.assertEqual(dataset_info.name, "MCD12C1_test") self.assertEqual(dataset_info.description, "Land Cover") @@ -292,7 +307,7 @@ def test_add_dataset_with_permissions(self): ) dataset_name = ge.add_or_replace_dataset_with_permissions( - volumes[0], + volume, add_dataset_properties, geoengine_openapi_client.MetaDataDefinition( meta_data, @@ -301,7 +316,7 @@ def test_add_dataset_with_permissions(self): ) self.assertEqual(dataset_name, ge.DatasetName("MCD12C1_test")) - self.assertEqual(len(ge.list_datasets(name_filter="Land Cover TEST")), 1) + self.assertEqual(len(list(ge.list_datasets(name_filter="Land Cover TEST"))), 1) dataset_info = ge.dataset_info_by_name(ge.DatasetName("MCD12C1_test")) self.assertEqual(dataset_info.name, "MCD12C1_test") self.assertEqual( @@ -334,7 +349,7 @@ def test_add_dataset_with_permissions(self): ) dataset_name = ge.add_or_replace_dataset_with_permissions( - volumes[0], + volume, add_dataset_properties, geoengine_openapi_client.MetaDataDefinition( meta_data, @@ -344,8 +359,8 @@ def test_add_dataset_with_permissions(self): ) self.assertEqual(dataset_name, ge.DatasetName("MCD12C1_test")) - self.assertEqual(len(ge.list_datasets(name_filter="Land Cover TEST")), 1) - dataset_info = ge.dataset_info_by_name(ge.DatasetName("MCD12C1_test")) + self.assertEqual(len(list(ge.list_datasets(name_filter="Land Cover TEST"))), 1) + dataset_info = ge.dataset_info_by_name(dataset_name) self.assertEqual(dataset_info.name, "MCD12C1_test") self.assertEqual( dataset_info.description,