From 2b860d55c383dad84f5a7d1de06e44f476d6df23 Mon Sep 17 00:00:00 2001 From: MartinSchobben Date: Fri, 27 Sep 2024 17:09:22 +0200 Subject: [PATCH 01/10] initial --- unit_02/04_l-band-sar.ipynb | 277 +++++++++++++++++++++++++++++++++++- 1 file changed, 274 insertions(+), 3 deletions(-) diff --git a/unit_02/04_l-band-sar.ipynb b/unit_02/04_l-band-sar.ipynb index dbe0aa3..91b2fcf 100644 --- a/unit_02/04_l-band-sar.ipynb +++ b/unit_02/04_l-band-sar.ipynb @@ -4,8 +4,279 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Template Notebook for TUW JupyterHub\n", - "\n" + "# Data Cubes\n", + "\n", + "In this notebooke we discuss how we can easily compare images of two or more different timeslices, satellites or other earth observation products. We limit our selves to products on a regular grid which have already an associated projections. This leaves still multiple methods (i.e. mesh grids), we will only deal with raster stacking to form data cubes. We can have data cubes in many forms. Some are mote familar then others, such as the temporospatial datacube\n", + "\n", + "$$Z = f(x,y,t)$$\n", + "\n", + "or when dealing with electromagnetic spectrum , the spectral wavelengths may form an additional dimen:\n", + "\n", + "$$Z = f(x,y,t, \\lambda )$$\n", + "\n", + "We also have already encountrered the case where Z form multiple variables of an Xr.dataset\n", + "\n", + "$${Z_1,Z_2,...,Z_3} = f(x,y,t) $$\n", + "\n", + "The stack arrays originating from different satellite images, or time slices of the same product, is also called co-registration. To perform array stacking in smaller examples, we generally first select an area of interst, then we have to make sure that the individual components have the same projection as well as resolution. To get the same resolution we have to resample one (or more) products. The ultimate projection and resolution can be targetted to adopt the projection and resolution of one of the original arrays or a completely new ...\n", + "\n", + "\n", + "![](https://eox.at/images/eodcaas-mosaic-data-cube-kopp.png)\n", + "\n", + "\n", + "FOr this notebook we will study two different SAR products. SAR data from the alos and sentinel-1 satellite." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import xarray as xr\n", + "import rioxarray\n", + "import pandas as pd\n", + "from pathlib import Path\n", + "import numpy as np\n", + "import folium\n", + "from shapely.geometry import mapping, box\n", + "from functools import partial" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data_path = Path(\"~/shared/datasets/rs/alos\").expanduser()\n", + "\n", + "bbox = xr.open_mfdataset(\n", + " (data_path / \"sentinel-1\").glob(\"*.tif\"), \n", + " engine=\"rasterio\", \n", + " combine=\"nested\",\n", + " concat_dim=\"band\"\n", + " ).\\\n", + " rio.transform_bounds(\"EPSG:4326\")\n", + "bbox = box(*bbox)\n", + "bbox.bounds" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "map = folium.Map(\n", + " max_bounds=True,\n", + " location=[bbox.centroid.y, bbox.centroid.x],\n", + " zoom_control=False,\n", + " scrollWheelZoom=False,\n", + " dragging= False\n", + ")\n", + "\n", + "area_of_interest = box(10, 45.3, 10.8, 45.7) # longitude latitude\n", + "\n", + "folium.GeoJson(mapping(area_of_interest), name=\"Area of Interest\").add_to(map)\n", + "\n", + "map" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def s1_preprocess(x, bbox):\n", + "\n", + " filename = Path(x.encoding[\"source\"]).name\n", + " x = x.rio.clip_box(*bbox, crs=\"EPSG:4326\",)\n", + "\n", + " date_str = filename.split('_')[0][1:]\n", + " time_str = filename.split('_')[1][:6]\n", + " datetime_str = date_str + time_str\n", + " date = pd.to_datetime(datetime_str, format='%Y%m%d%H%M%S')\n", + " x = x.expand_dims(dim={'time': [date]})\n", + "\n", + " band_name = filename.split(\"_\")[3][10:12]\n", + " x = x.rename({\"band_data\": band_name}).\\\n", + " squeeze(\"band\").drop_vars(\"band\").\\\n", + " chunk(chunks={'x': 1500, 'y': 1500, 'time': 1})\n", + " return x \n", + "\n", + "partial_ = partial(s1_preprocess, bbox=area_of_interest.bounds)\n", + "\n", + "s1_ds = xr.open_mfdataset(\n", + " (data_path / \"sentinel-1\").glob(\"*.tif\"),\n", + " engine=\"rasterio\",\n", + " concat_dim=\"time\",\n", + " combine='nested',\n", + " preprocess=partial_\n", + " )\n", + "\n", + "s1_ds" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To enable stacking we need to know so more information of the raster, besides the extent. What coordinate reference system is used by the dataset for projecting on a map. In addition we want to know the raster resolution. THis is the area on the ground covered by each pixel. The units of resolution are again defined by the CRS" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def print_raster(raster, name):\n", + " print(\n", + " f\"{name} Raster:\\n----------------\\n\"\n", + " f\"shape: {raster.rio.shape}\\n\"\n", + " f\"resolution: {raster.rio.resolution()} {raster.rio.crs.units_factor}\\n\"\n", + " f\"bounds: {raster.rio.bounds()}\\n\"\n", + " f\"CRS: {raster.rio.crs}\\n\"\n", + " )\n", + "\n", + "\n", + "print_raster(s1_ds, \"Sentinel-1\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "EPSG 27704 is part of the EQUI7Grid. This grid is angular preserving and show true linear scale between one or two points. THis feautre is ... for remote sesning as it reduces so-called oversampling due to geomtric distortions when projection on a sphere.\n", + "\n", + "# L Band\n", + "\n", + "Now we will load L band" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def alos_preprocess(x, bbox, scale):\n", + "\n", + " filename = Path(x.encoding[\"source\"]).name\n", + " x = x.rio.clip_box(*bbox, crs=\"EPSG:4326\",)\n", + "\n", + "\n", + " date_str = filename.split('_')[0][15:22]\n", + " date = pd.to_datetime(date_str, format='%y%m%d')\n", + " x = x.assign_coords({\"time\": date}).expand_dims(\"time\")\n", + "\n", + " if \"HV\" in filename:\n", + " x = x.rename({\"band_data\": \"HV\"})\n", + " elif \"HH\" in filename:\n", + " x = x.rename({\"band_data\": \"HH\"})\n", + "\n", + " x = x.squeeze(\"band\").drop_vars(\"band\").chunk(chunks={'x': 1500, 'y': 1500, 'time': 1})\n", + "\n", + " if \"band_data\" in x.variables:\n", + " x = x.drop_vars(\"band_data\")\n", + "\n", + " return x * scale\n", + "\n", + "\n", + "partial_ = partial(alos_preprocess, bbox=area_of_interest.bounds, scale=0.01)\n", + "\n", + "alos_ds = xr.open_mfdataset(\n", + " (data_path / \"alos\").glob(\"**/*.tif\"),\n", + " engine=\"rasterio\",\n", + " combine=\"nested\",\n", + " concat_dim=\"time\",\n", + " preprocess=partial_ \n", + " ).\\\n", + " dropna(\"time\", how=\"all\")\n", + "\n", + "alos_ds" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Aagain we will look at the metadata to compare with sentinel 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print_raster(s1_ds, \"Alos\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is an UTM grid. We would therefore like to reproject this data to match Sentinel-1. Furthermore we will increase the resolution of the data by upsampeling. rioxarray has a conveienient function that can do this all in one go" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from rasterio.enums import Resampling\n", + "alos_ds_lin = 10 ** (alos_ds / 10)\n", + "alos_ds_lin = alos_ds_lin.rio.reproject_match(s1_ds, resampling=Resampling.bilinear,)\n", + "alos_ds = 10 * np.log10(alos_ds)\n", + "alos_ds" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Because of small error in how number are stored in a compute we will override the values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "alos_ds = alos_ds.assign_coords({\n", + " \"x\": s1_ds.x,\n", + " \"y\": s1_ds.y,\n", + "})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "errors exist in the spatial location that make stacking over arrays inaccruate to some degree" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "alos_ds" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xr.concat([s1_ds, alos_ds], dim=\"time\")" ] } ], @@ -26,7 +297,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.4" + "version": "3.10.14" }, "requirements": "{\"packages\":{\"eodag\":\"*\"},\"requires\":{\"python_version\":\"3.1\"},\"source\":[{\"name\":\"pypi\",\"url\":\"https://pypi.org/simple\",\"verify_ssl\":true}]}", "requirements_lock": "{\"_meta\":{\"sources\":[{\"url\":\"https://pypi.org/simple\",\"verify_ssl\":true,\"name\":\"pypi\"}],\"requires\":{\"python_version\":\"3.1\"},\"hash\":{\"sha256\":\"8ade4b96a1662dceebb03f4043d030091ddb37b163f4655b155b4056f50cb92b\"},\"pipfile-spec\":6},\"default\":{\"annotated-types\":{\"version\":\"==0.6.0\",\"hashes\":[\"sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43\",\"sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d\"],\"markers\":\"python_version >= '3.8'\"},\"anyio\":{\"version\":\"==4.3.0\",\"hashes\":[\"sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8\",\"sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6\"],\"markers\":\"python_version >= '3.8'\"},\"attrs\":{\"version\":\"==23.2.0\",\"hashes\":[\"sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30\",\"sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1\"],\"markers\":\"python_version >= '3.7'\"},\"boto3\":{\"version\":\"==1.34.102\",\"hashes\":[\"sha256:1c1fb2884f85c0ec6b62e6e7ed5a2a6635e1188f3ab5d2b700f7db1cf8464484\",\"sha256:65e4b9fb9ceefe19976e8822ac0cd68d28946d4697e538741d2bbdb5b45ae42f\"],\"markers\":\"python_version >= '3.8'\"},\"botocore\":{\"version\":\"==1.34.102\",\"hashes\":[\"sha256:79ac7fc2729294395c70eff9c23510f00785ad2acd78d6130cb4379e9f27da86\",\"sha256:e2f8a9f4bac6f7b568e6e981ac2a2500bc992329c85dde8546f0cae8605dd009\"],\"markers\":\"python_version >= '3.8'\"},\"cads-api-client\":{\"version\":\"==1.0.1\",\"hashes\":[\"sha256:3c22a6cf14e89a76eb9d8ad349e70a2cdee682939a6870c7c68ba61e3e56502f\",\"sha256:fb0fc61812ea0821869af3a865426bdeedebc7749e5e89dee1d028fa5a51d375\"]},\"cdsapi\":{\"version\":\"==0.7.0\",\"hashes\":[\"sha256:293ba622f25a15c29c435763d0bbeff4c44d1ee71bc7df965e9d191160d39d59\",\"sha256:b78d871c13862095476986904e7d7224c2480a6670e1bfd46718e095eaaf9b19\"]},\"certifi\":{\"version\":\"==2024.2.2\",\"hashes\":[\"sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f\",\"sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1\"],\"markers\":\"python_version >= '3.6'\"},\"charset-normalizer\":{\"version\":\"==3.3.2\",\"hashes\":[\"sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027\",\"sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087\",\"sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786\",\"sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8\",\"sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09\",\"sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185\",\"sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574\",\"sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e\",\"sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519\",\"sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898\",\"sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269\",\"sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3\",\"sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f\",\"sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6\",\"sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8\",\"sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a\",\"sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73\",\"sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc\",\"sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714\",\"sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2\",\"sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc\",\"sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce\",\"sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d\",\"sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e\",\"sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6\",\"sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269\",\"sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96\",\"sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d\",\"sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a\",\"sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4\",\"sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77\",\"sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d\",\"sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0\",\"sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed\",\"sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068\",\"sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac\",\"sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25\",\"sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8\",\"sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab\",\"sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26\",\"sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2\",\"sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db\",\"sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f\",\"sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5\",\"sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99\",\"sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c\",\"sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d\",\"sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811\",\"sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa\",\"sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a\",\"sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03\",\"sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b\",\"sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04\",\"sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c\",\"sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001\",\"sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458\",\"sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389\",\"sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99\",\"sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985\",\"sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537\",\"sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238\",\"sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f\",\"sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d\",\"sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796\",\"sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a\",\"sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143\",\"sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8\",\"sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c\",\"sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5\",\"sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5\",\"sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711\",\"sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4\",\"sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6\",\"sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c\",\"sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7\",\"sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4\",\"sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b\",\"sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae\",\"sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12\",\"sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c\",\"sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae\",\"sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8\",\"sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887\",\"sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b\",\"sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4\",\"sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f\",\"sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5\",\"sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33\",\"sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519\",\"sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561\"],\"markers\":\"python_full_version >= '3.7.0'\"},\"click\":{\"version\":\"==8.1.7\",\"hashes\":[\"sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28\",\"sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de\"],\"markers\":\"python_version >= '3.7'\"},\"decorator\":{\"version\":\"==5.1.1\",\"hashes\":[\"sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330\",\"sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186\"],\"markers\":\"python_version >= '3.5'\"},\"dnspython\":{\"version\":\"==2.6.1\",\"hashes\":[\"sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50\",\"sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc\"],\"markers\":\"python_version >= '3.8'\"},\"ecmwf-api-client\":{\"version\":\"==1.6.3\",\"hashes\":[\"sha256:3a00bda34a72e2d5198c97399a4750b42a6633efdb5e1b3a5fd2b2bbaa5db0d6\"]},\"email-validator\":{\"version\":\"==2.1.1\",\"hashes\":[\"sha256:200a70680ba08904be6d1eef729205cc0d687634399a5924d842533efb824b84\",\"sha256:97d882d174e2a65732fb43bfce81a3a834cbc1bde8bf419e30ef5ea976370a05\"],\"markers\":\"python_version >= '3.8'\"},\"eodag\":{\"version\":\"==2.12.1\",\"hashes\":[\"sha256:507a2b3335c6882f90f3b61ab1b71b6c677018520e2c5895b16d43e7130a5916\",\"sha256:ad613763ac8cb1504d0e60b28a5c32d498c1aeb8bf9e4a7403a0e4a2c7bc5f63\"],\"markers\":\"python_version >= '3.6'\",\"index\":\"pypi\"},\"exceptiongroup\":{\"version\":\"==1.2.1\",\"hashes\":[\"sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad\",\"sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16\"],\"markers\":\"python_version < '3.11'\"},\"fastapi\":{\"version\":\"==0.111.0\",\"hashes\":[\"sha256:97ecbf994be0bcbdadedf88c3150252bed7b2087075ac99735403b1b76cc8fc0\",\"sha256:b9db9dd147c91cb8b769f7183535773d8741dd46f9dc6676cd82eab510228cd7\"],\"markers\":\"python_version >= '3.8'\"},\"fastapi-cli\":{\"version\":\"==0.0.3\",\"hashes\":[\"sha256:3b6e4d2c4daee940fb8db59ebbfd60a72c4b962bcf593e263e4cc69da4ea3d7f\",\"sha256:ae233115f729945479044917d949095e829d2d84f56f55ce1ca17627872825a5\"],\"markers\":\"python_version >= '3.8'\"},\"geojson\":{\"version\":\"==3.1.0\",\"hashes\":[\"sha256:58a7fa40727ea058efc28b0e9ff0099eadf6d0965e04690830208d3ef571adac\",\"sha256:68a9771827237adb8c0c71f8527509c8f5bef61733aa434cefc9c9d4f0ebe8f3\"],\"markers\":\"python_version >= '3.7'\"},\"h11\":{\"version\":\"==0.14.0\",\"hashes\":[\"sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d\",\"sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761\"],\"markers\":\"python_version >= '3.7'\"},\"httpcore\":{\"version\":\"==1.0.5\",\"hashes\":[\"sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61\",\"sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5\"],\"markers\":\"python_version >= '3.8'\"},\"httptools\":{\"version\":\"==0.6.1\",\"hashes\":[\"sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563\",\"sha256:0ac5a0ae3d9f4fe004318d64b8a854edd85ab76cffbf7ef5e32920faef62f142\",\"sha256:0cf2372e98406efb42e93bfe10f2948e467edfd792b015f1b4ecd897903d3e8d\",\"sha256:1ed99a373e327f0107cb513b61820102ee4f3675656a37a50083eda05dc9541b\",\"sha256:3c3b214ce057c54675b00108ac42bacf2ab8f85c58e3f324a4e963bbc46424f4\",\"sha256:3e802e0b2378ade99cd666b5bffb8b2a7cc8f3d28988685dc300469ea8dd86cb\",\"sha256:3f30d3ce413088a98b9db71c60a6ada2001a08945cb42dd65a9a9fe228627658\",\"sha256:405784577ba6540fa7d6ff49e37daf104e04f4b4ff2d1ac0469eaa6a20fde084\",\"sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2\",\"sha256:4bd3e488b447046e386a30f07af05f9b38d3d368d1f7b4d8f7e10af85393db97\",\"sha256:4f0f8271c0a4db459f9dc807acd0eadd4839934a4b9b892f6f160e94da309837\",\"sha256:5cceac09f164bcba55c0500a18fe3c47df29b62353198e4f37bbcc5d591172c3\",\"sha256:639dc4f381a870c9ec860ce5c45921db50205a37cc3334e756269736ff0aac58\",\"sha256:678fcbae74477a17d103b7cae78b74800d795d702083867ce160fc202104d0da\",\"sha256:6a4f5ccead6d18ec072ac0b84420e95d27c1cdf5c9f1bc8fbd8daf86bd94f43d\",\"sha256:6f58e335a1402fb5a650e271e8c2d03cfa7cea46ae124649346d17bd30d59c90\",\"sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0\",\"sha256:7a7ea483c1a4485c71cb5f38be9db078f8b0e8b4c4dc0210f531cdd2ddac1ef1\",\"sha256:7d9ceb2c957320def533671fc9c715a80c47025139c8d1f3797477decbc6edd2\",\"sha256:7ebaec1bf683e4bf5e9fbb49b8cc36da482033596a415b3e4ebab5a4c0d7ec5e\",\"sha256:85ed077c995e942b6f1b07583e4eb0a8d324d418954fc6af913d36db7c05a5a0\",\"sha256:8ae5b97f690badd2ca27cbf668494ee1b6d34cf1c464271ef7bfa9ca6b83ffaf\",\"sha256:8b0bb634338334385351a1600a73e558ce619af390c2b38386206ac6a27fecfc\",\"sha256:8e216a038d2d52ea13fdd9b9c9c7459fb80d78302b257828285eca1c773b99b3\",\"sha256:93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503\",\"sha256:95658c342529bba4e1d3d2b1a874db16c7cca435e8827422154c9da76ac4e13a\",\"sha256:95fb92dd3649f9cb139e9c56604cc2d7c7bf0fc2e7c8d7fbd58f96e35eddd2a3\",\"sha256:97662ce7fb196c785344d00d638fc9ad69e18ee4bfb4000b35a52efe5adcc949\",\"sha256:9bb68d3a085c2174c2477eb3ffe84ae9fb4fde8792edb7bcd09a1d8467e30a84\",\"sha256:b512aa728bc02354e5ac086ce76c3ce635b62f5fbc32ab7082b5e582d27867bb\",\"sha256:c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a\",\"sha256:d2f6c3c4cb1948d912538217838f6e9960bc4a521d7f9b323b3da579cd14532f\",\"sha256:dcbab042cc3ef272adc11220517278519adf8f53fd3056d0e68f0a6f891ba94e\",\"sha256:e0b281cf5a125c35f7f6722b65d8542d2e57331be573e9e88bc8b0115c4a7a81\",\"sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185\",\"sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3\"]},\"httpx\":{\"version\":\"==0.27.0\",\"hashes\":[\"sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5\",\"sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5\"],\"markers\":\"python_version >= '3.8'\"},\"idna\":{\"version\":\"==3.7\",\"hashes\":[\"sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc\",\"sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0\"],\"markers\":\"python_version >= '3.5'\"},\"jinja2\":{\"version\":\"==3.1.4\",\"hashes\":[\"sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369\",\"sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d\"],\"markers\":\"python_version >= '3.7'\"},\"jmespath\":{\"version\":\"==1.0.1\",\"hashes\":[\"sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980\",\"sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe\"],\"markers\":\"python_version >= '3.7'\"},\"jsonpath-ng\":{\"version\":\"==1.5.3\",\"hashes\":[\"sha256:292a93569d74029ba75ac2dc3d3630fc0e17b2df26119a165fa1d498ca47bf65\",\"sha256:a273b182a82c1256daab86a313b937059261b5c5f8c4fa3fc38b882b344dd567\",\"sha256:f75b95dbecb8a0f3b86fd2ead21c2b022c3f5770957492b9b6196ecccfeb10aa\"]},\"lxml\":{\"version\":\"==5.2.1\",\"hashes\":[\"sha256:04ab5415bf6c86e0518d57240a96c4d1fcfc3cb370bb2ac2a732b67f579e5a04\",\"sha256:057cdc6b86ab732cf361f8b4d8af87cf195a1f6dc5b0ff3de2dced242c2015e0\",\"sha256:058a1308914f20784c9f4674036527e7c04f7be6fb60f5d61353545aa7fcb739\",\"sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a\",\"sha256:0a15438253b34e6362b2dc41475e7f80de76320f335e70c5528b7148cac253a1\",\"sha256:0c3f67e2aeda739d1cc0b1102c9a9129f7dc83901226cc24dd72ba275ced4218\",\"sha256:0e7259016bc4345a31af861fdce942b77c99049d6c2107ca07dc2bba2435c1d9\",\"sha256:0ed777c1e8c99b63037b91f9d73a6aad20fd035d77ac84afcc205225f8f41188\",\"sha256:0f5d65c39f16717a47c36c756af0fb36144069c4718824b7533f803ecdf91138\",\"sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585\",\"sha256:11a04306fcba10cd9637e669fd73aa274c1c09ca64af79c041aa820ea992b637\",\"sha256:1ae67b4e737cddc96c99461d2f75d218bdf7a0c3d3ad5604d1f5e7464a2f9ffe\",\"sha256:1c5bb205e9212d0ebddf946bc07e73fa245c864a5f90f341d11ce7b0b854475d\",\"sha256:1f7785f4f789fdb522729ae465adcaa099e2a3441519df750ebdccc481d961a1\",\"sha256:200e63525948e325d6a13a76ba2911f927ad399ef64f57898cf7c74e69b71095\",\"sha256:21c2e6b09565ba5b45ae161b438e033a86ad1736b8c838c766146eff8ceffff9\",\"sha256:2213afee476546a7f37c7a9b4ad4d74b1e112a6fafffc9185d6d21f043128c81\",\"sha256:27aa20d45c2e0b8cd05da6d4759649170e8dfc4f4e5ef33a34d06f2d79075d57\",\"sha256:2a66bf12fbd4666dd023b6f51223aed3d9f3b40fef06ce404cb75bafd3d89536\",\"sha256:2c9d147f754b1b0e723e6afb7ba1566ecb162fe4ea657f53d2139bbf894d050a\",\"sha256:2ddfe41ddc81f29a4c44c8ce239eda5ade4e7fc305fb7311759dd6229a080052\",\"sha256:31e9a882013c2f6bd2f2c974241bf4ba68c85eba943648ce88936d23209a2e01\",\"sha256:3249cc2989d9090eeac5467e50e9ec2d40704fea9ab72f36b034ea34ee65ca98\",\"sha256:3545039fa4779be2df51d6395e91a810f57122290864918b172d5dc7ca5bb433\",\"sha256:394ed3924d7a01b5bd9a0d9d946136e1c2f7b3dc337196d99e61740ed4bc6fe1\",\"sha256:3a6b45da02336895da82b9d472cd274b22dc27a5cea1d4b793874eead23dd14f\",\"sha256:3a74c4f27167cb95c1d4af1c0b59e88b7f3e0182138db2501c353555f7ec57f4\",\"sha256:3d0c3dd24bb4605439bf91068598d00c6370684f8de4a67c2992683f6c309d6b\",\"sha256:3dbe858ee582cbb2c6294dc85f55b5f19c918c2597855e950f34b660f1a5ede6\",\"sha256:3dc773b2861b37b41a6136e0b72a1a44689a9c4c101e0cddb6b854016acc0aa8\",\"sha256:3f7765e69bbce0906a7c74d5fe46d2c7a7596147318dbc08e4a2431f3060e306\",\"sha256:417d14450f06d51f363e41cace6488519038f940676ce9664b34ebf5653433a5\",\"sha256:44f6c7caff88d988db017b9b0e4ab04934f11e3e72d478031efc7edcac6c622f\",\"sha256:491755202eb21a5e350dae00c6d9a17247769c64dcf62d8c788b5c135e179dc4\",\"sha256:4951e4f7a5680a2db62f7f4ab2f84617674d36d2d76a729b9a8be4b59b3659be\",\"sha256:52421b41ac99e9d91934e4d0d0fe7da9f02bfa7536bb4431b4c05c906c8c6919\",\"sha256:530e7c04f72002d2f334d5257c8a51bf409db0316feee7c87e4385043be136af\",\"sha256:533658f8fbf056b70e434dff7e7aa611bcacb33e01f75de7f821810e48d1bb66\",\"sha256:5670fb70a828663cc37552a2a85bf2ac38475572b0e9b91283dc09efb52c41d1\",\"sha256:56c22432809085b3f3ae04e6e7bdd36883d7258fcd90e53ba7b2e463efc7a6af\",\"sha256:58278b29cb89f3e43ff3e0c756abbd1518f3ee6adad9e35b51fb101c1c1daaec\",\"sha256:588008b8497667f1ddca7c99f2f85ce8511f8f7871b4a06ceede68ab62dff64b\",\"sha256:59565f10607c244bc4c05c0c5fa0c190c990996e0c719d05deec7030c2aa8289\",\"sha256:59689a75ba8d7ffca577aefd017d08d659d86ad4585ccc73e43edbfc7476781a\",\"sha256:5aea8212fb823e006b995c4dda533edcf98a893d941f173f6c9506126188860d\",\"sha256:5c670c0406bdc845b474b680b9a5456c561c65cf366f8db5a60154088c92d102\",\"sha256:5ca1e8188b26a819387b29c3895c47a5e618708fe6f787f3b1a471de2c4a94d9\",\"sha256:5d077bc40a1fe984e1a9931e801e42959a1e6598edc8a3223b061d30fbd26bbc\",\"sha256:5d5792e9b3fb8d16a19f46aa8208987cfeafe082363ee2745ea8b643d9cc5b45\",\"sha256:5dd1537e7cc06efd81371f5d1a992bd5ab156b2b4f88834ca852de4a8ea523fa\",\"sha256:5ea7b6766ac2dfe4bcac8b8595107665a18ef01f8c8343f00710b85096d1b53a\",\"sha256:622020d4521e22fb371e15f580d153134bfb68d6a429d1342a25f051ec72df1c\",\"sha256:627402ad8dea044dde2eccde4370560a2b750ef894c9578e1d4f8ffd54000461\",\"sha256:644df54d729ef810dcd0f7732e50e5ad1bd0a135278ed8d6bcb06f33b6b6f708\",\"sha256:64641a6068a16201366476731301441ce93457eb8452056f570133a6ceb15fca\",\"sha256:64c2baa7774bc22dd4474248ba16fe1a7f611c13ac6123408694d4cc93d66dbd\",\"sha256:6588c459c5627fefa30139be4d2e28a2c2a1d0d1c265aad2ba1935a7863a4913\",\"sha256:66bc5eb8a323ed9894f8fa0ee6cb3e3fb2403d99aee635078fd19a8bc7a5a5da\",\"sha256:68a2610dbe138fa8c5826b3f6d98a7cfc29707b850ddcc3e21910a6fe51f6ca0\",\"sha256:6935bbf153f9a965f1e07c2649c0849d29832487c52bb4a5c5066031d8b44fd5\",\"sha256:6992030d43b916407c9aa52e9673612ff39a575523c5f4cf72cdef75365709a5\",\"sha256:6a014510830df1475176466b6087fc0c08b47a36714823e58d8b8d7709132a96\",\"sha256:6ab833e4735a7e5533711a6ea2df26459b96f9eec36d23f74cafe03631647c41\",\"sha256:6cc6ee342fb7fa2471bd9b6d6fdfc78925a697bf5c2bcd0a302e98b0d35bfad3\",\"sha256:6cf58416653c5901e12624e4013708b6e11142956e7f35e7a83f1ab02f3fe456\",\"sha256:70a9768e1b9d79edca17890175ba915654ee1725975d69ab64813dd785a2bd5c\",\"sha256:70ac664a48aa64e5e635ae5566f5227f2ab7f66a3990d67566d9907edcbbf867\",\"sha256:71e97313406ccf55d32cc98a533ee05c61e15d11b99215b237346171c179c0b0\",\"sha256:7221d49259aa1e5a8f00d3d28b1e0b76031655ca74bb287123ef56c3db92f213\",\"sha256:74b28c6334cca4dd704e8004cba1955af0b778cf449142e581e404bd211fb619\",\"sha256:764b521b75701f60683500d8621841bec41a65eb739b8466000c6fdbc256c240\",\"sha256:78bfa756eab503673991bdcf464917ef7845a964903d3302c5f68417ecdc948c\",\"sha256:794f04eec78f1d0e35d9e0c36cbbb22e42d370dda1609fb03bcd7aeb458c6377\",\"sha256:79bd05260359170f78b181b59ce871673ed01ba048deef4bf49a36ab3e72e80b\",\"sha256:7a7efd5b6d3e30d81ec68ab8a88252d7c7c6f13aaa875009fe3097eb4e30b84c\",\"sha256:7c17b64b0a6ef4e5affae6a3724010a7a66bda48a62cfe0674dabd46642e8b54\",\"sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b\",\"sha256:853e074d4931dbcba7480d4dcab23d5c56bd9607f92825ab80ee2bd916edea53\",\"sha256:857500f88b17a6479202ff5fe5f580fc3404922cd02ab3716197adf1ef628029\",\"sha256:865bad62df277c04beed9478fe665b9ef63eb28fe026d5dedcb89b537d2e2ea6\",\"sha256:88e22fc0a6684337d25c994381ed8a1580a6f5ebebd5ad41f89f663ff4ec2885\",\"sha256:8b9c07e7a45bb64e21df4b6aa623cb8ba214dfb47d2027d90eac197329bb5e94\",\"sha256:8de8f9d6caa7f25b204fc861718815d41cbcf27ee8f028c89c882a0cf4ae4134\",\"sha256:8e77c69d5892cb5ba71703c4057091e31ccf534bd7f129307a4d084d90d014b8\",\"sha256:9123716666e25b7b71c4e1789ec829ed18663152008b58544d95b008ed9e21e9\",\"sha256:958244ad566c3ffc385f47dddde4145088a0ab893504b54b52c041987a8c1863\",\"sha256:96323338e6c14e958d775700ec8a88346014a85e5de73ac7967db0367582049b\",\"sha256:9676bfc686fa6a3fa10cd4ae6b76cae8be26eb5ec6811d2a325636c460da1806\",\"sha256:9b0ff53900566bc6325ecde9181d89afadc59c5ffa39bddf084aaedfe3b06a11\",\"sha256:9b9ec9c9978b708d488bec36b9e4c94d88fd12ccac3e62134a9d17ddba910ea9\",\"sha256:9c6ad0fbf105f6bcc9300c00010a2ffa44ea6f555df1a2ad95c88f5656104817\",\"sha256:9ca66b8e90daca431b7ca1408cae085d025326570e57749695d6a01454790e95\",\"sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8\",\"sha256:a0af35bd8ebf84888373630f73f24e86bf016642fb8576fba49d3d6b560b7cbc\",\"sha256:a2b44bec7adf3e9305ce6cbfa47a4395667e744097faed97abb4728748ba7d47\",\"sha256:a2dfe7e2473f9b59496247aad6e23b405ddf2e12ef0765677b0081c02d6c2c0b\",\"sha256:a55ee573116ba208932e2d1a037cc4b10d2c1cb264ced2184d00b18ce585b2c0\",\"sha256:a7baf9ffc238e4bf401299f50e971a45bfcc10a785522541a6e3179c83eabf0a\",\"sha256:a8d5c70e04aac1eda5c829a26d1f75c6e5286c74743133d9f742cda8e53b9c2f\",\"sha256:a91481dbcddf1736c98a80b122afa0f7296eeb80b72344d7f45dc9f781551f56\",\"sha256:ab31a88a651039a07a3ae327d68ebdd8bc589b16938c09ef3f32a4b809dc96ef\",\"sha256:abc25c3cab9ec7fcd299b9bcb3b8d4a1231877e425c650fa1c7576c5107ab851\",\"sha256:adfb84ca6b87e06bc6b146dc7da7623395db1e31621c4785ad0658c5028b37d7\",\"sha256:afbbdb120d1e78d2ba8064a68058001b871154cc57787031b645c9142b937a62\",\"sha256:afd5562927cdef7c4f5550374acbc117fd4ecc05b5007bdfa57cc5355864e0a4\",\"sha256:b070bbe8d3f0f6147689bed981d19bbb33070225373338df755a46893528104a\",\"sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c\",\"sha256:b560e3aa4b1d49e0e6c847d72665384db35b2f5d45f8e6a5c0072e0283430533\",\"sha256:b6241d4eee5f89453307c2f2bfa03b50362052ca0af1efecf9fef9a41a22bb4f\",\"sha256:b6787b643356111dfd4032b5bffe26d2f8331556ecb79e15dacb9275da02866e\",\"sha256:bcbf4af004f98793a95355980764b3d80d47117678118a44a80b721c9913436a\",\"sha256:beb72935a941965c52990f3a32d7f07ce869fe21c6af8b34bf6a277b33a345d3\",\"sha256:bf2e2458345d9bffb0d9ec16557d8858c9c88d2d11fed53998512504cd9df49b\",\"sha256:c2d35a1d047efd68027817b32ab1586c1169e60ca02c65d428ae815b593e65d4\",\"sha256:c38d7b9a690b090de999835f0443d8aa93ce5f2064035dfc48f27f02b4afc3d0\",\"sha256:c6f2c8372b98208ce609c9e1d707f6918cc118fea4e2c754c9f0812c04ca116d\",\"sha256:c817d420c60a5183953c783b0547d9eb43b7b344a2c46f69513d5952a78cddf3\",\"sha256:c8ba129e6d3b0136a0f50345b2cb3db53f6bda5dd8c7f5d83fbccba97fb5dcb5\",\"sha256:c94e75445b00319c1fad60f3c98b09cd63fe1134a8a953dcd48989ef42318534\",\"sha256:cc4691d60512798304acb9207987e7b2b7c44627ea88b9d77489bbe3e6cc3bd4\",\"sha256:cc518cea79fd1e2f6c90baafa28906d4309d24f3a63e801d855e7424c5b34144\",\"sha256:cd53553ddad4a9c2f1f022756ae64abe16da1feb497edf4d9f87f99ec7cf86bd\",\"sha256:cf22b41fdae514ee2f1691b6c3cdeae666d8b7fa9434de445f12bbeee0cf48dd\",\"sha256:d38c8f50ecf57f0463399569aa388b232cf1a2ffb8f0a9a5412d0db57e054860\",\"sha256:d3be9b2076112e51b323bdf6d5a7f8a798de55fb8d95fcb64bd179460cdc0704\",\"sha256:d4f2cc7060dc3646632d7f15fe68e2fa98f58e35dd5666cd525f3b35d3fed7f8\",\"sha256:d7520db34088c96cc0e0a3ad51a4fd5b401f279ee112aa2b7f8f976d8582606d\",\"sha256:d793bebb202a6000390a5390078e945bbb49855c29c7e4d56a85901326c3b5d9\",\"sha256:da052e7962ea2d5e5ef5bc0355d55007407087392cf465b7ad84ce5f3e25fe0f\",\"sha256:dae0ed02f6b075426accbf6b2863c3d0a7eacc1b41fb40f2251d931e50188dad\",\"sha256:ddc678fb4c7e30cf830a2b5a8d869538bc55b28d6c68544d09c7d0d8f17694dc\",\"sha256:df2e6f546c4df14bc81f9498bbc007fbb87669f1bb707c6138878c46b06f6510\",\"sha256:e02c5175f63effbd7c5e590399c118d5db6183bbfe8e0d118bdb5c2d1b48d937\",\"sha256:e196a4ff48310ba62e53a8e0f97ca2bca83cdd2fe2934d8b5cb0df0a841b193a\",\"sha256:e233db59c8f76630c512ab4a4daf5a5986da5c3d5b44b8e9fc742f2a24dbd460\",\"sha256:e32be23d538753a8adb6c85bd539f5fd3b15cb987404327c569dfc5fd8366e85\",\"sha256:e3d30321949861404323c50aebeb1943461a67cd51d4200ab02babc58bd06a86\",\"sha256:e89580a581bf478d8dcb97d9cd011d567768e8bc4095f8557b21c4d4c5fea7d0\",\"sha256:e998e304036198b4f6914e6a1e2b6f925208a20e2042563d9734881150c6c246\",\"sha256:ec42088248c596dbd61d4ae8a5b004f97a4d91a9fd286f632e42e60b706718d7\",\"sha256:efa7b51824aa0ee957ccd5a741c73e6851de55f40d807f08069eb4c5a26b2baa\",\"sha256:f0a1bc63a465b6d72569a9bba9f2ef0334c4e03958e043da1920299100bc7c08\",\"sha256:f18a5a84e16886898e51ab4b1d43acb3083c39b14c8caeb3589aabff0ee0b270\",\"sha256:f2a9efc53d5b714b8df2b4b3e992accf8ce5bbdfe544d74d5c6766c9e1146a3a\",\"sha256:f3bbbc998d42f8e561f347e798b85513ba4da324c2b3f9b7969e9c45b10f6169\",\"sha256:f42038016852ae51b4088b2862126535cc4fc85802bfe30dea3500fdfaf1864e\",\"sha256:f443cdef978430887ed55112b491f670bba6462cea7a7742ff8f14b7abb98d75\",\"sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd\",\"sha256:f8aca2e3a72f37bfc7b14ba96d4056244001ddcc18382bd0daa087fd2e68a354\",\"sha256:f9737bf36262046213a28e789cc82d82c6ef19c85a0cf05e75c670a33342ac2c\",\"sha256:fd6037392f2d57793ab98d9e26798f44b8b4da2f2464388588f48ac52c489ea1\",\"sha256:feaa45c0eae424d3e90d78823f3828e7dc42a42f21ed420db98da2c4ecf0a2cb\",\"sha256:ff097ae562e637409b429a7ac958a20aab237a0378c42dabaa1e3abf2f896e5f\",\"sha256:ff46d772d5f6f73564979cd77a4fffe55c916a05f3cb70e7c9c0590059fb29ef\"],\"markers\":\"python_version >= '3.6'\"},\"markdown-it-py\":{\"version\":\"==3.0.0\",\"hashes\":[\"sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1\",\"sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb\"],\"markers\":\"python_version >= '3.8'\"},\"markupsafe\":{\"version\":\"==2.1.5\",\"hashes\":[\"sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf\",\"sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff\",\"sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f\",\"sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3\",\"sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532\",\"sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f\",\"sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617\",\"sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df\",\"sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4\",\"sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906\",\"sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f\",\"sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4\",\"sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8\",\"sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371\",\"sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2\",\"sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465\",\"sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52\",\"sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6\",\"sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169\",\"sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad\",\"sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2\",\"sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0\",\"sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029\",\"sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f\",\"sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a\",\"sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced\",\"sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5\",\"sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c\",\"sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf\",\"sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9\",\"sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb\",\"sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad\",\"sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3\",\"sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1\",\"sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46\",\"sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc\",\"sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a\",\"sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee\",\"sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900\",\"sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5\",\"sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea\",\"sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f\",\"sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5\",\"sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e\",\"sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a\",\"sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f\",\"sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50\",\"sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a\",\"sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b\",\"sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4\",\"sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff\",\"sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2\",\"sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46\",\"sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b\",\"sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf\",\"sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5\",\"sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5\",\"sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab\",\"sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd\",\"sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68\"],\"markers\":\"python_version >= '3.7'\"},\"mdurl\":{\"version\":\"==0.1.2\",\"hashes\":[\"sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8\",\"sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba\"],\"markers\":\"python_version >= '3.7'\"},\"multiurl\":{\"version\":\"==0.3.1\",\"hashes\":[\"sha256:c7001437b59d56d4c310d725c3dcfff98c97c4b652893d88989853827465d442\"]},\"numpy\":{\"version\":\"==1.26.4\",\"hashes\":[\"sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b\",\"sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818\",\"sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20\",\"sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0\",\"sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010\",\"sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a\",\"sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea\",\"sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c\",\"sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71\",\"sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110\",\"sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be\",\"sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a\",\"sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a\",\"sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5\",\"sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed\",\"sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd\",\"sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c\",\"sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e\",\"sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0\",\"sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c\",\"sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a\",\"sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b\",\"sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0\",\"sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6\",\"sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2\",\"sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a\",\"sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30\",\"sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218\",\"sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5\",\"sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07\",\"sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2\",\"sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4\",\"sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764\",\"sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef\",\"sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3\",\"sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f\"],\"markers\":\"python_version >= '3.9'\"},\"orjson\":{\"version\":\"==3.10.3\",\"hashes\":[\"sha256:0943a96b3fa09bee1afdfccc2cb236c9c64715afa375b2af296c73d91c23eab2\",\"sha256:0a62f9968bab8a676a164263e485f30a0b748255ee2f4ae49a0224be95f4532b\",\"sha256:16bda83b5c61586f6f788333d3cf3ed19015e3b9019188c56983b5a299210eb5\",\"sha256:1770e2a0eae728b050705206d84eda8b074b65ee835e7f85c919f5705b006c9b\",\"sha256:17e0713fc159abc261eea0f4feda611d32eabc35708b74bef6ad44f6c78d5ea0\",\"sha256:18566beb5acd76f3769c1d1a7ec06cdb81edc4d55d2765fb677e3eaa10fa99e0\",\"sha256:1952c03439e4dce23482ac846e7961f9d4ec62086eb98ae76d97bd41d72644d7\",\"sha256:1bd2218d5a3aa43060efe649ec564ebedec8ce6ae0a43654b81376216d5ebd42\",\"sha256:1c23dfa91481de880890d17aa7b91d586a4746a4c2aa9a145bebdbaf233768d5\",\"sha256:252124b198662eee80428f1af8c63f7ff077c88723fe206a25df8dc57a57b1fa\",\"sha256:2b166507acae7ba2f7c315dcf185a9111ad5e992ac81f2d507aac39193c2c818\",\"sha256:2e5e176c994ce4bd434d7aafb9ecc893c15f347d3d2bbd8e7ce0b63071c52e25\",\"sha256:3582b34b70543a1ed6944aca75e219e1192661a63da4d039d088a09c67543b08\",\"sha256:382e52aa4270a037d41f325e7d1dfa395b7de0c367800b6f337d8157367bf3a7\",\"sha256:416b195f78ae461601893f482287cee1e3059ec49b4f99479aedf22a20b1098b\",\"sha256:4ad1f26bea425041e0a1adad34630c4825a9e3adec49079b1fb6ac8d36f8b754\",\"sha256:4c895383b1ec42b017dd2c75ae8a5b862fc489006afde06f14afbdd0309b2af0\",\"sha256:5102f50c5fc46d94f2033fe00d392588564378260d64377aec702f21a7a22912\",\"sha256:520de5e2ef0b4ae546bea25129d6c7c74edb43fc6cf5213f511a927f2b28148b\",\"sha256:544a12eee96e3ab828dbfcb4d5a0023aa971b27143a1d35dc214c176fdfb29b3\",\"sha256:73100d9abbbe730331f2242c1fc0bcb46a3ea3b4ae3348847e5a141265479700\",\"sha256:831c6ef73f9aa53c5f40ae8f949ff7681b38eaddb6904aab89dca4d85099cb78\",\"sha256:8bc7a4df90da5d535e18157220d7915780d07198b54f4de0110eca6b6c11e290\",\"sha256:8d0b84403d287d4bfa9bf7d1dc298d5c1c5d9f444f3737929a66f2fe4fb8f134\",\"sha256:8d40c7f7938c9c2b934b297412c067936d0b54e4b8ab916fd1a9eb8f54c02294\",\"sha256:9059d15c30e675a58fdcd6f95465c1522b8426e092de9fff20edebfdc15e1cb0\",\"sha256:93433b3c1f852660eb5abdc1f4dd0ced2be031ba30900433223b28ee0140cde5\",\"sha256:978be58a68ade24f1af7758626806e13cff7748a677faf95fbb298359aa1e20d\",\"sha256:99b880d7e34542db89f48d14ddecbd26f06838b12427d5a25d71baceb5ba119d\",\"sha256:9a7bc9e8bc11bac40f905640acd41cbeaa87209e7e1f57ade386da658092dc16\",\"sha256:9e253498bee561fe85d6325ba55ff2ff08fb5e7184cd6a4d7754133bd19c9195\",\"sha256:9f3e87733823089a338ef9bbf363ef4de45e5c599a9bf50a7a9b82e86d0228da\",\"sha256:9fb6c3f9f5490a3eb4ddd46fc1b6eadb0d6fc16fb3f07320149c3286a1409dd8\",\"sha256:a39aa73e53bec8d410875683bfa3a8edf61e5a1c7bb4014f65f81d36467ea098\",\"sha256:b69a58a37dab856491bf2d3bbf259775fdce262b727f96aafbda359cb1d114d8\",\"sha256:b8d4d1a6868cde356f1402c8faeb50d62cee765a1f7ffcfd6de732ab0581e063\",\"sha256:ba7f67aa7f983c4345eeda16054a4677289011a478ca947cd69c0a86ea45e534\",\"sha256:be2719e5041e9fb76c8c2c06b9600fe8e8584e6980061ff88dcbc2691a16d20d\",\"sha256:be2aab54313752c04f2cbaab4515291ef5af8c2256ce22abc007f89f42f49109\",\"sha256:c0403ed9c706dcd2809f1600ed18f4aae50be263bd7112e54b50e2c2bc3ebd6d\",\"sha256:c8334c0d87103bb9fbbe59b78129f1f40d1d1e8355bbed2ca71853af15fa4ed3\",\"sha256:cb0175a5798bdc878956099f5c54b9837cb62cfbf5d0b86ba6d77e43861bcec2\",\"sha256:ccaa0a401fc02e8828a5bedfd80f8cd389d24f65e5ca3954d72c6582495b4bcf\",\"sha256:cf20465e74c6e17a104ecf01bf8cd3b7b252565b4ccee4548f18b012ff2f8069\",\"sha256:d4a654ec1de8fdaae1d80d55cee65893cb06494e124681ab335218be6a0691e7\",\"sha256:e852baafceff8da3c9defae29414cc8513a1586ad93e45f27b89a639c68e8176\"],\"markers\":\"python_version >= '3.8'\"},\"owslib\":{\"version\":\"==0.30.0\",\"hashes\":[\"sha256:88277cf674ded604596af5c04eb2a17c6846dfe8bcfb7a5dc9ab50b3ef5f1385\",\"sha256:f17413cc75836c0303cd1d4fd9bb0f21915a8b492dacc64ef5f4021b28e82d4c\"],\"markers\":\"python_version >= '3.6'\"},\"ply\":{\"version\":\"==3.11\",\"hashes\":[\"sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3\",\"sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce\"]},\"pycryptodome\":{\"version\":\"==3.20.0\",\"hashes\":[\"sha256:06d6de87c19f967f03b4cf9b34e538ef46e99a337e9a61a77dbe44b2cbcf0690\",\"sha256:09609209ed7de61c2b560cc5c8c4fbf892f8b15b1faf7e4cbffac97db1fffda7\",\"sha256:210ba1b647837bfc42dd5a813cdecb5b86193ae11a3f5d972b9a0ae2c7e9e4b4\",\"sha256:2a1250b7ea809f752b68e3e6f3fd946b5939a52eaeea18c73bdab53e9ba3c2dd\",\"sha256:2ab6ab0cb755154ad14e507d1df72de9897e99fd2d4922851a276ccc14f4f1a5\",\"sha256:3427d9e5310af6680678f4cce149f54e0bb4af60101c7f2c16fdf878b39ccccc\",\"sha256:3cd3ef3aee1079ae44afaeee13393cf68b1058f70576b11439483e34f93cf818\",\"sha256:405002eafad114a2f9a930f5db65feef7b53c4784495dd8758069b89baf68eab\",\"sha256:417a276aaa9cb3be91f9014e9d18d10e840a7a9b9a9be64a42f553c5b50b4d1d\",\"sha256:4401564ebf37dfde45d096974c7a159b52eeabd9969135f0426907db367a652a\",\"sha256:49a4c4dc60b78ec41d2afa392491d788c2e06edf48580fbfb0dd0f828af49d25\",\"sha256:5601c934c498cd267640b57569e73793cb9a83506f7c73a8ec57a516f5b0b091\",\"sha256:6e0e4a987d38cfc2e71b4a1b591bae4891eeabe5fa0f56154f576e26287bfdea\",\"sha256:76658f0d942051d12a9bd08ca1b6b34fd762a8ee4240984f7c06ddfb55eaf15a\",\"sha256:76cb39afede7055127e35a444c1c041d2e8d2f1f9c121ecef573757ba4cd2c3c\",\"sha256:8d6b98d0d83d21fb757a182d52940d028564efe8147baa9ce0f38d057104ae72\",\"sha256:9b3ae153c89a480a0ec402e23db8d8d84a3833b65fa4b15b81b83be9d637aab9\",\"sha256:a60fedd2b37b4cb11ccb5d0399efe26db9e0dd149016c1cc6c8161974ceac2d6\",\"sha256:ac1c7c0624a862f2e53438a15c9259d1655325fc2ec4392e66dc46cdae24d044\",\"sha256:acae12b9ede49f38eb0ef76fdec2df2e94aad85ae46ec85be3648a57f0a7db04\",\"sha256:acc2614e2e5346a4a4eab6e199203034924313626f9620b7b4b38e9ad74b7e0c\",\"sha256:acf6e43fa75aca2d33e93409f2dafe386fe051818ee79ee8a3e21de9caa2ac9e\",\"sha256:baee115a9ba6c5d2709a1e88ffe62b73ecc044852a925dcb67713a288c4ec70f\",\"sha256:c18b381553638414b38705f07d1ef0a7cf301bc78a5f9bc17a957eb19446834b\",\"sha256:d29daa681517f4bc318cd8a23af87e1f2a7bad2fe361e8aa29c77d652a065de4\",\"sha256:d5954acfe9e00bc83ed9f5cb082ed22c592fbbef86dc48b907238be64ead5c33\",\"sha256:ec0bb1188c1d13426039af8ffcb4dbe3aad1d7680c35a62d8eaf2a529b5d3d4f\",\"sha256:ec1f93feb3bb93380ab0ebf8b859e8e5678c0f010d2d78367cf6bc30bfeb148e\",\"sha256:f0e6d631bae3f231d3634f91ae4da7a960f7ff87f2865b2d2b831af1dfb04e9a\",\"sha256:f35d6cee81fa145333137009d9c8ba90951d7d77b67c79cbe5f03c7eb74d8fe2\",\"sha256:f47888542a0633baff535a04726948e876bf1ed880fddb7c10a736fa99146ab3\",\"sha256:fb3b87461fa35afa19c971b0a2b7456a7b1db7b4eba9a8424666104925b78128\"],\"markers\":\"python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'\"},\"pydantic\":{\"version\":\"==2.7.1\",\"hashes\":[\"sha256:e029badca45266732a9a79898a15ae2e8b14840b1eabbb25844be28f0b33f3d5\",\"sha256:e9dbb5eada8abe4d9ae5f46b9939aead650cd2b68f249bb3a8139dbe125803cc\"],\"markers\":\"python_version >= '3.8'\"},\"pydantic-core\":{\"version\":\"==2.18.2\",\"hashes\":[\"sha256:0098300eebb1c837271d3d1a2cd2911e7c11b396eac9661655ee524a7f10587b\",\"sha256:042473b6280246b1dbf530559246f6842b56119c2926d1e52b631bdc46075f2a\",\"sha256:05b7133a6e6aeb8df37d6f413f7705a37ab4031597f64ab56384c94d98fa0e90\",\"sha256:0680b1f1f11fda801397de52c36ce38ef1c1dc841a0927a94f226dea29c3ae3d\",\"sha256:0d69b4c2f6bb3e130dba60d34c0845ba31b69babdd3f78f7c0c8fae5021a253e\",\"sha256:1404c69d6a676245199767ba4f633cce5f4ad4181f9d0ccb0577e1f66cf4c46d\",\"sha256:182245ff6b0039e82b6bb585ed55a64d7c81c560715d1bad0cbad6dfa07b4027\",\"sha256:1a388a77e629b9ec814c1b1e6b3b595fe521d2cdc625fcca26fbc2d44c816804\",\"sha256:1d90c3265ae107f91a4f279f4d6f6f1d4907ac76c6868b27dc7fb33688cfb347\",\"sha256:20aca1e2298c56ececfd8ed159ae4dde2df0781988c97ef77d5c16ff4bd5b400\",\"sha256:219da3f096d50a157f33645a1cf31c0ad1fe829a92181dd1311022f986e5fbe3\",\"sha256:22057013c8c1e272eb8d0eebc796701167d8377441ec894a8fed1af64a0bf399\",\"sha256:223ee893d77a310a0391dca6df00f70bbc2f36a71a895cecd9a0e762dc37b349\",\"sha256:224c421235f6102e8737032483f43c1a8cfb1d2f45740c44166219599358c2cd\",\"sha256:2334ce8c673ee93a1d6a65bd90327588387ba073c17e61bf19b4fd97d688d63c\",\"sha256:269322dcc3d8bdb69f054681edff86276b2ff972447863cf34c8b860f5188e2e\",\"sha256:2728b01246a3bba6de144f9e3115b532ee44bd6cf39795194fb75491824a1413\",\"sha256:2b8ed04b3582771764538f7ee7001b02e1170223cf9b75dff0bc698fadb00cf3\",\"sha256:2e29d20810dfc3043ee13ac7d9e25105799817683348823f305ab3f349b9386e\",\"sha256:36789b70d613fbac0a25bb07ab3d9dba4d2e38af609c020cf4d888d165ee0bf3\",\"sha256:390193c770399861d8df9670fb0d1874f330c79caaca4642332df7c682bf6b91\",\"sha256:3a6515ebc6e69d85502b4951d89131ca4e036078ea35533bb76327f8424531ce\",\"sha256:3f9a801e7c8f1ef8718da265bba008fa121243dfe37c1cea17840b0944dfd72c\",\"sha256:43f0f463cf89ace478de71a318b1b4f05ebc456a9b9300d027b4b57c1a2064fb\",\"sha256:4456f2dca97c425231d7315737d45239b2b51a50dc2b6f0c2bb181fce6207664\",\"sha256:470b94480bb5ee929f5acba6995251ada5e059a5ef3e0dfc63cca287283ebfa6\",\"sha256:4774f3184d2ef3e14e8693194f661dea5a4d6ca4e3dc8e39786d33a94865cefd\",\"sha256:4b4356d3538c3649337df4074e81b85f0616b79731fe22dd11b99499b2ebbdf3\",\"sha256:553ef617b6836fc7e4df130bb851e32fe357ce36336d897fd6646d6058d980af\",\"sha256:6132dd3bd52838acddca05a72aafb6eab6536aa145e923bb50f45e78b7251043\",\"sha256:6a46e22a707e7ad4484ac9ee9f290f9d501df45954184e23fc29408dfad61350\",\"sha256:6e5c584d357c4e2baf0ff7baf44f4994be121e16a2c88918a5817331fc7599d7\",\"sha256:75250dbc5290e3f1a0f4618db35e51a165186f9034eff158f3d490b3fed9f8a0\",\"sha256:75f7e9488238e920ab6204399ded280dc4c307d034f3924cd7f90a38b1829563\",\"sha256:78363590ef93d5d226ba21a90a03ea89a20738ee5b7da83d771d283fd8a56761\",\"sha256:7ca4ae5a27ad7a4ee5170aebce1574b375de390bc01284f87b18d43a3984df72\",\"sha256:800d60565aec896f25bc3cfa56d2277d52d5182af08162f7954f938c06dc4ee3\",\"sha256:82d5d4d78e4448683cb467897fe24e2b74bb7b973a541ea1dcfec1d3cbce39fb\",\"sha256:852e966fbd035a6468fc0a3496589b45e2208ec7ca95c26470a54daed82a0788\",\"sha256:868649da93e5a3d5eacc2b5b3b9235c98ccdbfd443832f31e075f54419e1b96b\",\"sha256:886eec03591b7cf058467a70a87733b35f44707bd86cf64a615584fd72488b7c\",\"sha256:8b172601454f2d7701121bbec3425dd71efcb787a027edf49724c9cefc14c038\",\"sha256:95b9d5e72481d3780ba3442eac863eae92ae43a5f3adb5b4d0a1de89d42bb250\",\"sha256:98758d627ff397e752bc339272c14c98199c613f922d4a384ddc07526c86a2ec\",\"sha256:997abc4df705d1295a42f95b4eec4950a37ad8ae46d913caeee117b6b198811c\",\"sha256:9b5155ff768083cb1d62f3e143b49a8a3432e6789a3abee8acd005c3c7af1c74\",\"sha256:9e08e867b306f525802df7cd16c44ff5ebbe747ff0ca6cf3fde7f36c05a59a81\",\"sha256:9fdad8e35f278b2c3eb77cbdc5c0a49dada440657bf738d6905ce106dc1de439\",\"sha256:a1874c6dd4113308bd0eb568418e6114b252afe44319ead2b4081e9b9521fe75\",\"sha256:a8309f67285bdfe65c372ea3722b7a5642680f3dba538566340a9d36e920b5f0\",\"sha256:ae0a8a797a5e56c053610fa7be147993fe50960fa43609ff2a9552b0e07013e8\",\"sha256:b14d82cdb934e99dda6d9d60dc84a24379820176cc4a0d123f88df319ae9c150\",\"sha256:b1bd7e47b1558ea872bd16c8502c414f9e90dcf12f1395129d7bb42a09a95438\",\"sha256:b3ef08e20ec49e02d5c6717a91bb5af9b20f1805583cb0adfe9ba2c6b505b5ae\",\"sha256:b89ed9eb7d616ef5714e5590e6cf7f23b02d0d539767d33561e3675d6f9e3857\",\"sha256:c4fcf5cd9c4b655ad666ca332b9a081112cd7a58a8b5a6ca7a3104bc950f2038\",\"sha256:c6fdc8627910eed0c01aed6a390a252fe3ea6d472ee70fdde56273f198938374\",\"sha256:c9bd70772c720142be1020eac55f8143a34ec9f82d75a8e7a07852023e46617f\",\"sha256:ca7b0c1f1c983e064caa85f3792dd2fe3526b3505378874afa84baf662e12241\",\"sha256:cbca948f2d14b09d20268cda7b0367723d79063f26c4ffc523af9042cad95592\",\"sha256:cc1cfd88a64e012b74e94cd00bbe0f9c6df57049c97f02bb07d39e9c852e19a4\",\"sha256:ccdd111c03bfd3666bd2472b674c6899550e09e9f298954cfc896ab92b5b0e6d\",\"sha256:cfeecd1ac6cc1fb2692c3d5110781c965aabd4ec5d32799773ca7b1456ac636b\",\"sha256:d4d938ec0adf5167cb335acb25a4ee69a8107e4984f8fbd2e897021d9e4ca21b\",\"sha256:d7d904828195733c183d20a54230c0df0eb46ec746ea1a666730787353e87182\",\"sha256:d91cb5ea8b11607cc757675051f61b3d93f15eca3cefb3e6c704a5d6e8440f4e\",\"sha256:d9319e499827271b09b4e411905b24a426b8fb69464dfa1696258f53a3334641\",\"sha256:e0e8b1be28239fc64a88a8189d1df7fad8be8c1ae47fcc33e43d4be15f99cc70\",\"sha256:e18609ceaa6eed63753037fc06ebb16041d17d28199ae5aba0052c51449650a9\",\"sha256:e1b395e58b10b73b07b7cf740d728dd4ff9365ac46c18751bf8b3d8cca8f625a\",\"sha256:e23ec367a948b6d812301afc1b13f8094ab7b2c280af66ef450efc357d2ae543\",\"sha256:e25add29b8f3b233ae90ccef2d902d0ae0432eb0d45370fe315d1a5cf231004b\",\"sha256:e6dac87ddb34aaec85f873d737e9d06a3555a1cc1a8e0c44b7f8d5daeb89d86f\",\"sha256:ef26c9e94a8c04a1b2924149a9cb081836913818e55681722d7f29af88fe7b38\",\"sha256:eff2de745698eb46eeb51193a9f41d67d834d50e424aef27df2fcdee1b153845\",\"sha256:f0a21cbaa69900cbe1a2e7cad2aa74ac3cf21b10c3efb0fa0b80305274c0e8a2\",\"sha256:f459a5ce8434614dfd39bbebf1041952ae01da6bed9855008cb33b875cb024c0\",\"sha256:f93a8a2e3938ff656a7c1bc57193b1319960ac015b6e87d76c76bf14fe0244b4\",\"sha256:fb2bd7be70c0fe4dfd32c951bc813d9fe6ebcbfdd15a07527796c8204bd36242\"],\"markers\":\"python_version >= '3.8'\"},\"pygments\":{\"version\":\"==2.18.0\",\"hashes\":[\"sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199\",\"sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a\"],\"markers\":\"python_version >= '3.8'\"},\"pyproj\":{\"version\":\"==3.6.1\",\"hashes\":[\"sha256:18faa54a3ca475bfe6255156f2f2874e9a1c8917b0004eee9f664b86ccc513d3\",\"sha256:1e9fbaf920f0f9b4ee62aab832be3ae3968f33f24e2e3f7fbb8c6728ef1d9746\",\"sha256:2d6ff73cc6dbbce3766b6c0bce70ce070193105d8de17aa2470009463682a8eb\",\"sha256:36b64c2cb6ea1cc091f329c5bd34f9c01bb5da8c8e4492c709bda6a09f96808f\",\"sha256:38a3361941eb72b82bd9a18f60c78b0df8408416f9340521df442cebfc4306e2\",\"sha256:447db19c7efad70ff161e5e46a54ab9cc2399acebb656b6ccf63e4bc4a04b97a\",\"sha256:44aa7c704c2b7d8fb3d483bbf75af6cb2350d30a63b144279a09b75fead501bf\",\"sha256:4ba1f9b03d04d8cab24d6375609070580a26ce76eaed54631f03bab00a9c737b\",\"sha256:4bc0472302919e59114aa140fd7213c2370d848a7249d09704f10f5b062031fe\",\"sha256:50100b2726a3ca946906cbaa789dd0749f213abf0cbb877e6de72ca7aa50e1ae\",\"sha256:5279586013b8d6582e22b6f9e30c49796966770389a9d5b85e25a4223286cd3f\",\"sha256:6420ea8e7d2a88cb148b124429fba8cd2e0fae700a2d96eab7083c0928a85110\",\"sha256:65ad699e0c830e2b8565afe42bd58cc972b47d829b2e0e48ad9638386d994915\",\"sha256:6d227a865356f225591b6732430b1d1781e946893789a609bb34f59d09b8b0f8\",\"sha256:7a27151ddad8e1439ba70c9b4b2b617b290c39395fa9ddb7411ebb0eb86d6fb0\",\"sha256:80fafd1f3eb421694857f254a9bdbacd1eb22fc6c24ca74b136679f376f97d35\",\"sha256:83039e5ae04e5afc974f7d25ee0870a80a6bd6b7957c3aca5613ccbe0d3e72bf\",\"sha256:8b8acc31fb8702c54625f4d5a2a6543557bec3c28a0ef638778b7ab1d1772132\",\"sha256:9274880263256f6292ff644ca92c46d96aa7e57a75c6df3f11d636ce845a1877\",\"sha256:ab7aa4d9ff3c3acf60d4b285ccec134167a948df02347585fdd934ebad8811b4\",\"sha256:c41e80ddee130450dcb8829af7118f1ab69eaf8169c4bf0ee8d52b72f098dc2f\",\"sha256:db3aedd458e7f7f21d8176f0a1d924f1ae06d725228302b872885a1c34f3119e\",\"sha256:e7e13c40183884ec7f94eb8e0f622f08f1d5716150b8d7a134de48c6110fee85\",\"sha256:ebfbdbd0936e178091309f6cd4fcb4decd9eab12aa513cdd9add89efa3ec2882\",\"sha256:fd43bd9a9b9239805f406fd82ba6b106bf4838d9ef37c167d3ed70383943ade1\",\"sha256:fd93c1a0c6c4aedc77c0fe275a9f2aba4d59b8acf88cebfc19fe3c430cfabf4f\",\"sha256:fffb059ba3bced6f6725961ba758649261d85ed6ce670d3e3b0a26e81cf1aa8d\"],\"markers\":\"python_version >= '3.9'\"},\"pyshp\":{\"version\":\"==2.3.1\",\"hashes\":[\"sha256:4caec82fd8dd096feba8217858068bacb2a3b5950f43c048c6dc32a3489d5af1\",\"sha256:67024c0ccdc352ba5db777c4e968483782dfa78f8e200672a90d2d30fd8b7b49\"],\"markers\":\"python_version >= '2.7'\"},\"pystac\":{\"version\":\"==1.10.1\",\"hashes\":[\"sha256:4617fe5315a79785f79b616b8ac248ba3d4d561457c8300b34573309715808cd\",\"sha256:a7c31b3dacc44dfc955d9da8c7351c7b5b99100254b36301a1e312709b51bf2f\"],\"markers\":\"python_version >= '3.9'\"},\"python-dateutil\":{\"version\":\"==2.9.0.post0\",\"hashes\":[\"sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3\",\"sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427\"],\"markers\":\"python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'\"},\"python-dotenv\":{\"version\":\"==1.0.1\",\"hashes\":[\"sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca\",\"sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a\"]},\"python-multipart\":{\"version\":\"==0.0.9\",\"hashes\":[\"sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026\",\"sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215\"],\"markers\":\"python_version >= '3.8'\"},\"pytz\":{\"version\":\"==2024.1\",\"hashes\":[\"sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812\",\"sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319\"]},\"pyyaml\":{\"version\":\"==6.0.1\",\"hashes\":[\"sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5\",\"sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc\",\"sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df\",\"sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741\",\"sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206\",\"sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27\",\"sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595\",\"sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62\",\"sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98\",\"sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696\",\"sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290\",\"sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9\",\"sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d\",\"sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6\",\"sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867\",\"sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47\",\"sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486\",\"sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6\",\"sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3\",\"sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007\",\"sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938\",\"sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0\",\"sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c\",\"sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735\",\"sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d\",\"sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28\",\"sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4\",\"sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba\",\"sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8\",\"sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef\",\"sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5\",\"sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd\",\"sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3\",\"sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0\",\"sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515\",\"sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c\",\"sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c\",\"sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924\",\"sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34\",\"sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43\",\"sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859\",\"sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673\",\"sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54\",\"sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a\",\"sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b\",\"sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab\",\"sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa\",\"sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c\",\"sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585\",\"sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d\",\"sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f\"],\"markers\":\"python_version >= '3.6'\"},\"requests\":{\"version\":\"==2.31.0\",\"hashes\":[\"sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f\",\"sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1\"],\"markers\":\"python_version >= '3.7'\"},\"requests-ftp\":{\"version\":\"==0.3.1\",\"hashes\":[\"sha256:7504ceb5cba8a5c0135ed738596820a78c5f2be92d79b29f96ba99b183d8057a\"]},\"requests-futures\":{\"version\":\"==1.0.1\",\"hashes\":[\"sha256:4a2f5472e9911a79532137d156aa937cd9cd90fec55677f71b2976d1f7a66d38\",\"sha256:f55a4ef80070e2858e7d1e73123d2bfaeaf25b93fd34384d8ddf148e2b676373\"]},\"rich\":{\"version\":\"==13.7.1\",\"hashes\":[\"sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222\",\"sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432\"],\"markers\":\"python_full_version >= '3.7.0'\"},\"s3transfer\":{\"version\":\"==0.10.1\",\"hashes\":[\"sha256:5683916b4c724f799e600f41dd9e10a9ff19871bf87623cc8f491cb4f5fa0a19\",\"sha256:ceb252b11bcf87080fb7850a224fb6e05c8a776bab8f2b64b7f25b969464839d\"],\"markers\":\"python_version >= '3.8'\"},\"setuptools\":{\"version\":\"==69.5.1\",\"hashes\":[\"sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987\",\"sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32\"],\"markers\":\"python_version >= '3.8'\"},\"shapely\":{\"version\":\"==2.0.4\",\"hashes\":[\"sha256:011b77153906030b795791f2fdfa2d68f1a8d7e40bce78b029782ade3afe4f2f\",\"sha256:03152442d311a5e85ac73b39680dd64a9892fa42bb08fd83b3bab4fe6999bfa0\",\"sha256:05ffd6491e9e8958b742b0e2e7c346635033d0a5f1a0ea083547fcc854e5d5cf\",\"sha256:0776c92d584f72f1e584d2e43cfc5542c2f3dd19d53f70df0900fda643f4bae6\",\"sha256:263bcf0c24d7a57c80991e64ab57cba7a3906e31d2e21b455f493d4aab534aaa\",\"sha256:2fbdc1140a7d08faa748256438291394967aa54b40009f54e8d9825e75ef6113\",\"sha256:30982f79f21bb0ff7d7d4a4e531e3fcaa39b778584c2ce81a147f95be1cd58c9\",\"sha256:31c19a668b5a1eadab82ff070b5a260478ac6ddad3a5b62295095174a8d26398\",\"sha256:3f9103abd1678cb1b5f7e8e1af565a652e036844166c91ec031eeb25c5ca8af0\",\"sha256:41388321a73ba1a84edd90d86ecc8bfed55e6a1e51882eafb019f45895ec0f65\",\"sha256:4310b5494271e18580d61022c0857eb85d30510d88606fa3b8314790df7f367d\",\"sha256:464157509ce4efa5ff285c646a38b49f8c5ef8d4b340f722685b09bb033c5ccf\",\"sha256:485246fcdb93336105c29a5cfbff8a226949db37b7473c89caa26c9bae52a242\",\"sha256:489c19152ec1f0e5c5e525356bcbf7e532f311bff630c9b6bc2db6f04da6a8b9\",\"sha256:4f2ab0faf8188b9f99e6a273b24b97662194160cc8ca17cf9d1fb6f18d7fb93f\",\"sha256:55a38dcd1cee2f298d8c2ebc60fc7d39f3b4535684a1e9e2f39a80ae88b0cea7\",\"sha256:58b0ecc505bbe49a99551eea3f2e8a9b3b24b3edd2a4de1ac0dc17bc75c9ec07\",\"sha256:5af4cd0d8cf2912bd95f33586600cac9c4b7c5053a036422b97cfe4728d2eb53\",\"sha256:5bbd974193e2cc274312da16b189b38f5f128410f3377721cadb76b1e8ca5328\",\"sha256:5c4849916f71dc44e19ed370421518c0d86cf73b26e8656192fcfcda08218fbd\",\"sha256:5dc736127fac70009b8d309a0eeb74f3e08979e530cf7017f2f507ef62e6cfb8\",\"sha256:63f3a80daf4f867bd80f5c97fbe03314348ac1b3b70fb1c0ad255a69e3749879\",\"sha256:674d7baf0015a6037d5758496d550fc1946f34bfc89c1bf247cabdc415d7747e\",\"sha256:6cd4ccecc5ea5abd06deeaab52fcdba372f649728050c6143cc405ee0c166679\",\"sha256:790a168a808bd00ee42786b8ba883307c0e3684ebb292e0e20009588c426da47\",\"sha256:7d56ce3e2a6a556b59a288771cf9d091470116867e578bebced8bfc4147fbfd7\",\"sha256:841f93a0e31e4c64d62ea570d81c35de0f6cea224568b2430d832967536308e6\",\"sha256:8de4578e838a9409b5b134a18ee820730e507b2d21700c14b71a2b0757396acc\",\"sha256:92a41d936f7d6743f343be265ace93b7c57f5b231e21b9605716f5a47c2879e7\",\"sha256:9831816a5d34d5170aa9ed32a64982c3d6f4332e7ecfe62dc97767e163cb0b17\",\"sha256:994c244e004bc3cfbea96257b883c90a86e8cbd76e069718eb4c6b222a56f78b\",\"sha256:9dab4c98acfb5fb85f5a20548b5c0abe9b163ad3525ee28822ffecb5c40e724c\",\"sha256:b79bbd648664aa6f44ef018474ff958b6b296fed5c2d42db60078de3cffbc8aa\",\"sha256:c3e700abf4a37b7b8b90532fa6ed5c38a9bfc777098bc9fbae5ec8e618ac8f30\",\"sha256:c52ed79f683f721b69a10fb9e3d940a468203f5054927215586c5d49a072de8d\",\"sha256:c75c98380b1ede1cae9a252c6dc247e6279403fae38c77060a5e6186c95073ac\",\"sha256:d2b4431f522b277c79c34b65da128029a9955e4481462cbf7ebec23aab61fc58\",\"sha256:ddf4a9bfaac643e62702ed662afc36f6abed2a88a21270e891038f9a19bc08fc\",\"sha256:de0205cb21ad5ddaef607cda9a3191eadd1e7a62a756ea3a356369675230ac35\",\"sha256:ec555c9d0db12d7fd777ba3f8b75044c73e576c720a851667432fabb7057da6c\",\"sha256:fb5cdcbbe3080181498931b52a91a21a781a35dcb859da741c0345c6402bf00c\"],\"markers\":\"python_version >= '3.7'\"},\"shellingham\":{\"version\":\"==1.5.4\",\"hashes\":[\"sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686\",\"sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de\"],\"markers\":\"python_version >= '3.7'\"},\"six\":{\"version\":\"==1.16.0\",\"hashes\":[\"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926\",\"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254\"],\"markers\":\"python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'\"},\"sniffio\":{\"version\":\"==1.3.1\",\"hashes\":[\"sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2\",\"sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc\"],\"markers\":\"python_version >= '3.7'\"},\"starlette\":{\"version\":\"==0.37.2\",\"hashes\":[\"sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee\",\"sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823\"],\"markers\":\"python_version >= '3.8'\"},\"stream-zip\":{\"version\":\"==0.0.71\",\"hashes\":[\"sha256:4afff6da680876b7982afedcc9c3478a575a519c74015a25a4248d3fe69a46a0\",\"sha256:fd85a01e8eadec4d1151b548c7da0eeecc37432f29df01ba232f672f958a2fc6\"],\"markers\":\"python_full_version >= '3.6.7'\"},\"tqdm\":{\"version\":\"==4.66.4\",\"hashes\":[\"sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644\",\"sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb\"],\"markers\":\"python_version >= '3.7'\"},\"typer\":{\"version\":\"==0.12.3\",\"hashes\":[\"sha256:070d7ca53f785acbccba8e7d28b08dcd88f79f1fbda035ade0aecec71ca5c914\",\"sha256:49e73131481d804288ef62598d97a1ceef3058905aa536a1134f90891ba35482\"],\"markers\":\"python_version >= '3.7'\"},\"typing-extensions\":{\"version\":\"==4.11.0\",\"hashes\":[\"sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0\",\"sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a\"],\"markers\":\"python_version >= '3.8'\"},\"ujson\":{\"version\":\"==5.9.0\",\"hashes\":[\"sha256:07e0cfdde5fd91f54cd2d7ffb3482c8ff1bf558abf32a8b953a5d169575ae1cd\",\"sha256:0b159efece9ab5c01f70b9d10bbb77241ce111a45bc8d21a44c219a2aec8ddfd\",\"sha256:0c4d6adb2c7bb9eb7c71ad6f6f612e13b264942e841f8cc3314a21a289a76c4e\",\"sha256:10ca3c41e80509fd9805f7c149068fa8dbee18872bbdc03d7cca928926a358d5\",\"sha256:20509a8c9f775b3a511e308bbe0b72897ba6b800767a7c90c5cca59d20d7c42c\",\"sha256:25fa46e4ff0a2deecbcf7100af3a5d70090b461906f2299506485ff31d9ec437\",\"sha256:2a8ea0f55a1396708e564595aaa6696c0d8af532340f477162ff6927ecc46e21\",\"sha256:2fbb90aa5c23cb3d4b803c12aa220d26778c31b6e4b7a13a1f49971f6c7d088e\",\"sha256:323279e68c195110ef85cbe5edce885219e3d4a48705448720ad925d88c9f851\",\"sha256:32bba5870c8fa2a97f4a68f6401038d3f1922e66c34280d710af00b14a3ca562\",\"sha256:3382a3ce0ccc0558b1c1668950008cece9bf463ebb17463ebf6a8bfc060dae34\",\"sha256:37ef92e42535a81bf72179d0e252c9af42a4ed966dc6be6967ebfb929a87bc60\",\"sha256:3b23bbb46334ce51ddb5dded60c662fbf7bb74a37b8f87221c5b0fec1ec6454b\",\"sha256:473fb8dff1d58f49912323d7cb0859df5585cfc932e4b9c053bf8cf7f2d7c5c4\",\"sha256:4a566e465cb2fcfdf040c2447b7dd9718799d0d90134b37a20dff1e27c0e9096\",\"sha256:4e35d7885ed612feb6b3dd1b7de28e89baaba4011ecdf995e88be9ac614765e9\",\"sha256:506a45e5fcbb2d46f1a51fead991c39529fc3737c0f5d47c9b4a1d762578fc30\",\"sha256:5635b78b636a54a86fdbf6f027e461aa6c6b948363bdf8d4fbb56a42b7388320\",\"sha256:5ca35f484622fd208f55041b042d9d94f3b2c9c5add4e9af5ee9946d2d30db01\",\"sha256:60718f1720a61560618eff3b56fd517d107518d3c0160ca7a5a66ac949c6cf1c\",\"sha256:63fb2e6599d96fdffdb553af0ed3f76b85fda63281063f1cb5b1141a6fcd0617\",\"sha256:6974b3a7c17bbf829e6c3bfdc5823c67922e44ff169851a755eab79a3dd31ec0\",\"sha256:6adef377ed583477cf005b58c3025051b5faa6b8cc25876e594afbb772578f21\",\"sha256:6bbd91a151a8f3358c29355a491e915eb203f607267a25e6ab10531b3b157c5e\",\"sha256:6eecbd09b316cea1fd929b1e25f70382917542ab11b692cb46ec9b0a26c7427f\",\"sha256:70e06849dfeb2548be48fdd3ceb53300640bc8100c379d6e19d78045e9c26120\",\"sha256:7309d063cd392811acc49b5016728a5e1b46ab9907d321ebbe1c2156bc3c0b99\",\"sha256:779a2a88c53039bebfbccca934430dabb5c62cc179e09a9c27a322023f363e0d\",\"sha256:7a365eac66f5aa7a7fdf57e5066ada6226700884fc7dce2ba5483538bc16c8c5\",\"sha256:7b1c0991c4fe256f5fdb19758f7eac7f47caac29a6c57d0de16a19048eb86bad\",\"sha256:7cc7e605d2aa6ae6b7321c3ae250d2e050f06082e71ab1a4200b4ae64d25863c\",\"sha256:829a69d451a49c0de14a9fecb2a2d544a9b2c884c2b542adb243b683a6f15908\",\"sha256:829b824953ebad76d46e4ae709e940bb229e8999e40881338b3cc94c771b876c\",\"sha256:82b5a56609f1235d72835ee109163c7041b30920d70fe7dac9176c64df87c164\",\"sha256:89cc92e73d5501b8a7f48575eeb14ad27156ad092c2e9fc7e3cf949f07e75532\",\"sha256:8ba7cac47dd65ff88571eceeff48bf30ed5eb9c67b34b88cb22869b7aa19600d\",\"sha256:8fc2aa18b13d97b3c8ccecdf1a3c405f411a6e96adeee94233058c44ff92617d\",\"sha256:9ac92d86ff34296f881e12aa955f7014d276895e0e4e868ba7fddebbde38e378\",\"sha256:9d302bd17989b6bd90d49bade66943c78f9e3670407dbc53ebcf61271cadc399\",\"sha256:9f21315f51e0db8ee245e33a649dd2d9dce0594522de6f278d62f15f998e050e\",\"sha256:a6d3f10eb8ccba4316a6b5465b705ed70a06011c6f82418b59278fbc919bef6f\",\"sha256:a807ae73c46ad5db161a7e883eec0fbe1bebc6a54890152ccc63072c4884823b\",\"sha256:ab71bf27b002eaf7d047c54a68e60230fbd5cd9da60de7ca0aa87d0bccead8fa\",\"sha256:b048aa93eace8571eedbd67b3766623e7f0acbf08ee291bef7d8106210432427\",\"sha256:b28407cfe315bd1b34f1ebe65d3bd735d6b36d409b334100be8cdffae2177b2f\",\"sha256:b5964ea916edfe24af1f4cc68488448fbb1ec27a3ddcddc2b236da575c12c8ae\",\"sha256:b68a0caab33f359b4cbbc10065c88e3758c9f73a11a65a91f024b2e7a1257106\",\"sha256:ba0823cb70866f0d6a4ad48d998dd338dce7314598721bc1b7986d054d782dfd\",\"sha256:bd4ea86c2afd41429751d22a3ccd03311c067bd6aeee2d054f83f97e41e11d8f\",\"sha256:bdf7fc21a03bafe4ba208dafa84ae38e04e5d36c0e1c746726edf5392e9f9f36\",\"sha256:c4eec2ddc046360d087cf35659c7ba0cbd101f32035e19047013162274e71fcf\",\"sha256:cdcb02cabcb1e44381221840a7af04433c1dc3297af76fde924a50c3054c708c\",\"sha256:d0fd2eba664a22447102062814bd13e63c6130540222c0aa620701dd01f4be81\",\"sha256:d581db9db9e41d8ea0b2705c90518ba623cbdc74f8d644d7eb0d107be0d85d9c\",\"sha256:dc80f0f5abf33bd7099f7ac94ab1206730a3c0a2d17549911ed2cb6b7aa36d2d\",\"sha256:e015122b337858dba5a3dc3533af2a8fc0410ee9e2374092f6a5b88b182e9fcc\",\"sha256:e208d3bf02c6963e6ef7324dadf1d73239fb7008491fdf523208f60be6437402\",\"sha256:e2f909bc08ce01f122fd9c24bc6f9876aa087188dfaf3c4116fe6e4daf7e194f\",\"sha256:f0cb4a7814940ddd6619bdce6be637a4b37a8c4760de9373bac54bb7b229698b\",\"sha256:f4b3917296630a075e04d3d07601ce2a176479c23af838b6cf90a2d6b39b0d95\",\"sha256:f69f16b8f1c69da00e38dc5f2d08a86b0e781d0ad3e4cc6a13ea033a439c4844\",\"sha256:f833c529e922577226a05bc25b6a8b3eb6c4fb155b72dd88d33de99d53113124\",\"sha256:f91719c6abafe429c1a144cfe27883eace9fb1c09a9c5ef1bcb3ae80a3076a4e\",\"sha256:ff741a5b4be2d08fceaab681c9d4bc89abf3c9db600ab435e20b9b6d4dfef12e\",\"sha256:ffdfebd819f492e48e4f31c97cb593b9c1a8251933d8f8972e81697f00326ff1\"],\"markers\":\"python_version >= '3.8'\"},\"urllib3\":{\"version\":\"==2.2.1\",\"hashes\":[\"sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d\",\"sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19\"],\"markers\":\"python_version >= '3.8'\"},\"usgs\":{\"version\":\"==0.3.5\",\"hashes\":[\"sha256:62734bfd23829e8b90701c49cb2f868d3bf4c706ea6b53939711186cf6df0807\"]},\"uvicorn\":{\"version\":\"==0.29.0\",\"hashes\":[\"sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de\",\"sha256:6a69214c0b6a087462412670b3ef21224fa48cae0e452b5883e8e8bdfdd11dd0\"],\"markers\":\"python_version >= '3.8'\",\"extras\":[\"standard\"]},\"uvloop\":{\"version\":\"==0.19.0\",\"hashes\":[\"sha256:0246f4fd1bf2bf702e06b0d45ee91677ee5c31242f39aab4ea6fe0c51aedd0fd\",\"sha256:02506dc23a5d90e04d4f65c7791e65cf44bd91b37f24cfc3ef6cf2aff05dc7ec\",\"sha256:13dfdf492af0aa0a0edf66807d2b465607d11c4fa48f4a1fd41cbea5b18e8e8b\",\"sha256:2693049be9d36fef81741fddb3f441673ba12a34a704e7b4361efb75cf30befc\",\"sha256:271718e26b3e17906b28b67314c45d19106112067205119dddbd834c2b7ce797\",\"sha256:2df95fca285a9f5bfe730e51945ffe2fa71ccbfdde3b0da5772b4ee4f2e770d5\",\"sha256:31e672bb38b45abc4f26e273be83b72a0d28d074d5b370fc4dcf4c4eb15417d2\",\"sha256:34175c9fd2a4bc3adc1380e1261f60306344e3407c20a4d684fd5f3be010fa3d\",\"sha256:45bf4c24c19fb8a50902ae37c5de50da81de4922af65baf760f7c0c42e1088be\",\"sha256:472d61143059c84947aa8bb74eabbace30d577a03a1805b77933d6bd13ddebbd\",\"sha256:47bf3e9312f63684efe283f7342afb414eea4d3011542155c7e625cd799c3b12\",\"sha256:492e2c32c2af3f971473bc22f086513cedfc66a130756145a931a90c3958cb17\",\"sha256:4ce6b0af8f2729a02a5d1575feacb2a94fc7b2e983868b009d51c9a9d2149bef\",\"sha256:5138821e40b0c3e6c9478643b4660bd44372ae1e16a322b8fc07478f92684e24\",\"sha256:5588bd21cf1fcf06bded085f37e43ce0e00424197e7c10e77afd4bbefffef428\",\"sha256:570fc0ed613883d8d30ee40397b79207eedd2624891692471808a95069a007c1\",\"sha256:5a05128d315e2912791de6088c34136bfcdd0c7cbc1cf85fd6fd1bb321b7c849\",\"sha256:5daa304d2161d2918fa9a17d5635099a2f78ae5b5960e742b2fcfbb7aefaa593\",\"sha256:5f17766fb6da94135526273080f3455a112f82570b2ee5daa64d682387fe0dcd\",\"sha256:6e3d4e85ac060e2342ff85e90d0c04157acb210b9ce508e784a944f852a40e67\",\"sha256:7010271303961c6f0fe37731004335401eb9075a12680738731e9c92ddd96ad6\",\"sha256:7207272c9520203fea9b93843bb775d03e1cf88a80a936ce760f60bb5add92f3\",\"sha256:78ab247f0b5671cc887c31d33f9b3abfb88d2614b84e4303f1a63b46c046c8bd\",\"sha256:7b1fd71c3843327f3bbc3237bedcdb6504fd50368ab3e04d0410e52ec293f5b8\",\"sha256:8ca4956c9ab567d87d59d49fa3704cf29e37109ad348f2d5223c9bf761a332e7\",\"sha256:91ab01c6cd00e39cde50173ba4ec68a1e578fee9279ba64f5221810a9e786533\",\"sha256:cd81bdc2b8219cb4b2556eea39d2e36bfa375a2dd021404f90a62e44efaaf957\",\"sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650\",\"sha256:de4313d7f575474c8f5a12e163f6d89c0a878bc49219641d49e6f1444369a90e\",\"sha256:e27f100e1ff17f6feeb1f33968bc185bf8ce41ca557deee9d9bbbffeb72030b7\",\"sha256:f467a5fd23b4fc43ed86342641f3936a68ded707f4627622fa3f82a120e18256\"]},\"watchfiles\":{\"version\":\"==0.21.0\",\"hashes\":[\"sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc\",\"sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365\",\"sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0\",\"sha256:08dca260e85ffae975448e344834d765983237ad6dc308231aa16e7933db763e\",\"sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124\",\"sha256:0dd5fad9b9c0dd89904bbdea978ce89a2b692a7ee8a0ce19b940e538c88a809c\",\"sha256:11cd0c3100e2233e9c53106265da31d574355c288e15259c0d40a4405cbae317\",\"sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094\",\"sha256:18d5b4da8cf3e41895b34e8c37d13c9ed294954907929aacd95153508d5d89d7\",\"sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235\",\"sha256:1b8d1eae0f65441963d805f766c7e9cd092f91e0c600c820c764a4ff71a0764c\",\"sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c\",\"sha256:1c9198c989f47898b2c22201756f73249de3748e0fc9de44adaf54a8b259cc0c\",\"sha256:1fd9a5205139f3c6bb60d11f6072e0552f0a20b712c85f43d42342d162be1235\",\"sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293\",\"sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa\",\"sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef\",\"sha256:3ad692bc7792be8c32918c699638b660c0de078a6cbe464c46e1340dadb94c19\",\"sha256:3ccceb50c611c433145502735e0370877cced72a6c70fd2410238bcbc7fe51d8\",\"sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d\",\"sha256:3f92944efc564867bbf841c823c8b71bb0be75e06b8ce45c084b46411475a915\",\"sha256:40bca549fdc929b470dd1dbfcb47b3295cb46a6d2c90e50588b0a1b3bd98f429\",\"sha256:43babacef21c519bc6631c5fce2a61eccdfc011b4bcb9047255e9620732c8097\",\"sha256:4566006aa44cb0d21b8ab53baf4b9c667a0ed23efe4aaad8c227bfba0bf15cbe\",\"sha256:49f56e6ecc2503e7dbe233fa328b2be1a7797d31548e7a193237dcdf1ad0eee0\",\"sha256:4c48a10d17571d1275701e14a601e36959ffada3add8cdbc9e5061a6e3579a5d\",\"sha256:4ea10a29aa5de67de02256a28d1bf53d21322295cb00bd2d57fcd19b850ebd99\",\"sha256:511f0b034120cd1989932bf1e9081aa9fb00f1f949fbd2d9cab6264916ae89b1\",\"sha256:51ddac60b96a42c15d24fbdc7a4bfcd02b5a29c047b7f8bf63d3f6f5a860949a\",\"sha256:57d430f5fb63fea141ab71ca9c064e80de3a20b427ca2febcbfcef70ff0ce895\",\"sha256:59137c0c6826bd56c710d1d2bda81553b5e6b7c84d5a676747d80caf0409ad94\",\"sha256:5a03651352fc20975ee2a707cd2d74a386cd303cc688f407296064ad1e6d1562\",\"sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab\",\"sha256:642d66b75eda909fd1112d35c53816d59789a4b38c141a96d62f50a3ef9b3360\",\"sha256:6674b00b9756b0af620aa2a3346b01f8e2a3dc729d25617e1b89cf6af4a54eb1\",\"sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7\",\"sha256:66fac0c238ab9a2e72d026b5fb91cb902c146202bbd29a9a1a44e8db7b710b6f\",\"sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03\",\"sha256:6c889025f59884423428c261f212e04d438de865beda0b1e1babab85ef4c0f01\",\"sha256:6cb8fdc044909e2078c248986f2fc76f911f72b51ea4a4fbbf472e01d14faa58\",\"sha256:6e9be3ef84e2bb9710f3f777accce25556f4a71e15d2b73223788d528fcc2052\",\"sha256:7f762a1a85a12cc3484f77eee7be87b10f8c50b0b787bb02f4e357403cad0c0e\",\"sha256:83a696da8922314ff2aec02987eefb03784f473281d740bf9170181829133765\",\"sha256:853853cbf7bf9408b404754b92512ebe3e3a83587503d766d23e6bf83d092ee6\",\"sha256:8ad3fe0a3567c2f0f629d800409cd528cb6251da12e81a1f765e5c5345fd0137\",\"sha256:8c6ed10c2497e5fedadf61e465b3ca12a19f96004c15dcffe4bd442ebadc2d85\",\"sha256:8d5f400326840934e3507701f9f7269247f7c026d1b6cfd49477d2be0933cfca\",\"sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f\",\"sha256:9a0aa47f94ea9a0b39dd30850b0adf2e1cd32a8b4f9c7aa443d852aacf9ca214\",\"sha256:9b37a7ba223b2f26122c148bb8d09a9ff312afca998c48c725ff5a0a632145f7\",\"sha256:9c873345680c1b87f1e09e0eaf8cf6c891b9851d8b4d3645e7efe2ec20a20cc7\",\"sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3\",\"sha256:9d353c4cfda586db2a176ce42c88f2fc31ec25e50212650c89fdd0f560ee507b\",\"sha256:a1e3014a625bcf107fbf38eece0e47fa0190e52e45dc6eee5a8265ddc6dc5ea7\",\"sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6\",\"sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994\",\"sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9\",\"sha256:b3cab0e06143768499384a8a5efb9c4dc53e19382952859e4802f294214f36ec\",\"sha256:b4a21f71885aa2744719459951819e7bf5a906a6448a6b2bbce8e9cc9f2c8128\",\"sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c\",\"sha256:be6dd5d52b73018b21adc1c5d28ac0c68184a64769052dfeb0c5d9998e7f56a2\",\"sha256:c550a56bf209a3d987d5a975cdf2063b3389a5d16caf29db4bdddeae49f22078\",\"sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3\",\"sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e\",\"sha256:cfb92d49dbb95ec7a07511bc9efb0faff8fe24ef3805662b8d6808ba8409a71a\",\"sha256:d23bcd6c8eaa6324fe109d8cac01b41fe9a54b8c498af9ce464c1aeeb99903d6\",\"sha256:d5b1dc0e708fad9f92c296ab2f948af403bf201db8fb2eb4c8179db143732e49\",\"sha256:d78f30cbe8b2ce770160d3c08cff01b2ae9306fe66ce899b73f0409dc1846c1b\",\"sha256:d8f57c4461cd24fda22493109c45b3980863c58a25b8bec885ca8bea6b8d4b28\",\"sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9\",\"sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586\",\"sha256:ebe684d7d26239e23d102a2bad2a358dedf18e462e8808778703427d1f584400\",\"sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165\",\"sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303\",\"sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d\"]},\"websockets\":{\"version\":\"==12.0\",\"hashes\":[\"sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b\",\"sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6\",\"sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df\",\"sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b\",\"sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205\",\"sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892\",\"sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53\",\"sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2\",\"sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed\",\"sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c\",\"sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd\",\"sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b\",\"sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931\",\"sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30\",\"sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370\",\"sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be\",\"sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec\",\"sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf\",\"sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62\",\"sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b\",\"sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402\",\"sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f\",\"sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123\",\"sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9\",\"sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603\",\"sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45\",\"sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558\",\"sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4\",\"sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438\",\"sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137\",\"sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480\",\"sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447\",\"sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8\",\"sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04\",\"sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c\",\"sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb\",\"sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967\",\"sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b\",\"sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d\",\"sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def\",\"sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c\",\"sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92\",\"sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2\",\"sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113\",\"sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b\",\"sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28\",\"sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7\",\"sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d\",\"sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f\",\"sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468\",\"sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8\",\"sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae\",\"sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611\",\"sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d\",\"sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9\",\"sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca\",\"sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f\",\"sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2\",\"sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077\",\"sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2\",\"sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6\",\"sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374\",\"sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc\",\"sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e\",\"sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53\",\"sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399\",\"sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547\",\"sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3\",\"sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870\",\"sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5\",\"sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8\",\"sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7\"]},\"whoosh\":{\"version\":\"==2.7.4\",\"hashes\":[\"sha256:7ca5633dbfa9e0e0fa400d3151a8a0c4bec53bd2ecedc0a67705b17565c31a83\",\"sha256:aa39c3c3426e3fd107dcb4bde64ca1e276a65a889d9085a6e4b54ba82420a852\",\"sha256:e0857375f63e9041e03fedd5b7541f97cf78917ac1b6b06c1fcc9b45375dda69\"]}},\"develop\":{}}" From 0a41f63426669e0ee64025ce4428e318064a3ab4 Mon Sep 17 00:00:00 2001 From: Martin Schobben Date: Thu, 10 Oct 2024 17:02:49 +0200 Subject: [PATCH 02/10] format text --- unit_02/04_l-band-sar.ipynb | 161 +++++++++++++++++++++++++----------- 1 file changed, 111 insertions(+), 50 deletions(-) diff --git a/unit_02/04_l-band-sar.ipynb b/unit_02/04_l-band-sar.ipynb index 91b2fcf..7a06d97 100644 --- a/unit_02/04_l-band-sar.ipynb +++ b/unit_02/04_l-band-sar.ipynb @@ -4,27 +4,33 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Data Cubes\n", + "## Data Cubes\n", "\n", - "In this notebooke we discuss how we can easily compare images of two or more different timeslices, satellites or other earth observation products. We limit our selves to products on a regular grid which have already an associated projections. This leaves still multiple methods (i.e. mesh grids), we will only deal with raster stacking to form data cubes. We can have data cubes in many forms. Some are mote familar then others, such as the temporospatial datacube\n", + "In this notebook we discuss how we can easily compare images of two or more different time slices, satellites or other earth observation products. We limit our selves to products on a regular grid with an associated coordinate reference system (CRS), known as a raster. This means that each cell of the raster contains an attribute value and location coordinates. The process of combining such rasters to form data cubes is called raster stacking. We can have data cubes in many forms. Some will be more familiar then others, such as the temporospatial datacube:\n", "\n", - "$$Z = f(x,y,t)$$\n", + "$$Z = f(x,y,t) \\quad \\text{,}$$\n", "\n", - "or when dealing with electromagnetic spectrum , the spectral wavelengths may form an additional dimen:\n", + "or when dealing with electromagnetic spectrum , the spectral wavelengths may form additional dimensions of a cube:\n", "\n", - "$$Z = f(x,y,t, \\lambda )$$\n", + "$$Z = f(x,y,t, \\lambda ) \\quad \\text{.} $$\n", "\n", - "We also have already encountrered the case where Z form multiple variables of an Xr.dataset\n", + "We also have already encountered the case where $Z$ consists of multiple variables, such as seen in the `xarray` dataset.\n", "\n", "$${Z_1,Z_2,...,Z_3} = f(x,y,t) $$\n", "\n", - "The stack arrays originating from different satellite images, or time slices of the same product, is also called co-registration. To perform array stacking in smaller examples, we generally first select an area of interst, then we have to make sure that the individual components have the same projection as well as resolution. To get the same resolution we have to resample one (or more) products. The ultimate projection and resolution can be targetted to adopt the projection and resolution of one of the original arrays or a completely new ...\n", + "To perform raster stacking, we generally follow a certain routine (see Figure).\n", "\n", + "1. Collect data (GeoTIFF, NetCDF, Zarr)\n", + "2. Select an area of interest\n", + "3. Reproject all rasters to the same projection, resolution, and region\n", + "4. Stack the individual rasters\n", + "\n", + "To get the same projection, resolution, and region we have to resample one (or more) products. The desired projection, resolution, and region can be adopted from one of the original rasters or it can be a completely new projection of the data.\n", "\n", "![](https://eox.at/images/eodcaas-mosaic-data-cube-kopp.png)\n", "\n", "\n", - "FOr this notebook we will study two different SAR products. SAR data from the alos and sentinel-1 satellite." + "In this notebook we will study two different SAR products. SAR data from the Advanced Land Observing Satellite (ALOS-1), which was a Japanese platform with an L-band sensor from the Japan Aerospace Exploration Agency (JAXA), and C-band data from the Copernicus Sentinel-1 mission." ] }, { @@ -40,7 +46,17 @@ "import numpy as np\n", "import folium\n", "from shapely.geometry import mapping, box\n", - "from functools import partial" + "from functools import partial\n", + "from rasterio.enums import Resampling" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading Data\n", + "\n", + "Before loading the data into memory we will first look at the area covered by the Sentinel-1 dataset on a map. This way we can select a region of interest for our hypothetical study. We will extract and transform the bounds of the data to longitude and latitude." ] }, { @@ -52,22 +68,15 @@ "data_path = Path(\"~/shared/datasets/rs/alos\").expanduser()\n", "\n", "bbox = xr.open_mfdataset(\n", - " (data_path / \"sentinel-1\").glob(\"*.tif\"), \n", - " engine=\"rasterio\", \n", + " (data_path / \"sentinel-1\").glob(\"*.tif\"),\n", + " engine=\"rasterio\",\n", " combine=\"nested\",\n", " concat_dim=\"band\"\n", " ).\\\n", " rio.transform_bounds(\"EPSG:4326\")\n", + "\n", "bbox = box(*bbox)\n", - "bbox.bounds" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "\n", "map = folium.Map(\n", " max_bounds=True,\n", " location=[bbox.centroid.y, bbox.centroid.x],\n", @@ -76,13 +85,23 @@ " dragging= False\n", ")\n", "\n", - "area_of_interest = box(10, 45.3, 10.8, 45.7) # longitude latitude\n", + "# minimum longitude minimum latitude maximum longitude maximum latitude\n", + "area_of_interest = box(10, 45.3, 10.8, 45.7) \n", "\n", "folium.GeoJson(mapping(area_of_interest), name=\"Area of Interest\").add_to(map)\n", "\n", "map" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On the map we have drawn a rectangle that defines our study area. To prevent loading too much data we will now only load the data as defined by the rectangle on the `folium` map. \n", + "\n", + "The Sentinel-1 data is stored in the `shared` folder of the JupyterHub as separate two-dimensional GeoTIFF files with a certain timestamp. The following `s1_preprocess` function allows use to load all files in one go as a spatiotemporal datacube. Basically, the preprocessing function helps read the timestamp from the file and adds this a new dimension to the array. The latter allows a concatenation procedure whereby all files are joined along the new time dimension. In addition by providing `area_of_interest.bounds` to the parameter `bbox` we will only load the data of the previously defined area of interest." + ] + }, { "cell_type": "code", "execution_count": null, @@ -91,6 +110,19 @@ "source": [ "def s1_preprocess(x, bbox):\n", "\n", + " '''\n", + " Preprocess file.\n", + "\n", + " Parameters\n", + " ----------\n", + " x : xarray.Dataset\n", + " bbox: tuple\n", + " minimum longitude minimum latitude maximum longitude maximum latitude\n", + " Returns\n", + " -------\n", + " xarray.Dataset\n", + " '''\n", + "\n", " filename = Path(x.encoding[\"source\"]).name\n", " x = x.rio.clip_box(*bbox, crs=\"EPSG:4326\",)\n", "\n", @@ -104,8 +136,22 @@ " x = x.rename({\"band_data\": band_name}).\\\n", " squeeze(\"band\").drop_vars(\"band\").\\\n", " chunk(chunks={'x': 1500, 'y': 1500, 'time': 1})\n", - " return x \n", - "\n", + " return x " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We load the data again with `Xarray.openmfdataset` and by providing the preprocess function including the bounds of the area of interest, as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ "partial_ = partial(s1_preprocess, bbox=area_of_interest.bounds)\n", "\n", "s1_ds = xr.open_mfdataset(\n", @@ -123,7 +169,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To enable stacking we need to know so more information of the raster, besides the extent. What coordinate reference system is used by the dataset for projecting on a map. In addition we want to know the raster resolution. THis is the area on the ground covered by each pixel. The units of resolution are again defined by the CRS" + "To enable further stacking of ALOS-1 and Sentinel-1 data we need to know some more information of the raster. we define the following function `print_raster` to get the projection (CRS), resolution, and region (bounds)." ] }, { @@ -135,7 +181,6 @@ "def print_raster(raster, name):\n", " print(\n", " f\"{name} Raster:\\n----------------\\n\"\n", - " f\"shape: {raster.rio.shape}\\n\"\n", " f\"resolution: {raster.rio.resolution()} {raster.rio.crs.units_factor}\\n\"\n", " f\"bounds: {raster.rio.bounds()}\\n\"\n", " f\"CRS: {raster.rio.crs}\\n\"\n", @@ -149,11 +194,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "EPSG 27704 is part of the EQUI7Grid. This grid is angular preserving and show true linear scale between one or two points. THis feautre is ... for remote sesning as it reduces so-called oversampling due to geomtric distortions when projection on a sphere.\n", + "The CRS \"EPSG 27704\" is part of the EQUI7Grid. This grid is angular preserving and show true linear scale between one or two points. This feature is important for remote sensing as it reduces so-called oversampling due to geometric distortions when projection on a sphere.\n", "\n", - "# L Band\n", - "\n", - "Now we will load L band" + "Now we will proceed with loading the ALOS-1 L-band data in much the same fashion as for Sentinel-1. Again timeslices are stored seperately as GeoTIFFS and need to be concatenate along the time dimension. We use the slightly different preprocessing function `alos_preprocess` for this purpose. Most notably is the inclusion of a scaling factor to correctly convert the integers to floating point values." ] }, { @@ -164,10 +207,24 @@ "source": [ "def alos_preprocess(x, bbox, scale):\n", "\n", + " '''\n", + " Preprocess file.\n", + "\n", + " Parameters\n", + " ----------\n", + " x : xarray.Dataset\n", + " bbox: tuple\n", + " minimum longitude minimum latitude maximum longitude maximum latitude\n", + " scale: float\n", + " scaling factor\n", + " Returns\n", + " -------\n", + " xarray.Dataset\n", + " '''\n", + "\n", " filename = Path(x.encoding[\"source\"]).name\n", " x = x.rio.clip_box(*bbox, crs=\"EPSG:4326\",)\n", "\n", - "\n", " date_str = filename.split('_')[0][15:22]\n", " date = pd.to_datetime(date_str, format='%y%m%d')\n", " x = x.assign_coords({\"time\": date}).expand_dims(\"time\")\n", @@ -182,9 +239,22 @@ " if \"band_data\" in x.variables:\n", " x = x.drop_vars(\"band_data\")\n", "\n", - " return x * scale\n", - "\n", - "\n", + " return x * scale" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load the data with `Xarray.open_mfdataset` and by providing the preprocess function including the bounds of the area of interest and the scaling factor, as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ "partial_ = partial(alos_preprocess, bbox=area_of_interest.bounds, scale=0.01)\n", "\n", "alos_ds = xr.open_mfdataset(\n", @@ -203,7 +273,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Aagain we will look at the metadata to compare with sentinel 1" + "Also, for this dataset we will look at the metadata in order to compare it with Sentinel-1." ] }, { @@ -212,14 +282,14 @@ "metadata": {}, "outputs": [], "source": [ - "print_raster(s1_ds, \"Alos\")" + "print_raster(alos_ds, \"ALOS-1\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "This is an UTM grid. We would therefore like to reproject this data to match Sentinel-1. Furthermore we will increase the resolution of the data by upsampeling. rioxarray has a conveienient function that can do this all in one go" + "This data comes projected as an UTM grid. We would therefore like to reproject this data to match the projection of Sentinel-1. Furthermore we will increase the resolution of the data by upsampling. The `rioxarray` has a very convenient method that can do this all in one go `reproject_match`. For continuous data it is best to use a bilinear resampling strategy. Consider however again that we deal with values in the dB range and we need to convert to the linear scale before bilinear resampling." ] }, { @@ -228,7 +298,6 @@ "metadata": {}, "outputs": [], "source": [ - "from rasterio.enums import Resampling\n", "alos_ds_lin = 10 ** (alos_ds / 10)\n", "alos_ds_lin = alos_ds_lin.rio.reproject_match(s1_ds, resampling=Resampling.bilinear,)\n", "alos_ds = 10 * np.log10(alos_ds)\n", @@ -239,7 +308,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Because of small error in how number are stored in a compute we will override the values" + "We will overwrite the coordinate values of ALOS-1 with those of Sentinel-1. If we would not do this small errors in how number are stored due to floating point precision would prevent stacking of the rasters." ] }, { @@ -251,23 +320,15 @@ "alos_ds = alos_ds.assign_coords({\n", " \"x\": s1_ds.x,\n", " \"y\": s1_ds.y,\n", - "})" + "})\n", + "alos_ds" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "errors exist in the spatial location that make stacking over arrays inaccruate to some degree" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "alos_ds" + "Now we are finally ready to stack Sentinel-1 C-band and ALOS-1 L-band data with `Xarray.concat`. " ] }, { @@ -283,7 +344,7 @@ "metadata": { "dependency_resolution_engine": "pipenv", "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "mirowave-remote-sensing", "language": "python", "name": "python3" }, From 93b68b9c960b989b40d5ba0aa75444dc258a5391 Mon Sep 17 00:00:00 2001 From: Martin Schobben Date: Thu, 10 Oct 2024 17:26:29 +0200 Subject: [PATCH 03/10] store data --- unit_02/04_l-band-sar.ipynb | 61 ++++++++++++++++++++++++++----------- 1 file changed, 44 insertions(+), 17 deletions(-) diff --git a/unit_02/04_l-band-sar.ipynb b/unit_02/04_l-band-sar.ipynb index 7a06d97..27bdc43 100644 --- a/unit_02/04_l-band-sar.ipynb +++ b/unit_02/04_l-band-sar.ipynb @@ -30,7 +30,7 @@ "![](https://eox.at/images/eodcaas-mosaic-data-cube-kopp.png)\n", "\n", "\n", - "In this notebook we will study two different SAR products. SAR data from the Advanced Land Observing Satellite (ALOS-1), which was a Japanese platform with an L-band sensor from the Japan Aerospace Exploration Agency (JAXA), and C-band data from the Copernicus Sentinel-1 mission." + "In this notebook we will study two different SAR products. SAR data from the Advanced Land Observing Satellite (ALOS-1), which was a Japanese platform with an L-band sensor from the Japan Aerospace Exploration Agency (JAXA), and C-band data from the Copernicus Sentinel-1 mission. It is our goal to compare C- with L-band, so we need to somehow stack these arrays." ] }, { @@ -40,7 +40,7 @@ "outputs": [], "source": [ "import xarray as xr\n", - "import rioxarray\n", + "import rioxarray #noqa\n", "import pandas as pd\n", "from pathlib import Path\n", "import numpy as np\n", @@ -82,11 +82,11 @@ " location=[bbox.centroid.y, bbox.centroid.x],\n", " zoom_control=False,\n", " scrollWheelZoom=False,\n", - " dragging= False\n", + " dragging=False\n", ")\n", "\n", "# minimum longitude minimum latitude maximum longitude maximum latitude\n", - "area_of_interest = box(10, 45.3, 10.8, 45.7) \n", + "area_of_interest = box(10, 45.3, 10.8, 45.7)\n", "\n", "folium.GeoJson(mapping(area_of_interest), name=\"Area of Interest\").add_to(map)\n", "\n", @@ -99,7 +99,7 @@ "source": [ "On the map we have drawn a rectangle that defines our study area. To prevent loading too much data we will now only load the data as defined by the rectangle on the `folium` map. \n", "\n", - "The Sentinel-1 data is stored in the `shared` folder of the JupyterHub as separate two-dimensional GeoTIFF files with a certain timestamp. The following `s1_preprocess` function allows use to load all files in one go as a spatiotemporal datacube. Basically, the preprocessing function helps read the timestamp from the file and adds this a new dimension to the array. The latter allows a concatenation procedure whereby all files are joined along the new time dimension. In addition by providing `area_of_interest.bounds` to the parameter `bbox` we will only load the data of the previously defined area of interest." + "The Sentinel-1 data is stored in the `shared` folder of the JupyterHub as separate two-dimensional GeoTIFF files with a certain timestamp. The following `s1_preprocess` function allows use to load all files in one go as a spatiotemporal datacube. Basically, the preprocessing function helps read the timestamp from the file and adds this as a new dimension to the array. The latter allows a concatenation procedure whereby all files are joined along the new time dimension. In addition by providing `area_of_interest.bounds` to the parameter `bbox` we will only load the data of the previously defined area of interest." ] }, { @@ -136,14 +136,15 @@ " x = x.rename({\"band_data\": band_name}).\\\n", " squeeze(\"band\").drop_vars(\"band\").\\\n", " chunk(chunks={'x': 1500, 'y': 1500, 'time': 1})\n", - " return x " + "\n", + " return x" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We load the data again with `Xarray.openmfdataset` and by providing the preprocess function including the bounds of the area of interest, as follows:" + "We load the data again with `Xarray.open_mfdataset` and by providing the preprocess function including the bounds of the area of interest, as follows:" ] }, { @@ -169,7 +170,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To enable further stacking of ALOS-1 and Sentinel-1 data we need to know some more information of the raster. we define the following function `print_raster` to get the projection (CRS), resolution, and region (bounds)." + "To enable further stacking of ALOS-1 and Sentinel-1 data we need to know some more information about the raster. Hence we define the following function `print_raster` to get the projection (CRS), resolution, and region (bounds)." ] }, { @@ -180,8 +181,8 @@ "source": [ "def print_raster(raster, name):\n", " print(\n", - " f\"{name} Raster:\\n----------------\\n\"\n", - " f\"resolution: {raster.rio.resolution()} {raster.rio.crs.units_factor}\\n\"\n", + " f\"{name} Raster: \\n----------------\\n\"\n", + " f\"resolution: {raster.rio.resolution()} {raster.rio.crs.units_factor}\\n\" #noqa\n", " f\"bounds: {raster.rio.bounds()}\\n\"\n", " f\"CRS: {raster.rio.crs}\\n\"\n", " )\n", @@ -196,7 +197,7 @@ "source": [ "The CRS \"EPSG 27704\" is part of the EQUI7Grid. This grid is angular preserving and show true linear scale between one or two points. This feature is important for remote sensing as it reduces so-called oversampling due to geometric distortions when projection on a sphere.\n", "\n", - "Now we will proceed with loading the ALOS-1 L-band data in much the same fashion as for Sentinel-1. Again timeslices are stored seperately as GeoTIFFS and need to be concatenate along the time dimension. We use the slightly different preprocessing function `alos_preprocess` for this purpose. Most notably is the inclusion of a scaling factor to correctly convert the integers to floating point values." + "Now we will proceed with loading the ALOS-1 L-band data in much the same fashion as for Sentinel-1. Again timeslices are stored seperately as GeoTIFFS and need to be concatenate along the time dimension. We use the slightly different preprocessing function `alos_preprocess` for this purpose. Most notable difference of this function is the inclusion of a scaling factor to correctly convert the integers to floating point values." ] }, { @@ -234,7 +235,9 @@ " elif \"HH\" in filename:\n", " x = x.rename({\"band_data\": \"HH\"})\n", "\n", - " x = x.squeeze(\"band\").drop_vars(\"band\").chunk(chunks={'x': 1500, 'y': 1500, 'time': 1})\n", + " x = x.squeeze(\"band\").\\\n", + " drop_vars(\"band\").\\\n", + " chunk(chunks={'x': 1500, 'y': 1500, 'time': 1})\n", "\n", " if \"band_data\" in x.variables:\n", " x = x.drop_vars(\"band_data\")\n", @@ -246,7 +249,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Load the data with `Xarray.open_mfdataset` and by providing the preprocess function including the bounds of the area of interest and the scaling factor, as follows:" + "Load the data with `Xarray.open_mfdataset` and provide the preprocess function including the bounds of the area of interest and the scaling factor, as follows:" ] }, { @@ -262,7 +265,7 @@ " engine=\"rasterio\",\n", " combine=\"nested\",\n", " concat_dim=\"time\",\n", - " preprocess=partial_ \n", + " preprocess=partial_\n", " ).\\\n", " dropna(\"time\", how=\"all\")\n", "\n", @@ -289,7 +292,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This data comes projected as an UTM grid. We would therefore like to reproject this data to match the projection of Sentinel-1. Furthermore we will increase the resolution of the data by upsampling. The `rioxarray` has a very convenient method that can do this all in one go `reproject_match`. For continuous data it is best to use a bilinear resampling strategy. Consider however again that we deal with values in the dB range and we need to convert to the linear scale before bilinear resampling." + "This data comes projected in an UTM grid. We would therefore like to reproject this data to match the projection of Sentinel-1. Furthermore we will increase the resolution of the data by upsampling. The `rioxarray` has a very convenient method that can do this all in one go `reproject_match`. For continuous data it is best to use a bilinear resampling strategy. You have to, however, consider again that we deal with values in the dB range and we need to convert to the linear scale before bilinear resampling." ] }, { @@ -299,7 +302,10 @@ "outputs": [], "source": [ "alos_ds_lin = 10 ** (alos_ds / 10)\n", - "alos_ds_lin = alos_ds_lin.rio.reproject_match(s1_ds, resampling=Resampling.bilinear,)\n", + "alos_ds_lin = alos_ds_lin.rio.reproject_match(\n", + " s1_ds,\n", + " resampling=Resampling.bilinear,\n", + " )\n", "alos_ds = 10 * np.log10(alos_ds)\n", "alos_ds" ] @@ -308,7 +314,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We will overwrite the coordinate values of ALOS-1 with those of Sentinel-1. If we would not do this small errors in how number are stored due to floating point precision would prevent stacking of the rasters." + "We will overwrite the coordinate values of ALOS-1 with those of Sentinel-1. If we would not do this last step, small errors in how numbers are stored would prevent stacking of the rasters." ] }, { @@ -339,6 +345,27 @@ "source": [ "xr.concat([s1_ds, alos_ds], dim=\"time\")" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can plot each of the variables: \"ALOS-1\" and \"Sentinel-1\" to check our results." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As a last step we will show you how to store this new datacube, sot that one can reuse this data in the next notebook." + ] } ], "metadata": { From b24bb88007b79652f842ebefb830ea7017b12ae8 Mon Sep 17 00:00:00 2001 From: Martin Schobben Date: Fri, 11 Oct 2024 15:16:31 +0200 Subject: [PATCH 04/10] interp time --- unit_02/04_l-band-sar.ipynb | 53 +++++++++++++++++++++++++++++-------- unit_02/04_l-band-sar.yml | 5 ++++ 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/unit_02/04_l-band-sar.ipynb b/unit_02/04_l-band-sar.ipynb index 27bdc43..3fc4e7d 100644 --- a/unit_02/04_l-band-sar.ipynb +++ b/unit_02/04_l-band-sar.ipynb @@ -80,13 +80,14 @@ "map = folium.Map(\n", " max_bounds=True,\n", " location=[bbox.centroid.y, bbox.centroid.x],\n", - " zoom_control=False,\n", " scrollWheelZoom=False,\n", - " dragging=False\n", ")\n", "\n", + "# bounds of image\n", + "folium.GeoJson(mapping(bbox), name=\"Area of Interest\", color=\"red\").add_to(map)\n", + "\n", "# minimum longitude minimum latitude maximum longitude maximum latitude\n", - "area_of_interest = box(10, 45.3, 10.8, 45.7)\n", + "area_of_interest = box(10, 45.3, 10.8, 45.65)\n", "\n", "folium.GeoJson(mapping(area_of_interest), name=\"Area of Interest\").add_to(map)\n", "\n", @@ -97,7 +98,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "On the map we have drawn a rectangle that defines our study area. To prevent loading too much data we will now only load the data as defined by the rectangle on the `folium` map. \n", + "On the map we have drawn a rectangles of the area covered by the images and of our selected study area. To prevent loading too much data we will now only load the data as defined by the rectangle on the `folium` map. \n", "\n", "The Sentinel-1 data is stored in the `shared` folder of the JupyterHub as separate two-dimensional GeoTIFF files with a certain timestamp. The following `s1_preprocess` function allows use to load all files in one go as a spatiotemporal datacube. Basically, the preprocessing function helps read the timestamp from the file and adds this as a new dimension to the array. The latter allows a concatenation procedure whereby all files are joined along the new time dimension. In addition by providing `area_of_interest.bounds` to the parameter `bbox` we will only load the data of the previously defined area of interest." ] @@ -161,9 +162,10 @@ " concat_dim=\"time\",\n", " combine='nested',\n", " preprocess=partial_\n", - " )\n", + " ).drop_duplicates(\"time\").sortby(\"time\")\n", "\n", - "s1_ds" + "\n", + "s1_ds\n" ] }, { @@ -267,7 +269,7 @@ " concat_dim=\"time\",\n", " preprocess=partial_\n", " ).\\\n", - " dropna(\"time\", how=\"all\")\n", + " dropna(\"time\", how=\"all\").drop_duplicates(\"time\").sortby(\"time\")\n", "\n", "alos_ds" ] @@ -306,7 +308,25 @@ " s1_ds,\n", " resampling=Resampling.bilinear,\n", " )\n", - "alos_ds = 10 * np.log10(alos_ds)\n", + "alos_ds_lin" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "alos_ds_lin = alos_ds_lin.interp(time=s1_ds.time)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "alos_ds = 10 * np.log10(alos_ds_lin)\n", "alos_ds" ] }, @@ -330,6 +350,15 @@ "alos_ds" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "s1_ds" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -343,7 +372,7 @@ "metadata": {}, "outputs": [], "source": [ - "xr.concat([s1_ds, alos_ds], dim=\"time\")" + "fused_ds = xr.merge([s1_ds, alos_ds])" ] }, { @@ -358,7 +387,9 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "fused_ds.HH.plot(col=\"time\")" + ] }, { "cell_type": "markdown", @@ -371,7 +402,7 @@ "metadata": { "dependency_resolution_engine": "pipenv", "kernelspec": { - "display_name": "mirowave-remote-sensing", + "display_name": "Python 3", "language": "python", "name": "python3" }, diff --git a/unit_02/04_l-band-sar.yml b/unit_02/04_l-band-sar.yml index cfe20f3..3d58e07 100644 --- a/unit_02/04_l-band-sar.yml +++ b/unit_02/04_l-band-sar.yml @@ -6,3 +6,8 @@ dependencies: - pip - mamba - jupyter + - xarray + - rioxarray + - shapely + - dask + - folium From 1ce613226c2c387142c2cb5fad605797b86b834e Mon Sep 17 00:00:00 2001 From: Martin Schobben Date: Wed, 23 Oct 2024 16:35:35 +0200 Subject: [PATCH 05/10] fix area and normalization --- mrs-env.yml | 1 + unit_02/04_l-band-sar.ipynb | 117 +++++++++++++++++------------------- 2 files changed, 55 insertions(+), 63 deletions(-) diff --git a/mrs-env.yml b/mrs-env.yml index dc9bfed..09f1200 100644 --- a/mrs-env.yml +++ b/mrs-env.yml @@ -29,5 +29,6 @@ dependencies: - snaphu - stackstac - xarray + - zarr - pip: - graphviz \ No newline at end of file diff --git a/unit_02/04_l-band-sar.ipynb b/unit_02/04_l-band-sar.ipynb index 3fc4e7d..8f841a3 100644 --- a/unit_02/04_l-band-sar.ipynb +++ b/unit_02/04_l-band-sar.ipynb @@ -39,15 +39,20 @@ "metadata": {}, "outputs": [], "source": [ + "import numpy as np\n", + "import pandas as pd\n", "import xarray as xr\n", "import rioxarray #noqa\n", - "import pandas as pd\n", - "from pathlib import Path\n", - "import numpy as np\n", + "\n", + "import hvplot.xarray #noqa\n", "import folium\n", + "\n", "from shapely.geometry import mapping, box\n", - "from functools import partial\n", - "from rasterio.enums import Resampling" + "from shapely import affinity\n", + "from rasterio.enums import Resampling\n", + "\n", + "from pathlib import Path\n", + "from functools import partial" ] }, { @@ -87,7 +92,7 @@ "folium.GeoJson(mapping(bbox), name=\"Area of Interest\", color=\"red\").add_to(map)\n", "\n", "# minimum longitude minimum latitude maximum longitude maximum latitude\n", - "area_of_interest = box(10, 45.3, 10.8, 45.65)\n", + "area_of_interest = box(10.3, 45.5, 10.6, 45.6)\n", "\n", "folium.GeoJson(mapping(area_of_interest), name=\"Area of Interest\").add_to(map)\n", "\n", @@ -109,7 +114,7 @@ "metadata": {}, "outputs": [], "source": [ - "def s1_preprocess(x, bbox):\n", + "def s1_preprocess(x, bbox, scale):\n", "\n", " '''\n", " Preprocess file.\n", @@ -125,7 +130,7 @@ " '''\n", "\n", " filename = Path(x.encoding[\"source\"]).name\n", - " x = x.rio.clip_box(*bbox, crs=\"EPSG:4326\",)\n", + " x = x.rio.clip_box(*bbox, crs=\"EPSG:4326\")\n", "\n", " date_str = filename.split('_')[0][1:]\n", " time_str = filename.split('_')[1][:6]\n", @@ -133,12 +138,10 @@ " date = pd.to_datetime(datetime_str, format='%Y%m%d%H%M%S')\n", " x = x.expand_dims(dim={'time': [date]})\n", "\n", - " band_name = filename.split(\"_\")[3][10:12]\n", - " x = x.rename({\"band_data\": band_name}).\\\n", - " squeeze(\"band\").drop_vars(\"band\").\\\n", - " chunk(chunks={'x': 1500, 'y': 1500, 'time': 1})\n", + " x = x.rename({\"band_data\": \"s1\"}).\\\n", + " squeeze(\"band\").drop_vars(\"band\")\n", "\n", - " return x" + " return x * scale" ] }, { @@ -154,18 +157,20 @@ "metadata": {}, "outputs": [], "source": [ - "partial_ = partial(s1_preprocess, bbox=area_of_interest.bounds)\n", + "partial_ = partial(s1_preprocess, bbox=area_of_interest.bounds, scale=0.01)\n", "\n", "s1_ds = xr.open_mfdataset(\n", " (data_path / \"sentinel-1\").glob(\"*.tif\"),\n", " engine=\"rasterio\",\n", " concat_dim=\"time\",\n", " combine='nested',\n", + " chunks=-1,\n", " preprocess=partial_\n", - " ).drop_duplicates(\"time\").sortby(\"time\")\n", - "\n", + " ).\\\n", + " drop_duplicates(\"time\").\\\n", + " sortby(\"time\")\n", "\n", - "s1_ds\n" + "s1_ds" ] }, { @@ -197,7 +202,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The CRS \"EPSG 27704\" is part of the EQUI7Grid. This grid is angular preserving and show true linear scale between one or two points. This feature is important for remote sensing as it reduces so-called oversampling due to geometric distortions when projection on a sphere.\n", + "The CRS \"EPSG 27704\" is part of the EQUI7Grid. This grid is angular preserving and show true linear scale between one or two points. This feature is important for remote sensing as it reduces so-called oversampling due to geometric distortions when projecting on a sphere.\n", "\n", "Now we will proceed with loading the ALOS-1 L-band data in much the same fashion as for Sentinel-1. Again timeslices are stored seperately as GeoTIFFS and need to be concatenate along the time dimension. We use the slightly different preprocessing function `alos_preprocess` for this purpose. Most notable difference of this function is the inclusion of a scaling factor to correctly convert the integers to floating point values." ] @@ -208,7 +213,7 @@ "metadata": {}, "outputs": [], "source": [ - "def alos_preprocess(x, bbox, scale):\n", + "def alos_preprocess(x, bbox):\n", "\n", " '''\n", " Preprocess file.\n", @@ -226,32 +231,30 @@ " '''\n", "\n", " filename = Path(x.encoding[\"source\"]).name\n", - " x = x.rio.clip_box(*bbox, crs=\"EPSG:4326\",)\n", + " x = x.rio.clip_box(*bbox, crs=\"EPSG:4326\")\n", "\n", " date_str = filename.split('_')[0][15:22]\n", " date = pd.to_datetime(date_str, format='%y%m%d')\n", " x = x.assign_coords({\"time\": date}).expand_dims(\"time\")\n", "\n", " if \"HV\" in filename:\n", - " x = x.rename({\"band_data\": \"HV\"})\n", - " elif \"HH\" in filename:\n", - " x = x.rename({\"band_data\": \"HH\"})\n", + " x = x.rename({\"band_data\": \"alos\"})\n", "\n", " x = x.squeeze(\"band\").\\\n", - " drop_vars(\"band\").\\\n", - " chunk(chunks={'x': 1500, 'y': 1500, 'time': 1})\n", + " drop_vars(\"band\")\n", "\n", " if \"band_data\" in x.variables:\n", " x = x.drop_vars(\"band_data\")\n", "\n", - " return x * scale" + " # conversion to dB scale of alos\n", + " return 10 * np.log10(x ** 2) - 83.0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Load the data with `Xarray.open_mfdataset` and provide the preprocess function including the bounds of the area of interest and the scaling factor, as follows:" + "Load the data with the `open_mfdataset` function of `xarray` and provide yet again an preprocessing function (see above), which includes selection of the bounds of an area of interest, a scaling factor, and the extraction of time stamps from the file name." ] }, { @@ -260,16 +263,20 @@ "metadata": {}, "outputs": [], "source": [ - "partial_ = partial(alos_preprocess, bbox=area_of_interest.bounds, scale=0.01)\n", + "area_of_interest = affinity.scale(area_of_interest, xfact=1.7, yfact=1.7)\n", + "partial_ = partial(alos_preprocess, bbox=area_of_interest.bounds)\n", "\n", "alos_ds = xr.open_mfdataset(\n", " (data_path / \"alos\").glob(\"**/*.tif\"),\n", " engine=\"rasterio\",\n", " combine=\"nested\",\n", " concat_dim=\"time\",\n", + " chunks=-1,\n", " preprocess=partial_\n", " ).\\\n", - " dropna(\"time\", how=\"all\").drop_duplicates(\"time\").sortby(\"time\")\n", + " dropna(\"time\", how=\"all\").\\\n", + " drop_duplicates(\"time\").\\\n", + " sortby(\"time\")\n", "\n", "alos_ds" ] @@ -294,7 +301,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This data comes projected in an UTM grid. We would therefore like to reproject this data to match the projection of Sentinel-1. Furthermore we will increase the resolution of the data by upsampling. The `rioxarray` has a very convenient method that can do this all in one go `reproject_match`. For continuous data it is best to use a bilinear resampling strategy. You have to, however, consider again that we deal with values in the dB range and we need to convert to the linear scale before bilinear resampling." + "This data comes projected in an UTM grid. We would therefore like to reproject this data to match the projection of Sentinel-1. Furthermore we will increase the resolution of the data by upsampling. The `rioxarray` package has a very convenient method that can do this all in one go `reproject_match`. For continuous data it is best to use a bilinear resampling strategy. As always you have to consider again that we deal with values in the dB range and we need to convert to the linear scale before bilinear resampling." ] }, { @@ -308,24 +315,6 @@ " s1_ds,\n", " resampling=Resampling.bilinear,\n", " )\n", - "alos_ds_lin" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "alos_ds_lin = alos_ds_lin.interp(time=s1_ds.time)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ "alos_ds = 10 * np.log10(alos_ds_lin)\n", "alos_ds" ] @@ -350,20 +339,28 @@ "alos_ds" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we are finally ready to stack Sentinel-1 C-band and ALOS-1 L-band data with the function `merge` of `xarray`. " + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "s1_ds" + "fused_ds = xr.merge([s1_ds, alos_ds]).unify_chunks()\n", + "fused_ds" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now we are finally ready to stack Sentinel-1 C-band and ALOS-1 L-band data with `Xarray.concat`. " + "We can plot each of the variables: \"ALOS-1\" and \"Sentinel-1\" to check our results." ] }, { @@ -372,14 +369,15 @@ "metadata": {}, "outputs": [], "source": [ - "fused_ds = xr.merge([s1_ds, alos_ds])" + "fused_ds.alos.plot(col=\"time\", robust=True)\n", + "fused_ds.s1.plot(col=\"time\", robust=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We can plot each of the variables: \"ALOS-1\" and \"Sentinel-1\" to check our results." + "As a last step we will show you how to store this new datacube, sot that we can reuse this data in the next notebook." ] }, { @@ -388,23 +386,16 @@ "metadata": {}, "outputs": [], "source": [ - "fused_ds.HH.plot(col=\"time\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As a last step we will show you how to store this new datacube, sot that one can reuse this data in the next notebook." + "fused_ds.to_zarr(\"fused_ds.zarr\")" ] } ], "metadata": { "dependency_resolution_engine": "pipenv", "kernelspec": { - "display_name": "Python 3", + "display_name": "environment", "language": "python", - "name": "python3" + "name": "environment" }, "language_info": { "codemirror_mode": { @@ -416,7 +407,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.14" + "version": "3.10.15" }, "requirements": "{\"packages\":{\"eodag\":\"*\"},\"requires\":{\"python_version\":\"3.1\"},\"source\":[{\"name\":\"pypi\",\"url\":\"https://pypi.org/simple\",\"verify_ssl\":true}]}", "requirements_lock": "{\"_meta\":{\"sources\":[{\"url\":\"https://pypi.org/simple\",\"verify_ssl\":true,\"name\":\"pypi\"}],\"requires\":{\"python_version\":\"3.1\"},\"hash\":{\"sha256\":\"8ade4b96a1662dceebb03f4043d030091ddb37b163f4655b155b4056f50cb92b\"},\"pipfile-spec\":6},\"default\":{\"annotated-types\":{\"version\":\"==0.6.0\",\"hashes\":[\"sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43\",\"sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d\"],\"markers\":\"python_version >= '3.8'\"},\"anyio\":{\"version\":\"==4.3.0\",\"hashes\":[\"sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8\",\"sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6\"],\"markers\":\"python_version >= '3.8'\"},\"attrs\":{\"version\":\"==23.2.0\",\"hashes\":[\"sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30\",\"sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1\"],\"markers\":\"python_version >= '3.7'\"},\"boto3\":{\"version\":\"==1.34.102\",\"hashes\":[\"sha256:1c1fb2884f85c0ec6b62e6e7ed5a2a6635e1188f3ab5d2b700f7db1cf8464484\",\"sha256:65e4b9fb9ceefe19976e8822ac0cd68d28946d4697e538741d2bbdb5b45ae42f\"],\"markers\":\"python_version >= '3.8'\"},\"botocore\":{\"version\":\"==1.34.102\",\"hashes\":[\"sha256:79ac7fc2729294395c70eff9c23510f00785ad2acd78d6130cb4379e9f27da86\",\"sha256:e2f8a9f4bac6f7b568e6e981ac2a2500bc992329c85dde8546f0cae8605dd009\"],\"markers\":\"python_version >= '3.8'\"},\"cads-api-client\":{\"version\":\"==1.0.1\",\"hashes\":[\"sha256:3c22a6cf14e89a76eb9d8ad349e70a2cdee682939a6870c7c68ba61e3e56502f\",\"sha256:fb0fc61812ea0821869af3a865426bdeedebc7749e5e89dee1d028fa5a51d375\"]},\"cdsapi\":{\"version\":\"==0.7.0\",\"hashes\":[\"sha256:293ba622f25a15c29c435763d0bbeff4c44d1ee71bc7df965e9d191160d39d59\",\"sha256:b78d871c13862095476986904e7d7224c2480a6670e1bfd46718e095eaaf9b19\"]},\"certifi\":{\"version\":\"==2024.2.2\",\"hashes\":[\"sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f\",\"sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1\"],\"markers\":\"python_version >= '3.6'\"},\"charset-normalizer\":{\"version\":\"==3.3.2\",\"hashes\":[\"sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027\",\"sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087\",\"sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786\",\"sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8\",\"sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09\",\"sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185\",\"sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574\",\"sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e\",\"sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519\",\"sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898\",\"sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269\",\"sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3\",\"sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f\",\"sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6\",\"sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8\",\"sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a\",\"sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73\",\"sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc\",\"sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714\",\"sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2\",\"sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc\",\"sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce\",\"sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d\",\"sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e\",\"sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6\",\"sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269\",\"sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96\",\"sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d\",\"sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a\",\"sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4\",\"sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77\",\"sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d\",\"sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0\",\"sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed\",\"sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068\",\"sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac\",\"sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25\",\"sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8\",\"sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab\",\"sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26\",\"sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2\",\"sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db\",\"sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f\",\"sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5\",\"sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99\",\"sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c\",\"sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d\",\"sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811\",\"sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa\",\"sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a\",\"sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03\",\"sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b\",\"sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04\",\"sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c\",\"sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001\",\"sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458\",\"sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389\",\"sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99\",\"sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985\",\"sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537\",\"sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238\",\"sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f\",\"sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d\",\"sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796\",\"sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a\",\"sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143\",\"sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8\",\"sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c\",\"sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5\",\"sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5\",\"sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711\",\"sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4\",\"sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6\",\"sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c\",\"sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7\",\"sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4\",\"sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b\",\"sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae\",\"sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12\",\"sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c\",\"sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae\",\"sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8\",\"sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887\",\"sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b\",\"sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4\",\"sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f\",\"sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5\",\"sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33\",\"sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519\",\"sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561\"],\"markers\":\"python_full_version >= '3.7.0'\"},\"click\":{\"version\":\"==8.1.7\",\"hashes\":[\"sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28\",\"sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de\"],\"markers\":\"python_version >= '3.7'\"},\"decorator\":{\"version\":\"==5.1.1\",\"hashes\":[\"sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330\",\"sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186\"],\"markers\":\"python_version >= '3.5'\"},\"dnspython\":{\"version\":\"==2.6.1\",\"hashes\":[\"sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50\",\"sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc\"],\"markers\":\"python_version >= '3.8'\"},\"ecmwf-api-client\":{\"version\":\"==1.6.3\",\"hashes\":[\"sha256:3a00bda34a72e2d5198c97399a4750b42a6633efdb5e1b3a5fd2b2bbaa5db0d6\"]},\"email-validator\":{\"version\":\"==2.1.1\",\"hashes\":[\"sha256:200a70680ba08904be6d1eef729205cc0d687634399a5924d842533efb824b84\",\"sha256:97d882d174e2a65732fb43bfce81a3a834cbc1bde8bf419e30ef5ea976370a05\"],\"markers\":\"python_version >= '3.8'\"},\"eodag\":{\"version\":\"==2.12.1\",\"hashes\":[\"sha256:507a2b3335c6882f90f3b61ab1b71b6c677018520e2c5895b16d43e7130a5916\",\"sha256:ad613763ac8cb1504d0e60b28a5c32d498c1aeb8bf9e4a7403a0e4a2c7bc5f63\"],\"markers\":\"python_version >= '3.6'\",\"index\":\"pypi\"},\"exceptiongroup\":{\"version\":\"==1.2.1\",\"hashes\":[\"sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad\",\"sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16\"],\"markers\":\"python_version < '3.11'\"},\"fastapi\":{\"version\":\"==0.111.0\",\"hashes\":[\"sha256:97ecbf994be0bcbdadedf88c3150252bed7b2087075ac99735403b1b76cc8fc0\",\"sha256:b9db9dd147c91cb8b769f7183535773d8741dd46f9dc6676cd82eab510228cd7\"],\"markers\":\"python_version >= '3.8'\"},\"fastapi-cli\":{\"version\":\"==0.0.3\",\"hashes\":[\"sha256:3b6e4d2c4daee940fb8db59ebbfd60a72c4b962bcf593e263e4cc69da4ea3d7f\",\"sha256:ae233115f729945479044917d949095e829d2d84f56f55ce1ca17627872825a5\"],\"markers\":\"python_version >= '3.8'\"},\"geojson\":{\"version\":\"==3.1.0\",\"hashes\":[\"sha256:58a7fa40727ea058efc28b0e9ff0099eadf6d0965e04690830208d3ef571adac\",\"sha256:68a9771827237adb8c0c71f8527509c8f5bef61733aa434cefc9c9d4f0ebe8f3\"],\"markers\":\"python_version >= '3.7'\"},\"h11\":{\"version\":\"==0.14.0\",\"hashes\":[\"sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d\",\"sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761\"],\"markers\":\"python_version >= '3.7'\"},\"httpcore\":{\"version\":\"==1.0.5\",\"hashes\":[\"sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61\",\"sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5\"],\"markers\":\"python_version >= '3.8'\"},\"httptools\":{\"version\":\"==0.6.1\",\"hashes\":[\"sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563\",\"sha256:0ac5a0ae3d9f4fe004318d64b8a854edd85ab76cffbf7ef5e32920faef62f142\",\"sha256:0cf2372e98406efb42e93bfe10f2948e467edfd792b015f1b4ecd897903d3e8d\",\"sha256:1ed99a373e327f0107cb513b61820102ee4f3675656a37a50083eda05dc9541b\",\"sha256:3c3b214ce057c54675b00108ac42bacf2ab8f85c58e3f324a4e963bbc46424f4\",\"sha256:3e802e0b2378ade99cd666b5bffb8b2a7cc8f3d28988685dc300469ea8dd86cb\",\"sha256:3f30d3ce413088a98b9db71c60a6ada2001a08945cb42dd65a9a9fe228627658\",\"sha256:405784577ba6540fa7d6ff49e37daf104e04f4b4ff2d1ac0469eaa6a20fde084\",\"sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2\",\"sha256:4bd3e488b447046e386a30f07af05f9b38d3d368d1f7b4d8f7e10af85393db97\",\"sha256:4f0f8271c0a4db459f9dc807acd0eadd4839934a4b9b892f6f160e94da309837\",\"sha256:5cceac09f164bcba55c0500a18fe3c47df29b62353198e4f37bbcc5d591172c3\",\"sha256:639dc4f381a870c9ec860ce5c45921db50205a37cc3334e756269736ff0aac58\",\"sha256:678fcbae74477a17d103b7cae78b74800d795d702083867ce160fc202104d0da\",\"sha256:6a4f5ccead6d18ec072ac0b84420e95d27c1cdf5c9f1bc8fbd8daf86bd94f43d\",\"sha256:6f58e335a1402fb5a650e271e8c2d03cfa7cea46ae124649346d17bd30d59c90\",\"sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0\",\"sha256:7a7ea483c1a4485c71cb5f38be9db078f8b0e8b4c4dc0210f531cdd2ddac1ef1\",\"sha256:7d9ceb2c957320def533671fc9c715a80c47025139c8d1f3797477decbc6edd2\",\"sha256:7ebaec1bf683e4bf5e9fbb49b8cc36da482033596a415b3e4ebab5a4c0d7ec5e\",\"sha256:85ed077c995e942b6f1b07583e4eb0a8d324d418954fc6af913d36db7c05a5a0\",\"sha256:8ae5b97f690badd2ca27cbf668494ee1b6d34cf1c464271ef7bfa9ca6b83ffaf\",\"sha256:8b0bb634338334385351a1600a73e558ce619af390c2b38386206ac6a27fecfc\",\"sha256:8e216a038d2d52ea13fdd9b9c9c7459fb80d78302b257828285eca1c773b99b3\",\"sha256:93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503\",\"sha256:95658c342529bba4e1d3d2b1a874db16c7cca435e8827422154c9da76ac4e13a\",\"sha256:95fb92dd3649f9cb139e9c56604cc2d7c7bf0fc2e7c8d7fbd58f96e35eddd2a3\",\"sha256:97662ce7fb196c785344d00d638fc9ad69e18ee4bfb4000b35a52efe5adcc949\",\"sha256:9bb68d3a085c2174c2477eb3ffe84ae9fb4fde8792edb7bcd09a1d8467e30a84\",\"sha256:b512aa728bc02354e5ac086ce76c3ce635b62f5fbc32ab7082b5e582d27867bb\",\"sha256:c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a\",\"sha256:d2f6c3c4cb1948d912538217838f6e9960bc4a521d7f9b323b3da579cd14532f\",\"sha256:dcbab042cc3ef272adc11220517278519adf8f53fd3056d0e68f0a6f891ba94e\",\"sha256:e0b281cf5a125c35f7f6722b65d8542d2e57331be573e9e88bc8b0115c4a7a81\",\"sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185\",\"sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3\"]},\"httpx\":{\"version\":\"==0.27.0\",\"hashes\":[\"sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5\",\"sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5\"],\"markers\":\"python_version >= '3.8'\"},\"idna\":{\"version\":\"==3.7\",\"hashes\":[\"sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc\",\"sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0\"],\"markers\":\"python_version >= '3.5'\"},\"jinja2\":{\"version\":\"==3.1.4\",\"hashes\":[\"sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369\",\"sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d\"],\"markers\":\"python_version >= '3.7'\"},\"jmespath\":{\"version\":\"==1.0.1\",\"hashes\":[\"sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980\",\"sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe\"],\"markers\":\"python_version >= '3.7'\"},\"jsonpath-ng\":{\"version\":\"==1.5.3\",\"hashes\":[\"sha256:292a93569d74029ba75ac2dc3d3630fc0e17b2df26119a165fa1d498ca47bf65\",\"sha256:a273b182a82c1256daab86a313b937059261b5c5f8c4fa3fc38b882b344dd567\",\"sha256:f75b95dbecb8a0f3b86fd2ead21c2b022c3f5770957492b9b6196ecccfeb10aa\"]},\"lxml\":{\"version\":\"==5.2.1\",\"hashes\":[\"sha256:04ab5415bf6c86e0518d57240a96c4d1fcfc3cb370bb2ac2a732b67f579e5a04\",\"sha256:057cdc6b86ab732cf361f8b4d8af87cf195a1f6dc5b0ff3de2dced242c2015e0\",\"sha256:058a1308914f20784c9f4674036527e7c04f7be6fb60f5d61353545aa7fcb739\",\"sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a\",\"sha256:0a15438253b34e6362b2dc41475e7f80de76320f335e70c5528b7148cac253a1\",\"sha256:0c3f67e2aeda739d1cc0b1102c9a9129f7dc83901226cc24dd72ba275ced4218\",\"sha256:0e7259016bc4345a31af861fdce942b77c99049d6c2107ca07dc2bba2435c1d9\",\"sha256:0ed777c1e8c99b63037b91f9d73a6aad20fd035d77ac84afcc205225f8f41188\",\"sha256:0f5d65c39f16717a47c36c756af0fb36144069c4718824b7533f803ecdf91138\",\"sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585\",\"sha256:11a04306fcba10cd9637e669fd73aa274c1c09ca64af79c041aa820ea992b637\",\"sha256:1ae67b4e737cddc96c99461d2f75d218bdf7a0c3d3ad5604d1f5e7464a2f9ffe\",\"sha256:1c5bb205e9212d0ebddf946bc07e73fa245c864a5f90f341d11ce7b0b854475d\",\"sha256:1f7785f4f789fdb522729ae465adcaa099e2a3441519df750ebdccc481d961a1\",\"sha256:200e63525948e325d6a13a76ba2911f927ad399ef64f57898cf7c74e69b71095\",\"sha256:21c2e6b09565ba5b45ae161b438e033a86ad1736b8c838c766146eff8ceffff9\",\"sha256:2213afee476546a7f37c7a9b4ad4d74b1e112a6fafffc9185d6d21f043128c81\",\"sha256:27aa20d45c2e0b8cd05da6d4759649170e8dfc4f4e5ef33a34d06f2d79075d57\",\"sha256:2a66bf12fbd4666dd023b6f51223aed3d9f3b40fef06ce404cb75bafd3d89536\",\"sha256:2c9d147f754b1b0e723e6afb7ba1566ecb162fe4ea657f53d2139bbf894d050a\",\"sha256:2ddfe41ddc81f29a4c44c8ce239eda5ade4e7fc305fb7311759dd6229a080052\",\"sha256:31e9a882013c2f6bd2f2c974241bf4ba68c85eba943648ce88936d23209a2e01\",\"sha256:3249cc2989d9090eeac5467e50e9ec2d40704fea9ab72f36b034ea34ee65ca98\",\"sha256:3545039fa4779be2df51d6395e91a810f57122290864918b172d5dc7ca5bb433\",\"sha256:394ed3924d7a01b5bd9a0d9d946136e1c2f7b3dc337196d99e61740ed4bc6fe1\",\"sha256:3a6b45da02336895da82b9d472cd274b22dc27a5cea1d4b793874eead23dd14f\",\"sha256:3a74c4f27167cb95c1d4af1c0b59e88b7f3e0182138db2501c353555f7ec57f4\",\"sha256:3d0c3dd24bb4605439bf91068598d00c6370684f8de4a67c2992683f6c309d6b\",\"sha256:3dbe858ee582cbb2c6294dc85f55b5f19c918c2597855e950f34b660f1a5ede6\",\"sha256:3dc773b2861b37b41a6136e0b72a1a44689a9c4c101e0cddb6b854016acc0aa8\",\"sha256:3f7765e69bbce0906a7c74d5fe46d2c7a7596147318dbc08e4a2431f3060e306\",\"sha256:417d14450f06d51f363e41cace6488519038f940676ce9664b34ebf5653433a5\",\"sha256:44f6c7caff88d988db017b9b0e4ab04934f11e3e72d478031efc7edcac6c622f\",\"sha256:491755202eb21a5e350dae00c6d9a17247769c64dcf62d8c788b5c135e179dc4\",\"sha256:4951e4f7a5680a2db62f7f4ab2f84617674d36d2d76a729b9a8be4b59b3659be\",\"sha256:52421b41ac99e9d91934e4d0d0fe7da9f02bfa7536bb4431b4c05c906c8c6919\",\"sha256:530e7c04f72002d2f334d5257c8a51bf409db0316feee7c87e4385043be136af\",\"sha256:533658f8fbf056b70e434dff7e7aa611bcacb33e01f75de7f821810e48d1bb66\",\"sha256:5670fb70a828663cc37552a2a85bf2ac38475572b0e9b91283dc09efb52c41d1\",\"sha256:56c22432809085b3f3ae04e6e7bdd36883d7258fcd90e53ba7b2e463efc7a6af\",\"sha256:58278b29cb89f3e43ff3e0c756abbd1518f3ee6adad9e35b51fb101c1c1daaec\",\"sha256:588008b8497667f1ddca7c99f2f85ce8511f8f7871b4a06ceede68ab62dff64b\",\"sha256:59565f10607c244bc4c05c0c5fa0c190c990996e0c719d05deec7030c2aa8289\",\"sha256:59689a75ba8d7ffca577aefd017d08d659d86ad4585ccc73e43edbfc7476781a\",\"sha256:5aea8212fb823e006b995c4dda533edcf98a893d941f173f6c9506126188860d\",\"sha256:5c670c0406bdc845b474b680b9a5456c561c65cf366f8db5a60154088c92d102\",\"sha256:5ca1e8188b26a819387b29c3895c47a5e618708fe6f787f3b1a471de2c4a94d9\",\"sha256:5d077bc40a1fe984e1a9931e801e42959a1e6598edc8a3223b061d30fbd26bbc\",\"sha256:5d5792e9b3fb8d16a19f46aa8208987cfeafe082363ee2745ea8b643d9cc5b45\",\"sha256:5dd1537e7cc06efd81371f5d1a992bd5ab156b2b4f88834ca852de4a8ea523fa\",\"sha256:5ea7b6766ac2dfe4bcac8b8595107665a18ef01f8c8343f00710b85096d1b53a\",\"sha256:622020d4521e22fb371e15f580d153134bfb68d6a429d1342a25f051ec72df1c\",\"sha256:627402ad8dea044dde2eccde4370560a2b750ef894c9578e1d4f8ffd54000461\",\"sha256:644df54d729ef810dcd0f7732e50e5ad1bd0a135278ed8d6bcb06f33b6b6f708\",\"sha256:64641a6068a16201366476731301441ce93457eb8452056f570133a6ceb15fca\",\"sha256:64c2baa7774bc22dd4474248ba16fe1a7f611c13ac6123408694d4cc93d66dbd\",\"sha256:6588c459c5627fefa30139be4d2e28a2c2a1d0d1c265aad2ba1935a7863a4913\",\"sha256:66bc5eb8a323ed9894f8fa0ee6cb3e3fb2403d99aee635078fd19a8bc7a5a5da\",\"sha256:68a2610dbe138fa8c5826b3f6d98a7cfc29707b850ddcc3e21910a6fe51f6ca0\",\"sha256:6935bbf153f9a965f1e07c2649c0849d29832487c52bb4a5c5066031d8b44fd5\",\"sha256:6992030d43b916407c9aa52e9673612ff39a575523c5f4cf72cdef75365709a5\",\"sha256:6a014510830df1475176466b6087fc0c08b47a36714823e58d8b8d7709132a96\",\"sha256:6ab833e4735a7e5533711a6ea2df26459b96f9eec36d23f74cafe03631647c41\",\"sha256:6cc6ee342fb7fa2471bd9b6d6fdfc78925a697bf5c2bcd0a302e98b0d35bfad3\",\"sha256:6cf58416653c5901e12624e4013708b6e11142956e7f35e7a83f1ab02f3fe456\",\"sha256:70a9768e1b9d79edca17890175ba915654ee1725975d69ab64813dd785a2bd5c\",\"sha256:70ac664a48aa64e5e635ae5566f5227f2ab7f66a3990d67566d9907edcbbf867\",\"sha256:71e97313406ccf55d32cc98a533ee05c61e15d11b99215b237346171c179c0b0\",\"sha256:7221d49259aa1e5a8f00d3d28b1e0b76031655ca74bb287123ef56c3db92f213\",\"sha256:74b28c6334cca4dd704e8004cba1955af0b778cf449142e581e404bd211fb619\",\"sha256:764b521b75701f60683500d8621841bec41a65eb739b8466000c6fdbc256c240\",\"sha256:78bfa756eab503673991bdcf464917ef7845a964903d3302c5f68417ecdc948c\",\"sha256:794f04eec78f1d0e35d9e0c36cbbb22e42d370dda1609fb03bcd7aeb458c6377\",\"sha256:79bd05260359170f78b181b59ce871673ed01ba048deef4bf49a36ab3e72e80b\",\"sha256:7a7efd5b6d3e30d81ec68ab8a88252d7c7c6f13aaa875009fe3097eb4e30b84c\",\"sha256:7c17b64b0a6ef4e5affae6a3724010a7a66bda48a62cfe0674dabd46642e8b54\",\"sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b\",\"sha256:853e074d4931dbcba7480d4dcab23d5c56bd9607f92825ab80ee2bd916edea53\",\"sha256:857500f88b17a6479202ff5fe5f580fc3404922cd02ab3716197adf1ef628029\",\"sha256:865bad62df277c04beed9478fe665b9ef63eb28fe026d5dedcb89b537d2e2ea6\",\"sha256:88e22fc0a6684337d25c994381ed8a1580a6f5ebebd5ad41f89f663ff4ec2885\",\"sha256:8b9c07e7a45bb64e21df4b6aa623cb8ba214dfb47d2027d90eac197329bb5e94\",\"sha256:8de8f9d6caa7f25b204fc861718815d41cbcf27ee8f028c89c882a0cf4ae4134\",\"sha256:8e77c69d5892cb5ba71703c4057091e31ccf534bd7f129307a4d084d90d014b8\",\"sha256:9123716666e25b7b71c4e1789ec829ed18663152008b58544d95b008ed9e21e9\",\"sha256:958244ad566c3ffc385f47dddde4145088a0ab893504b54b52c041987a8c1863\",\"sha256:96323338e6c14e958d775700ec8a88346014a85e5de73ac7967db0367582049b\",\"sha256:9676bfc686fa6a3fa10cd4ae6b76cae8be26eb5ec6811d2a325636c460da1806\",\"sha256:9b0ff53900566bc6325ecde9181d89afadc59c5ffa39bddf084aaedfe3b06a11\",\"sha256:9b9ec9c9978b708d488bec36b9e4c94d88fd12ccac3e62134a9d17ddba910ea9\",\"sha256:9c6ad0fbf105f6bcc9300c00010a2ffa44ea6f555df1a2ad95c88f5656104817\",\"sha256:9ca66b8e90daca431b7ca1408cae085d025326570e57749695d6a01454790e95\",\"sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8\",\"sha256:a0af35bd8ebf84888373630f73f24e86bf016642fb8576fba49d3d6b560b7cbc\",\"sha256:a2b44bec7adf3e9305ce6cbfa47a4395667e744097faed97abb4728748ba7d47\",\"sha256:a2dfe7e2473f9b59496247aad6e23b405ddf2e12ef0765677b0081c02d6c2c0b\",\"sha256:a55ee573116ba208932e2d1a037cc4b10d2c1cb264ced2184d00b18ce585b2c0\",\"sha256:a7baf9ffc238e4bf401299f50e971a45bfcc10a785522541a6e3179c83eabf0a\",\"sha256:a8d5c70e04aac1eda5c829a26d1f75c6e5286c74743133d9f742cda8e53b9c2f\",\"sha256:a91481dbcddf1736c98a80b122afa0f7296eeb80b72344d7f45dc9f781551f56\",\"sha256:ab31a88a651039a07a3ae327d68ebdd8bc589b16938c09ef3f32a4b809dc96ef\",\"sha256:abc25c3cab9ec7fcd299b9bcb3b8d4a1231877e425c650fa1c7576c5107ab851\",\"sha256:adfb84ca6b87e06bc6b146dc7da7623395db1e31621c4785ad0658c5028b37d7\",\"sha256:afbbdb120d1e78d2ba8064a68058001b871154cc57787031b645c9142b937a62\",\"sha256:afd5562927cdef7c4f5550374acbc117fd4ecc05b5007bdfa57cc5355864e0a4\",\"sha256:b070bbe8d3f0f6147689bed981d19bbb33070225373338df755a46893528104a\",\"sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c\",\"sha256:b560e3aa4b1d49e0e6c847d72665384db35b2f5d45f8e6a5c0072e0283430533\",\"sha256:b6241d4eee5f89453307c2f2bfa03b50362052ca0af1efecf9fef9a41a22bb4f\",\"sha256:b6787b643356111dfd4032b5bffe26d2f8331556ecb79e15dacb9275da02866e\",\"sha256:bcbf4af004f98793a95355980764b3d80d47117678118a44a80b721c9913436a\",\"sha256:beb72935a941965c52990f3a32d7f07ce869fe21c6af8b34bf6a277b33a345d3\",\"sha256:bf2e2458345d9bffb0d9ec16557d8858c9c88d2d11fed53998512504cd9df49b\",\"sha256:c2d35a1d047efd68027817b32ab1586c1169e60ca02c65d428ae815b593e65d4\",\"sha256:c38d7b9a690b090de999835f0443d8aa93ce5f2064035dfc48f27f02b4afc3d0\",\"sha256:c6f2c8372b98208ce609c9e1d707f6918cc118fea4e2c754c9f0812c04ca116d\",\"sha256:c817d420c60a5183953c783b0547d9eb43b7b344a2c46f69513d5952a78cddf3\",\"sha256:c8ba129e6d3b0136a0f50345b2cb3db53f6bda5dd8c7f5d83fbccba97fb5dcb5\",\"sha256:c94e75445b00319c1fad60f3c98b09cd63fe1134a8a953dcd48989ef42318534\",\"sha256:cc4691d60512798304acb9207987e7b2b7c44627ea88b9d77489bbe3e6cc3bd4\",\"sha256:cc518cea79fd1e2f6c90baafa28906d4309d24f3a63e801d855e7424c5b34144\",\"sha256:cd53553ddad4a9c2f1f022756ae64abe16da1feb497edf4d9f87f99ec7cf86bd\",\"sha256:cf22b41fdae514ee2f1691b6c3cdeae666d8b7fa9434de445f12bbeee0cf48dd\",\"sha256:d38c8f50ecf57f0463399569aa388b232cf1a2ffb8f0a9a5412d0db57e054860\",\"sha256:d3be9b2076112e51b323bdf6d5a7f8a798de55fb8d95fcb64bd179460cdc0704\",\"sha256:d4f2cc7060dc3646632d7f15fe68e2fa98f58e35dd5666cd525f3b35d3fed7f8\",\"sha256:d7520db34088c96cc0e0a3ad51a4fd5b401f279ee112aa2b7f8f976d8582606d\",\"sha256:d793bebb202a6000390a5390078e945bbb49855c29c7e4d56a85901326c3b5d9\",\"sha256:da052e7962ea2d5e5ef5bc0355d55007407087392cf465b7ad84ce5f3e25fe0f\",\"sha256:dae0ed02f6b075426accbf6b2863c3d0a7eacc1b41fb40f2251d931e50188dad\",\"sha256:ddc678fb4c7e30cf830a2b5a8d869538bc55b28d6c68544d09c7d0d8f17694dc\",\"sha256:df2e6f546c4df14bc81f9498bbc007fbb87669f1bb707c6138878c46b06f6510\",\"sha256:e02c5175f63effbd7c5e590399c118d5db6183bbfe8e0d118bdb5c2d1b48d937\",\"sha256:e196a4ff48310ba62e53a8e0f97ca2bca83cdd2fe2934d8b5cb0df0a841b193a\",\"sha256:e233db59c8f76630c512ab4a4daf5a5986da5c3d5b44b8e9fc742f2a24dbd460\",\"sha256:e32be23d538753a8adb6c85bd539f5fd3b15cb987404327c569dfc5fd8366e85\",\"sha256:e3d30321949861404323c50aebeb1943461a67cd51d4200ab02babc58bd06a86\",\"sha256:e89580a581bf478d8dcb97d9cd011d567768e8bc4095f8557b21c4d4c5fea7d0\",\"sha256:e998e304036198b4f6914e6a1e2b6f925208a20e2042563d9734881150c6c246\",\"sha256:ec42088248c596dbd61d4ae8a5b004f97a4d91a9fd286f632e42e60b706718d7\",\"sha256:efa7b51824aa0ee957ccd5a741c73e6851de55f40d807f08069eb4c5a26b2baa\",\"sha256:f0a1bc63a465b6d72569a9bba9f2ef0334c4e03958e043da1920299100bc7c08\",\"sha256:f18a5a84e16886898e51ab4b1d43acb3083c39b14c8caeb3589aabff0ee0b270\",\"sha256:f2a9efc53d5b714b8df2b4b3e992accf8ce5bbdfe544d74d5c6766c9e1146a3a\",\"sha256:f3bbbc998d42f8e561f347e798b85513ba4da324c2b3f9b7969e9c45b10f6169\",\"sha256:f42038016852ae51b4088b2862126535cc4fc85802bfe30dea3500fdfaf1864e\",\"sha256:f443cdef978430887ed55112b491f670bba6462cea7a7742ff8f14b7abb98d75\",\"sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd\",\"sha256:f8aca2e3a72f37bfc7b14ba96d4056244001ddcc18382bd0daa087fd2e68a354\",\"sha256:f9737bf36262046213a28e789cc82d82c6ef19c85a0cf05e75c670a33342ac2c\",\"sha256:fd6037392f2d57793ab98d9e26798f44b8b4da2f2464388588f48ac52c489ea1\",\"sha256:feaa45c0eae424d3e90d78823f3828e7dc42a42f21ed420db98da2c4ecf0a2cb\",\"sha256:ff097ae562e637409b429a7ac958a20aab237a0378c42dabaa1e3abf2f896e5f\",\"sha256:ff46d772d5f6f73564979cd77a4fffe55c916a05f3cb70e7c9c0590059fb29ef\"],\"markers\":\"python_version >= '3.6'\"},\"markdown-it-py\":{\"version\":\"==3.0.0\",\"hashes\":[\"sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1\",\"sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb\"],\"markers\":\"python_version >= '3.8'\"},\"markupsafe\":{\"version\":\"==2.1.5\",\"hashes\":[\"sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf\",\"sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff\",\"sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f\",\"sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3\",\"sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532\",\"sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f\",\"sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617\",\"sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df\",\"sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4\",\"sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906\",\"sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f\",\"sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4\",\"sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8\",\"sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371\",\"sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2\",\"sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465\",\"sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52\",\"sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6\",\"sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169\",\"sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad\",\"sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2\",\"sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0\",\"sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029\",\"sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f\",\"sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a\",\"sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced\",\"sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5\",\"sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c\",\"sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf\",\"sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9\",\"sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb\",\"sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad\",\"sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3\",\"sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1\",\"sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46\",\"sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc\",\"sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a\",\"sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee\",\"sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900\",\"sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5\",\"sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea\",\"sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f\",\"sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5\",\"sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e\",\"sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a\",\"sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f\",\"sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50\",\"sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a\",\"sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b\",\"sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4\",\"sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff\",\"sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2\",\"sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46\",\"sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b\",\"sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf\",\"sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5\",\"sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5\",\"sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab\",\"sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd\",\"sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68\"],\"markers\":\"python_version >= '3.7'\"},\"mdurl\":{\"version\":\"==0.1.2\",\"hashes\":[\"sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8\",\"sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba\"],\"markers\":\"python_version >= '3.7'\"},\"multiurl\":{\"version\":\"==0.3.1\",\"hashes\":[\"sha256:c7001437b59d56d4c310d725c3dcfff98c97c4b652893d88989853827465d442\"]},\"numpy\":{\"version\":\"==1.26.4\",\"hashes\":[\"sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b\",\"sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818\",\"sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20\",\"sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0\",\"sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010\",\"sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a\",\"sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea\",\"sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c\",\"sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71\",\"sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110\",\"sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be\",\"sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a\",\"sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a\",\"sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5\",\"sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed\",\"sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd\",\"sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c\",\"sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e\",\"sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0\",\"sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c\",\"sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a\",\"sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b\",\"sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0\",\"sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6\",\"sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2\",\"sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a\",\"sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30\",\"sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218\",\"sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5\",\"sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07\",\"sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2\",\"sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4\",\"sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764\",\"sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef\",\"sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3\",\"sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f\"],\"markers\":\"python_version >= '3.9'\"},\"orjson\":{\"version\":\"==3.10.3\",\"hashes\":[\"sha256:0943a96b3fa09bee1afdfccc2cb236c9c64715afa375b2af296c73d91c23eab2\",\"sha256:0a62f9968bab8a676a164263e485f30a0b748255ee2f4ae49a0224be95f4532b\",\"sha256:16bda83b5c61586f6f788333d3cf3ed19015e3b9019188c56983b5a299210eb5\",\"sha256:1770e2a0eae728b050705206d84eda8b074b65ee835e7f85c919f5705b006c9b\",\"sha256:17e0713fc159abc261eea0f4feda611d32eabc35708b74bef6ad44f6c78d5ea0\",\"sha256:18566beb5acd76f3769c1d1a7ec06cdb81edc4d55d2765fb677e3eaa10fa99e0\",\"sha256:1952c03439e4dce23482ac846e7961f9d4ec62086eb98ae76d97bd41d72644d7\",\"sha256:1bd2218d5a3aa43060efe649ec564ebedec8ce6ae0a43654b81376216d5ebd42\",\"sha256:1c23dfa91481de880890d17aa7b91d586a4746a4c2aa9a145bebdbaf233768d5\",\"sha256:252124b198662eee80428f1af8c63f7ff077c88723fe206a25df8dc57a57b1fa\",\"sha256:2b166507acae7ba2f7c315dcf185a9111ad5e992ac81f2d507aac39193c2c818\",\"sha256:2e5e176c994ce4bd434d7aafb9ecc893c15f347d3d2bbd8e7ce0b63071c52e25\",\"sha256:3582b34b70543a1ed6944aca75e219e1192661a63da4d039d088a09c67543b08\",\"sha256:382e52aa4270a037d41f325e7d1dfa395b7de0c367800b6f337d8157367bf3a7\",\"sha256:416b195f78ae461601893f482287cee1e3059ec49b4f99479aedf22a20b1098b\",\"sha256:4ad1f26bea425041e0a1adad34630c4825a9e3adec49079b1fb6ac8d36f8b754\",\"sha256:4c895383b1ec42b017dd2c75ae8a5b862fc489006afde06f14afbdd0309b2af0\",\"sha256:5102f50c5fc46d94f2033fe00d392588564378260d64377aec702f21a7a22912\",\"sha256:520de5e2ef0b4ae546bea25129d6c7c74edb43fc6cf5213f511a927f2b28148b\",\"sha256:544a12eee96e3ab828dbfcb4d5a0023aa971b27143a1d35dc214c176fdfb29b3\",\"sha256:73100d9abbbe730331f2242c1fc0bcb46a3ea3b4ae3348847e5a141265479700\",\"sha256:831c6ef73f9aa53c5f40ae8f949ff7681b38eaddb6904aab89dca4d85099cb78\",\"sha256:8bc7a4df90da5d535e18157220d7915780d07198b54f4de0110eca6b6c11e290\",\"sha256:8d0b84403d287d4bfa9bf7d1dc298d5c1c5d9f444f3737929a66f2fe4fb8f134\",\"sha256:8d40c7f7938c9c2b934b297412c067936d0b54e4b8ab916fd1a9eb8f54c02294\",\"sha256:9059d15c30e675a58fdcd6f95465c1522b8426e092de9fff20edebfdc15e1cb0\",\"sha256:93433b3c1f852660eb5abdc1f4dd0ced2be031ba30900433223b28ee0140cde5\",\"sha256:978be58a68ade24f1af7758626806e13cff7748a677faf95fbb298359aa1e20d\",\"sha256:99b880d7e34542db89f48d14ddecbd26f06838b12427d5a25d71baceb5ba119d\",\"sha256:9a7bc9e8bc11bac40f905640acd41cbeaa87209e7e1f57ade386da658092dc16\",\"sha256:9e253498bee561fe85d6325ba55ff2ff08fb5e7184cd6a4d7754133bd19c9195\",\"sha256:9f3e87733823089a338ef9bbf363ef4de45e5c599a9bf50a7a9b82e86d0228da\",\"sha256:9fb6c3f9f5490a3eb4ddd46fc1b6eadb0d6fc16fb3f07320149c3286a1409dd8\",\"sha256:a39aa73e53bec8d410875683bfa3a8edf61e5a1c7bb4014f65f81d36467ea098\",\"sha256:b69a58a37dab856491bf2d3bbf259775fdce262b727f96aafbda359cb1d114d8\",\"sha256:b8d4d1a6868cde356f1402c8faeb50d62cee765a1f7ffcfd6de732ab0581e063\",\"sha256:ba7f67aa7f983c4345eeda16054a4677289011a478ca947cd69c0a86ea45e534\",\"sha256:be2719e5041e9fb76c8c2c06b9600fe8e8584e6980061ff88dcbc2691a16d20d\",\"sha256:be2aab54313752c04f2cbaab4515291ef5af8c2256ce22abc007f89f42f49109\",\"sha256:c0403ed9c706dcd2809f1600ed18f4aae50be263bd7112e54b50e2c2bc3ebd6d\",\"sha256:c8334c0d87103bb9fbbe59b78129f1f40d1d1e8355bbed2ca71853af15fa4ed3\",\"sha256:cb0175a5798bdc878956099f5c54b9837cb62cfbf5d0b86ba6d77e43861bcec2\",\"sha256:ccaa0a401fc02e8828a5bedfd80f8cd389d24f65e5ca3954d72c6582495b4bcf\",\"sha256:cf20465e74c6e17a104ecf01bf8cd3b7b252565b4ccee4548f18b012ff2f8069\",\"sha256:d4a654ec1de8fdaae1d80d55cee65893cb06494e124681ab335218be6a0691e7\",\"sha256:e852baafceff8da3c9defae29414cc8513a1586ad93e45f27b89a639c68e8176\"],\"markers\":\"python_version >= '3.8'\"},\"owslib\":{\"version\":\"==0.30.0\",\"hashes\":[\"sha256:88277cf674ded604596af5c04eb2a17c6846dfe8bcfb7a5dc9ab50b3ef5f1385\",\"sha256:f17413cc75836c0303cd1d4fd9bb0f21915a8b492dacc64ef5f4021b28e82d4c\"],\"markers\":\"python_version >= '3.6'\"},\"ply\":{\"version\":\"==3.11\",\"hashes\":[\"sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3\",\"sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce\"]},\"pycryptodome\":{\"version\":\"==3.20.0\",\"hashes\":[\"sha256:06d6de87c19f967f03b4cf9b34e538ef46e99a337e9a61a77dbe44b2cbcf0690\",\"sha256:09609209ed7de61c2b560cc5c8c4fbf892f8b15b1faf7e4cbffac97db1fffda7\",\"sha256:210ba1b647837bfc42dd5a813cdecb5b86193ae11a3f5d972b9a0ae2c7e9e4b4\",\"sha256:2a1250b7ea809f752b68e3e6f3fd946b5939a52eaeea18c73bdab53e9ba3c2dd\",\"sha256:2ab6ab0cb755154ad14e507d1df72de9897e99fd2d4922851a276ccc14f4f1a5\",\"sha256:3427d9e5310af6680678f4cce149f54e0bb4af60101c7f2c16fdf878b39ccccc\",\"sha256:3cd3ef3aee1079ae44afaeee13393cf68b1058f70576b11439483e34f93cf818\",\"sha256:405002eafad114a2f9a930f5db65feef7b53c4784495dd8758069b89baf68eab\",\"sha256:417a276aaa9cb3be91f9014e9d18d10e840a7a9b9a9be64a42f553c5b50b4d1d\",\"sha256:4401564ebf37dfde45d096974c7a159b52eeabd9969135f0426907db367a652a\",\"sha256:49a4c4dc60b78ec41d2afa392491d788c2e06edf48580fbfb0dd0f828af49d25\",\"sha256:5601c934c498cd267640b57569e73793cb9a83506f7c73a8ec57a516f5b0b091\",\"sha256:6e0e4a987d38cfc2e71b4a1b591bae4891eeabe5fa0f56154f576e26287bfdea\",\"sha256:76658f0d942051d12a9bd08ca1b6b34fd762a8ee4240984f7c06ddfb55eaf15a\",\"sha256:76cb39afede7055127e35a444c1c041d2e8d2f1f9c121ecef573757ba4cd2c3c\",\"sha256:8d6b98d0d83d21fb757a182d52940d028564efe8147baa9ce0f38d057104ae72\",\"sha256:9b3ae153c89a480a0ec402e23db8d8d84a3833b65fa4b15b81b83be9d637aab9\",\"sha256:a60fedd2b37b4cb11ccb5d0399efe26db9e0dd149016c1cc6c8161974ceac2d6\",\"sha256:ac1c7c0624a862f2e53438a15c9259d1655325fc2ec4392e66dc46cdae24d044\",\"sha256:acae12b9ede49f38eb0ef76fdec2df2e94aad85ae46ec85be3648a57f0a7db04\",\"sha256:acc2614e2e5346a4a4eab6e199203034924313626f9620b7b4b38e9ad74b7e0c\",\"sha256:acf6e43fa75aca2d33e93409f2dafe386fe051818ee79ee8a3e21de9caa2ac9e\",\"sha256:baee115a9ba6c5d2709a1e88ffe62b73ecc044852a925dcb67713a288c4ec70f\",\"sha256:c18b381553638414b38705f07d1ef0a7cf301bc78a5f9bc17a957eb19446834b\",\"sha256:d29daa681517f4bc318cd8a23af87e1f2a7bad2fe361e8aa29c77d652a065de4\",\"sha256:d5954acfe9e00bc83ed9f5cb082ed22c592fbbef86dc48b907238be64ead5c33\",\"sha256:ec0bb1188c1d13426039af8ffcb4dbe3aad1d7680c35a62d8eaf2a529b5d3d4f\",\"sha256:ec1f93feb3bb93380ab0ebf8b859e8e5678c0f010d2d78367cf6bc30bfeb148e\",\"sha256:f0e6d631bae3f231d3634f91ae4da7a960f7ff87f2865b2d2b831af1dfb04e9a\",\"sha256:f35d6cee81fa145333137009d9c8ba90951d7d77b67c79cbe5f03c7eb74d8fe2\",\"sha256:f47888542a0633baff535a04726948e876bf1ed880fddb7c10a736fa99146ab3\",\"sha256:fb3b87461fa35afa19c971b0a2b7456a7b1db7b4eba9a8424666104925b78128\"],\"markers\":\"python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'\"},\"pydantic\":{\"version\":\"==2.7.1\",\"hashes\":[\"sha256:e029badca45266732a9a79898a15ae2e8b14840b1eabbb25844be28f0b33f3d5\",\"sha256:e9dbb5eada8abe4d9ae5f46b9939aead650cd2b68f249bb3a8139dbe125803cc\"],\"markers\":\"python_version >= '3.8'\"},\"pydantic-core\":{\"version\":\"==2.18.2\",\"hashes\":[\"sha256:0098300eebb1c837271d3d1a2cd2911e7c11b396eac9661655ee524a7f10587b\",\"sha256:042473b6280246b1dbf530559246f6842b56119c2926d1e52b631bdc46075f2a\",\"sha256:05b7133a6e6aeb8df37d6f413f7705a37ab4031597f64ab56384c94d98fa0e90\",\"sha256:0680b1f1f11fda801397de52c36ce38ef1c1dc841a0927a94f226dea29c3ae3d\",\"sha256:0d69b4c2f6bb3e130dba60d34c0845ba31b69babdd3f78f7c0c8fae5021a253e\",\"sha256:1404c69d6a676245199767ba4f633cce5f4ad4181f9d0ccb0577e1f66cf4c46d\",\"sha256:182245ff6b0039e82b6bb585ed55a64d7c81c560715d1bad0cbad6dfa07b4027\",\"sha256:1a388a77e629b9ec814c1b1e6b3b595fe521d2cdc625fcca26fbc2d44c816804\",\"sha256:1d90c3265ae107f91a4f279f4d6f6f1d4907ac76c6868b27dc7fb33688cfb347\",\"sha256:20aca1e2298c56ececfd8ed159ae4dde2df0781988c97ef77d5c16ff4bd5b400\",\"sha256:219da3f096d50a157f33645a1cf31c0ad1fe829a92181dd1311022f986e5fbe3\",\"sha256:22057013c8c1e272eb8d0eebc796701167d8377441ec894a8fed1af64a0bf399\",\"sha256:223ee893d77a310a0391dca6df00f70bbc2f36a71a895cecd9a0e762dc37b349\",\"sha256:224c421235f6102e8737032483f43c1a8cfb1d2f45740c44166219599358c2cd\",\"sha256:2334ce8c673ee93a1d6a65bd90327588387ba073c17e61bf19b4fd97d688d63c\",\"sha256:269322dcc3d8bdb69f054681edff86276b2ff972447863cf34c8b860f5188e2e\",\"sha256:2728b01246a3bba6de144f9e3115b532ee44bd6cf39795194fb75491824a1413\",\"sha256:2b8ed04b3582771764538f7ee7001b02e1170223cf9b75dff0bc698fadb00cf3\",\"sha256:2e29d20810dfc3043ee13ac7d9e25105799817683348823f305ab3f349b9386e\",\"sha256:36789b70d613fbac0a25bb07ab3d9dba4d2e38af609c020cf4d888d165ee0bf3\",\"sha256:390193c770399861d8df9670fb0d1874f330c79caaca4642332df7c682bf6b91\",\"sha256:3a6515ebc6e69d85502b4951d89131ca4e036078ea35533bb76327f8424531ce\",\"sha256:3f9a801e7c8f1ef8718da265bba008fa121243dfe37c1cea17840b0944dfd72c\",\"sha256:43f0f463cf89ace478de71a318b1b4f05ebc456a9b9300d027b4b57c1a2064fb\",\"sha256:4456f2dca97c425231d7315737d45239b2b51a50dc2b6f0c2bb181fce6207664\",\"sha256:470b94480bb5ee929f5acba6995251ada5e059a5ef3e0dfc63cca287283ebfa6\",\"sha256:4774f3184d2ef3e14e8693194f661dea5a4d6ca4e3dc8e39786d33a94865cefd\",\"sha256:4b4356d3538c3649337df4074e81b85f0616b79731fe22dd11b99499b2ebbdf3\",\"sha256:553ef617b6836fc7e4df130bb851e32fe357ce36336d897fd6646d6058d980af\",\"sha256:6132dd3bd52838acddca05a72aafb6eab6536aa145e923bb50f45e78b7251043\",\"sha256:6a46e22a707e7ad4484ac9ee9f290f9d501df45954184e23fc29408dfad61350\",\"sha256:6e5c584d357c4e2baf0ff7baf44f4994be121e16a2c88918a5817331fc7599d7\",\"sha256:75250dbc5290e3f1a0f4618db35e51a165186f9034eff158f3d490b3fed9f8a0\",\"sha256:75f7e9488238e920ab6204399ded280dc4c307d034f3924cd7f90a38b1829563\",\"sha256:78363590ef93d5d226ba21a90a03ea89a20738ee5b7da83d771d283fd8a56761\",\"sha256:7ca4ae5a27ad7a4ee5170aebce1574b375de390bc01284f87b18d43a3984df72\",\"sha256:800d60565aec896f25bc3cfa56d2277d52d5182af08162f7954f938c06dc4ee3\",\"sha256:82d5d4d78e4448683cb467897fe24e2b74bb7b973a541ea1dcfec1d3cbce39fb\",\"sha256:852e966fbd035a6468fc0a3496589b45e2208ec7ca95c26470a54daed82a0788\",\"sha256:868649da93e5a3d5eacc2b5b3b9235c98ccdbfd443832f31e075f54419e1b96b\",\"sha256:886eec03591b7cf058467a70a87733b35f44707bd86cf64a615584fd72488b7c\",\"sha256:8b172601454f2d7701121bbec3425dd71efcb787a027edf49724c9cefc14c038\",\"sha256:95b9d5e72481d3780ba3442eac863eae92ae43a5f3adb5b4d0a1de89d42bb250\",\"sha256:98758d627ff397e752bc339272c14c98199c613f922d4a384ddc07526c86a2ec\",\"sha256:997abc4df705d1295a42f95b4eec4950a37ad8ae46d913caeee117b6b198811c\",\"sha256:9b5155ff768083cb1d62f3e143b49a8a3432e6789a3abee8acd005c3c7af1c74\",\"sha256:9e08e867b306f525802df7cd16c44ff5ebbe747ff0ca6cf3fde7f36c05a59a81\",\"sha256:9fdad8e35f278b2c3eb77cbdc5c0a49dada440657bf738d6905ce106dc1de439\",\"sha256:a1874c6dd4113308bd0eb568418e6114b252afe44319ead2b4081e9b9521fe75\",\"sha256:a8309f67285bdfe65c372ea3722b7a5642680f3dba538566340a9d36e920b5f0\",\"sha256:ae0a8a797a5e56c053610fa7be147993fe50960fa43609ff2a9552b0e07013e8\",\"sha256:b14d82cdb934e99dda6d9d60dc84a24379820176cc4a0d123f88df319ae9c150\",\"sha256:b1bd7e47b1558ea872bd16c8502c414f9e90dcf12f1395129d7bb42a09a95438\",\"sha256:b3ef08e20ec49e02d5c6717a91bb5af9b20f1805583cb0adfe9ba2c6b505b5ae\",\"sha256:b89ed9eb7d616ef5714e5590e6cf7f23b02d0d539767d33561e3675d6f9e3857\",\"sha256:c4fcf5cd9c4b655ad666ca332b9a081112cd7a58a8b5a6ca7a3104bc950f2038\",\"sha256:c6fdc8627910eed0c01aed6a390a252fe3ea6d472ee70fdde56273f198938374\",\"sha256:c9bd70772c720142be1020eac55f8143a34ec9f82d75a8e7a07852023e46617f\",\"sha256:ca7b0c1f1c983e064caa85f3792dd2fe3526b3505378874afa84baf662e12241\",\"sha256:cbca948f2d14b09d20268cda7b0367723d79063f26c4ffc523af9042cad95592\",\"sha256:cc1cfd88a64e012b74e94cd00bbe0f9c6df57049c97f02bb07d39e9c852e19a4\",\"sha256:ccdd111c03bfd3666bd2472b674c6899550e09e9f298954cfc896ab92b5b0e6d\",\"sha256:cfeecd1ac6cc1fb2692c3d5110781c965aabd4ec5d32799773ca7b1456ac636b\",\"sha256:d4d938ec0adf5167cb335acb25a4ee69a8107e4984f8fbd2e897021d9e4ca21b\",\"sha256:d7d904828195733c183d20a54230c0df0eb46ec746ea1a666730787353e87182\",\"sha256:d91cb5ea8b11607cc757675051f61b3d93f15eca3cefb3e6c704a5d6e8440f4e\",\"sha256:d9319e499827271b09b4e411905b24a426b8fb69464dfa1696258f53a3334641\",\"sha256:e0e8b1be28239fc64a88a8189d1df7fad8be8c1ae47fcc33e43d4be15f99cc70\",\"sha256:e18609ceaa6eed63753037fc06ebb16041d17d28199ae5aba0052c51449650a9\",\"sha256:e1b395e58b10b73b07b7cf740d728dd4ff9365ac46c18751bf8b3d8cca8f625a\",\"sha256:e23ec367a948b6d812301afc1b13f8094ab7b2c280af66ef450efc357d2ae543\",\"sha256:e25add29b8f3b233ae90ccef2d902d0ae0432eb0d45370fe315d1a5cf231004b\",\"sha256:e6dac87ddb34aaec85f873d737e9d06a3555a1cc1a8e0c44b7f8d5daeb89d86f\",\"sha256:ef26c9e94a8c04a1b2924149a9cb081836913818e55681722d7f29af88fe7b38\",\"sha256:eff2de745698eb46eeb51193a9f41d67d834d50e424aef27df2fcdee1b153845\",\"sha256:f0a21cbaa69900cbe1a2e7cad2aa74ac3cf21b10c3efb0fa0b80305274c0e8a2\",\"sha256:f459a5ce8434614dfd39bbebf1041952ae01da6bed9855008cb33b875cb024c0\",\"sha256:f93a8a2e3938ff656a7c1bc57193b1319960ac015b6e87d76c76bf14fe0244b4\",\"sha256:fb2bd7be70c0fe4dfd32c951bc813d9fe6ebcbfdd15a07527796c8204bd36242\"],\"markers\":\"python_version >= '3.8'\"},\"pygments\":{\"version\":\"==2.18.0\",\"hashes\":[\"sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199\",\"sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a\"],\"markers\":\"python_version >= '3.8'\"},\"pyproj\":{\"version\":\"==3.6.1\",\"hashes\":[\"sha256:18faa54a3ca475bfe6255156f2f2874e9a1c8917b0004eee9f664b86ccc513d3\",\"sha256:1e9fbaf920f0f9b4ee62aab832be3ae3968f33f24e2e3f7fbb8c6728ef1d9746\",\"sha256:2d6ff73cc6dbbce3766b6c0bce70ce070193105d8de17aa2470009463682a8eb\",\"sha256:36b64c2cb6ea1cc091f329c5bd34f9c01bb5da8c8e4492c709bda6a09f96808f\",\"sha256:38a3361941eb72b82bd9a18f60c78b0df8408416f9340521df442cebfc4306e2\",\"sha256:447db19c7efad70ff161e5e46a54ab9cc2399acebb656b6ccf63e4bc4a04b97a\",\"sha256:44aa7c704c2b7d8fb3d483bbf75af6cb2350d30a63b144279a09b75fead501bf\",\"sha256:4ba1f9b03d04d8cab24d6375609070580a26ce76eaed54631f03bab00a9c737b\",\"sha256:4bc0472302919e59114aa140fd7213c2370d848a7249d09704f10f5b062031fe\",\"sha256:50100b2726a3ca946906cbaa789dd0749f213abf0cbb877e6de72ca7aa50e1ae\",\"sha256:5279586013b8d6582e22b6f9e30c49796966770389a9d5b85e25a4223286cd3f\",\"sha256:6420ea8e7d2a88cb148b124429fba8cd2e0fae700a2d96eab7083c0928a85110\",\"sha256:65ad699e0c830e2b8565afe42bd58cc972b47d829b2e0e48ad9638386d994915\",\"sha256:6d227a865356f225591b6732430b1d1781e946893789a609bb34f59d09b8b0f8\",\"sha256:7a27151ddad8e1439ba70c9b4b2b617b290c39395fa9ddb7411ebb0eb86d6fb0\",\"sha256:80fafd1f3eb421694857f254a9bdbacd1eb22fc6c24ca74b136679f376f97d35\",\"sha256:83039e5ae04e5afc974f7d25ee0870a80a6bd6b7957c3aca5613ccbe0d3e72bf\",\"sha256:8b8acc31fb8702c54625f4d5a2a6543557bec3c28a0ef638778b7ab1d1772132\",\"sha256:9274880263256f6292ff644ca92c46d96aa7e57a75c6df3f11d636ce845a1877\",\"sha256:ab7aa4d9ff3c3acf60d4b285ccec134167a948df02347585fdd934ebad8811b4\",\"sha256:c41e80ddee130450dcb8829af7118f1ab69eaf8169c4bf0ee8d52b72f098dc2f\",\"sha256:db3aedd458e7f7f21d8176f0a1d924f1ae06d725228302b872885a1c34f3119e\",\"sha256:e7e13c40183884ec7f94eb8e0f622f08f1d5716150b8d7a134de48c6110fee85\",\"sha256:ebfbdbd0936e178091309f6cd4fcb4decd9eab12aa513cdd9add89efa3ec2882\",\"sha256:fd43bd9a9b9239805f406fd82ba6b106bf4838d9ef37c167d3ed70383943ade1\",\"sha256:fd93c1a0c6c4aedc77c0fe275a9f2aba4d59b8acf88cebfc19fe3c430cfabf4f\",\"sha256:fffb059ba3bced6f6725961ba758649261d85ed6ce670d3e3b0a26e81cf1aa8d\"],\"markers\":\"python_version >= '3.9'\"},\"pyshp\":{\"version\":\"==2.3.1\",\"hashes\":[\"sha256:4caec82fd8dd096feba8217858068bacb2a3b5950f43c048c6dc32a3489d5af1\",\"sha256:67024c0ccdc352ba5db777c4e968483782dfa78f8e200672a90d2d30fd8b7b49\"],\"markers\":\"python_version >= '2.7'\"},\"pystac\":{\"version\":\"==1.10.1\",\"hashes\":[\"sha256:4617fe5315a79785f79b616b8ac248ba3d4d561457c8300b34573309715808cd\",\"sha256:a7c31b3dacc44dfc955d9da8c7351c7b5b99100254b36301a1e312709b51bf2f\"],\"markers\":\"python_version >= '3.9'\"},\"python-dateutil\":{\"version\":\"==2.9.0.post0\",\"hashes\":[\"sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3\",\"sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427\"],\"markers\":\"python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'\"},\"python-dotenv\":{\"version\":\"==1.0.1\",\"hashes\":[\"sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca\",\"sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a\"]},\"python-multipart\":{\"version\":\"==0.0.9\",\"hashes\":[\"sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026\",\"sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215\"],\"markers\":\"python_version >= '3.8'\"},\"pytz\":{\"version\":\"==2024.1\",\"hashes\":[\"sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812\",\"sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319\"]},\"pyyaml\":{\"version\":\"==6.0.1\",\"hashes\":[\"sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5\",\"sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc\",\"sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df\",\"sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741\",\"sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206\",\"sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27\",\"sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595\",\"sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62\",\"sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98\",\"sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696\",\"sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290\",\"sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9\",\"sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d\",\"sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6\",\"sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867\",\"sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47\",\"sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486\",\"sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6\",\"sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3\",\"sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007\",\"sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938\",\"sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0\",\"sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c\",\"sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735\",\"sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d\",\"sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28\",\"sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4\",\"sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba\",\"sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8\",\"sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef\",\"sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5\",\"sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd\",\"sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3\",\"sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0\",\"sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515\",\"sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c\",\"sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c\",\"sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924\",\"sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34\",\"sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43\",\"sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859\",\"sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673\",\"sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54\",\"sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a\",\"sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b\",\"sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab\",\"sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa\",\"sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c\",\"sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585\",\"sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d\",\"sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f\"],\"markers\":\"python_version >= '3.6'\"},\"requests\":{\"version\":\"==2.31.0\",\"hashes\":[\"sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f\",\"sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1\"],\"markers\":\"python_version >= '3.7'\"},\"requests-ftp\":{\"version\":\"==0.3.1\",\"hashes\":[\"sha256:7504ceb5cba8a5c0135ed738596820a78c5f2be92d79b29f96ba99b183d8057a\"]},\"requests-futures\":{\"version\":\"==1.0.1\",\"hashes\":[\"sha256:4a2f5472e9911a79532137d156aa937cd9cd90fec55677f71b2976d1f7a66d38\",\"sha256:f55a4ef80070e2858e7d1e73123d2bfaeaf25b93fd34384d8ddf148e2b676373\"]},\"rich\":{\"version\":\"==13.7.1\",\"hashes\":[\"sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222\",\"sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432\"],\"markers\":\"python_full_version >= '3.7.0'\"},\"s3transfer\":{\"version\":\"==0.10.1\",\"hashes\":[\"sha256:5683916b4c724f799e600f41dd9e10a9ff19871bf87623cc8f491cb4f5fa0a19\",\"sha256:ceb252b11bcf87080fb7850a224fb6e05c8a776bab8f2b64b7f25b969464839d\"],\"markers\":\"python_version >= '3.8'\"},\"setuptools\":{\"version\":\"==69.5.1\",\"hashes\":[\"sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987\",\"sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32\"],\"markers\":\"python_version >= '3.8'\"},\"shapely\":{\"version\":\"==2.0.4\",\"hashes\":[\"sha256:011b77153906030b795791f2fdfa2d68f1a8d7e40bce78b029782ade3afe4f2f\",\"sha256:03152442d311a5e85ac73b39680dd64a9892fa42bb08fd83b3bab4fe6999bfa0\",\"sha256:05ffd6491e9e8958b742b0e2e7c346635033d0a5f1a0ea083547fcc854e5d5cf\",\"sha256:0776c92d584f72f1e584d2e43cfc5542c2f3dd19d53f70df0900fda643f4bae6\",\"sha256:263bcf0c24d7a57c80991e64ab57cba7a3906e31d2e21b455f493d4aab534aaa\",\"sha256:2fbdc1140a7d08faa748256438291394967aa54b40009f54e8d9825e75ef6113\",\"sha256:30982f79f21bb0ff7d7d4a4e531e3fcaa39b778584c2ce81a147f95be1cd58c9\",\"sha256:31c19a668b5a1eadab82ff070b5a260478ac6ddad3a5b62295095174a8d26398\",\"sha256:3f9103abd1678cb1b5f7e8e1af565a652e036844166c91ec031eeb25c5ca8af0\",\"sha256:41388321a73ba1a84edd90d86ecc8bfed55e6a1e51882eafb019f45895ec0f65\",\"sha256:4310b5494271e18580d61022c0857eb85d30510d88606fa3b8314790df7f367d\",\"sha256:464157509ce4efa5ff285c646a38b49f8c5ef8d4b340f722685b09bb033c5ccf\",\"sha256:485246fcdb93336105c29a5cfbff8a226949db37b7473c89caa26c9bae52a242\",\"sha256:489c19152ec1f0e5c5e525356bcbf7e532f311bff630c9b6bc2db6f04da6a8b9\",\"sha256:4f2ab0faf8188b9f99e6a273b24b97662194160cc8ca17cf9d1fb6f18d7fb93f\",\"sha256:55a38dcd1cee2f298d8c2ebc60fc7d39f3b4535684a1e9e2f39a80ae88b0cea7\",\"sha256:58b0ecc505bbe49a99551eea3f2e8a9b3b24b3edd2a4de1ac0dc17bc75c9ec07\",\"sha256:5af4cd0d8cf2912bd95f33586600cac9c4b7c5053a036422b97cfe4728d2eb53\",\"sha256:5bbd974193e2cc274312da16b189b38f5f128410f3377721cadb76b1e8ca5328\",\"sha256:5c4849916f71dc44e19ed370421518c0d86cf73b26e8656192fcfcda08218fbd\",\"sha256:5dc736127fac70009b8d309a0eeb74f3e08979e530cf7017f2f507ef62e6cfb8\",\"sha256:63f3a80daf4f867bd80f5c97fbe03314348ac1b3b70fb1c0ad255a69e3749879\",\"sha256:674d7baf0015a6037d5758496d550fc1946f34bfc89c1bf247cabdc415d7747e\",\"sha256:6cd4ccecc5ea5abd06deeaab52fcdba372f649728050c6143cc405ee0c166679\",\"sha256:790a168a808bd00ee42786b8ba883307c0e3684ebb292e0e20009588c426da47\",\"sha256:7d56ce3e2a6a556b59a288771cf9d091470116867e578bebced8bfc4147fbfd7\",\"sha256:841f93a0e31e4c64d62ea570d81c35de0f6cea224568b2430d832967536308e6\",\"sha256:8de4578e838a9409b5b134a18ee820730e507b2d21700c14b71a2b0757396acc\",\"sha256:92a41d936f7d6743f343be265ace93b7c57f5b231e21b9605716f5a47c2879e7\",\"sha256:9831816a5d34d5170aa9ed32a64982c3d6f4332e7ecfe62dc97767e163cb0b17\",\"sha256:994c244e004bc3cfbea96257b883c90a86e8cbd76e069718eb4c6b222a56f78b\",\"sha256:9dab4c98acfb5fb85f5a20548b5c0abe9b163ad3525ee28822ffecb5c40e724c\",\"sha256:b79bbd648664aa6f44ef018474ff958b6b296fed5c2d42db60078de3cffbc8aa\",\"sha256:c3e700abf4a37b7b8b90532fa6ed5c38a9bfc777098bc9fbae5ec8e618ac8f30\",\"sha256:c52ed79f683f721b69a10fb9e3d940a468203f5054927215586c5d49a072de8d\",\"sha256:c75c98380b1ede1cae9a252c6dc247e6279403fae38c77060a5e6186c95073ac\",\"sha256:d2b4431f522b277c79c34b65da128029a9955e4481462cbf7ebec23aab61fc58\",\"sha256:ddf4a9bfaac643e62702ed662afc36f6abed2a88a21270e891038f9a19bc08fc\",\"sha256:de0205cb21ad5ddaef607cda9a3191eadd1e7a62a756ea3a356369675230ac35\",\"sha256:ec555c9d0db12d7fd777ba3f8b75044c73e576c720a851667432fabb7057da6c\",\"sha256:fb5cdcbbe3080181498931b52a91a21a781a35dcb859da741c0345c6402bf00c\"],\"markers\":\"python_version >= '3.7'\"},\"shellingham\":{\"version\":\"==1.5.4\",\"hashes\":[\"sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686\",\"sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de\"],\"markers\":\"python_version >= '3.7'\"},\"six\":{\"version\":\"==1.16.0\",\"hashes\":[\"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926\",\"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254\"],\"markers\":\"python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'\"},\"sniffio\":{\"version\":\"==1.3.1\",\"hashes\":[\"sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2\",\"sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc\"],\"markers\":\"python_version >= '3.7'\"},\"starlette\":{\"version\":\"==0.37.2\",\"hashes\":[\"sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee\",\"sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823\"],\"markers\":\"python_version >= '3.8'\"},\"stream-zip\":{\"version\":\"==0.0.71\",\"hashes\":[\"sha256:4afff6da680876b7982afedcc9c3478a575a519c74015a25a4248d3fe69a46a0\",\"sha256:fd85a01e8eadec4d1151b548c7da0eeecc37432f29df01ba232f672f958a2fc6\"],\"markers\":\"python_full_version >= '3.6.7'\"},\"tqdm\":{\"version\":\"==4.66.4\",\"hashes\":[\"sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644\",\"sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb\"],\"markers\":\"python_version >= '3.7'\"},\"typer\":{\"version\":\"==0.12.3\",\"hashes\":[\"sha256:070d7ca53f785acbccba8e7d28b08dcd88f79f1fbda035ade0aecec71ca5c914\",\"sha256:49e73131481d804288ef62598d97a1ceef3058905aa536a1134f90891ba35482\"],\"markers\":\"python_version >= '3.7'\"},\"typing-extensions\":{\"version\":\"==4.11.0\",\"hashes\":[\"sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0\",\"sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a\"],\"markers\":\"python_version >= '3.8'\"},\"ujson\":{\"version\":\"==5.9.0\",\"hashes\":[\"sha256:07e0cfdde5fd91f54cd2d7ffb3482c8ff1bf558abf32a8b953a5d169575ae1cd\",\"sha256:0b159efece9ab5c01f70b9d10bbb77241ce111a45bc8d21a44c219a2aec8ddfd\",\"sha256:0c4d6adb2c7bb9eb7c71ad6f6f612e13b264942e841f8cc3314a21a289a76c4e\",\"sha256:10ca3c41e80509fd9805f7c149068fa8dbee18872bbdc03d7cca928926a358d5\",\"sha256:20509a8c9f775b3a511e308bbe0b72897ba6b800767a7c90c5cca59d20d7c42c\",\"sha256:25fa46e4ff0a2deecbcf7100af3a5d70090b461906f2299506485ff31d9ec437\",\"sha256:2a8ea0f55a1396708e564595aaa6696c0d8af532340f477162ff6927ecc46e21\",\"sha256:2fbb90aa5c23cb3d4b803c12aa220d26778c31b6e4b7a13a1f49971f6c7d088e\",\"sha256:323279e68c195110ef85cbe5edce885219e3d4a48705448720ad925d88c9f851\",\"sha256:32bba5870c8fa2a97f4a68f6401038d3f1922e66c34280d710af00b14a3ca562\",\"sha256:3382a3ce0ccc0558b1c1668950008cece9bf463ebb17463ebf6a8bfc060dae34\",\"sha256:37ef92e42535a81bf72179d0e252c9af42a4ed966dc6be6967ebfb929a87bc60\",\"sha256:3b23bbb46334ce51ddb5dded60c662fbf7bb74a37b8f87221c5b0fec1ec6454b\",\"sha256:473fb8dff1d58f49912323d7cb0859df5585cfc932e4b9c053bf8cf7f2d7c5c4\",\"sha256:4a566e465cb2fcfdf040c2447b7dd9718799d0d90134b37a20dff1e27c0e9096\",\"sha256:4e35d7885ed612feb6b3dd1b7de28e89baaba4011ecdf995e88be9ac614765e9\",\"sha256:506a45e5fcbb2d46f1a51fead991c39529fc3737c0f5d47c9b4a1d762578fc30\",\"sha256:5635b78b636a54a86fdbf6f027e461aa6c6b948363bdf8d4fbb56a42b7388320\",\"sha256:5ca35f484622fd208f55041b042d9d94f3b2c9c5add4e9af5ee9946d2d30db01\",\"sha256:60718f1720a61560618eff3b56fd517d107518d3c0160ca7a5a66ac949c6cf1c\",\"sha256:63fb2e6599d96fdffdb553af0ed3f76b85fda63281063f1cb5b1141a6fcd0617\",\"sha256:6974b3a7c17bbf829e6c3bfdc5823c67922e44ff169851a755eab79a3dd31ec0\",\"sha256:6adef377ed583477cf005b58c3025051b5faa6b8cc25876e594afbb772578f21\",\"sha256:6bbd91a151a8f3358c29355a491e915eb203f607267a25e6ab10531b3b157c5e\",\"sha256:6eecbd09b316cea1fd929b1e25f70382917542ab11b692cb46ec9b0a26c7427f\",\"sha256:70e06849dfeb2548be48fdd3ceb53300640bc8100c379d6e19d78045e9c26120\",\"sha256:7309d063cd392811acc49b5016728a5e1b46ab9907d321ebbe1c2156bc3c0b99\",\"sha256:779a2a88c53039bebfbccca934430dabb5c62cc179e09a9c27a322023f363e0d\",\"sha256:7a365eac66f5aa7a7fdf57e5066ada6226700884fc7dce2ba5483538bc16c8c5\",\"sha256:7b1c0991c4fe256f5fdb19758f7eac7f47caac29a6c57d0de16a19048eb86bad\",\"sha256:7cc7e605d2aa6ae6b7321c3ae250d2e050f06082e71ab1a4200b4ae64d25863c\",\"sha256:829a69d451a49c0de14a9fecb2a2d544a9b2c884c2b542adb243b683a6f15908\",\"sha256:829b824953ebad76d46e4ae709e940bb229e8999e40881338b3cc94c771b876c\",\"sha256:82b5a56609f1235d72835ee109163c7041b30920d70fe7dac9176c64df87c164\",\"sha256:89cc92e73d5501b8a7f48575eeb14ad27156ad092c2e9fc7e3cf949f07e75532\",\"sha256:8ba7cac47dd65ff88571eceeff48bf30ed5eb9c67b34b88cb22869b7aa19600d\",\"sha256:8fc2aa18b13d97b3c8ccecdf1a3c405f411a6e96adeee94233058c44ff92617d\",\"sha256:9ac92d86ff34296f881e12aa955f7014d276895e0e4e868ba7fddebbde38e378\",\"sha256:9d302bd17989b6bd90d49bade66943c78f9e3670407dbc53ebcf61271cadc399\",\"sha256:9f21315f51e0db8ee245e33a649dd2d9dce0594522de6f278d62f15f998e050e\",\"sha256:a6d3f10eb8ccba4316a6b5465b705ed70a06011c6f82418b59278fbc919bef6f\",\"sha256:a807ae73c46ad5db161a7e883eec0fbe1bebc6a54890152ccc63072c4884823b\",\"sha256:ab71bf27b002eaf7d047c54a68e60230fbd5cd9da60de7ca0aa87d0bccead8fa\",\"sha256:b048aa93eace8571eedbd67b3766623e7f0acbf08ee291bef7d8106210432427\",\"sha256:b28407cfe315bd1b34f1ebe65d3bd735d6b36d409b334100be8cdffae2177b2f\",\"sha256:b5964ea916edfe24af1f4cc68488448fbb1ec27a3ddcddc2b236da575c12c8ae\",\"sha256:b68a0caab33f359b4cbbc10065c88e3758c9f73a11a65a91f024b2e7a1257106\",\"sha256:ba0823cb70866f0d6a4ad48d998dd338dce7314598721bc1b7986d054d782dfd\",\"sha256:bd4ea86c2afd41429751d22a3ccd03311c067bd6aeee2d054f83f97e41e11d8f\",\"sha256:bdf7fc21a03bafe4ba208dafa84ae38e04e5d36c0e1c746726edf5392e9f9f36\",\"sha256:c4eec2ddc046360d087cf35659c7ba0cbd101f32035e19047013162274e71fcf\",\"sha256:cdcb02cabcb1e44381221840a7af04433c1dc3297af76fde924a50c3054c708c\",\"sha256:d0fd2eba664a22447102062814bd13e63c6130540222c0aa620701dd01f4be81\",\"sha256:d581db9db9e41d8ea0b2705c90518ba623cbdc74f8d644d7eb0d107be0d85d9c\",\"sha256:dc80f0f5abf33bd7099f7ac94ab1206730a3c0a2d17549911ed2cb6b7aa36d2d\",\"sha256:e015122b337858dba5a3dc3533af2a8fc0410ee9e2374092f6a5b88b182e9fcc\",\"sha256:e208d3bf02c6963e6ef7324dadf1d73239fb7008491fdf523208f60be6437402\",\"sha256:e2f909bc08ce01f122fd9c24bc6f9876aa087188dfaf3c4116fe6e4daf7e194f\",\"sha256:f0cb4a7814940ddd6619bdce6be637a4b37a8c4760de9373bac54bb7b229698b\",\"sha256:f4b3917296630a075e04d3d07601ce2a176479c23af838b6cf90a2d6b39b0d95\",\"sha256:f69f16b8f1c69da00e38dc5f2d08a86b0e781d0ad3e4cc6a13ea033a439c4844\",\"sha256:f833c529e922577226a05bc25b6a8b3eb6c4fb155b72dd88d33de99d53113124\",\"sha256:f91719c6abafe429c1a144cfe27883eace9fb1c09a9c5ef1bcb3ae80a3076a4e\",\"sha256:ff741a5b4be2d08fceaab681c9d4bc89abf3c9db600ab435e20b9b6d4dfef12e\",\"sha256:ffdfebd819f492e48e4f31c97cb593b9c1a8251933d8f8972e81697f00326ff1\"],\"markers\":\"python_version >= '3.8'\"},\"urllib3\":{\"version\":\"==2.2.1\",\"hashes\":[\"sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d\",\"sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19\"],\"markers\":\"python_version >= '3.8'\"},\"usgs\":{\"version\":\"==0.3.5\",\"hashes\":[\"sha256:62734bfd23829e8b90701c49cb2f868d3bf4c706ea6b53939711186cf6df0807\"]},\"uvicorn\":{\"version\":\"==0.29.0\",\"hashes\":[\"sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de\",\"sha256:6a69214c0b6a087462412670b3ef21224fa48cae0e452b5883e8e8bdfdd11dd0\"],\"markers\":\"python_version >= '3.8'\",\"extras\":[\"standard\"]},\"uvloop\":{\"version\":\"==0.19.0\",\"hashes\":[\"sha256:0246f4fd1bf2bf702e06b0d45ee91677ee5c31242f39aab4ea6fe0c51aedd0fd\",\"sha256:02506dc23a5d90e04d4f65c7791e65cf44bd91b37f24cfc3ef6cf2aff05dc7ec\",\"sha256:13dfdf492af0aa0a0edf66807d2b465607d11c4fa48f4a1fd41cbea5b18e8e8b\",\"sha256:2693049be9d36fef81741fddb3f441673ba12a34a704e7b4361efb75cf30befc\",\"sha256:271718e26b3e17906b28b67314c45d19106112067205119dddbd834c2b7ce797\",\"sha256:2df95fca285a9f5bfe730e51945ffe2fa71ccbfdde3b0da5772b4ee4f2e770d5\",\"sha256:31e672bb38b45abc4f26e273be83b72a0d28d074d5b370fc4dcf4c4eb15417d2\",\"sha256:34175c9fd2a4bc3adc1380e1261f60306344e3407c20a4d684fd5f3be010fa3d\",\"sha256:45bf4c24c19fb8a50902ae37c5de50da81de4922af65baf760f7c0c42e1088be\",\"sha256:472d61143059c84947aa8bb74eabbace30d577a03a1805b77933d6bd13ddebbd\",\"sha256:47bf3e9312f63684efe283f7342afb414eea4d3011542155c7e625cd799c3b12\",\"sha256:492e2c32c2af3f971473bc22f086513cedfc66a130756145a931a90c3958cb17\",\"sha256:4ce6b0af8f2729a02a5d1575feacb2a94fc7b2e983868b009d51c9a9d2149bef\",\"sha256:5138821e40b0c3e6c9478643b4660bd44372ae1e16a322b8fc07478f92684e24\",\"sha256:5588bd21cf1fcf06bded085f37e43ce0e00424197e7c10e77afd4bbefffef428\",\"sha256:570fc0ed613883d8d30ee40397b79207eedd2624891692471808a95069a007c1\",\"sha256:5a05128d315e2912791de6088c34136bfcdd0c7cbc1cf85fd6fd1bb321b7c849\",\"sha256:5daa304d2161d2918fa9a17d5635099a2f78ae5b5960e742b2fcfbb7aefaa593\",\"sha256:5f17766fb6da94135526273080f3455a112f82570b2ee5daa64d682387fe0dcd\",\"sha256:6e3d4e85ac060e2342ff85e90d0c04157acb210b9ce508e784a944f852a40e67\",\"sha256:7010271303961c6f0fe37731004335401eb9075a12680738731e9c92ddd96ad6\",\"sha256:7207272c9520203fea9b93843bb775d03e1cf88a80a936ce760f60bb5add92f3\",\"sha256:78ab247f0b5671cc887c31d33f9b3abfb88d2614b84e4303f1a63b46c046c8bd\",\"sha256:7b1fd71c3843327f3bbc3237bedcdb6504fd50368ab3e04d0410e52ec293f5b8\",\"sha256:8ca4956c9ab567d87d59d49fa3704cf29e37109ad348f2d5223c9bf761a332e7\",\"sha256:91ab01c6cd00e39cde50173ba4ec68a1e578fee9279ba64f5221810a9e786533\",\"sha256:cd81bdc2b8219cb4b2556eea39d2e36bfa375a2dd021404f90a62e44efaaf957\",\"sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650\",\"sha256:de4313d7f575474c8f5a12e163f6d89c0a878bc49219641d49e6f1444369a90e\",\"sha256:e27f100e1ff17f6feeb1f33968bc185bf8ce41ca557deee9d9bbbffeb72030b7\",\"sha256:f467a5fd23b4fc43ed86342641f3936a68ded707f4627622fa3f82a120e18256\"]},\"watchfiles\":{\"version\":\"==0.21.0\",\"hashes\":[\"sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc\",\"sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365\",\"sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0\",\"sha256:08dca260e85ffae975448e344834d765983237ad6dc308231aa16e7933db763e\",\"sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124\",\"sha256:0dd5fad9b9c0dd89904bbdea978ce89a2b692a7ee8a0ce19b940e538c88a809c\",\"sha256:11cd0c3100e2233e9c53106265da31d574355c288e15259c0d40a4405cbae317\",\"sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094\",\"sha256:18d5b4da8cf3e41895b34e8c37d13c9ed294954907929aacd95153508d5d89d7\",\"sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235\",\"sha256:1b8d1eae0f65441963d805f766c7e9cd092f91e0c600c820c764a4ff71a0764c\",\"sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c\",\"sha256:1c9198c989f47898b2c22201756f73249de3748e0fc9de44adaf54a8b259cc0c\",\"sha256:1fd9a5205139f3c6bb60d11f6072e0552f0a20b712c85f43d42342d162be1235\",\"sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293\",\"sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa\",\"sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef\",\"sha256:3ad692bc7792be8c32918c699638b660c0de078a6cbe464c46e1340dadb94c19\",\"sha256:3ccceb50c611c433145502735e0370877cced72a6c70fd2410238bcbc7fe51d8\",\"sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d\",\"sha256:3f92944efc564867bbf841c823c8b71bb0be75e06b8ce45c084b46411475a915\",\"sha256:40bca549fdc929b470dd1dbfcb47b3295cb46a6d2c90e50588b0a1b3bd98f429\",\"sha256:43babacef21c519bc6631c5fce2a61eccdfc011b4bcb9047255e9620732c8097\",\"sha256:4566006aa44cb0d21b8ab53baf4b9c667a0ed23efe4aaad8c227bfba0bf15cbe\",\"sha256:49f56e6ecc2503e7dbe233fa328b2be1a7797d31548e7a193237dcdf1ad0eee0\",\"sha256:4c48a10d17571d1275701e14a601e36959ffada3add8cdbc9e5061a6e3579a5d\",\"sha256:4ea10a29aa5de67de02256a28d1bf53d21322295cb00bd2d57fcd19b850ebd99\",\"sha256:511f0b034120cd1989932bf1e9081aa9fb00f1f949fbd2d9cab6264916ae89b1\",\"sha256:51ddac60b96a42c15d24fbdc7a4bfcd02b5a29c047b7f8bf63d3f6f5a860949a\",\"sha256:57d430f5fb63fea141ab71ca9c064e80de3a20b427ca2febcbfcef70ff0ce895\",\"sha256:59137c0c6826bd56c710d1d2bda81553b5e6b7c84d5a676747d80caf0409ad94\",\"sha256:5a03651352fc20975ee2a707cd2d74a386cd303cc688f407296064ad1e6d1562\",\"sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab\",\"sha256:642d66b75eda909fd1112d35c53816d59789a4b38c141a96d62f50a3ef9b3360\",\"sha256:6674b00b9756b0af620aa2a3346b01f8e2a3dc729d25617e1b89cf6af4a54eb1\",\"sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7\",\"sha256:66fac0c238ab9a2e72d026b5fb91cb902c146202bbd29a9a1a44e8db7b710b6f\",\"sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03\",\"sha256:6c889025f59884423428c261f212e04d438de865beda0b1e1babab85ef4c0f01\",\"sha256:6cb8fdc044909e2078c248986f2fc76f911f72b51ea4a4fbbf472e01d14faa58\",\"sha256:6e9be3ef84e2bb9710f3f777accce25556f4a71e15d2b73223788d528fcc2052\",\"sha256:7f762a1a85a12cc3484f77eee7be87b10f8c50b0b787bb02f4e357403cad0c0e\",\"sha256:83a696da8922314ff2aec02987eefb03784f473281d740bf9170181829133765\",\"sha256:853853cbf7bf9408b404754b92512ebe3e3a83587503d766d23e6bf83d092ee6\",\"sha256:8ad3fe0a3567c2f0f629d800409cd528cb6251da12e81a1f765e5c5345fd0137\",\"sha256:8c6ed10c2497e5fedadf61e465b3ca12a19f96004c15dcffe4bd442ebadc2d85\",\"sha256:8d5f400326840934e3507701f9f7269247f7c026d1b6cfd49477d2be0933cfca\",\"sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f\",\"sha256:9a0aa47f94ea9a0b39dd30850b0adf2e1cd32a8b4f9c7aa443d852aacf9ca214\",\"sha256:9b37a7ba223b2f26122c148bb8d09a9ff312afca998c48c725ff5a0a632145f7\",\"sha256:9c873345680c1b87f1e09e0eaf8cf6c891b9851d8b4d3645e7efe2ec20a20cc7\",\"sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3\",\"sha256:9d353c4cfda586db2a176ce42c88f2fc31ec25e50212650c89fdd0f560ee507b\",\"sha256:a1e3014a625bcf107fbf38eece0e47fa0190e52e45dc6eee5a8265ddc6dc5ea7\",\"sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6\",\"sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994\",\"sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9\",\"sha256:b3cab0e06143768499384a8a5efb9c4dc53e19382952859e4802f294214f36ec\",\"sha256:b4a21f71885aa2744719459951819e7bf5a906a6448a6b2bbce8e9cc9f2c8128\",\"sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c\",\"sha256:be6dd5d52b73018b21adc1c5d28ac0c68184a64769052dfeb0c5d9998e7f56a2\",\"sha256:c550a56bf209a3d987d5a975cdf2063b3389a5d16caf29db4bdddeae49f22078\",\"sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3\",\"sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e\",\"sha256:cfb92d49dbb95ec7a07511bc9efb0faff8fe24ef3805662b8d6808ba8409a71a\",\"sha256:d23bcd6c8eaa6324fe109d8cac01b41fe9a54b8c498af9ce464c1aeeb99903d6\",\"sha256:d5b1dc0e708fad9f92c296ab2f948af403bf201db8fb2eb4c8179db143732e49\",\"sha256:d78f30cbe8b2ce770160d3c08cff01b2ae9306fe66ce899b73f0409dc1846c1b\",\"sha256:d8f57c4461cd24fda22493109c45b3980863c58a25b8bec885ca8bea6b8d4b28\",\"sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9\",\"sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586\",\"sha256:ebe684d7d26239e23d102a2bad2a358dedf18e462e8808778703427d1f584400\",\"sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165\",\"sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303\",\"sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d\"]},\"websockets\":{\"version\":\"==12.0\",\"hashes\":[\"sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b\",\"sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6\",\"sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df\",\"sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b\",\"sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205\",\"sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892\",\"sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53\",\"sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2\",\"sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed\",\"sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c\",\"sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd\",\"sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b\",\"sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931\",\"sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30\",\"sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370\",\"sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be\",\"sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec\",\"sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf\",\"sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62\",\"sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b\",\"sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402\",\"sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f\",\"sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123\",\"sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9\",\"sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603\",\"sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45\",\"sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558\",\"sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4\",\"sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438\",\"sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137\",\"sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480\",\"sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447\",\"sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8\",\"sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04\",\"sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c\",\"sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb\",\"sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967\",\"sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b\",\"sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d\",\"sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def\",\"sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c\",\"sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92\",\"sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2\",\"sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113\",\"sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b\",\"sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28\",\"sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7\",\"sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d\",\"sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f\",\"sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468\",\"sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8\",\"sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae\",\"sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611\",\"sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d\",\"sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9\",\"sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca\",\"sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f\",\"sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2\",\"sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077\",\"sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2\",\"sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6\",\"sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374\",\"sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc\",\"sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e\",\"sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53\",\"sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399\",\"sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547\",\"sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3\",\"sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870\",\"sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5\",\"sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8\",\"sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7\"]},\"whoosh\":{\"version\":\"==2.7.4\",\"hashes\":[\"sha256:7ca5633dbfa9e0e0fa400d3151a8a0c4bec53bd2ecedc0a67705b17565c31a83\",\"sha256:aa39c3c3426e3fd107dcb4bde64ca1e276a65a889d9085a6e4b54ba82420a852\",\"sha256:e0857375f63e9041e03fedd5b7541f97cf78917ac1b6b06c1fcc9b45375dda69\"]}},\"develop\":{}}" From f97a70f71ab76a992818ec81f88dbd50309f05cd Mon Sep 17 00:00:00 2001 From: Martin Schobben Date: Wed, 23 Oct 2024 16:38:31 +0200 Subject: [PATCH 06/10] remove hvplot --- unit_02/04_l-band-sar.ipynb | 1 - 1 file changed, 1 deletion(-) diff --git a/unit_02/04_l-band-sar.ipynb b/unit_02/04_l-band-sar.ipynb index 8f841a3..382f645 100644 --- a/unit_02/04_l-band-sar.ipynb +++ b/unit_02/04_l-band-sar.ipynb @@ -44,7 +44,6 @@ "import xarray as xr\n", "import rioxarray #noqa\n", "\n", - "import hvplot.xarray #noqa\n", "import folium\n", "\n", "from shapely.geometry import mapping, box\n", From b84c528e97b39a78d86d4e798240f135f95775f5 Mon Sep 17 00:00:00 2001 From: Martin Schobben Date: Wed, 23 Oct 2024 16:51:09 +0200 Subject: [PATCH 07/10] add scale --- unit_02/04_l-band-sar.ipynb | 2 -- 1 file changed, 2 deletions(-) diff --git a/unit_02/04_l-band-sar.ipynb b/unit_02/04_l-band-sar.ipynb index 382f645..8b58078 100644 --- a/unit_02/04_l-band-sar.ipynb +++ b/unit_02/04_l-band-sar.ipynb @@ -222,8 +222,6 @@ " x : xarray.Dataset\n", " bbox: tuple\n", " minimum longitude minimum latitude maximum longitude maximum latitude\n", - " scale: float\n", - " scaling factor\n", " Returns\n", " -------\n", " xarray.Dataset\n", From 8deef3d39482cec088d960a32759957023414eb8 Mon Sep 17 00:00:00 2001 From: Martin Schobben Date: Thu, 24 Oct 2024 09:54:15 +0200 Subject: [PATCH 08/10] store as zarr --- .gitignore | 3 +- unit_02/04_l-band-sar.ipynb | 56 +++++++++++++++++++++++++------------ 2 files changed, 40 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index ee17615..d0e623f 100644 --- a/.gitignore +++ b/.gitignore @@ -63,4 +63,5 @@ data/ *.html *_files/ /.quarto/ -_site/ \ No newline at end of file +_site/ +**/*.zarr diff --git a/unit_02/04_l-band-sar.ipynb b/unit_02/04_l-band-sar.ipynb index 8b58078..78853b2 100644 --- a/unit_02/04_l-band-sar.ipynb +++ b/unit_02/04_l-band-sar.ipynb @@ -4,13 +4,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Data Cubes\n", + "# Data Cubes\n", "\n", "In this notebook we discuss how we can easily compare images of two or more different time slices, satellites or other earth observation products. We limit our selves to products on a regular grid with an associated coordinate reference system (CRS), known as a raster. This means that each cell of the raster contains an attribute value and location coordinates. The process of combining such rasters to form data cubes is called raster stacking. We can have data cubes in many forms. Some will be more familiar then others, such as the temporospatial datacube:\n", "\n", "$$Z = f(x,y,t) \\quad \\text{,}$$\n", "\n", - "or when dealing with electromagnetic spectrum , the spectral wavelengths may form additional dimensions of a cube:\n", + "or when dealing with electromagnetic spectrum , the spectral wavelengths may form an additional dimension of a cube:\n", "\n", "$$Z = f(x,y,t, \\lambda ) \\quad \\text{.} $$\n", "\n", @@ -18,7 +18,7 @@ "\n", "$${Z_1,Z_2,...,Z_3} = f(x,y,t) $$\n", "\n", - "To perform raster stacking, we generally follow a certain routine (see Figure).\n", + "To perform raster stacking, we generally follow a certain routine (see also Figure 1).\n", "\n", "1. Collect data (GeoTIFF, NetCDF, Zarr)\n", "2. Select an area of interest\n", @@ -29,6 +29,7 @@ "\n", "![](https://eox.at/images/eodcaas-mosaic-data-cube-kopp.png)\n", "\n", + "*Figure 1: Stacking of arrays to form datacubes (source: https://eox.at)*.\n", "\n", "In this notebook we will study two different SAR products. SAR data from the Advanced Land Observing Satellite (ALOS-1), which was a Japanese platform with an L-band sensor from the Japan Aerospace Exploration Agency (JAXA), and C-band data from the Copernicus Sentinel-1 mission. It is our goal to compare C- with L-band, so we need to somehow stack these arrays." ] @@ -90,7 +91,7 @@ "# bounds of image\n", "folium.GeoJson(mapping(bbox), name=\"Area of Interest\", color=\"red\").add_to(map)\n", "\n", - "# minimum longitude minimum latitude maximum longitude maximum latitude\n", + "# minimum longitude, minimum latitude, maximum longitude, maximum latitude\n", "area_of_interest = box(10.3, 45.5, 10.6, 45.6)\n", "\n", "folium.GeoJson(mapping(area_of_interest), name=\"Area of Interest\").add_to(map)\n", @@ -102,6 +103,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "*Figure 2: Map of study area. Red rectangle is the area covered by the Sentinel-1 raster. Blue rectangle is the area of interest.*\n", + "\n", "On the map we have drawn a rectangles of the area covered by the images and of our selected study area. To prevent loading too much data we will now only load the data as defined by the rectangle on the `folium` map. \n", "\n", "The Sentinel-1 data is stored in the `shared` folder of the JupyterHub as separate two-dimensional GeoTIFF files with a certain timestamp. The following `s1_preprocess` function allows use to load all files in one go as a spatiotemporal datacube. Basically, the preprocessing function helps read the timestamp from the file and adds this as a new dimension to the array. The latter allows a concatenation procedure whereby all files are joined along the new time dimension. In addition by providing `area_of_interest.bounds` to the parameter `bbox` we will only load the data of the previously defined area of interest." @@ -147,7 +150,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We load the data again with `Xarray.open_mfdataset` and by providing the preprocess function including the bounds of the area of interest, as follows:" + "We load the data again with `open_mfdataset` and by providing the preprocess function including the bounds of the area of interest, as follows:" ] }, { @@ -176,7 +179,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To enable further stacking of ALOS-1 and Sentinel-1 data we need to know some more information about the raster. Hence we define the following function `print_raster` to get the projection (CRS), resolution, and region (bounds)." + "## Unlocking Geospatial Information \n", + "\n", + "To enable further stacking of ALOS-1 and Sentinel-1 data we need to know some more information about the raster. Hence we define the following function `print_raster` to get the projection (CRS), resolution, and region (bounds). The function leverages the functionality of `rioxarray`; a package for rasters." ] }, { @@ -201,9 +206,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The CRS \"EPSG 27704\" is part of the EQUI7Grid. This grid is angular preserving and show true linear scale between one or two points. This feature is important for remote sensing as it reduces so-called oversampling due to geometric distortions when projecting on a sphere.\n", + "The CRS \"EPSG 27704\" is part of the EQUI7Grid. This grid is angular preserving and show true linear scale between one or two points. This feature is important for remote sensing as it reduces so-called oversampling due to geometric distortions when projecting on a sphere. This projection is developed by the TU Wien.\n", + "\n", + "Now we will proceed with loading the ALOS-1 L-band data in much the same fashion as for Sentinel-1. Again timeslices are stored separately as GeoTIFFS and need to be concatenate along the time dimension. We use the slightly different preprocessing function `alos_preprocess` for this purpose. Most notable difference of this function is the inclusion of a scaling factor for the 16-bit digital numbers (DN):\n", "\n", - "Now we will proceed with loading the ALOS-1 L-band data in much the same fashion as for Sentinel-1. Again timeslices are stored seperately as GeoTIFFS and need to be concatenate along the time dimension. We use the slightly different preprocessing function `alos_preprocess` for this purpose. Most notable difference of this function is the inclusion of a scaling factor to correctly convert the integers to floating point values." + "$$\\gamma^0 = 10 * log_{10}(\\text{DN}^2) - 83.0 \\,dB$$\n", + "\n", + "to correctly convert the integers to $\\gamma^0_E$ in the dB range." ] }, { @@ -251,7 +260,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Load the data with the `open_mfdataset` function of `xarray` and provide yet again an preprocessing function (see above), which includes selection of the bounds of an area of interest, a scaling factor, and the extraction of time stamps from the file name." + "Load the data with the `open_mfdataset` function of `xarray` and provide the preprocessing function (see above), which includes the selection of the bounds of an area of interest, a scaling factor, and the extraction of time stamps from the file name." ] }, { @@ -298,7 +307,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This data comes projected in an UTM grid. We would therefore like to reproject this data to match the projection of Sentinel-1. Furthermore we will increase the resolution of the data by upsampling. The `rioxarray` package has a very convenient method that can do this all in one go `reproject_match`. For continuous data it is best to use a bilinear resampling strategy. As always you have to consider again that we deal with values in the dB range and we need to convert to the linear scale before bilinear resampling." + "## Reprojecting\n", + "\n", + "This data is projected in an UTM grid. We would therefore like to reproject this data to match the projection of Sentinel-1. Furthermore we will increase the resolution of the data by upsampling. The `rioxarray` package has a very convenient method that can do this all in one go `reproject_match`. For continuous data it is best to use a bilinear resampling strategy. As always you have to consider again that we deal with values in the dB range, so we need to convert to the linear scale before bilinear resampling." ] }, { @@ -340,7 +351,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we are finally ready to stack Sentinel-1 C-band and ALOS-1 L-band data with the function `merge` of `xarray`. " + "## Stacking of Multiple Arrays\n", + "\n", + "Now we are finally ready to stack Sentinel-1 C-band and ALOS-1 L-band arrays with the function `merge` of `xarray`. " ] }, { @@ -349,7 +362,8 @@ "metadata": {}, "outputs": [], "source": [ - "fused_ds = xr.merge([s1_ds, alos_ds]).unify_chunks()\n", + "fused_ds = xr.merge([s1_ds, alos_ds])\n", + "fused_ds[\"alos\"] = fused_ds.alos.chunk(fused_ds.s1.chunksizes)\n", "fused_ds" ] }, @@ -366,15 +380,21 @@ "metadata": {}, "outputs": [], "source": [ - "fused_ds.alos.plot(col=\"time\", robust=True)\n", - "fused_ds.s1.plot(col=\"time\", robust=True)" + "fused_ds.alos.plot(col=\"time\", robust=True, cmap=\"Greys_r\")\n", + "fused_ds.s1.plot(col=\"time\", robust=True, cmap=\"Greys_r\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "As a last step we will show you how to store this new datacube, sot that we can reuse this data in the next notebook." + "*Figure 3: Stacked array with ALOS L-band and Sentinel-1 C-band $\\gamma^0_E (dB)$.*\n", + "\n", + "We can see that we do not have overlapping timestamps for the different variables, but we do have co-located data points for the x and y axis of the datacube. The missing timestamps have been padded with NaN values (NaN = Not A Number).\n", + "\n", + "## Saving Results\n", + "\n", + "As a last step we will show you how to store this new datacube, so that we can reuse this data in the next notebook. We use for this Zarr. Zarr storage is a solution for chunked N-dimensional arrays." ] }, { @@ -383,16 +403,16 @@ "metadata": {}, "outputs": [], "source": [ - "fused_ds.to_zarr(\"fused_ds.zarr\")" + "fused_ds.to_zarr(\"fused_ds.zarr\", mode=\"w\")" ] } ], "metadata": { "dependency_resolution_engine": "pipenv", "kernelspec": { - "display_name": "environment", + "display_name": "mrs-env", "language": "python", - "name": "environment" + "name": "mrs-env" }, "language_info": { "codemirror_mode": { From 6ea5e5a1571cbf784a28ed951c4e1b6fec92380d Mon Sep 17 00:00:00 2001 From: Martin Schobben Date: Thu, 24 Oct 2024 14:19:19 +0200 Subject: [PATCH 09/10] fix text and initial exercise --- mrs-env.yml | 1 + unit_02/04_l-band-sar.ipynb | 18 ++-- unit_02/04_l-band-sar_exercise.ipynb | 148 ++++++++++++++++++++++++++- 3 files changed, 153 insertions(+), 14 deletions(-) diff --git a/mrs-env.yml b/mrs-env.yml index 09f1200..83bebad 100644 --- a/mrs-env.yml +++ b/mrs-env.yml @@ -16,6 +16,7 @@ dependencies: - jupyter_bokeh - mamba - matplotlib + - netcdf4 - numpy - odc-stac - pip diff --git a/unit_02/04_l-band-sar.ipynb b/unit_02/04_l-band-sar.ipynb index 78853b2..52f5070 100644 --- a/unit_02/04_l-band-sar.ipynb +++ b/unit_02/04_l-band-sar.ipynb @@ -31,7 +31,7 @@ "\n", "*Figure 1: Stacking of arrays to form datacubes (source: https://eox.at)*.\n", "\n", - "In this notebook we will study two different SAR products. SAR data from the Advanced Land Observing Satellite (ALOS-1), which was a Japanese platform with an L-band sensor from the Japan Aerospace Exploration Agency (JAXA), and C-band data from the Copernicus Sentinel-1 mission. It is our goal to compare C- with L-band, so we need to somehow stack these arrays." + "In this notebook we will study two different SAR products. SAR data from the Advanced Land Observing Satellite (ALOS-2), which is a Japanese platform with an L-band sensor from the Japan Aerospace Exploration Agency (JAXA), and C-band data from the Copernicus Sentinel-1 mission. It is our goal to compare C- with L-band, so we need to somehow stack these arrays." ] }, { @@ -208,11 +208,11 @@ "source": [ "The CRS \"EPSG 27704\" is part of the EQUI7Grid. This grid is angular preserving and show true linear scale between one or two points. This feature is important for remote sensing as it reduces so-called oversampling due to geometric distortions when projecting on a sphere. This projection is developed by the TU Wien.\n", "\n", - "Now we will proceed with loading the ALOS-1 L-band data in much the same fashion as for Sentinel-1. Again timeslices are stored separately as GeoTIFFS and need to be concatenate along the time dimension. We use the slightly different preprocessing function `alos_preprocess` for this purpose. Most notable difference of this function is the inclusion of a scaling factor for the 16-bit digital numbers (DN):\n", + "Now we will proceed with loading the ALOS-2 L-band data in much the same fashion as for Sentinel-1. Again timeslices are stored separately as individual GeoTIFFS and they need to be concatenate along the time dimension. We use a slightly different preprocessing function `alos_preprocess` for this purpose. The most notable difference of this function is the inclusion of a scaling factor for the 16-bit digital numbers (DN):\n", "\n", - "$$\\gamma^0 = 10 * log_{10}(\\text{DN}^2) - 83.0 \\,dB$$\n", + "$$\\gamma^0_T = 10 * log_{10}(\\text{DN}^2) - 83.0 \\,dB$$\n", "\n", - "to correctly convert the integers to $\\gamma^0_E$ in the dB range." + "to correctly convert the integers to $\\gamma^0_T$ in the dB range." ] }, { @@ -300,7 +300,7 @@ "metadata": {}, "outputs": [], "source": [ - "print_raster(alos_ds, \"ALOS-1\")" + "print_raster(alos_ds, \"ALOS-2\")" ] }, { @@ -331,7 +331,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We will overwrite the coordinate values of ALOS-1 with those of Sentinel-1. If we would not do this last step, small errors in how numbers are stored would prevent stacking of the rasters." + "We will overwrite the coordinate values of ALOS-2 with those of Sentinel-1. If we would not do this last step, small errors in how numbers are stored would prevent stacking of the rasters." ] }, { @@ -353,7 +353,7 @@ "source": [ "## Stacking of Multiple Arrays\n", "\n", - "Now we are finally ready to stack Sentinel-1 C-band and ALOS-1 L-band arrays with the function `merge` of `xarray`. " + "Now we are finally ready to stack Sentinel-1 C-band and ALOS-2 L-band arrays with the function `merge` of `xarray`. " ] }, { @@ -371,7 +371,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can plot each of the variables: \"ALOS-1\" and \"Sentinel-1\" to check our results." + "We can plot each of the variables: \"ALOS-2\" and \"Sentinel-1\" to check our results." ] }, { @@ -388,7 +388,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "*Figure 3: Stacked array with ALOS L-band and Sentinel-1 C-band $\\gamma^0_E (dB)$.*\n", + "*Figure 3: Stacked array with ALOS-2 L-band and Sentinel-1 C-band $\\gamma^0_E (dB)$.*\n", "\n", "We can see that we do not have overlapping timestamps for the different variables, but we do have co-located data points for the x and y axis of the datacube. The missing timestamps have been padded with NaN values (NaN = Not A Number).\n", "\n", diff --git a/unit_02/04_l-band-sar_exercise.ipynb b/unit_02/04_l-band-sar_exercise.ipynb index dbe0aa3..bc11aaf 100644 --- a/unit_02/04_l-band-sar_exercise.ipynb +++ b/unit_02/04_l-band-sar_exercise.ipynb @@ -4,17 +4,155 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Template Notebook for TUW JupyterHub\n", - "\n" + "# Exercise: Data Cubes\n", + "\n", + "For the homework assignement we will continue to work on the same data as in the in-class exercise. Hence we will load again the Zarr datastore." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import xarray as xr\n", + "import rioxarray #noqa\n", + "from pathlib import Path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fused_ds = xr.open_dataset(\"fused_ds.zarr\", decode_coords=\"all\", engine=\"zarr\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We want to expand the datacube of the in-class exercise with a new variable in this assignment. The new variable is the Leaf Area Index, which is a dimensionless index measuring the one-sided green leaf area over a unit of land ($m^2/m^2$).\n", + "\n", + "## Question 1\n", + "\n", + "Load the new LAI data with the below provided code snippet and extract the CRS and resolution of the raster. Apply what you have learned in the in-class exercise by only using the packages as listed in the imports of this notebook. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data_path = Path(\"~/shared/datasets/rs/alos\").expanduser()\n", + "lai_ds = xr.open_dataset(data_path / \"ex4\" / \"lai.nc\", decode_coords=\"all\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Question 2\n", + "\n", + "In order to compare LAI with ALOS-2 L-band and Sentinel-1 C-band data, we need to make sure that the data is merged in one datacube. Let's first check the temporal range of `lai_ds`. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fused_ds.time" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lai_ds.time" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The temporal range of `lai_ds` is longer then the fused ALOS-2 L-band and Sentinel-1 C-band datacube. To accomodate for this we will clip the `lai_ds` object to match the maximum of `fused_ds` by using the selection (`sel`) method. Complete the following code snippet to perform the previous described selection operation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lai_ds = lai_ds.sel(...)\n", + "lai_ds.time" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Question 3\n", + "\n", + "Now that the temporal range of the LAI datacube matches that of `fused_ds`, we can continue by aligning the spatial coordinates, so that we can create a datacube containing all three variables. Yet again, apply the same methods as shown in the in-class exercises." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fused_ds_new = ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the three variables with the following lines of code:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fused_ds_new.LAI.plot(col=\"time\")\n", + "fused_ds_new.alos.plot(col=\"time\", robust=True, cmap=\"Greys_r\")\n", + "fused_ds_new.s1.plot(col=\"time\", robust=True, cmap=\"Greys_r\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And, finally save the result as a Zarr datastore." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fused_ds_new.to_zarr(\"fused_ds.zarr\", mode=\"w\")" ] } ], "metadata": { "dependency_resolution_engine": "pipenv", "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "mrs-env", "language": "python", - "name": "python3" + "name": "mrs-env" }, "language_info": { "codemirror_mode": { @@ -26,7 +164,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.4" + "version": "3.10.15" }, "requirements": "{\"packages\":{\"eodag\":\"*\"},\"requires\":{\"python_version\":\"3.1\"},\"source\":[{\"name\":\"pypi\",\"url\":\"https://pypi.org/simple\",\"verify_ssl\":true}]}", "requirements_lock": "{\"_meta\":{\"sources\":[{\"url\":\"https://pypi.org/simple\",\"verify_ssl\":true,\"name\":\"pypi\"}],\"requires\":{\"python_version\":\"3.1\"},\"hash\":{\"sha256\":\"8ade4b96a1662dceebb03f4043d030091ddb37b163f4655b155b4056f50cb92b\"},\"pipfile-spec\":6},\"default\":{\"annotated-types\":{\"version\":\"==0.6.0\",\"hashes\":[\"sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43\",\"sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d\"],\"markers\":\"python_version >= '3.8'\"},\"anyio\":{\"version\":\"==4.3.0\",\"hashes\":[\"sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8\",\"sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6\"],\"markers\":\"python_version >= '3.8'\"},\"attrs\":{\"version\":\"==23.2.0\",\"hashes\":[\"sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30\",\"sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1\"],\"markers\":\"python_version >= '3.7'\"},\"boto3\":{\"version\":\"==1.34.102\",\"hashes\":[\"sha256:1c1fb2884f85c0ec6b62e6e7ed5a2a6635e1188f3ab5d2b700f7db1cf8464484\",\"sha256:65e4b9fb9ceefe19976e8822ac0cd68d28946d4697e538741d2bbdb5b45ae42f\"],\"markers\":\"python_version >= '3.8'\"},\"botocore\":{\"version\":\"==1.34.102\",\"hashes\":[\"sha256:79ac7fc2729294395c70eff9c23510f00785ad2acd78d6130cb4379e9f27da86\",\"sha256:e2f8a9f4bac6f7b568e6e981ac2a2500bc992329c85dde8546f0cae8605dd009\"],\"markers\":\"python_version >= '3.8'\"},\"cads-api-client\":{\"version\":\"==1.0.1\",\"hashes\":[\"sha256:3c22a6cf14e89a76eb9d8ad349e70a2cdee682939a6870c7c68ba61e3e56502f\",\"sha256:fb0fc61812ea0821869af3a865426bdeedebc7749e5e89dee1d028fa5a51d375\"]},\"cdsapi\":{\"version\":\"==0.7.0\",\"hashes\":[\"sha256:293ba622f25a15c29c435763d0bbeff4c44d1ee71bc7df965e9d191160d39d59\",\"sha256:b78d871c13862095476986904e7d7224c2480a6670e1bfd46718e095eaaf9b19\"]},\"certifi\":{\"version\":\"==2024.2.2\",\"hashes\":[\"sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f\",\"sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1\"],\"markers\":\"python_version >= '3.6'\"},\"charset-normalizer\":{\"version\":\"==3.3.2\",\"hashes\":[\"sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027\",\"sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087\",\"sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786\",\"sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8\",\"sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09\",\"sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185\",\"sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574\",\"sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e\",\"sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519\",\"sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898\",\"sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269\",\"sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3\",\"sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f\",\"sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6\",\"sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8\",\"sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a\",\"sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73\",\"sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc\",\"sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714\",\"sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2\",\"sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc\",\"sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce\",\"sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d\",\"sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e\",\"sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6\",\"sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269\",\"sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96\",\"sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d\",\"sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a\",\"sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4\",\"sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77\",\"sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d\",\"sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0\",\"sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed\",\"sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068\",\"sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac\",\"sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25\",\"sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8\",\"sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab\",\"sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26\",\"sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2\",\"sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db\",\"sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f\",\"sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5\",\"sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99\",\"sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c\",\"sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d\",\"sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811\",\"sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa\",\"sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a\",\"sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03\",\"sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b\",\"sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04\",\"sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c\",\"sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001\",\"sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458\",\"sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389\",\"sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99\",\"sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985\",\"sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537\",\"sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238\",\"sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f\",\"sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d\",\"sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796\",\"sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a\",\"sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143\",\"sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8\",\"sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c\",\"sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5\",\"sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5\",\"sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711\",\"sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4\",\"sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6\",\"sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c\",\"sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7\",\"sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4\",\"sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b\",\"sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae\",\"sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12\",\"sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c\",\"sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae\",\"sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8\",\"sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887\",\"sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b\",\"sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4\",\"sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f\",\"sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5\",\"sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33\",\"sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519\",\"sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561\"],\"markers\":\"python_full_version >= '3.7.0'\"},\"click\":{\"version\":\"==8.1.7\",\"hashes\":[\"sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28\",\"sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de\"],\"markers\":\"python_version >= '3.7'\"},\"decorator\":{\"version\":\"==5.1.1\",\"hashes\":[\"sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330\",\"sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186\"],\"markers\":\"python_version >= '3.5'\"},\"dnspython\":{\"version\":\"==2.6.1\",\"hashes\":[\"sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50\",\"sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc\"],\"markers\":\"python_version >= '3.8'\"},\"ecmwf-api-client\":{\"version\":\"==1.6.3\",\"hashes\":[\"sha256:3a00bda34a72e2d5198c97399a4750b42a6633efdb5e1b3a5fd2b2bbaa5db0d6\"]},\"email-validator\":{\"version\":\"==2.1.1\",\"hashes\":[\"sha256:200a70680ba08904be6d1eef729205cc0d687634399a5924d842533efb824b84\",\"sha256:97d882d174e2a65732fb43bfce81a3a834cbc1bde8bf419e30ef5ea976370a05\"],\"markers\":\"python_version >= '3.8'\"},\"eodag\":{\"version\":\"==2.12.1\",\"hashes\":[\"sha256:507a2b3335c6882f90f3b61ab1b71b6c677018520e2c5895b16d43e7130a5916\",\"sha256:ad613763ac8cb1504d0e60b28a5c32d498c1aeb8bf9e4a7403a0e4a2c7bc5f63\"],\"markers\":\"python_version >= '3.6'\",\"index\":\"pypi\"},\"exceptiongroup\":{\"version\":\"==1.2.1\",\"hashes\":[\"sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad\",\"sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16\"],\"markers\":\"python_version < '3.11'\"},\"fastapi\":{\"version\":\"==0.111.0\",\"hashes\":[\"sha256:97ecbf994be0bcbdadedf88c3150252bed7b2087075ac99735403b1b76cc8fc0\",\"sha256:b9db9dd147c91cb8b769f7183535773d8741dd46f9dc6676cd82eab510228cd7\"],\"markers\":\"python_version >= '3.8'\"},\"fastapi-cli\":{\"version\":\"==0.0.3\",\"hashes\":[\"sha256:3b6e4d2c4daee940fb8db59ebbfd60a72c4b962bcf593e263e4cc69da4ea3d7f\",\"sha256:ae233115f729945479044917d949095e829d2d84f56f55ce1ca17627872825a5\"],\"markers\":\"python_version >= '3.8'\"},\"geojson\":{\"version\":\"==3.1.0\",\"hashes\":[\"sha256:58a7fa40727ea058efc28b0e9ff0099eadf6d0965e04690830208d3ef571adac\",\"sha256:68a9771827237adb8c0c71f8527509c8f5bef61733aa434cefc9c9d4f0ebe8f3\"],\"markers\":\"python_version >= '3.7'\"},\"h11\":{\"version\":\"==0.14.0\",\"hashes\":[\"sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d\",\"sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761\"],\"markers\":\"python_version >= '3.7'\"},\"httpcore\":{\"version\":\"==1.0.5\",\"hashes\":[\"sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61\",\"sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5\"],\"markers\":\"python_version >= '3.8'\"},\"httptools\":{\"version\":\"==0.6.1\",\"hashes\":[\"sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563\",\"sha256:0ac5a0ae3d9f4fe004318d64b8a854edd85ab76cffbf7ef5e32920faef62f142\",\"sha256:0cf2372e98406efb42e93bfe10f2948e467edfd792b015f1b4ecd897903d3e8d\",\"sha256:1ed99a373e327f0107cb513b61820102ee4f3675656a37a50083eda05dc9541b\",\"sha256:3c3b214ce057c54675b00108ac42bacf2ab8f85c58e3f324a4e963bbc46424f4\",\"sha256:3e802e0b2378ade99cd666b5bffb8b2a7cc8f3d28988685dc300469ea8dd86cb\",\"sha256:3f30d3ce413088a98b9db71c60a6ada2001a08945cb42dd65a9a9fe228627658\",\"sha256:405784577ba6540fa7d6ff49e37daf104e04f4b4ff2d1ac0469eaa6a20fde084\",\"sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2\",\"sha256:4bd3e488b447046e386a30f07af05f9b38d3d368d1f7b4d8f7e10af85393db97\",\"sha256:4f0f8271c0a4db459f9dc807acd0eadd4839934a4b9b892f6f160e94da309837\",\"sha256:5cceac09f164bcba55c0500a18fe3c47df29b62353198e4f37bbcc5d591172c3\",\"sha256:639dc4f381a870c9ec860ce5c45921db50205a37cc3334e756269736ff0aac58\",\"sha256:678fcbae74477a17d103b7cae78b74800d795d702083867ce160fc202104d0da\",\"sha256:6a4f5ccead6d18ec072ac0b84420e95d27c1cdf5c9f1bc8fbd8daf86bd94f43d\",\"sha256:6f58e335a1402fb5a650e271e8c2d03cfa7cea46ae124649346d17bd30d59c90\",\"sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0\",\"sha256:7a7ea483c1a4485c71cb5f38be9db078f8b0e8b4c4dc0210f531cdd2ddac1ef1\",\"sha256:7d9ceb2c957320def533671fc9c715a80c47025139c8d1f3797477decbc6edd2\",\"sha256:7ebaec1bf683e4bf5e9fbb49b8cc36da482033596a415b3e4ebab5a4c0d7ec5e\",\"sha256:85ed077c995e942b6f1b07583e4eb0a8d324d418954fc6af913d36db7c05a5a0\",\"sha256:8ae5b97f690badd2ca27cbf668494ee1b6d34cf1c464271ef7bfa9ca6b83ffaf\",\"sha256:8b0bb634338334385351a1600a73e558ce619af390c2b38386206ac6a27fecfc\",\"sha256:8e216a038d2d52ea13fdd9b9c9c7459fb80d78302b257828285eca1c773b99b3\",\"sha256:93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503\",\"sha256:95658c342529bba4e1d3d2b1a874db16c7cca435e8827422154c9da76ac4e13a\",\"sha256:95fb92dd3649f9cb139e9c56604cc2d7c7bf0fc2e7c8d7fbd58f96e35eddd2a3\",\"sha256:97662ce7fb196c785344d00d638fc9ad69e18ee4bfb4000b35a52efe5adcc949\",\"sha256:9bb68d3a085c2174c2477eb3ffe84ae9fb4fde8792edb7bcd09a1d8467e30a84\",\"sha256:b512aa728bc02354e5ac086ce76c3ce635b62f5fbc32ab7082b5e582d27867bb\",\"sha256:c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a\",\"sha256:d2f6c3c4cb1948d912538217838f6e9960bc4a521d7f9b323b3da579cd14532f\",\"sha256:dcbab042cc3ef272adc11220517278519adf8f53fd3056d0e68f0a6f891ba94e\",\"sha256:e0b281cf5a125c35f7f6722b65d8542d2e57331be573e9e88bc8b0115c4a7a81\",\"sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185\",\"sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3\"]},\"httpx\":{\"version\":\"==0.27.0\",\"hashes\":[\"sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5\",\"sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5\"],\"markers\":\"python_version >= '3.8'\"},\"idna\":{\"version\":\"==3.7\",\"hashes\":[\"sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc\",\"sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0\"],\"markers\":\"python_version >= '3.5'\"},\"jinja2\":{\"version\":\"==3.1.4\",\"hashes\":[\"sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369\",\"sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d\"],\"markers\":\"python_version >= '3.7'\"},\"jmespath\":{\"version\":\"==1.0.1\",\"hashes\":[\"sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980\",\"sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe\"],\"markers\":\"python_version >= '3.7'\"},\"jsonpath-ng\":{\"version\":\"==1.5.3\",\"hashes\":[\"sha256:292a93569d74029ba75ac2dc3d3630fc0e17b2df26119a165fa1d498ca47bf65\",\"sha256:a273b182a82c1256daab86a313b937059261b5c5f8c4fa3fc38b882b344dd567\",\"sha256:f75b95dbecb8a0f3b86fd2ead21c2b022c3f5770957492b9b6196ecccfeb10aa\"]},\"lxml\":{\"version\":\"==5.2.1\",\"hashes\":[\"sha256:04ab5415bf6c86e0518d57240a96c4d1fcfc3cb370bb2ac2a732b67f579e5a04\",\"sha256:057cdc6b86ab732cf361f8b4d8af87cf195a1f6dc5b0ff3de2dced242c2015e0\",\"sha256:058a1308914f20784c9f4674036527e7c04f7be6fb60f5d61353545aa7fcb739\",\"sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a\",\"sha256:0a15438253b34e6362b2dc41475e7f80de76320f335e70c5528b7148cac253a1\",\"sha256:0c3f67e2aeda739d1cc0b1102c9a9129f7dc83901226cc24dd72ba275ced4218\",\"sha256:0e7259016bc4345a31af861fdce942b77c99049d6c2107ca07dc2bba2435c1d9\",\"sha256:0ed777c1e8c99b63037b91f9d73a6aad20fd035d77ac84afcc205225f8f41188\",\"sha256:0f5d65c39f16717a47c36c756af0fb36144069c4718824b7533f803ecdf91138\",\"sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585\",\"sha256:11a04306fcba10cd9637e669fd73aa274c1c09ca64af79c041aa820ea992b637\",\"sha256:1ae67b4e737cddc96c99461d2f75d218bdf7a0c3d3ad5604d1f5e7464a2f9ffe\",\"sha256:1c5bb205e9212d0ebddf946bc07e73fa245c864a5f90f341d11ce7b0b854475d\",\"sha256:1f7785f4f789fdb522729ae465adcaa099e2a3441519df750ebdccc481d961a1\",\"sha256:200e63525948e325d6a13a76ba2911f927ad399ef64f57898cf7c74e69b71095\",\"sha256:21c2e6b09565ba5b45ae161b438e033a86ad1736b8c838c766146eff8ceffff9\",\"sha256:2213afee476546a7f37c7a9b4ad4d74b1e112a6fafffc9185d6d21f043128c81\",\"sha256:27aa20d45c2e0b8cd05da6d4759649170e8dfc4f4e5ef33a34d06f2d79075d57\",\"sha256:2a66bf12fbd4666dd023b6f51223aed3d9f3b40fef06ce404cb75bafd3d89536\",\"sha256:2c9d147f754b1b0e723e6afb7ba1566ecb162fe4ea657f53d2139bbf894d050a\",\"sha256:2ddfe41ddc81f29a4c44c8ce239eda5ade4e7fc305fb7311759dd6229a080052\",\"sha256:31e9a882013c2f6bd2f2c974241bf4ba68c85eba943648ce88936d23209a2e01\",\"sha256:3249cc2989d9090eeac5467e50e9ec2d40704fea9ab72f36b034ea34ee65ca98\",\"sha256:3545039fa4779be2df51d6395e91a810f57122290864918b172d5dc7ca5bb433\",\"sha256:394ed3924d7a01b5bd9a0d9d946136e1c2f7b3dc337196d99e61740ed4bc6fe1\",\"sha256:3a6b45da02336895da82b9d472cd274b22dc27a5cea1d4b793874eead23dd14f\",\"sha256:3a74c4f27167cb95c1d4af1c0b59e88b7f3e0182138db2501c353555f7ec57f4\",\"sha256:3d0c3dd24bb4605439bf91068598d00c6370684f8de4a67c2992683f6c309d6b\",\"sha256:3dbe858ee582cbb2c6294dc85f55b5f19c918c2597855e950f34b660f1a5ede6\",\"sha256:3dc773b2861b37b41a6136e0b72a1a44689a9c4c101e0cddb6b854016acc0aa8\",\"sha256:3f7765e69bbce0906a7c74d5fe46d2c7a7596147318dbc08e4a2431f3060e306\",\"sha256:417d14450f06d51f363e41cace6488519038f940676ce9664b34ebf5653433a5\",\"sha256:44f6c7caff88d988db017b9b0e4ab04934f11e3e72d478031efc7edcac6c622f\",\"sha256:491755202eb21a5e350dae00c6d9a17247769c64dcf62d8c788b5c135e179dc4\",\"sha256:4951e4f7a5680a2db62f7f4ab2f84617674d36d2d76a729b9a8be4b59b3659be\",\"sha256:52421b41ac99e9d91934e4d0d0fe7da9f02bfa7536bb4431b4c05c906c8c6919\",\"sha256:530e7c04f72002d2f334d5257c8a51bf409db0316feee7c87e4385043be136af\",\"sha256:533658f8fbf056b70e434dff7e7aa611bcacb33e01f75de7f821810e48d1bb66\",\"sha256:5670fb70a828663cc37552a2a85bf2ac38475572b0e9b91283dc09efb52c41d1\",\"sha256:56c22432809085b3f3ae04e6e7bdd36883d7258fcd90e53ba7b2e463efc7a6af\",\"sha256:58278b29cb89f3e43ff3e0c756abbd1518f3ee6adad9e35b51fb101c1c1daaec\",\"sha256:588008b8497667f1ddca7c99f2f85ce8511f8f7871b4a06ceede68ab62dff64b\",\"sha256:59565f10607c244bc4c05c0c5fa0c190c990996e0c719d05deec7030c2aa8289\",\"sha256:59689a75ba8d7ffca577aefd017d08d659d86ad4585ccc73e43edbfc7476781a\",\"sha256:5aea8212fb823e006b995c4dda533edcf98a893d941f173f6c9506126188860d\",\"sha256:5c670c0406bdc845b474b680b9a5456c561c65cf366f8db5a60154088c92d102\",\"sha256:5ca1e8188b26a819387b29c3895c47a5e618708fe6f787f3b1a471de2c4a94d9\",\"sha256:5d077bc40a1fe984e1a9931e801e42959a1e6598edc8a3223b061d30fbd26bbc\",\"sha256:5d5792e9b3fb8d16a19f46aa8208987cfeafe082363ee2745ea8b643d9cc5b45\",\"sha256:5dd1537e7cc06efd81371f5d1a992bd5ab156b2b4f88834ca852de4a8ea523fa\",\"sha256:5ea7b6766ac2dfe4bcac8b8595107665a18ef01f8c8343f00710b85096d1b53a\",\"sha256:622020d4521e22fb371e15f580d153134bfb68d6a429d1342a25f051ec72df1c\",\"sha256:627402ad8dea044dde2eccde4370560a2b750ef894c9578e1d4f8ffd54000461\",\"sha256:644df54d729ef810dcd0f7732e50e5ad1bd0a135278ed8d6bcb06f33b6b6f708\",\"sha256:64641a6068a16201366476731301441ce93457eb8452056f570133a6ceb15fca\",\"sha256:64c2baa7774bc22dd4474248ba16fe1a7f611c13ac6123408694d4cc93d66dbd\",\"sha256:6588c459c5627fefa30139be4d2e28a2c2a1d0d1c265aad2ba1935a7863a4913\",\"sha256:66bc5eb8a323ed9894f8fa0ee6cb3e3fb2403d99aee635078fd19a8bc7a5a5da\",\"sha256:68a2610dbe138fa8c5826b3f6d98a7cfc29707b850ddcc3e21910a6fe51f6ca0\",\"sha256:6935bbf153f9a965f1e07c2649c0849d29832487c52bb4a5c5066031d8b44fd5\",\"sha256:6992030d43b916407c9aa52e9673612ff39a575523c5f4cf72cdef75365709a5\",\"sha256:6a014510830df1475176466b6087fc0c08b47a36714823e58d8b8d7709132a96\",\"sha256:6ab833e4735a7e5533711a6ea2df26459b96f9eec36d23f74cafe03631647c41\",\"sha256:6cc6ee342fb7fa2471bd9b6d6fdfc78925a697bf5c2bcd0a302e98b0d35bfad3\",\"sha256:6cf58416653c5901e12624e4013708b6e11142956e7f35e7a83f1ab02f3fe456\",\"sha256:70a9768e1b9d79edca17890175ba915654ee1725975d69ab64813dd785a2bd5c\",\"sha256:70ac664a48aa64e5e635ae5566f5227f2ab7f66a3990d67566d9907edcbbf867\",\"sha256:71e97313406ccf55d32cc98a533ee05c61e15d11b99215b237346171c179c0b0\",\"sha256:7221d49259aa1e5a8f00d3d28b1e0b76031655ca74bb287123ef56c3db92f213\",\"sha256:74b28c6334cca4dd704e8004cba1955af0b778cf449142e581e404bd211fb619\",\"sha256:764b521b75701f60683500d8621841bec41a65eb739b8466000c6fdbc256c240\",\"sha256:78bfa756eab503673991bdcf464917ef7845a964903d3302c5f68417ecdc948c\",\"sha256:794f04eec78f1d0e35d9e0c36cbbb22e42d370dda1609fb03bcd7aeb458c6377\",\"sha256:79bd05260359170f78b181b59ce871673ed01ba048deef4bf49a36ab3e72e80b\",\"sha256:7a7efd5b6d3e30d81ec68ab8a88252d7c7c6f13aaa875009fe3097eb4e30b84c\",\"sha256:7c17b64b0a6ef4e5affae6a3724010a7a66bda48a62cfe0674dabd46642e8b54\",\"sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b\",\"sha256:853e074d4931dbcba7480d4dcab23d5c56bd9607f92825ab80ee2bd916edea53\",\"sha256:857500f88b17a6479202ff5fe5f580fc3404922cd02ab3716197adf1ef628029\",\"sha256:865bad62df277c04beed9478fe665b9ef63eb28fe026d5dedcb89b537d2e2ea6\",\"sha256:88e22fc0a6684337d25c994381ed8a1580a6f5ebebd5ad41f89f663ff4ec2885\",\"sha256:8b9c07e7a45bb64e21df4b6aa623cb8ba214dfb47d2027d90eac197329bb5e94\",\"sha256:8de8f9d6caa7f25b204fc861718815d41cbcf27ee8f028c89c882a0cf4ae4134\",\"sha256:8e77c69d5892cb5ba71703c4057091e31ccf534bd7f129307a4d084d90d014b8\",\"sha256:9123716666e25b7b71c4e1789ec829ed18663152008b58544d95b008ed9e21e9\",\"sha256:958244ad566c3ffc385f47dddde4145088a0ab893504b54b52c041987a8c1863\",\"sha256:96323338e6c14e958d775700ec8a88346014a85e5de73ac7967db0367582049b\",\"sha256:9676bfc686fa6a3fa10cd4ae6b76cae8be26eb5ec6811d2a325636c460da1806\",\"sha256:9b0ff53900566bc6325ecde9181d89afadc59c5ffa39bddf084aaedfe3b06a11\",\"sha256:9b9ec9c9978b708d488bec36b9e4c94d88fd12ccac3e62134a9d17ddba910ea9\",\"sha256:9c6ad0fbf105f6bcc9300c00010a2ffa44ea6f555df1a2ad95c88f5656104817\",\"sha256:9ca66b8e90daca431b7ca1408cae085d025326570e57749695d6a01454790e95\",\"sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8\",\"sha256:a0af35bd8ebf84888373630f73f24e86bf016642fb8576fba49d3d6b560b7cbc\",\"sha256:a2b44bec7adf3e9305ce6cbfa47a4395667e744097faed97abb4728748ba7d47\",\"sha256:a2dfe7e2473f9b59496247aad6e23b405ddf2e12ef0765677b0081c02d6c2c0b\",\"sha256:a55ee573116ba208932e2d1a037cc4b10d2c1cb264ced2184d00b18ce585b2c0\",\"sha256:a7baf9ffc238e4bf401299f50e971a45bfcc10a785522541a6e3179c83eabf0a\",\"sha256:a8d5c70e04aac1eda5c829a26d1f75c6e5286c74743133d9f742cda8e53b9c2f\",\"sha256:a91481dbcddf1736c98a80b122afa0f7296eeb80b72344d7f45dc9f781551f56\",\"sha256:ab31a88a651039a07a3ae327d68ebdd8bc589b16938c09ef3f32a4b809dc96ef\",\"sha256:abc25c3cab9ec7fcd299b9bcb3b8d4a1231877e425c650fa1c7576c5107ab851\",\"sha256:adfb84ca6b87e06bc6b146dc7da7623395db1e31621c4785ad0658c5028b37d7\",\"sha256:afbbdb120d1e78d2ba8064a68058001b871154cc57787031b645c9142b937a62\",\"sha256:afd5562927cdef7c4f5550374acbc117fd4ecc05b5007bdfa57cc5355864e0a4\",\"sha256:b070bbe8d3f0f6147689bed981d19bbb33070225373338df755a46893528104a\",\"sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c\",\"sha256:b560e3aa4b1d49e0e6c847d72665384db35b2f5d45f8e6a5c0072e0283430533\",\"sha256:b6241d4eee5f89453307c2f2bfa03b50362052ca0af1efecf9fef9a41a22bb4f\",\"sha256:b6787b643356111dfd4032b5bffe26d2f8331556ecb79e15dacb9275da02866e\",\"sha256:bcbf4af004f98793a95355980764b3d80d47117678118a44a80b721c9913436a\",\"sha256:beb72935a941965c52990f3a32d7f07ce869fe21c6af8b34bf6a277b33a345d3\",\"sha256:bf2e2458345d9bffb0d9ec16557d8858c9c88d2d11fed53998512504cd9df49b\",\"sha256:c2d35a1d047efd68027817b32ab1586c1169e60ca02c65d428ae815b593e65d4\",\"sha256:c38d7b9a690b090de999835f0443d8aa93ce5f2064035dfc48f27f02b4afc3d0\",\"sha256:c6f2c8372b98208ce609c9e1d707f6918cc118fea4e2c754c9f0812c04ca116d\",\"sha256:c817d420c60a5183953c783b0547d9eb43b7b344a2c46f69513d5952a78cddf3\",\"sha256:c8ba129e6d3b0136a0f50345b2cb3db53f6bda5dd8c7f5d83fbccba97fb5dcb5\",\"sha256:c94e75445b00319c1fad60f3c98b09cd63fe1134a8a953dcd48989ef42318534\",\"sha256:cc4691d60512798304acb9207987e7b2b7c44627ea88b9d77489bbe3e6cc3bd4\",\"sha256:cc518cea79fd1e2f6c90baafa28906d4309d24f3a63e801d855e7424c5b34144\",\"sha256:cd53553ddad4a9c2f1f022756ae64abe16da1feb497edf4d9f87f99ec7cf86bd\",\"sha256:cf22b41fdae514ee2f1691b6c3cdeae666d8b7fa9434de445f12bbeee0cf48dd\",\"sha256:d38c8f50ecf57f0463399569aa388b232cf1a2ffb8f0a9a5412d0db57e054860\",\"sha256:d3be9b2076112e51b323bdf6d5a7f8a798de55fb8d95fcb64bd179460cdc0704\",\"sha256:d4f2cc7060dc3646632d7f15fe68e2fa98f58e35dd5666cd525f3b35d3fed7f8\",\"sha256:d7520db34088c96cc0e0a3ad51a4fd5b401f279ee112aa2b7f8f976d8582606d\",\"sha256:d793bebb202a6000390a5390078e945bbb49855c29c7e4d56a85901326c3b5d9\",\"sha256:da052e7962ea2d5e5ef5bc0355d55007407087392cf465b7ad84ce5f3e25fe0f\",\"sha256:dae0ed02f6b075426accbf6b2863c3d0a7eacc1b41fb40f2251d931e50188dad\",\"sha256:ddc678fb4c7e30cf830a2b5a8d869538bc55b28d6c68544d09c7d0d8f17694dc\",\"sha256:df2e6f546c4df14bc81f9498bbc007fbb87669f1bb707c6138878c46b06f6510\",\"sha256:e02c5175f63effbd7c5e590399c118d5db6183bbfe8e0d118bdb5c2d1b48d937\",\"sha256:e196a4ff48310ba62e53a8e0f97ca2bca83cdd2fe2934d8b5cb0df0a841b193a\",\"sha256:e233db59c8f76630c512ab4a4daf5a5986da5c3d5b44b8e9fc742f2a24dbd460\",\"sha256:e32be23d538753a8adb6c85bd539f5fd3b15cb987404327c569dfc5fd8366e85\",\"sha256:e3d30321949861404323c50aebeb1943461a67cd51d4200ab02babc58bd06a86\",\"sha256:e89580a581bf478d8dcb97d9cd011d567768e8bc4095f8557b21c4d4c5fea7d0\",\"sha256:e998e304036198b4f6914e6a1e2b6f925208a20e2042563d9734881150c6c246\",\"sha256:ec42088248c596dbd61d4ae8a5b004f97a4d91a9fd286f632e42e60b706718d7\",\"sha256:efa7b51824aa0ee957ccd5a741c73e6851de55f40d807f08069eb4c5a26b2baa\",\"sha256:f0a1bc63a465b6d72569a9bba9f2ef0334c4e03958e043da1920299100bc7c08\",\"sha256:f18a5a84e16886898e51ab4b1d43acb3083c39b14c8caeb3589aabff0ee0b270\",\"sha256:f2a9efc53d5b714b8df2b4b3e992accf8ce5bbdfe544d74d5c6766c9e1146a3a\",\"sha256:f3bbbc998d42f8e561f347e798b85513ba4da324c2b3f9b7969e9c45b10f6169\",\"sha256:f42038016852ae51b4088b2862126535cc4fc85802bfe30dea3500fdfaf1864e\",\"sha256:f443cdef978430887ed55112b491f670bba6462cea7a7742ff8f14b7abb98d75\",\"sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd\",\"sha256:f8aca2e3a72f37bfc7b14ba96d4056244001ddcc18382bd0daa087fd2e68a354\",\"sha256:f9737bf36262046213a28e789cc82d82c6ef19c85a0cf05e75c670a33342ac2c\",\"sha256:fd6037392f2d57793ab98d9e26798f44b8b4da2f2464388588f48ac52c489ea1\",\"sha256:feaa45c0eae424d3e90d78823f3828e7dc42a42f21ed420db98da2c4ecf0a2cb\",\"sha256:ff097ae562e637409b429a7ac958a20aab237a0378c42dabaa1e3abf2f896e5f\",\"sha256:ff46d772d5f6f73564979cd77a4fffe55c916a05f3cb70e7c9c0590059fb29ef\"],\"markers\":\"python_version >= '3.6'\"},\"markdown-it-py\":{\"version\":\"==3.0.0\",\"hashes\":[\"sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1\",\"sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb\"],\"markers\":\"python_version >= '3.8'\"},\"markupsafe\":{\"version\":\"==2.1.5\",\"hashes\":[\"sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf\",\"sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff\",\"sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f\",\"sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3\",\"sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532\",\"sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f\",\"sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617\",\"sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df\",\"sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4\",\"sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906\",\"sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f\",\"sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4\",\"sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8\",\"sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371\",\"sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2\",\"sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465\",\"sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52\",\"sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6\",\"sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169\",\"sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad\",\"sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2\",\"sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0\",\"sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029\",\"sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f\",\"sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a\",\"sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced\",\"sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5\",\"sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c\",\"sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf\",\"sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9\",\"sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb\",\"sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad\",\"sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3\",\"sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1\",\"sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46\",\"sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc\",\"sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a\",\"sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee\",\"sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900\",\"sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5\",\"sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea\",\"sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f\",\"sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5\",\"sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e\",\"sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a\",\"sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f\",\"sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50\",\"sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a\",\"sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b\",\"sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4\",\"sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff\",\"sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2\",\"sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46\",\"sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b\",\"sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf\",\"sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5\",\"sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5\",\"sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab\",\"sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd\",\"sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68\"],\"markers\":\"python_version >= '3.7'\"},\"mdurl\":{\"version\":\"==0.1.2\",\"hashes\":[\"sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8\",\"sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba\"],\"markers\":\"python_version >= '3.7'\"},\"multiurl\":{\"version\":\"==0.3.1\",\"hashes\":[\"sha256:c7001437b59d56d4c310d725c3dcfff98c97c4b652893d88989853827465d442\"]},\"numpy\":{\"version\":\"==1.26.4\",\"hashes\":[\"sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b\",\"sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818\",\"sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20\",\"sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0\",\"sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010\",\"sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a\",\"sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea\",\"sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c\",\"sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71\",\"sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110\",\"sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be\",\"sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a\",\"sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a\",\"sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5\",\"sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed\",\"sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd\",\"sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c\",\"sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e\",\"sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0\",\"sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c\",\"sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a\",\"sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b\",\"sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0\",\"sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6\",\"sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2\",\"sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a\",\"sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30\",\"sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218\",\"sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5\",\"sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07\",\"sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2\",\"sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4\",\"sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764\",\"sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef\",\"sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3\",\"sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f\"],\"markers\":\"python_version >= '3.9'\"},\"orjson\":{\"version\":\"==3.10.3\",\"hashes\":[\"sha256:0943a96b3fa09bee1afdfccc2cb236c9c64715afa375b2af296c73d91c23eab2\",\"sha256:0a62f9968bab8a676a164263e485f30a0b748255ee2f4ae49a0224be95f4532b\",\"sha256:16bda83b5c61586f6f788333d3cf3ed19015e3b9019188c56983b5a299210eb5\",\"sha256:1770e2a0eae728b050705206d84eda8b074b65ee835e7f85c919f5705b006c9b\",\"sha256:17e0713fc159abc261eea0f4feda611d32eabc35708b74bef6ad44f6c78d5ea0\",\"sha256:18566beb5acd76f3769c1d1a7ec06cdb81edc4d55d2765fb677e3eaa10fa99e0\",\"sha256:1952c03439e4dce23482ac846e7961f9d4ec62086eb98ae76d97bd41d72644d7\",\"sha256:1bd2218d5a3aa43060efe649ec564ebedec8ce6ae0a43654b81376216d5ebd42\",\"sha256:1c23dfa91481de880890d17aa7b91d586a4746a4c2aa9a145bebdbaf233768d5\",\"sha256:252124b198662eee80428f1af8c63f7ff077c88723fe206a25df8dc57a57b1fa\",\"sha256:2b166507acae7ba2f7c315dcf185a9111ad5e992ac81f2d507aac39193c2c818\",\"sha256:2e5e176c994ce4bd434d7aafb9ecc893c15f347d3d2bbd8e7ce0b63071c52e25\",\"sha256:3582b34b70543a1ed6944aca75e219e1192661a63da4d039d088a09c67543b08\",\"sha256:382e52aa4270a037d41f325e7d1dfa395b7de0c367800b6f337d8157367bf3a7\",\"sha256:416b195f78ae461601893f482287cee1e3059ec49b4f99479aedf22a20b1098b\",\"sha256:4ad1f26bea425041e0a1adad34630c4825a9e3adec49079b1fb6ac8d36f8b754\",\"sha256:4c895383b1ec42b017dd2c75ae8a5b862fc489006afde06f14afbdd0309b2af0\",\"sha256:5102f50c5fc46d94f2033fe00d392588564378260d64377aec702f21a7a22912\",\"sha256:520de5e2ef0b4ae546bea25129d6c7c74edb43fc6cf5213f511a927f2b28148b\",\"sha256:544a12eee96e3ab828dbfcb4d5a0023aa971b27143a1d35dc214c176fdfb29b3\",\"sha256:73100d9abbbe730331f2242c1fc0bcb46a3ea3b4ae3348847e5a141265479700\",\"sha256:831c6ef73f9aa53c5f40ae8f949ff7681b38eaddb6904aab89dca4d85099cb78\",\"sha256:8bc7a4df90da5d535e18157220d7915780d07198b54f4de0110eca6b6c11e290\",\"sha256:8d0b84403d287d4bfa9bf7d1dc298d5c1c5d9f444f3737929a66f2fe4fb8f134\",\"sha256:8d40c7f7938c9c2b934b297412c067936d0b54e4b8ab916fd1a9eb8f54c02294\",\"sha256:9059d15c30e675a58fdcd6f95465c1522b8426e092de9fff20edebfdc15e1cb0\",\"sha256:93433b3c1f852660eb5abdc1f4dd0ced2be031ba30900433223b28ee0140cde5\",\"sha256:978be58a68ade24f1af7758626806e13cff7748a677faf95fbb298359aa1e20d\",\"sha256:99b880d7e34542db89f48d14ddecbd26f06838b12427d5a25d71baceb5ba119d\",\"sha256:9a7bc9e8bc11bac40f905640acd41cbeaa87209e7e1f57ade386da658092dc16\",\"sha256:9e253498bee561fe85d6325ba55ff2ff08fb5e7184cd6a4d7754133bd19c9195\",\"sha256:9f3e87733823089a338ef9bbf363ef4de45e5c599a9bf50a7a9b82e86d0228da\",\"sha256:9fb6c3f9f5490a3eb4ddd46fc1b6eadb0d6fc16fb3f07320149c3286a1409dd8\",\"sha256:a39aa73e53bec8d410875683bfa3a8edf61e5a1c7bb4014f65f81d36467ea098\",\"sha256:b69a58a37dab856491bf2d3bbf259775fdce262b727f96aafbda359cb1d114d8\",\"sha256:b8d4d1a6868cde356f1402c8faeb50d62cee765a1f7ffcfd6de732ab0581e063\",\"sha256:ba7f67aa7f983c4345eeda16054a4677289011a478ca947cd69c0a86ea45e534\",\"sha256:be2719e5041e9fb76c8c2c06b9600fe8e8584e6980061ff88dcbc2691a16d20d\",\"sha256:be2aab54313752c04f2cbaab4515291ef5af8c2256ce22abc007f89f42f49109\",\"sha256:c0403ed9c706dcd2809f1600ed18f4aae50be263bd7112e54b50e2c2bc3ebd6d\",\"sha256:c8334c0d87103bb9fbbe59b78129f1f40d1d1e8355bbed2ca71853af15fa4ed3\",\"sha256:cb0175a5798bdc878956099f5c54b9837cb62cfbf5d0b86ba6d77e43861bcec2\",\"sha256:ccaa0a401fc02e8828a5bedfd80f8cd389d24f65e5ca3954d72c6582495b4bcf\",\"sha256:cf20465e74c6e17a104ecf01bf8cd3b7b252565b4ccee4548f18b012ff2f8069\",\"sha256:d4a654ec1de8fdaae1d80d55cee65893cb06494e124681ab335218be6a0691e7\",\"sha256:e852baafceff8da3c9defae29414cc8513a1586ad93e45f27b89a639c68e8176\"],\"markers\":\"python_version >= '3.8'\"},\"owslib\":{\"version\":\"==0.30.0\",\"hashes\":[\"sha256:88277cf674ded604596af5c04eb2a17c6846dfe8bcfb7a5dc9ab50b3ef5f1385\",\"sha256:f17413cc75836c0303cd1d4fd9bb0f21915a8b492dacc64ef5f4021b28e82d4c\"],\"markers\":\"python_version >= '3.6'\"},\"ply\":{\"version\":\"==3.11\",\"hashes\":[\"sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3\",\"sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce\"]},\"pycryptodome\":{\"version\":\"==3.20.0\",\"hashes\":[\"sha256:06d6de87c19f967f03b4cf9b34e538ef46e99a337e9a61a77dbe44b2cbcf0690\",\"sha256:09609209ed7de61c2b560cc5c8c4fbf892f8b15b1faf7e4cbffac97db1fffda7\",\"sha256:210ba1b647837bfc42dd5a813cdecb5b86193ae11a3f5d972b9a0ae2c7e9e4b4\",\"sha256:2a1250b7ea809f752b68e3e6f3fd946b5939a52eaeea18c73bdab53e9ba3c2dd\",\"sha256:2ab6ab0cb755154ad14e507d1df72de9897e99fd2d4922851a276ccc14f4f1a5\",\"sha256:3427d9e5310af6680678f4cce149f54e0bb4af60101c7f2c16fdf878b39ccccc\",\"sha256:3cd3ef3aee1079ae44afaeee13393cf68b1058f70576b11439483e34f93cf818\",\"sha256:405002eafad114a2f9a930f5db65feef7b53c4784495dd8758069b89baf68eab\",\"sha256:417a276aaa9cb3be91f9014e9d18d10e840a7a9b9a9be64a42f553c5b50b4d1d\",\"sha256:4401564ebf37dfde45d096974c7a159b52eeabd9969135f0426907db367a652a\",\"sha256:49a4c4dc60b78ec41d2afa392491d788c2e06edf48580fbfb0dd0f828af49d25\",\"sha256:5601c934c498cd267640b57569e73793cb9a83506f7c73a8ec57a516f5b0b091\",\"sha256:6e0e4a987d38cfc2e71b4a1b591bae4891eeabe5fa0f56154f576e26287bfdea\",\"sha256:76658f0d942051d12a9bd08ca1b6b34fd762a8ee4240984f7c06ddfb55eaf15a\",\"sha256:76cb39afede7055127e35a444c1c041d2e8d2f1f9c121ecef573757ba4cd2c3c\",\"sha256:8d6b98d0d83d21fb757a182d52940d028564efe8147baa9ce0f38d057104ae72\",\"sha256:9b3ae153c89a480a0ec402e23db8d8d84a3833b65fa4b15b81b83be9d637aab9\",\"sha256:a60fedd2b37b4cb11ccb5d0399efe26db9e0dd149016c1cc6c8161974ceac2d6\",\"sha256:ac1c7c0624a862f2e53438a15c9259d1655325fc2ec4392e66dc46cdae24d044\",\"sha256:acae12b9ede49f38eb0ef76fdec2df2e94aad85ae46ec85be3648a57f0a7db04\",\"sha256:acc2614e2e5346a4a4eab6e199203034924313626f9620b7b4b38e9ad74b7e0c\",\"sha256:acf6e43fa75aca2d33e93409f2dafe386fe051818ee79ee8a3e21de9caa2ac9e\",\"sha256:baee115a9ba6c5d2709a1e88ffe62b73ecc044852a925dcb67713a288c4ec70f\",\"sha256:c18b381553638414b38705f07d1ef0a7cf301bc78a5f9bc17a957eb19446834b\",\"sha256:d29daa681517f4bc318cd8a23af87e1f2a7bad2fe361e8aa29c77d652a065de4\",\"sha256:d5954acfe9e00bc83ed9f5cb082ed22c592fbbef86dc48b907238be64ead5c33\",\"sha256:ec0bb1188c1d13426039af8ffcb4dbe3aad1d7680c35a62d8eaf2a529b5d3d4f\",\"sha256:ec1f93feb3bb93380ab0ebf8b859e8e5678c0f010d2d78367cf6bc30bfeb148e\",\"sha256:f0e6d631bae3f231d3634f91ae4da7a960f7ff87f2865b2d2b831af1dfb04e9a\",\"sha256:f35d6cee81fa145333137009d9c8ba90951d7d77b67c79cbe5f03c7eb74d8fe2\",\"sha256:f47888542a0633baff535a04726948e876bf1ed880fddb7c10a736fa99146ab3\",\"sha256:fb3b87461fa35afa19c971b0a2b7456a7b1db7b4eba9a8424666104925b78128\"],\"markers\":\"python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'\"},\"pydantic\":{\"version\":\"==2.7.1\",\"hashes\":[\"sha256:e029badca45266732a9a79898a15ae2e8b14840b1eabbb25844be28f0b33f3d5\",\"sha256:e9dbb5eada8abe4d9ae5f46b9939aead650cd2b68f249bb3a8139dbe125803cc\"],\"markers\":\"python_version >= '3.8'\"},\"pydantic-core\":{\"version\":\"==2.18.2\",\"hashes\":[\"sha256:0098300eebb1c837271d3d1a2cd2911e7c11b396eac9661655ee524a7f10587b\",\"sha256:042473b6280246b1dbf530559246f6842b56119c2926d1e52b631bdc46075f2a\",\"sha256:05b7133a6e6aeb8df37d6f413f7705a37ab4031597f64ab56384c94d98fa0e90\",\"sha256:0680b1f1f11fda801397de52c36ce38ef1c1dc841a0927a94f226dea29c3ae3d\",\"sha256:0d69b4c2f6bb3e130dba60d34c0845ba31b69babdd3f78f7c0c8fae5021a253e\",\"sha256:1404c69d6a676245199767ba4f633cce5f4ad4181f9d0ccb0577e1f66cf4c46d\",\"sha256:182245ff6b0039e82b6bb585ed55a64d7c81c560715d1bad0cbad6dfa07b4027\",\"sha256:1a388a77e629b9ec814c1b1e6b3b595fe521d2cdc625fcca26fbc2d44c816804\",\"sha256:1d90c3265ae107f91a4f279f4d6f6f1d4907ac76c6868b27dc7fb33688cfb347\",\"sha256:20aca1e2298c56ececfd8ed159ae4dde2df0781988c97ef77d5c16ff4bd5b400\",\"sha256:219da3f096d50a157f33645a1cf31c0ad1fe829a92181dd1311022f986e5fbe3\",\"sha256:22057013c8c1e272eb8d0eebc796701167d8377441ec894a8fed1af64a0bf399\",\"sha256:223ee893d77a310a0391dca6df00f70bbc2f36a71a895cecd9a0e762dc37b349\",\"sha256:224c421235f6102e8737032483f43c1a8cfb1d2f45740c44166219599358c2cd\",\"sha256:2334ce8c673ee93a1d6a65bd90327588387ba073c17e61bf19b4fd97d688d63c\",\"sha256:269322dcc3d8bdb69f054681edff86276b2ff972447863cf34c8b860f5188e2e\",\"sha256:2728b01246a3bba6de144f9e3115b532ee44bd6cf39795194fb75491824a1413\",\"sha256:2b8ed04b3582771764538f7ee7001b02e1170223cf9b75dff0bc698fadb00cf3\",\"sha256:2e29d20810dfc3043ee13ac7d9e25105799817683348823f305ab3f349b9386e\",\"sha256:36789b70d613fbac0a25bb07ab3d9dba4d2e38af609c020cf4d888d165ee0bf3\",\"sha256:390193c770399861d8df9670fb0d1874f330c79caaca4642332df7c682bf6b91\",\"sha256:3a6515ebc6e69d85502b4951d89131ca4e036078ea35533bb76327f8424531ce\",\"sha256:3f9a801e7c8f1ef8718da265bba008fa121243dfe37c1cea17840b0944dfd72c\",\"sha256:43f0f463cf89ace478de71a318b1b4f05ebc456a9b9300d027b4b57c1a2064fb\",\"sha256:4456f2dca97c425231d7315737d45239b2b51a50dc2b6f0c2bb181fce6207664\",\"sha256:470b94480bb5ee929f5acba6995251ada5e059a5ef3e0dfc63cca287283ebfa6\",\"sha256:4774f3184d2ef3e14e8693194f661dea5a4d6ca4e3dc8e39786d33a94865cefd\",\"sha256:4b4356d3538c3649337df4074e81b85f0616b79731fe22dd11b99499b2ebbdf3\",\"sha256:553ef617b6836fc7e4df130bb851e32fe357ce36336d897fd6646d6058d980af\",\"sha256:6132dd3bd52838acddca05a72aafb6eab6536aa145e923bb50f45e78b7251043\",\"sha256:6a46e22a707e7ad4484ac9ee9f290f9d501df45954184e23fc29408dfad61350\",\"sha256:6e5c584d357c4e2baf0ff7baf44f4994be121e16a2c88918a5817331fc7599d7\",\"sha256:75250dbc5290e3f1a0f4618db35e51a165186f9034eff158f3d490b3fed9f8a0\",\"sha256:75f7e9488238e920ab6204399ded280dc4c307d034f3924cd7f90a38b1829563\",\"sha256:78363590ef93d5d226ba21a90a03ea89a20738ee5b7da83d771d283fd8a56761\",\"sha256:7ca4ae5a27ad7a4ee5170aebce1574b375de390bc01284f87b18d43a3984df72\",\"sha256:800d60565aec896f25bc3cfa56d2277d52d5182af08162f7954f938c06dc4ee3\",\"sha256:82d5d4d78e4448683cb467897fe24e2b74bb7b973a541ea1dcfec1d3cbce39fb\",\"sha256:852e966fbd035a6468fc0a3496589b45e2208ec7ca95c26470a54daed82a0788\",\"sha256:868649da93e5a3d5eacc2b5b3b9235c98ccdbfd443832f31e075f54419e1b96b\",\"sha256:886eec03591b7cf058467a70a87733b35f44707bd86cf64a615584fd72488b7c\",\"sha256:8b172601454f2d7701121bbec3425dd71efcb787a027edf49724c9cefc14c038\",\"sha256:95b9d5e72481d3780ba3442eac863eae92ae43a5f3adb5b4d0a1de89d42bb250\",\"sha256:98758d627ff397e752bc339272c14c98199c613f922d4a384ddc07526c86a2ec\",\"sha256:997abc4df705d1295a42f95b4eec4950a37ad8ae46d913caeee117b6b198811c\",\"sha256:9b5155ff768083cb1d62f3e143b49a8a3432e6789a3abee8acd005c3c7af1c74\",\"sha256:9e08e867b306f525802df7cd16c44ff5ebbe747ff0ca6cf3fde7f36c05a59a81\",\"sha256:9fdad8e35f278b2c3eb77cbdc5c0a49dada440657bf738d6905ce106dc1de439\",\"sha256:a1874c6dd4113308bd0eb568418e6114b252afe44319ead2b4081e9b9521fe75\",\"sha256:a8309f67285bdfe65c372ea3722b7a5642680f3dba538566340a9d36e920b5f0\",\"sha256:ae0a8a797a5e56c053610fa7be147993fe50960fa43609ff2a9552b0e07013e8\",\"sha256:b14d82cdb934e99dda6d9d60dc84a24379820176cc4a0d123f88df319ae9c150\",\"sha256:b1bd7e47b1558ea872bd16c8502c414f9e90dcf12f1395129d7bb42a09a95438\",\"sha256:b3ef08e20ec49e02d5c6717a91bb5af9b20f1805583cb0adfe9ba2c6b505b5ae\",\"sha256:b89ed9eb7d616ef5714e5590e6cf7f23b02d0d539767d33561e3675d6f9e3857\",\"sha256:c4fcf5cd9c4b655ad666ca332b9a081112cd7a58a8b5a6ca7a3104bc950f2038\",\"sha256:c6fdc8627910eed0c01aed6a390a252fe3ea6d472ee70fdde56273f198938374\",\"sha256:c9bd70772c720142be1020eac55f8143a34ec9f82d75a8e7a07852023e46617f\",\"sha256:ca7b0c1f1c983e064caa85f3792dd2fe3526b3505378874afa84baf662e12241\",\"sha256:cbca948f2d14b09d20268cda7b0367723d79063f26c4ffc523af9042cad95592\",\"sha256:cc1cfd88a64e012b74e94cd00bbe0f9c6df57049c97f02bb07d39e9c852e19a4\",\"sha256:ccdd111c03bfd3666bd2472b674c6899550e09e9f298954cfc896ab92b5b0e6d\",\"sha256:cfeecd1ac6cc1fb2692c3d5110781c965aabd4ec5d32799773ca7b1456ac636b\",\"sha256:d4d938ec0adf5167cb335acb25a4ee69a8107e4984f8fbd2e897021d9e4ca21b\",\"sha256:d7d904828195733c183d20a54230c0df0eb46ec746ea1a666730787353e87182\",\"sha256:d91cb5ea8b11607cc757675051f61b3d93f15eca3cefb3e6c704a5d6e8440f4e\",\"sha256:d9319e499827271b09b4e411905b24a426b8fb69464dfa1696258f53a3334641\",\"sha256:e0e8b1be28239fc64a88a8189d1df7fad8be8c1ae47fcc33e43d4be15f99cc70\",\"sha256:e18609ceaa6eed63753037fc06ebb16041d17d28199ae5aba0052c51449650a9\",\"sha256:e1b395e58b10b73b07b7cf740d728dd4ff9365ac46c18751bf8b3d8cca8f625a\",\"sha256:e23ec367a948b6d812301afc1b13f8094ab7b2c280af66ef450efc357d2ae543\",\"sha256:e25add29b8f3b233ae90ccef2d902d0ae0432eb0d45370fe315d1a5cf231004b\",\"sha256:e6dac87ddb34aaec85f873d737e9d06a3555a1cc1a8e0c44b7f8d5daeb89d86f\",\"sha256:ef26c9e94a8c04a1b2924149a9cb081836913818e55681722d7f29af88fe7b38\",\"sha256:eff2de745698eb46eeb51193a9f41d67d834d50e424aef27df2fcdee1b153845\",\"sha256:f0a21cbaa69900cbe1a2e7cad2aa74ac3cf21b10c3efb0fa0b80305274c0e8a2\",\"sha256:f459a5ce8434614dfd39bbebf1041952ae01da6bed9855008cb33b875cb024c0\",\"sha256:f93a8a2e3938ff656a7c1bc57193b1319960ac015b6e87d76c76bf14fe0244b4\",\"sha256:fb2bd7be70c0fe4dfd32c951bc813d9fe6ebcbfdd15a07527796c8204bd36242\"],\"markers\":\"python_version >= '3.8'\"},\"pygments\":{\"version\":\"==2.18.0\",\"hashes\":[\"sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199\",\"sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a\"],\"markers\":\"python_version >= '3.8'\"},\"pyproj\":{\"version\":\"==3.6.1\",\"hashes\":[\"sha256:18faa54a3ca475bfe6255156f2f2874e9a1c8917b0004eee9f664b86ccc513d3\",\"sha256:1e9fbaf920f0f9b4ee62aab832be3ae3968f33f24e2e3f7fbb8c6728ef1d9746\",\"sha256:2d6ff73cc6dbbce3766b6c0bce70ce070193105d8de17aa2470009463682a8eb\",\"sha256:36b64c2cb6ea1cc091f329c5bd34f9c01bb5da8c8e4492c709bda6a09f96808f\",\"sha256:38a3361941eb72b82bd9a18f60c78b0df8408416f9340521df442cebfc4306e2\",\"sha256:447db19c7efad70ff161e5e46a54ab9cc2399acebb656b6ccf63e4bc4a04b97a\",\"sha256:44aa7c704c2b7d8fb3d483bbf75af6cb2350d30a63b144279a09b75fead501bf\",\"sha256:4ba1f9b03d04d8cab24d6375609070580a26ce76eaed54631f03bab00a9c737b\",\"sha256:4bc0472302919e59114aa140fd7213c2370d848a7249d09704f10f5b062031fe\",\"sha256:50100b2726a3ca946906cbaa789dd0749f213abf0cbb877e6de72ca7aa50e1ae\",\"sha256:5279586013b8d6582e22b6f9e30c49796966770389a9d5b85e25a4223286cd3f\",\"sha256:6420ea8e7d2a88cb148b124429fba8cd2e0fae700a2d96eab7083c0928a85110\",\"sha256:65ad699e0c830e2b8565afe42bd58cc972b47d829b2e0e48ad9638386d994915\",\"sha256:6d227a865356f225591b6732430b1d1781e946893789a609bb34f59d09b8b0f8\",\"sha256:7a27151ddad8e1439ba70c9b4b2b617b290c39395fa9ddb7411ebb0eb86d6fb0\",\"sha256:80fafd1f3eb421694857f254a9bdbacd1eb22fc6c24ca74b136679f376f97d35\",\"sha256:83039e5ae04e5afc974f7d25ee0870a80a6bd6b7957c3aca5613ccbe0d3e72bf\",\"sha256:8b8acc31fb8702c54625f4d5a2a6543557bec3c28a0ef638778b7ab1d1772132\",\"sha256:9274880263256f6292ff644ca92c46d96aa7e57a75c6df3f11d636ce845a1877\",\"sha256:ab7aa4d9ff3c3acf60d4b285ccec134167a948df02347585fdd934ebad8811b4\",\"sha256:c41e80ddee130450dcb8829af7118f1ab69eaf8169c4bf0ee8d52b72f098dc2f\",\"sha256:db3aedd458e7f7f21d8176f0a1d924f1ae06d725228302b872885a1c34f3119e\",\"sha256:e7e13c40183884ec7f94eb8e0f622f08f1d5716150b8d7a134de48c6110fee85\",\"sha256:ebfbdbd0936e178091309f6cd4fcb4decd9eab12aa513cdd9add89efa3ec2882\",\"sha256:fd43bd9a9b9239805f406fd82ba6b106bf4838d9ef37c167d3ed70383943ade1\",\"sha256:fd93c1a0c6c4aedc77c0fe275a9f2aba4d59b8acf88cebfc19fe3c430cfabf4f\",\"sha256:fffb059ba3bced6f6725961ba758649261d85ed6ce670d3e3b0a26e81cf1aa8d\"],\"markers\":\"python_version >= '3.9'\"},\"pyshp\":{\"version\":\"==2.3.1\",\"hashes\":[\"sha256:4caec82fd8dd096feba8217858068bacb2a3b5950f43c048c6dc32a3489d5af1\",\"sha256:67024c0ccdc352ba5db777c4e968483782dfa78f8e200672a90d2d30fd8b7b49\"],\"markers\":\"python_version >= '2.7'\"},\"pystac\":{\"version\":\"==1.10.1\",\"hashes\":[\"sha256:4617fe5315a79785f79b616b8ac248ba3d4d561457c8300b34573309715808cd\",\"sha256:a7c31b3dacc44dfc955d9da8c7351c7b5b99100254b36301a1e312709b51bf2f\"],\"markers\":\"python_version >= '3.9'\"},\"python-dateutil\":{\"version\":\"==2.9.0.post0\",\"hashes\":[\"sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3\",\"sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427\"],\"markers\":\"python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'\"},\"python-dotenv\":{\"version\":\"==1.0.1\",\"hashes\":[\"sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca\",\"sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a\"]},\"python-multipart\":{\"version\":\"==0.0.9\",\"hashes\":[\"sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026\",\"sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215\"],\"markers\":\"python_version >= '3.8'\"},\"pytz\":{\"version\":\"==2024.1\",\"hashes\":[\"sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812\",\"sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319\"]},\"pyyaml\":{\"version\":\"==6.0.1\",\"hashes\":[\"sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5\",\"sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc\",\"sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df\",\"sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741\",\"sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206\",\"sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27\",\"sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595\",\"sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62\",\"sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98\",\"sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696\",\"sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290\",\"sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9\",\"sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d\",\"sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6\",\"sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867\",\"sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47\",\"sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486\",\"sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6\",\"sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3\",\"sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007\",\"sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938\",\"sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0\",\"sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c\",\"sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735\",\"sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d\",\"sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28\",\"sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4\",\"sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba\",\"sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8\",\"sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef\",\"sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5\",\"sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd\",\"sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3\",\"sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0\",\"sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515\",\"sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c\",\"sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c\",\"sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924\",\"sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34\",\"sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43\",\"sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859\",\"sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673\",\"sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54\",\"sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a\",\"sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b\",\"sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab\",\"sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa\",\"sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c\",\"sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585\",\"sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d\",\"sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f\"],\"markers\":\"python_version >= '3.6'\"},\"requests\":{\"version\":\"==2.31.0\",\"hashes\":[\"sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f\",\"sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1\"],\"markers\":\"python_version >= '3.7'\"},\"requests-ftp\":{\"version\":\"==0.3.1\",\"hashes\":[\"sha256:7504ceb5cba8a5c0135ed738596820a78c5f2be92d79b29f96ba99b183d8057a\"]},\"requests-futures\":{\"version\":\"==1.0.1\",\"hashes\":[\"sha256:4a2f5472e9911a79532137d156aa937cd9cd90fec55677f71b2976d1f7a66d38\",\"sha256:f55a4ef80070e2858e7d1e73123d2bfaeaf25b93fd34384d8ddf148e2b676373\"]},\"rich\":{\"version\":\"==13.7.1\",\"hashes\":[\"sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222\",\"sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432\"],\"markers\":\"python_full_version >= '3.7.0'\"},\"s3transfer\":{\"version\":\"==0.10.1\",\"hashes\":[\"sha256:5683916b4c724f799e600f41dd9e10a9ff19871bf87623cc8f491cb4f5fa0a19\",\"sha256:ceb252b11bcf87080fb7850a224fb6e05c8a776bab8f2b64b7f25b969464839d\"],\"markers\":\"python_version >= '3.8'\"},\"setuptools\":{\"version\":\"==69.5.1\",\"hashes\":[\"sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987\",\"sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32\"],\"markers\":\"python_version >= '3.8'\"},\"shapely\":{\"version\":\"==2.0.4\",\"hashes\":[\"sha256:011b77153906030b795791f2fdfa2d68f1a8d7e40bce78b029782ade3afe4f2f\",\"sha256:03152442d311a5e85ac73b39680dd64a9892fa42bb08fd83b3bab4fe6999bfa0\",\"sha256:05ffd6491e9e8958b742b0e2e7c346635033d0a5f1a0ea083547fcc854e5d5cf\",\"sha256:0776c92d584f72f1e584d2e43cfc5542c2f3dd19d53f70df0900fda643f4bae6\",\"sha256:263bcf0c24d7a57c80991e64ab57cba7a3906e31d2e21b455f493d4aab534aaa\",\"sha256:2fbdc1140a7d08faa748256438291394967aa54b40009f54e8d9825e75ef6113\",\"sha256:30982f79f21bb0ff7d7d4a4e531e3fcaa39b778584c2ce81a147f95be1cd58c9\",\"sha256:31c19a668b5a1eadab82ff070b5a260478ac6ddad3a5b62295095174a8d26398\",\"sha256:3f9103abd1678cb1b5f7e8e1af565a652e036844166c91ec031eeb25c5ca8af0\",\"sha256:41388321a73ba1a84edd90d86ecc8bfed55e6a1e51882eafb019f45895ec0f65\",\"sha256:4310b5494271e18580d61022c0857eb85d30510d88606fa3b8314790df7f367d\",\"sha256:464157509ce4efa5ff285c646a38b49f8c5ef8d4b340f722685b09bb033c5ccf\",\"sha256:485246fcdb93336105c29a5cfbff8a226949db37b7473c89caa26c9bae52a242\",\"sha256:489c19152ec1f0e5c5e525356bcbf7e532f311bff630c9b6bc2db6f04da6a8b9\",\"sha256:4f2ab0faf8188b9f99e6a273b24b97662194160cc8ca17cf9d1fb6f18d7fb93f\",\"sha256:55a38dcd1cee2f298d8c2ebc60fc7d39f3b4535684a1e9e2f39a80ae88b0cea7\",\"sha256:58b0ecc505bbe49a99551eea3f2e8a9b3b24b3edd2a4de1ac0dc17bc75c9ec07\",\"sha256:5af4cd0d8cf2912bd95f33586600cac9c4b7c5053a036422b97cfe4728d2eb53\",\"sha256:5bbd974193e2cc274312da16b189b38f5f128410f3377721cadb76b1e8ca5328\",\"sha256:5c4849916f71dc44e19ed370421518c0d86cf73b26e8656192fcfcda08218fbd\",\"sha256:5dc736127fac70009b8d309a0eeb74f3e08979e530cf7017f2f507ef62e6cfb8\",\"sha256:63f3a80daf4f867bd80f5c97fbe03314348ac1b3b70fb1c0ad255a69e3749879\",\"sha256:674d7baf0015a6037d5758496d550fc1946f34bfc89c1bf247cabdc415d7747e\",\"sha256:6cd4ccecc5ea5abd06deeaab52fcdba372f649728050c6143cc405ee0c166679\",\"sha256:790a168a808bd00ee42786b8ba883307c0e3684ebb292e0e20009588c426da47\",\"sha256:7d56ce3e2a6a556b59a288771cf9d091470116867e578bebced8bfc4147fbfd7\",\"sha256:841f93a0e31e4c64d62ea570d81c35de0f6cea224568b2430d832967536308e6\",\"sha256:8de4578e838a9409b5b134a18ee820730e507b2d21700c14b71a2b0757396acc\",\"sha256:92a41d936f7d6743f343be265ace93b7c57f5b231e21b9605716f5a47c2879e7\",\"sha256:9831816a5d34d5170aa9ed32a64982c3d6f4332e7ecfe62dc97767e163cb0b17\",\"sha256:994c244e004bc3cfbea96257b883c90a86e8cbd76e069718eb4c6b222a56f78b\",\"sha256:9dab4c98acfb5fb85f5a20548b5c0abe9b163ad3525ee28822ffecb5c40e724c\",\"sha256:b79bbd648664aa6f44ef018474ff958b6b296fed5c2d42db60078de3cffbc8aa\",\"sha256:c3e700abf4a37b7b8b90532fa6ed5c38a9bfc777098bc9fbae5ec8e618ac8f30\",\"sha256:c52ed79f683f721b69a10fb9e3d940a468203f5054927215586c5d49a072de8d\",\"sha256:c75c98380b1ede1cae9a252c6dc247e6279403fae38c77060a5e6186c95073ac\",\"sha256:d2b4431f522b277c79c34b65da128029a9955e4481462cbf7ebec23aab61fc58\",\"sha256:ddf4a9bfaac643e62702ed662afc36f6abed2a88a21270e891038f9a19bc08fc\",\"sha256:de0205cb21ad5ddaef607cda9a3191eadd1e7a62a756ea3a356369675230ac35\",\"sha256:ec555c9d0db12d7fd777ba3f8b75044c73e576c720a851667432fabb7057da6c\",\"sha256:fb5cdcbbe3080181498931b52a91a21a781a35dcb859da741c0345c6402bf00c\"],\"markers\":\"python_version >= '3.7'\"},\"shellingham\":{\"version\":\"==1.5.4\",\"hashes\":[\"sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686\",\"sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de\"],\"markers\":\"python_version >= '3.7'\"},\"six\":{\"version\":\"==1.16.0\",\"hashes\":[\"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926\",\"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254\"],\"markers\":\"python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'\"},\"sniffio\":{\"version\":\"==1.3.1\",\"hashes\":[\"sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2\",\"sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc\"],\"markers\":\"python_version >= '3.7'\"},\"starlette\":{\"version\":\"==0.37.2\",\"hashes\":[\"sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee\",\"sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823\"],\"markers\":\"python_version >= '3.8'\"},\"stream-zip\":{\"version\":\"==0.0.71\",\"hashes\":[\"sha256:4afff6da680876b7982afedcc9c3478a575a519c74015a25a4248d3fe69a46a0\",\"sha256:fd85a01e8eadec4d1151b548c7da0eeecc37432f29df01ba232f672f958a2fc6\"],\"markers\":\"python_full_version >= '3.6.7'\"},\"tqdm\":{\"version\":\"==4.66.4\",\"hashes\":[\"sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644\",\"sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb\"],\"markers\":\"python_version >= '3.7'\"},\"typer\":{\"version\":\"==0.12.3\",\"hashes\":[\"sha256:070d7ca53f785acbccba8e7d28b08dcd88f79f1fbda035ade0aecec71ca5c914\",\"sha256:49e73131481d804288ef62598d97a1ceef3058905aa536a1134f90891ba35482\"],\"markers\":\"python_version >= '3.7'\"},\"typing-extensions\":{\"version\":\"==4.11.0\",\"hashes\":[\"sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0\",\"sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a\"],\"markers\":\"python_version >= '3.8'\"},\"ujson\":{\"version\":\"==5.9.0\",\"hashes\":[\"sha256:07e0cfdde5fd91f54cd2d7ffb3482c8ff1bf558abf32a8b953a5d169575ae1cd\",\"sha256:0b159efece9ab5c01f70b9d10bbb77241ce111a45bc8d21a44c219a2aec8ddfd\",\"sha256:0c4d6adb2c7bb9eb7c71ad6f6f612e13b264942e841f8cc3314a21a289a76c4e\",\"sha256:10ca3c41e80509fd9805f7c149068fa8dbee18872bbdc03d7cca928926a358d5\",\"sha256:20509a8c9f775b3a511e308bbe0b72897ba6b800767a7c90c5cca59d20d7c42c\",\"sha256:25fa46e4ff0a2deecbcf7100af3a5d70090b461906f2299506485ff31d9ec437\",\"sha256:2a8ea0f55a1396708e564595aaa6696c0d8af532340f477162ff6927ecc46e21\",\"sha256:2fbb90aa5c23cb3d4b803c12aa220d26778c31b6e4b7a13a1f49971f6c7d088e\",\"sha256:323279e68c195110ef85cbe5edce885219e3d4a48705448720ad925d88c9f851\",\"sha256:32bba5870c8fa2a97f4a68f6401038d3f1922e66c34280d710af00b14a3ca562\",\"sha256:3382a3ce0ccc0558b1c1668950008cece9bf463ebb17463ebf6a8bfc060dae34\",\"sha256:37ef92e42535a81bf72179d0e252c9af42a4ed966dc6be6967ebfb929a87bc60\",\"sha256:3b23bbb46334ce51ddb5dded60c662fbf7bb74a37b8f87221c5b0fec1ec6454b\",\"sha256:473fb8dff1d58f49912323d7cb0859df5585cfc932e4b9c053bf8cf7f2d7c5c4\",\"sha256:4a566e465cb2fcfdf040c2447b7dd9718799d0d90134b37a20dff1e27c0e9096\",\"sha256:4e35d7885ed612feb6b3dd1b7de28e89baaba4011ecdf995e88be9ac614765e9\",\"sha256:506a45e5fcbb2d46f1a51fead991c39529fc3737c0f5d47c9b4a1d762578fc30\",\"sha256:5635b78b636a54a86fdbf6f027e461aa6c6b948363bdf8d4fbb56a42b7388320\",\"sha256:5ca35f484622fd208f55041b042d9d94f3b2c9c5add4e9af5ee9946d2d30db01\",\"sha256:60718f1720a61560618eff3b56fd517d107518d3c0160ca7a5a66ac949c6cf1c\",\"sha256:63fb2e6599d96fdffdb553af0ed3f76b85fda63281063f1cb5b1141a6fcd0617\",\"sha256:6974b3a7c17bbf829e6c3bfdc5823c67922e44ff169851a755eab79a3dd31ec0\",\"sha256:6adef377ed583477cf005b58c3025051b5faa6b8cc25876e594afbb772578f21\",\"sha256:6bbd91a151a8f3358c29355a491e915eb203f607267a25e6ab10531b3b157c5e\",\"sha256:6eecbd09b316cea1fd929b1e25f70382917542ab11b692cb46ec9b0a26c7427f\",\"sha256:70e06849dfeb2548be48fdd3ceb53300640bc8100c379d6e19d78045e9c26120\",\"sha256:7309d063cd392811acc49b5016728a5e1b46ab9907d321ebbe1c2156bc3c0b99\",\"sha256:779a2a88c53039bebfbccca934430dabb5c62cc179e09a9c27a322023f363e0d\",\"sha256:7a365eac66f5aa7a7fdf57e5066ada6226700884fc7dce2ba5483538bc16c8c5\",\"sha256:7b1c0991c4fe256f5fdb19758f7eac7f47caac29a6c57d0de16a19048eb86bad\",\"sha256:7cc7e605d2aa6ae6b7321c3ae250d2e050f06082e71ab1a4200b4ae64d25863c\",\"sha256:829a69d451a49c0de14a9fecb2a2d544a9b2c884c2b542adb243b683a6f15908\",\"sha256:829b824953ebad76d46e4ae709e940bb229e8999e40881338b3cc94c771b876c\",\"sha256:82b5a56609f1235d72835ee109163c7041b30920d70fe7dac9176c64df87c164\",\"sha256:89cc92e73d5501b8a7f48575eeb14ad27156ad092c2e9fc7e3cf949f07e75532\",\"sha256:8ba7cac47dd65ff88571eceeff48bf30ed5eb9c67b34b88cb22869b7aa19600d\",\"sha256:8fc2aa18b13d97b3c8ccecdf1a3c405f411a6e96adeee94233058c44ff92617d\",\"sha256:9ac92d86ff34296f881e12aa955f7014d276895e0e4e868ba7fddebbde38e378\",\"sha256:9d302bd17989b6bd90d49bade66943c78f9e3670407dbc53ebcf61271cadc399\",\"sha256:9f21315f51e0db8ee245e33a649dd2d9dce0594522de6f278d62f15f998e050e\",\"sha256:a6d3f10eb8ccba4316a6b5465b705ed70a06011c6f82418b59278fbc919bef6f\",\"sha256:a807ae73c46ad5db161a7e883eec0fbe1bebc6a54890152ccc63072c4884823b\",\"sha256:ab71bf27b002eaf7d047c54a68e60230fbd5cd9da60de7ca0aa87d0bccead8fa\",\"sha256:b048aa93eace8571eedbd67b3766623e7f0acbf08ee291bef7d8106210432427\",\"sha256:b28407cfe315bd1b34f1ebe65d3bd735d6b36d409b334100be8cdffae2177b2f\",\"sha256:b5964ea916edfe24af1f4cc68488448fbb1ec27a3ddcddc2b236da575c12c8ae\",\"sha256:b68a0caab33f359b4cbbc10065c88e3758c9f73a11a65a91f024b2e7a1257106\",\"sha256:ba0823cb70866f0d6a4ad48d998dd338dce7314598721bc1b7986d054d782dfd\",\"sha256:bd4ea86c2afd41429751d22a3ccd03311c067bd6aeee2d054f83f97e41e11d8f\",\"sha256:bdf7fc21a03bafe4ba208dafa84ae38e04e5d36c0e1c746726edf5392e9f9f36\",\"sha256:c4eec2ddc046360d087cf35659c7ba0cbd101f32035e19047013162274e71fcf\",\"sha256:cdcb02cabcb1e44381221840a7af04433c1dc3297af76fde924a50c3054c708c\",\"sha256:d0fd2eba664a22447102062814bd13e63c6130540222c0aa620701dd01f4be81\",\"sha256:d581db9db9e41d8ea0b2705c90518ba623cbdc74f8d644d7eb0d107be0d85d9c\",\"sha256:dc80f0f5abf33bd7099f7ac94ab1206730a3c0a2d17549911ed2cb6b7aa36d2d\",\"sha256:e015122b337858dba5a3dc3533af2a8fc0410ee9e2374092f6a5b88b182e9fcc\",\"sha256:e208d3bf02c6963e6ef7324dadf1d73239fb7008491fdf523208f60be6437402\",\"sha256:e2f909bc08ce01f122fd9c24bc6f9876aa087188dfaf3c4116fe6e4daf7e194f\",\"sha256:f0cb4a7814940ddd6619bdce6be637a4b37a8c4760de9373bac54bb7b229698b\",\"sha256:f4b3917296630a075e04d3d07601ce2a176479c23af838b6cf90a2d6b39b0d95\",\"sha256:f69f16b8f1c69da00e38dc5f2d08a86b0e781d0ad3e4cc6a13ea033a439c4844\",\"sha256:f833c529e922577226a05bc25b6a8b3eb6c4fb155b72dd88d33de99d53113124\",\"sha256:f91719c6abafe429c1a144cfe27883eace9fb1c09a9c5ef1bcb3ae80a3076a4e\",\"sha256:ff741a5b4be2d08fceaab681c9d4bc89abf3c9db600ab435e20b9b6d4dfef12e\",\"sha256:ffdfebd819f492e48e4f31c97cb593b9c1a8251933d8f8972e81697f00326ff1\"],\"markers\":\"python_version >= '3.8'\"},\"urllib3\":{\"version\":\"==2.2.1\",\"hashes\":[\"sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d\",\"sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19\"],\"markers\":\"python_version >= '3.8'\"},\"usgs\":{\"version\":\"==0.3.5\",\"hashes\":[\"sha256:62734bfd23829e8b90701c49cb2f868d3bf4c706ea6b53939711186cf6df0807\"]},\"uvicorn\":{\"version\":\"==0.29.0\",\"hashes\":[\"sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de\",\"sha256:6a69214c0b6a087462412670b3ef21224fa48cae0e452b5883e8e8bdfdd11dd0\"],\"markers\":\"python_version >= '3.8'\",\"extras\":[\"standard\"]},\"uvloop\":{\"version\":\"==0.19.0\",\"hashes\":[\"sha256:0246f4fd1bf2bf702e06b0d45ee91677ee5c31242f39aab4ea6fe0c51aedd0fd\",\"sha256:02506dc23a5d90e04d4f65c7791e65cf44bd91b37f24cfc3ef6cf2aff05dc7ec\",\"sha256:13dfdf492af0aa0a0edf66807d2b465607d11c4fa48f4a1fd41cbea5b18e8e8b\",\"sha256:2693049be9d36fef81741fddb3f441673ba12a34a704e7b4361efb75cf30befc\",\"sha256:271718e26b3e17906b28b67314c45d19106112067205119dddbd834c2b7ce797\",\"sha256:2df95fca285a9f5bfe730e51945ffe2fa71ccbfdde3b0da5772b4ee4f2e770d5\",\"sha256:31e672bb38b45abc4f26e273be83b72a0d28d074d5b370fc4dcf4c4eb15417d2\",\"sha256:34175c9fd2a4bc3adc1380e1261f60306344e3407c20a4d684fd5f3be010fa3d\",\"sha256:45bf4c24c19fb8a50902ae37c5de50da81de4922af65baf760f7c0c42e1088be\",\"sha256:472d61143059c84947aa8bb74eabbace30d577a03a1805b77933d6bd13ddebbd\",\"sha256:47bf3e9312f63684efe283f7342afb414eea4d3011542155c7e625cd799c3b12\",\"sha256:492e2c32c2af3f971473bc22f086513cedfc66a130756145a931a90c3958cb17\",\"sha256:4ce6b0af8f2729a02a5d1575feacb2a94fc7b2e983868b009d51c9a9d2149bef\",\"sha256:5138821e40b0c3e6c9478643b4660bd44372ae1e16a322b8fc07478f92684e24\",\"sha256:5588bd21cf1fcf06bded085f37e43ce0e00424197e7c10e77afd4bbefffef428\",\"sha256:570fc0ed613883d8d30ee40397b79207eedd2624891692471808a95069a007c1\",\"sha256:5a05128d315e2912791de6088c34136bfcdd0c7cbc1cf85fd6fd1bb321b7c849\",\"sha256:5daa304d2161d2918fa9a17d5635099a2f78ae5b5960e742b2fcfbb7aefaa593\",\"sha256:5f17766fb6da94135526273080f3455a112f82570b2ee5daa64d682387fe0dcd\",\"sha256:6e3d4e85ac060e2342ff85e90d0c04157acb210b9ce508e784a944f852a40e67\",\"sha256:7010271303961c6f0fe37731004335401eb9075a12680738731e9c92ddd96ad6\",\"sha256:7207272c9520203fea9b93843bb775d03e1cf88a80a936ce760f60bb5add92f3\",\"sha256:78ab247f0b5671cc887c31d33f9b3abfb88d2614b84e4303f1a63b46c046c8bd\",\"sha256:7b1fd71c3843327f3bbc3237bedcdb6504fd50368ab3e04d0410e52ec293f5b8\",\"sha256:8ca4956c9ab567d87d59d49fa3704cf29e37109ad348f2d5223c9bf761a332e7\",\"sha256:91ab01c6cd00e39cde50173ba4ec68a1e578fee9279ba64f5221810a9e786533\",\"sha256:cd81bdc2b8219cb4b2556eea39d2e36bfa375a2dd021404f90a62e44efaaf957\",\"sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650\",\"sha256:de4313d7f575474c8f5a12e163f6d89c0a878bc49219641d49e6f1444369a90e\",\"sha256:e27f100e1ff17f6feeb1f33968bc185bf8ce41ca557deee9d9bbbffeb72030b7\",\"sha256:f467a5fd23b4fc43ed86342641f3936a68ded707f4627622fa3f82a120e18256\"]},\"watchfiles\":{\"version\":\"==0.21.0\",\"hashes\":[\"sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc\",\"sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365\",\"sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0\",\"sha256:08dca260e85ffae975448e344834d765983237ad6dc308231aa16e7933db763e\",\"sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124\",\"sha256:0dd5fad9b9c0dd89904bbdea978ce89a2b692a7ee8a0ce19b940e538c88a809c\",\"sha256:11cd0c3100e2233e9c53106265da31d574355c288e15259c0d40a4405cbae317\",\"sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094\",\"sha256:18d5b4da8cf3e41895b34e8c37d13c9ed294954907929aacd95153508d5d89d7\",\"sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235\",\"sha256:1b8d1eae0f65441963d805f766c7e9cd092f91e0c600c820c764a4ff71a0764c\",\"sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c\",\"sha256:1c9198c989f47898b2c22201756f73249de3748e0fc9de44adaf54a8b259cc0c\",\"sha256:1fd9a5205139f3c6bb60d11f6072e0552f0a20b712c85f43d42342d162be1235\",\"sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293\",\"sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa\",\"sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef\",\"sha256:3ad692bc7792be8c32918c699638b660c0de078a6cbe464c46e1340dadb94c19\",\"sha256:3ccceb50c611c433145502735e0370877cced72a6c70fd2410238bcbc7fe51d8\",\"sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d\",\"sha256:3f92944efc564867bbf841c823c8b71bb0be75e06b8ce45c084b46411475a915\",\"sha256:40bca549fdc929b470dd1dbfcb47b3295cb46a6d2c90e50588b0a1b3bd98f429\",\"sha256:43babacef21c519bc6631c5fce2a61eccdfc011b4bcb9047255e9620732c8097\",\"sha256:4566006aa44cb0d21b8ab53baf4b9c667a0ed23efe4aaad8c227bfba0bf15cbe\",\"sha256:49f56e6ecc2503e7dbe233fa328b2be1a7797d31548e7a193237dcdf1ad0eee0\",\"sha256:4c48a10d17571d1275701e14a601e36959ffada3add8cdbc9e5061a6e3579a5d\",\"sha256:4ea10a29aa5de67de02256a28d1bf53d21322295cb00bd2d57fcd19b850ebd99\",\"sha256:511f0b034120cd1989932bf1e9081aa9fb00f1f949fbd2d9cab6264916ae89b1\",\"sha256:51ddac60b96a42c15d24fbdc7a4bfcd02b5a29c047b7f8bf63d3f6f5a860949a\",\"sha256:57d430f5fb63fea141ab71ca9c064e80de3a20b427ca2febcbfcef70ff0ce895\",\"sha256:59137c0c6826bd56c710d1d2bda81553b5e6b7c84d5a676747d80caf0409ad94\",\"sha256:5a03651352fc20975ee2a707cd2d74a386cd303cc688f407296064ad1e6d1562\",\"sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab\",\"sha256:642d66b75eda909fd1112d35c53816d59789a4b38c141a96d62f50a3ef9b3360\",\"sha256:6674b00b9756b0af620aa2a3346b01f8e2a3dc729d25617e1b89cf6af4a54eb1\",\"sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7\",\"sha256:66fac0c238ab9a2e72d026b5fb91cb902c146202bbd29a9a1a44e8db7b710b6f\",\"sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03\",\"sha256:6c889025f59884423428c261f212e04d438de865beda0b1e1babab85ef4c0f01\",\"sha256:6cb8fdc044909e2078c248986f2fc76f911f72b51ea4a4fbbf472e01d14faa58\",\"sha256:6e9be3ef84e2bb9710f3f777accce25556f4a71e15d2b73223788d528fcc2052\",\"sha256:7f762a1a85a12cc3484f77eee7be87b10f8c50b0b787bb02f4e357403cad0c0e\",\"sha256:83a696da8922314ff2aec02987eefb03784f473281d740bf9170181829133765\",\"sha256:853853cbf7bf9408b404754b92512ebe3e3a83587503d766d23e6bf83d092ee6\",\"sha256:8ad3fe0a3567c2f0f629d800409cd528cb6251da12e81a1f765e5c5345fd0137\",\"sha256:8c6ed10c2497e5fedadf61e465b3ca12a19f96004c15dcffe4bd442ebadc2d85\",\"sha256:8d5f400326840934e3507701f9f7269247f7c026d1b6cfd49477d2be0933cfca\",\"sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f\",\"sha256:9a0aa47f94ea9a0b39dd30850b0adf2e1cd32a8b4f9c7aa443d852aacf9ca214\",\"sha256:9b37a7ba223b2f26122c148bb8d09a9ff312afca998c48c725ff5a0a632145f7\",\"sha256:9c873345680c1b87f1e09e0eaf8cf6c891b9851d8b4d3645e7efe2ec20a20cc7\",\"sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3\",\"sha256:9d353c4cfda586db2a176ce42c88f2fc31ec25e50212650c89fdd0f560ee507b\",\"sha256:a1e3014a625bcf107fbf38eece0e47fa0190e52e45dc6eee5a8265ddc6dc5ea7\",\"sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6\",\"sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994\",\"sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9\",\"sha256:b3cab0e06143768499384a8a5efb9c4dc53e19382952859e4802f294214f36ec\",\"sha256:b4a21f71885aa2744719459951819e7bf5a906a6448a6b2bbce8e9cc9f2c8128\",\"sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c\",\"sha256:be6dd5d52b73018b21adc1c5d28ac0c68184a64769052dfeb0c5d9998e7f56a2\",\"sha256:c550a56bf209a3d987d5a975cdf2063b3389a5d16caf29db4bdddeae49f22078\",\"sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3\",\"sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e\",\"sha256:cfb92d49dbb95ec7a07511bc9efb0faff8fe24ef3805662b8d6808ba8409a71a\",\"sha256:d23bcd6c8eaa6324fe109d8cac01b41fe9a54b8c498af9ce464c1aeeb99903d6\",\"sha256:d5b1dc0e708fad9f92c296ab2f948af403bf201db8fb2eb4c8179db143732e49\",\"sha256:d78f30cbe8b2ce770160d3c08cff01b2ae9306fe66ce899b73f0409dc1846c1b\",\"sha256:d8f57c4461cd24fda22493109c45b3980863c58a25b8bec885ca8bea6b8d4b28\",\"sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9\",\"sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586\",\"sha256:ebe684d7d26239e23d102a2bad2a358dedf18e462e8808778703427d1f584400\",\"sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165\",\"sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303\",\"sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d\"]},\"websockets\":{\"version\":\"==12.0\",\"hashes\":[\"sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b\",\"sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6\",\"sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df\",\"sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b\",\"sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205\",\"sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892\",\"sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53\",\"sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2\",\"sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed\",\"sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c\",\"sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd\",\"sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b\",\"sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931\",\"sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30\",\"sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370\",\"sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be\",\"sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec\",\"sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf\",\"sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62\",\"sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b\",\"sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402\",\"sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f\",\"sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123\",\"sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9\",\"sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603\",\"sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45\",\"sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558\",\"sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4\",\"sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438\",\"sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137\",\"sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480\",\"sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447\",\"sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8\",\"sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04\",\"sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c\",\"sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb\",\"sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967\",\"sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b\",\"sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d\",\"sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def\",\"sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c\",\"sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92\",\"sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2\",\"sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113\",\"sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b\",\"sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28\",\"sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7\",\"sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d\",\"sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f\",\"sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468\",\"sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8\",\"sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae\",\"sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611\",\"sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d\",\"sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9\",\"sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca\",\"sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f\",\"sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2\",\"sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077\",\"sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2\",\"sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6\",\"sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374\",\"sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc\",\"sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e\",\"sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53\",\"sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399\",\"sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547\",\"sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3\",\"sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870\",\"sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5\",\"sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8\",\"sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7\"]},\"whoosh\":{\"version\":\"==2.7.4\",\"hashes\":[\"sha256:7ca5633dbfa9e0e0fa400d3151a8a0c4bec53bd2ecedc0a67705b17565c31a83\",\"sha256:aa39c3c3426e3fd107dcb4bde64ca1e276a65a889d9085a6e4b54ba82420a852\",\"sha256:e0857375f63e9041e03fedd5b7541f97cf78917ac1b6b06c1fcc9b45375dda69\"]}},\"develop\":{}}" From 5cabe801ebbaacd62e10576168007e1497d7e0c7 Mon Sep 17 00:00:00 2001 From: Martin Schobben Date: Thu, 24 Oct 2024 15:35:58 +0200 Subject: [PATCH 10/10] use hvplot --- unit_02/04_l-band-sar.ipynb | 20 +++++++++++++++++--- unit_02/04_l-band-sar_exercise.ipynb | 12 +++++++----- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/unit_02/04_l-band-sar.ipynb b/unit_02/04_l-band-sar.ipynb index 52f5070..9d3182e 100644 --- a/unit_02/04_l-band-sar.ipynb +++ b/unit_02/04_l-band-sar.ipynb @@ -44,7 +44,7 @@ "import pandas as pd\n", "import xarray as xr\n", "import rioxarray #noqa\n", - "\n", + "import hvplot.xarray #noqa\n", "import folium\n", "\n", "from shapely.geometry import mapping, box\n", @@ -380,8 +380,22 @@ "metadata": {}, "outputs": [], "source": [ - "fused_ds.alos.plot(col=\"time\", robust=True, cmap=\"Greys_r\")\n", - "fused_ds.s1.plot(col=\"time\", robust=True, cmap=\"Greys_r\")" + "fused_ds.alos.\\\n", + " dropna(dim=\"time\", how=\"all\").\\\n", + " hvplot.image(robust=True, data_aspect=1, cmap=\"Greys_r\", rasterize=True).\\\n", + " opts(frame_height=400)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fused_ds.s1.\\\n", + " dropna(dim=\"time\", how=\"all\").\\\n", + " hvplot.image(robust=True, data_aspect=1, cmap=\"Greys_r\", rasterize=True).\\\n", + " opts(frame_height=400)" ] }, { diff --git a/unit_02/04_l-band-sar_exercise.ipynb b/unit_02/04_l-band-sar_exercise.ipynb index bc11aaf..4066d6f 100644 --- a/unit_02/04_l-band-sar_exercise.ipynb +++ b/unit_02/04_l-band-sar_exercise.ipynb @@ -17,7 +17,8 @@ "source": [ "import xarray as xr\n", "import rioxarray #noqa\n", - "from pathlib import Path" + "from pathlib import Path\n", + "import hvplot.xarray #noqa" ] }, { @@ -116,7 +117,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Plot the three variables with the following lines of code:" + "Plot the LAI variable with the following lines of code:" ] }, { @@ -125,9 +126,10 @@ "metadata": {}, "outputs": [], "source": [ - "fused_ds_new.LAI.plot(col=\"time\")\n", - "fused_ds_new.alos.plot(col=\"time\", robust=True, cmap=\"Greys_r\")\n", - "fused_ds_new.s1.plot(col=\"time\", robust=True, cmap=\"Greys_r\")" + "fused_ds.LAI.\\\n", + " dropna(dim=\"time\", how=\"all\").\\\n", + " hvplot.image(robust=True, data_aspect=1, cmap=\"viridis\", rasterize=True).\\\n", + " opts(frame_height=400)" ] }, {