mirror of
https://github.com/heyarne/earth-observation-for-journalism.git
synced 2026-05-06 19:13:40 +02:00
1944 lines
162 KiB
Text
1944 lines
162 KiB
Text
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Download Data from Copernicus Open Access Hub\n",
|
||
"\n",
|
||
"These notebooks contain information about querying and downloading data from the Sentinel-2 mission run by the Copernicus program.\n",
|
||
"\n",
|
||
"```{note}\n",
|
||
"In order to run these notebooks, a free account for the Copernicus Open Access Hub is needed.\n",
|
||
"Please create an account first:\n",
|
||
"\n",
|
||
"https://scihub.copernicus.eu/dhus/#/self-registration\n",
|
||
"\n",
|
||
"Consult the [README](../README.md) for information on setting up the environment variables.\n",
|
||
"```"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import os\n",
|
||
"from sentinelsat import SentinelAPI, read_geojson\n",
|
||
"from tqdm.notebook import tqdm\n",
|
||
"\n",
|
||
"api = SentinelAPI(os.getenv('SCIHUB_USERNAME'), os.getenv('SCIHUB_PASSWORD'))\n",
|
||
"api._tqdm = tqdm # ← gives us better progress bars"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Defining the Region of Interest\n",
|
||
"\n",
|
||
"The Copernicus Open Access Hub API expects a point or area that designates the region of interest.\n",
|
||
"We use the [OpenStreetMap Nominatim API](https://nominatim.org/) to query for the administrative boundaries of Berlin using the `search_osm` function defined in `sentinel_helpers.py`:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"\u001b[0;31mSignature:\u001b[0m \u001b[0msearch_osm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mplace\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;31mSource:\u001b[0m \n",
|
||
"\u001b[0;32mdef\u001b[0m \u001b[0msearch_osm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mplace\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n",
|
||
"\u001b[0;34m\u001b[0m \u001b[0;34m'''\u001b[0m\n",
|
||
"\u001b[0;34m Returns a GeoDataFrame with results from OpenStreetMap Nominatim for the given search string.\u001b[0m\n",
|
||
"\u001b[0;34m '''\u001b[0m\u001b[0;34m\u001b[0m\n",
|
||
"\u001b[0;34m\u001b[0m \u001b[0murlescaped_place\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murllib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquote\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mplace\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n",
|
||
"\u001b[0;34m\u001b[0m \u001b[0msearch_url\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m'https://nominatim.openstreetmap.org/search/?q={}'\u001b[0m \u001b[0;34m+\u001b[0m\u001b[0;34m\u001b[0m\n",
|
||
"\u001b[0;34m\u001b[0m \u001b[0;34m'&format=geojson&polygon_geojson=1'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murlescaped_place\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n",
|
||
"\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mgpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_file\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msearch_url\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;31mFile:\u001b[0m ~/sources/sentinel_helpers.py\n",
|
||
"\u001b[0;31mType:\u001b[0m function\n"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"from sentinel_helpers import search_osm\n",
|
||
"??search_osm"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The function is mostly concerned with constructing the correct URL and ensuring that the response is returned as GeoJSON so it can be parsed by the `GeoPandas` library.\n",
|
||
"\n",
|
||
"A query returns a `GeoPandas` `GeoDataFrame` which contains a geometry and additional information that can be used to narrow down the area we are interested in:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>place_id</th>\n",
|
||
" <th>osm_type</th>\n",
|
||
" <th>osm_id</th>\n",
|
||
" <th>display_name</th>\n",
|
||
" <th>place_rank</th>\n",
|
||
" <th>category</th>\n",
|
||
" <th>type</th>\n",
|
||
" <th>importance</th>\n",
|
||
" <th>icon</th>\n",
|
||
" <th>geometry</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>574401</td>\n",
|
||
" <td>node</td>\n",
|
||
" <td>240109189</td>\n",
|
||
" <td>Berlin, 10117, Deutschland</td>\n",
|
||
" <td>15</td>\n",
|
||
" <td>place</td>\n",
|
||
" <td>city</td>\n",
|
||
" <td>0.897539</td>\n",
|
||
" <td>https://nominatim.openstreetmap.org/ui/mapicon...</td>\n",
|
||
" <td>POINT (13.38886 52.51704)</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>256375666</td>\n",
|
||
" <td>relation</td>\n",
|
||
" <td>62422</td>\n",
|
||
" <td>Berlin, Deutschland</td>\n",
|
||
" <td>8</td>\n",
|
||
" <td>boundary</td>\n",
|
||
" <td>administrative</td>\n",
|
||
" <td>0.897539</td>\n",
|
||
" <td>https://nominatim.openstreetmap.org/ui/mapicon...</td>\n",
|
||
" <td>MULTIPOLYGON (((13.08835 52.41963, 13.09021 52...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>1253688</td>\n",
|
||
" <td>node</td>\n",
|
||
" <td>313826576</td>\n",
|
||
" <td>Berlin, Tauentzienstraße, Charlottenburg, Char...</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>tourism</td>\n",
|
||
" <td>artwork</td>\n",
|
||
" <td>0.315372</td>\n",
|
||
" <td>https://nominatim.openstreetmap.org/ui/mapicon...</td>\n",
|
||
" <td>POINT (13.33864 52.50340)</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>225671</td>\n",
|
||
" <td>node</td>\n",
|
||
" <td>50798110</td>\n",
|
||
" <td>Berlin, Seedorf, Trave-Land, Segeberg, Schlesw...</td>\n",
|
||
" <td>19</td>\n",
|
||
" <td>place</td>\n",
|
||
" <td>village</td>\n",
|
||
" <td>0.272651</td>\n",
|
||
" <td>https://nominatim.openstreetmap.org/ui/mapicon...</td>\n",
|
||
" <td>POINT (10.44613 54.03636)</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>107621118</td>\n",
|
||
" <td>way</td>\n",
|
||
" <td>68276545</td>\n",
|
||
" <td>Berlin, Potsdam, Klein Bennebek, Kropp-Stapelh...</td>\n",
|
||
" <td>26</td>\n",
|
||
" <td>highway</td>\n",
|
||
" <td>unclassified</td>\n",
|
||
" <td>0.210000</td>\n",
|
||
" <td>None</td>\n",
|
||
" <td>LINESTRING (9.41929 54.40283, 9.42072 54.40343...</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" place_id osm_type osm_id \\\n",
|
||
"0 574401 node 240109189 \n",
|
||
"1 256375666 relation 62422 \n",
|
||
"2 1253688 node 313826576 \n",
|
||
"3 225671 node 50798110 \n",
|
||
"4 107621118 way 68276545 \n",
|
||
"\n",
|
||
" display_name place_rank category \\\n",
|
||
"0 Berlin, 10117, Deutschland 15 place \n",
|
||
"1 Berlin, Deutschland 8 boundary \n",
|
||
"2 Berlin, Tauentzienstraße, Charlottenburg, Char... 30 tourism \n",
|
||
"3 Berlin, Seedorf, Trave-Land, Segeberg, Schlesw... 19 place \n",
|
||
"4 Berlin, Potsdam, Klein Bennebek, Kropp-Stapelh... 26 highway \n",
|
||
"\n",
|
||
" type importance \\\n",
|
||
"0 city 0.897539 \n",
|
||
"1 administrative 0.897539 \n",
|
||
"2 artwork 0.315372 \n",
|
||
"3 village 0.272651 \n",
|
||
"4 unclassified 0.210000 \n",
|
||
"\n",
|
||
" icon \\\n",
|
||
"0 https://nominatim.openstreetmap.org/ui/mapicon... \n",
|
||
"1 https://nominatim.openstreetmap.org/ui/mapicon... \n",
|
||
"2 https://nominatim.openstreetmap.org/ui/mapicon... \n",
|
||
"3 https://nominatim.openstreetmap.org/ui/mapicon... \n",
|
||
"4 None \n",
|
||
"\n",
|
||
" geometry \n",
|
||
"0 POINT (13.38886 52.51704) \n",
|
||
"1 MULTIPOLYGON (((13.08835 52.41963, 13.09021 52... \n",
|
||
"2 POINT (13.33864 52.50340) \n",
|
||
"3 POINT (10.44613 54.03636) \n",
|
||
"4 LINESTRING (9.41929 54.40283, 9.42072 54.40343... "
|
||
]
|
||
},
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"results = search_osm('Berlin, Germany')\n",
|
||
"results.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"OpenStreetMap contains geoinformation at vastly different scales and of very different types.\n",
|
||
"We can use it to query outlines of parks or entire countries.\n",
|
||
"The [OpenStreetMap wiki](https://wiki.openstreetmap.org/wiki/Main_Page) contains exhaustive information about the architectural design of OpenStreetMap.\n",
|
||
"Using the `search_osm` function we are very flexible in the type of query information we can retrieve.\n",
|
||
"\n",
|
||
"The first result is the city's centroid.\n",
|
||
"We use the `type` to select the administrative boundaries."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<AxesSubplot:>"
|
||
]
|
||
},
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"berlin = results[results['type'] == 'administrative']\n",
|
||
"berlin.plot()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"… and save this result for later. All downloaded files as well as all the artifacts generated by the various notebooks will live inside the `resources` directory:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from pathlib import Path\n",
|
||
"\n",
|
||
"resources = Path('resources')\n",
|
||
"resources.mkdir(exist_ok=True)\n",
|
||
"berlin.to_file(resources / 'berlin.geojson', driver='GeoJSON')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"OpenStreetMap provides detailed geometries not only for cities, but also for larger areas such as federal states:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<AxesSubplot:>"
|
||
]
|
||
},
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"brandenburg = search_osm('Brandenburg, Germany')\n",
|
||
"brandenburg.iloc[:1].plot()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"… or smaller areas such as parks:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<AxesSubplot:>"
|
||
]
|
||
},
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"tiergarten = search_osm('Tiergarten, Berlin, Germany')\n",
|
||
"tiergarten.plot()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"In addition to the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/) the [OpenStreetMap Website](https://openstreetmap.org/) is useful to interactively test out different search queries.\n",
|
||
"\n",
|
||
"We continue with `berlin`."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Defining a Request to the Copernicus Open Access Hub\n",
|
||
"\n",
|
||
"An API request additionally contains the time span for which to search for results - we might be interested in very recent images or in imagery over a long time span - and the maximum cloud coverage.\n",
|
||
"The maximum cloud coverage is needed because Sentinel-2 is equipped with optical instruments.\n",
|
||
"If there are too many clouds the products will not contain a lot of useful information."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from datetime import date\n",
|
||
"import datetime\n",
|
||
"\n",
|
||
"# note that start_date are python date objects this means they can be\n",
|
||
"# manipulated using python functions\n",
|
||
"start_date = date(2020, 5, 22) \n",
|
||
"end_date = date(2020, 6, 22) \n",
|
||
"cloud_coverage = (0,30) # between 0 and 30 percent"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The region of interest is given as the `footprint` parameter.\n",
|
||
"We use a simplified version of the geometry retrieved from OpenStreetMap - its convex hull - due to restrictions in URL lengths that don't allow us to query for arbitrarily detailed geometries:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/svg+xml": [
|
||
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"100.0\" height=\"100.0\" viewBox=\"13.061432364 52.311332164 0.7266411720000008 0.39108917200000093\" preserveAspectRatio=\"xMinYMin meet\"><g transform=\"matrix(1,0,0,-1,0,105.0137535)\"><path fill-rule=\"evenodd\" fill=\"#66cc99\" stroke=\"#555555\" stroke-width=\"0.014532823440000016\" opacity=\"0.6\" d=\"M 13.6477328,52.3382448 L 13.6474433,52.338271 L 13.131305,52.3872254 L 13.1310825,52.3872512 L 13.1307559,52.3873763 L 13.1298482,52.3878739 L 13.1267317,52.3895836 L 13.0907635,52.4115602 L 13.090275,52.4122142 L 13.088345,52.4196325 L 13.1284297,52.5860175 L 13.1289619,52.5873048 L 13.2827678,52.6607411 L 13.4794873,52.6755087 L 13.4884252,52.6707899 L 13.523022,52.6450365 L 13.7564462,52.4461766 L 13.7611609,52.4377097 L 13.76095,52.4373221 L 13.7390343,52.4073353 L 13.7342706,52.4021367 L 13.7341193,52.4019835 L 13.6922028,52.3672074 L 13.6513711,52.3392255 L 13.6509462,52.3389451 L 13.6506935,52.3388565 L 13.6488471,52.3383381 L 13.6484243,52.3382725 L 13.6477328,52.3382448 z\" /></g></svg>"
|
||
],
|
||
"text/plain": [
|
||
"<shapely.geometry.polygon.Polygon at 0x7fe5d352efd0>"
|
||
]
|
||
},
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"footprint = berlin.iloc[0]['geometry'].convex_hull\n",
|
||
"footprint"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Found 16 results\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"products = api.query(footprint,\n",
|
||
" platformname='Sentinel-2',\n",
|
||
" processinglevel='Level-2A',\n",
|
||
" date=(start_date, end_date),\n",
|
||
" cloudcoverpercentage=cloud_coverage)\n",
|
||
"\n",
|
||
"print(f'Found {len(products)} results')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Selecting Products from the Result Set\n",
|
||
"\n",
|
||
"The criteria for selecting a product depends on the specific use case.\n",
|
||
"The first use case is to plot an image of Berlin, so want to make sure that as much of the city as possible is visible in the data we download.\n",
|
||
"\n",
|
||
"We convert the list of products to a `GeoDataFrame`, for which `gdf` is an acronym:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/opt/conda/lib/python3.8/site-packages/pyproj/crs/crs.py:53: FutureWarning: '+init=<authority>:<code>' syntax is deprecated. '<authority>:<code>' is the preferred initialization method. When making the change, be mindful of axis order changes: https://pyproj4.github.io/pyproj/stable/gotchas.html#axis-order-changes-in-proj-6\n",
|
||
" return _prepare_from_string(\" \".join(pjargs))\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"gdf = api.to_geodataframe(products)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The `plot_all` function is a helper that allows us to draw several geometries on top of each other in a single plot.\n",
|
||
"We can use it to get a quick visual impression of the result:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Text(0.5, 1.0, 'Area of interest, its convex hull and products returned from the API')"
|
||
]
|
||
},
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 1152x648 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"from sentinel_helpers import plot_all\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"\n",
|
||
"plot_all([gdf, berlin, footprint],\n",
|
||
" [{'color': 'none', 'edgecolor': 'blue', 'alpha': 0.1, 'figsize': (16, 9)},\n",
|
||
" {'color': 'none', 'edgecolor': 'red'},\n",
|
||
" {'color': 'none', 'edgecolor': 'grey'}])\n",
|
||
"plt.title('Area of interest, its convex hull and products returned from the API')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<div class=\"alert alert-primary\" role=\"alert\">\n",
|
||
" <b>Note:</b> The geometrical shape of the captured data a product depends on where a Sentinel-2 satellite was in orbit when it crossed the area of interest.\n",
|
||
" An in-depth analysis for this can be found in <code>01b Coverage Analysis.ipynb</code>.\n",
|
||
"</div>"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Because products are are large (roughly 1GB), we want to skip unnecessary downloads wherever possible.\n",
|
||
"We are selecting products based on two criteria:\n",
|
||
"\n",
|
||
"- How much of the area of interest is visible in the product (i.e. area of their intersection)\n",
|
||
"- How many clouds are in the image (as few as possible)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# we are using a metric coordinate reference system for europe in order to\n",
|
||
"# safely compare areas \n",
|
||
"gdf = gdf.to_crs('EPSG:4839')\n",
|
||
"berlin = berlin.to_crs('EPSG:4839')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>title</th>\n",
|
||
" <th>link</th>\n",
|
||
" <th>link_alternative</th>\n",
|
||
" <th>link_icon</th>\n",
|
||
" <th>summary</th>\n",
|
||
" <th>ondemand</th>\n",
|
||
" <th>beginposition</th>\n",
|
||
" <th>endposition</th>\n",
|
||
" <th>ingestiondate</th>\n",
|
||
" <th>orbitnumber</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>osm_type</th>\n",
|
||
" <th>osm_id</th>\n",
|
||
" <th>display_name</th>\n",
|
||
" <th>place_rank</th>\n",
|
||
" <th>category</th>\n",
|
||
" <th>type</th>\n",
|
||
" <th>importance</th>\n",
|
||
" <th>icon</th>\n",
|
||
" <th>geometry</th>\n",
|
||
" <th>area</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>S2A_MSIL2A_20200617T101031_N0214_R022_T33UUU_2...</td>\n",
|
||
" <td>https://scihub.copernicus.eu/apihub/odata/v1/P...</td>\n",
|
||
" <td>https://scihub.copernicus.eu/apihub/odata/v1/P...</td>\n",
|
||
" <td>https://scihub.copernicus.eu/apihub/odata/v1/P...</td>\n",
|
||
" <td>Date: 2020-06-17T10:10:31.024Z, Instrument: MS...</td>\n",
|
||
" <td>false</td>\n",
|
||
" <td>2020-06-17 10:10:31.024</td>\n",
|
||
" <td>2020-06-17 10:10:31.024</td>\n",
|
||
" <td>2020-06-17 21:35:56.836</td>\n",
|
||
" <td>26045</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>relation</td>\n",
|
||
" <td>62422</td>\n",
|
||
" <td>Berlin, Deutschland</td>\n",
|
||
" <td>8</td>\n",
|
||
" <td>boundary</td>\n",
|
||
" <td>administrative</td>\n",
|
||
" <td>0.897539</td>\n",
|
||
" <td>https://nominatim.openstreetmap.org/ui/mapicon...</td>\n",
|
||
" <td>MULTIPOLYGON (((215331.937 168288.512, 216047....</td>\n",
|
||
" <td>8.535962e+08</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>S2B_MSIL2A_20200615T101559_N0214_R065_T33UUU_2...</td>\n",
|
||
" <td>https://scihub.copernicus.eu/apihub/odata/v1/P...</td>\n",
|
||
" <td>https://scihub.copernicus.eu/apihub/odata/v1/P...</td>\n",
|
||
" <td>https://scihub.copernicus.eu/apihub/odata/v1/P...</td>\n",
|
||
" <td>Date: 2020-06-15T10:15:59.024Z, Instrument: MS...</td>\n",
|
||
" <td>false</td>\n",
|
||
" <td>2020-06-15 10:15:59.024</td>\n",
|
||
" <td>2020-06-15 10:15:59.024</td>\n",
|
||
" <td>2020-06-16 01:21:09.378</td>\n",
|
||
" <td>17108</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>relation</td>\n",
|
||
" <td>62422</td>\n",
|
||
" <td>Berlin, Deutschland</td>\n",
|
||
" <td>8</td>\n",
|
||
" <td>boundary</td>\n",
|
||
" <td>administrative</td>\n",
|
||
" <td>0.897539</td>\n",
|
||
" <td>https://nominatim.openstreetmap.org/ui/mapicon...</td>\n",
|
||
" <td>MULTIPOLYGON (((215331.937 168288.512, 216047....</td>\n",
|
||
" <td>8.535962e+08</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>10</th>\n",
|
||
" <td>S2B_MSIL2A_20200602T100559_N0214_R022_T33UUU_2...</td>\n",
|
||
" <td>https://scihub.copernicus.eu/apihub/odata/v1/P...</td>\n",
|
||
" <td>https://scihub.copernicus.eu/apihub/odata/v1/P...</td>\n",
|
||
" <td>https://scihub.copernicus.eu/apihub/odata/v1/P...</td>\n",
|
||
" <td>Date: 2020-06-02T10:05:59.024Z, Instrument: MS...</td>\n",
|
||
" <td>false</td>\n",
|
||
" <td>2020-06-02 10:05:59.024</td>\n",
|
||
" <td>2020-06-02 10:05:59.024</td>\n",
|
||
" <td>2020-06-02 18:40:43.331</td>\n",
|
||
" <td>16922</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>relation</td>\n",
|
||
" <td>62422</td>\n",
|
||
" <td>Berlin, Deutschland</td>\n",
|
||
" <td>8</td>\n",
|
||
" <td>boundary</td>\n",
|
||
" <td>administrative</td>\n",
|
||
" <td>0.897539</td>\n",
|
||
" <td>https://nominatim.openstreetmap.org/ui/mapicon...</td>\n",
|
||
" <td>MULTIPOLYGON (((215331.937 168288.512, 216047....</td>\n",
|
||
" <td>8.535962e+08</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>11</th>\n",
|
||
" <td>S2A_MSIL2A_20200531T102031_N0214_R065_T33UUU_2...</td>\n",
|
||
" <td>https://scihub.copernicus.eu/apihub/odata/v1/P...</td>\n",
|
||
" <td>https://scihub.copernicus.eu/apihub/odata/v1/P...</td>\n",
|
||
" <td>https://scihub.copernicus.eu/apihub/odata/v1/P...</td>\n",
|
||
" <td>Date: 2020-05-31T10:20:31.024Z, Instrument: MS...</td>\n",
|
||
" <td>false</td>\n",
|
||
" <td>2020-05-31 10:20:31.024</td>\n",
|
||
" <td>2020-05-31 10:20:31.024</td>\n",
|
||
" <td>2020-05-31 20:21:27.279</td>\n",
|
||
" <td>25802</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>relation</td>\n",
|
||
" <td>62422</td>\n",
|
||
" <td>Berlin, Deutschland</td>\n",
|
||
" <td>8</td>\n",
|
||
" <td>boundary</td>\n",
|
||
" <td>administrative</td>\n",
|
||
" <td>0.897539</td>\n",
|
||
" <td>https://nominatim.openstreetmap.org/ui/mapicon...</td>\n",
|
||
" <td>MULTIPOLYGON (((215331.937 168288.512, 216047....</td>\n",
|
||
" <td>8.535962e+08</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>4 rows × 46 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" title \\\n",
|
||
"1 S2A_MSIL2A_20200617T101031_N0214_R022_T33UUU_2... \n",
|
||
"3 S2B_MSIL2A_20200615T101559_N0214_R065_T33UUU_2... \n",
|
||
"10 S2B_MSIL2A_20200602T100559_N0214_R022_T33UUU_2... \n",
|
||
"11 S2A_MSIL2A_20200531T102031_N0214_R065_T33UUU_2... \n",
|
||
"\n",
|
||
" link \\\n",
|
||
"1 https://scihub.copernicus.eu/apihub/odata/v1/P... \n",
|
||
"3 https://scihub.copernicus.eu/apihub/odata/v1/P... \n",
|
||
"10 https://scihub.copernicus.eu/apihub/odata/v1/P... \n",
|
||
"11 https://scihub.copernicus.eu/apihub/odata/v1/P... \n",
|
||
"\n",
|
||
" link_alternative \\\n",
|
||
"1 https://scihub.copernicus.eu/apihub/odata/v1/P... \n",
|
||
"3 https://scihub.copernicus.eu/apihub/odata/v1/P... \n",
|
||
"10 https://scihub.copernicus.eu/apihub/odata/v1/P... \n",
|
||
"11 https://scihub.copernicus.eu/apihub/odata/v1/P... \n",
|
||
"\n",
|
||
" link_icon \\\n",
|
||
"1 https://scihub.copernicus.eu/apihub/odata/v1/P... \n",
|
||
"3 https://scihub.copernicus.eu/apihub/odata/v1/P... \n",
|
||
"10 https://scihub.copernicus.eu/apihub/odata/v1/P... \n",
|
||
"11 https://scihub.copernicus.eu/apihub/odata/v1/P... \n",
|
||
"\n",
|
||
" summary ondemand \\\n",
|
||
"1 Date: 2020-06-17T10:10:31.024Z, Instrument: MS... false \n",
|
||
"3 Date: 2020-06-15T10:15:59.024Z, Instrument: MS... false \n",
|
||
"10 Date: 2020-06-02T10:05:59.024Z, Instrument: MS... false \n",
|
||
"11 Date: 2020-05-31T10:20:31.024Z, Instrument: MS... false \n",
|
||
"\n",
|
||
" beginposition endposition ingestiondate \\\n",
|
||
"1 2020-06-17 10:10:31.024 2020-06-17 10:10:31.024 2020-06-17 21:35:56.836 \n",
|
||
"3 2020-06-15 10:15:59.024 2020-06-15 10:15:59.024 2020-06-16 01:21:09.378 \n",
|
||
"10 2020-06-02 10:05:59.024 2020-06-02 10:05:59.024 2020-06-02 18:40:43.331 \n",
|
||
"11 2020-05-31 10:20:31.024 2020-05-31 10:20:31.024 2020-05-31 20:21:27.279 \n",
|
||
"\n",
|
||
" orbitnumber ... osm_type osm_id display_name place_rank \\\n",
|
||
"1 26045 ... relation 62422 Berlin, Deutschland 8 \n",
|
||
"3 17108 ... relation 62422 Berlin, Deutschland 8 \n",
|
||
"10 16922 ... relation 62422 Berlin, Deutschland 8 \n",
|
||
"11 25802 ... relation 62422 Berlin, Deutschland 8 \n",
|
||
"\n",
|
||
" category type importance \\\n",
|
||
"1 boundary administrative 0.897539 \n",
|
||
"3 boundary administrative 0.897539 \n",
|
||
"10 boundary administrative 0.897539 \n",
|
||
"11 boundary administrative 0.897539 \n",
|
||
"\n",
|
||
" icon \\\n",
|
||
"1 https://nominatim.openstreetmap.org/ui/mapicon... \n",
|
||
"3 https://nominatim.openstreetmap.org/ui/mapicon... \n",
|
||
"10 https://nominatim.openstreetmap.org/ui/mapicon... \n",
|
||
"11 https://nominatim.openstreetmap.org/ui/mapicon... \n",
|
||
"\n",
|
||
" geometry area \n",
|
||
"1 MULTIPOLYGON (((215331.937 168288.512, 216047.... 8.535962e+08 \n",
|
||
"3 MULTIPOLYGON (((215331.937 168288.512, 216047.... 8.535962e+08 \n",
|
||
"10 MULTIPOLYGON (((215331.937 168288.512, 216047.... 8.535962e+08 \n",
|
||
"11 MULTIPOLYGON (((215331.937 168288.512, 216047.... 8.535962e+08 \n",
|
||
"\n",
|
||
"[4 rows x 46 columns]"
|
||
]
|
||
},
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"import geopandas as gpd\n",
|
||
"\n",
|
||
"intersection = gpd.overlay(\n",
|
||
" gdf,\n",
|
||
" berlin,\n",
|
||
" how=\"intersection\"\n",
|
||
")\n",
|
||
"intersection['area'] = intersection['geometry'].area\n",
|
||
"max_area = max(*intersection['area'])\n",
|
||
"\n",
|
||
"largest_intersections = intersection[intersection['area'] == max_area]\n",
|
||
"largest_intersections"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>title</th>\n",
|
||
" <th>cloudcoverpercentage</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>S2A_MSIL2A_20200617T101031_N0214_R022_T33UUU_2...</td>\n",
|
||
" <td>24.374344</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>S2B_MSIL2A_20200615T101559_N0214_R065_T33UUU_2...</td>\n",
|
||
" <td>3.626466</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>10</th>\n",
|
||
" <td>S2B_MSIL2A_20200602T100559_N0214_R022_T33UUU_2...</td>\n",
|
||
" <td>0.345483</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>11</th>\n",
|
||
" <td>S2A_MSIL2A_20200531T102031_N0214_R065_T33UUU_2...</td>\n",
|
||
" <td>16.512980</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" title cloudcoverpercentage\n",
|
||
"1 S2A_MSIL2A_20200617T101031_N0214_R022_T33UUU_2... 24.374344\n",
|
||
"3 S2B_MSIL2A_20200615T101559_N0214_R065_T33UUU_2... 3.626466\n",
|
||
"10 S2B_MSIL2A_20200602T100559_N0214_R022_T33UUU_2... 0.345483\n",
|
||
"11 S2A_MSIL2A_20200531T102031_N0214_R065_T33UUU_2... 16.512980"
|
||
]
|
||
},
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"largest_intersections[['title', 'cloudcoverpercentage']]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"These files will all be downloaded to `resources/true_color_image`.\n",
|
||
"Repeated calls to `download` or `download_all` will skip the download process if a product has previously been downloaded."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"application/vnd.jupyter.widget-view+json": {
|
||
"model_id": "ffa7574cb02b467194d79bbe942c9530",
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
},
|
||
"text/plain": [
|
||
"HBox(children=(HTML(value='Downloading'), FloatProgress(value=0.0, max=854267363.0), HTML(value='')))"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"application/vnd.jupyter.widget-view+json": {
|
||
"model_id": "10e7f5bad63548baadc67339fa22bbd3",
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
},
|
||
"text/plain": [
|
||
"HBox(children=(HTML(value='Downloading'), FloatProgress(value=0.0, max=1176239030.0), HTML(value='')))"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"application/vnd.jupyter.widget-view+json": {
|
||
"model_id": "44b6d43e77d14773a7bf31d5b5d9eda3",
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
},
|
||
"text/plain": [
|
||
"HBox(children=(HTML(value='MD5 checksumming'), FloatProgress(value=0.0, max=854267363.0), HTML(value='')))"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"application/vnd.jupyter.widget-view+json": {
|
||
"model_id": "cfc1a3f08ec34a2eb84f3047ba8faa7b",
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
},
|
||
"text/plain": [
|
||
"HBox(children=(HTML(value='Downloading'), FloatProgress(value=0.0, max=862966648.0), HTML(value='')))"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"application/vnd.jupyter.widget-view+json": {
|
||
"model_id": "dee65e2316204b85b1893b1e31e5f881",
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
},
|
||
"text/plain": [
|
||
"HBox(children=(HTML(value='MD5 checksumming'), FloatProgress(value=0.0, max=1176239030.0), HTML(value='')))"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"application/vnd.jupyter.widget-view+json": {
|
||
"model_id": "93bbd44f35e74cf980c8b8591a629556",
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
},
|
||
"text/plain": [
|
||
"HBox(children=(HTML(value='Downloading'), FloatProgress(value=0.0, max=1162711104.0), HTML(value='')))"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"application/vnd.jupyter.widget-view+json": {
|
||
"model_id": "2a4f5f0208074b7698f81e941f9f4ad4",
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
},
|
||
"text/plain": [
|
||
"HBox(children=(HTML(value='MD5 checksumming'), FloatProgress(value=0.0, max=862966648.0), HTML(value='')))"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"application/vnd.jupyter.widget-view+json": {
|
||
"model_id": "d48c83ee84a24e36adcccc572548f7d6",
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
},
|
||
"text/plain": [
|
||
"HBox(children=(HTML(value='MD5 checksumming'), FloatProgress(value=0.0, max=1162711104.0), HTML(value='')))"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"{'958ef7fc-815e-47c6-b323-219de6a91339': {'id': '958ef7fc-815e-47c6-b323-219de6a91339',\n",
|
||
" 'title': 'S2A_MSIL2A_20200617T101031_N0214_R022_T33UUU_20200617T161854',\n",
|
||
" 'size': 854267363,\n",
|
||
" 'md5': 'E8E78FEEBF25D95E50A7E5E0C971C061',\n",
|
||
" 'date': datetime.datetime(2020, 6, 17, 10, 10, 31, 24000),\n",
|
||
" 'footprint': 'POLYGON((12.352510548540328 52.23126993496904,12.408603762795623 52.36271559980042,12.470993716931147 52.50836314366547,12.533637922787934 52.653880456978825,12.596456783078388 52.79937966494399,12.659608391506955 52.944876790325615,12.72334134983589 53.09033052896263,12.783072077326212 53.2261774473976,13.648341514492438 53.24196354764364,13.678544065009483 52.25515074878083,12.352510548540328 52.23126993496904))',\n",
|
||
" 'url': \"https://scihub.copernicus.eu/apihub/odata/v1/Products('958ef7fc-815e-47c6-b323-219de6a91339')/$value\",\n",
|
||
" 'Online': True,\n",
|
||
" 'Creation Date': datetime.datetime(2020, 6, 17, 21, 36, 46, 539000),\n",
|
||
" 'Ingestion Date': datetime.datetime(2020, 6, 17, 21, 35, 56, 836000),\n",
|
||
" 'path': 'resources/true_color_image/S2A_MSIL2A_20200617T101031_N0214_R022_T33UUU_20200617T161854.zip',\n",
|
||
" 'downloaded_bytes': 854267363},\n",
|
||
" 'b64d4450-d999-41dc-9ecb-6d263f322dd3': {'id': 'b64d4450-d999-41dc-9ecb-6d263f322dd3',\n",
|
||
" 'title': 'S2B_MSIL2A_20200615T101559_N0214_R065_T33UUU_20200615T141117',\n",
|
||
" 'size': 1176239030,\n",
|
||
" 'md5': '86D9DB1D0C6C087D66AE28E4A106EF04',\n",
|
||
" 'date': datetime.datetime(2020, 6, 15, 10, 15, 59, 24000),\n",
|
||
" 'footprint': 'POLYGON((12.004760925069467 53.21197782662703,13.648341514492438 53.24196354764364,13.678544065009483 52.25515074878083,12.071595116334858 52.22621087043558,12.004760925069467 53.21197782662703))',\n",
|
||
" 'url': \"https://scihub.copernicus.eu/apihub/odata/v1/Products('b64d4450-d999-41dc-9ecb-6d263f322dd3')/$value\",\n",
|
||
" 'Online': True,\n",
|
||
" 'Creation Date': datetime.datetime(2020, 6, 16, 1, 22, 2, 573000),\n",
|
||
" 'Ingestion Date': datetime.datetime(2020, 6, 16, 1, 21, 9, 378000),\n",
|
||
" 'path': 'resources/true_color_image/S2B_MSIL2A_20200615T101559_N0214_R065_T33UUU_20200615T141117.zip',\n",
|
||
" 'downloaded_bytes': 1176239030},\n",
|
||
" '10190cf1-5690-48a3-b71e-861629703a3f': {'id': '10190cf1-5690-48a3-b71e-861629703a3f',\n",
|
||
" 'title': 'S2B_MSIL2A_20200602T100559_N0214_R022_T33UUU_20200602T135324',\n",
|
||
" 'size': 862966648,\n",
|
||
" 'md5': 'A93C8F7AA12C2396CF57CFD02ADF21A2',\n",
|
||
" 'date': datetime.datetime(2020, 6, 2, 10, 5, 59, 24000),\n",
|
||
" 'footprint': 'POLYGON((12.358321903656456 52.23137459287384,12.415699786858166 52.36633012201262,12.47808001229512 52.51194199175493,12.5407946185535 52.65754848189568,12.603698138951865 52.80313660845604,12.667166015291048 52.94869104851679,12.731188091140115 53.09422646557383,12.789415151489028 53.226293171356296,13.648341514492438 53.24196354764364,13.678544065009483 52.25515074878083,12.358321903656456 52.23137459287384))',\n",
|
||
" 'url': \"https://scihub.copernicus.eu/apihub/odata/v1/Products('10190cf1-5690-48a3-b71e-861629703a3f')/$value\",\n",
|
||
" 'Online': True,\n",
|
||
" 'Creation Date': datetime.datetime(2020, 6, 2, 18, 42, 4, 900000),\n",
|
||
" 'Ingestion Date': datetime.datetime(2020, 6, 2, 18, 40, 43, 331000),\n",
|
||
" 'path': 'resources/true_color_image/S2B_MSIL2A_20200602T100559_N0214_R022_T33UUU_20200602T135324.zip',\n",
|
||
" 'downloaded_bytes': 862966648},\n",
|
||
" 'e385d397-4d1b-4fa2-a1ce-917f420c86dd': {'id': 'e385d397-4d1b-4fa2-a1ce-917f420c86dd',\n",
|
||
" 'title': 'S2A_MSIL2A_20200531T102031_N0214_R065_T33UUU_20200531T134031',\n",
|
||
" 'size': 1162711104,\n",
|
||
" 'md5': '7E74A83DA5EA1176CFB68517E53A343D',\n",
|
||
" 'date': datetime.datetime(2020, 5, 31, 10, 20, 31, 24000),\n",
|
||
" 'footprint': 'POLYGON((12.004760925069467 53.21197782662703,13.648341514492438 53.24196354764364,13.678544065009483 52.25515074878083,12.071595116334858 52.22621087043558,12.004760925069467 53.21197782662703))',\n",
|
||
" 'url': \"https://scihub.copernicus.eu/apihub/odata/v1/Products('e385d397-4d1b-4fa2-a1ce-917f420c86dd')/$value\",\n",
|
||
" 'Online': True,\n",
|
||
" 'Creation Date': datetime.datetime(2020, 5, 31, 20, 22, 5, 475000),\n",
|
||
" 'Ingestion Date': datetime.datetime(2020, 5, 31, 20, 21, 27, 279000),\n",
|
||
" 'path': 'resources/true_color_image/S2A_MSIL2A_20200531T102031_N0214_R065_T33UUU_20200531T134031.zip',\n",
|
||
" 'downloaded_bytes': 1162711104}}"
|
||
]
|
||
},
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"dst_path = resources / 'true_color_image'\n",
|
||
"# we make sure to create the directory at dst_path so the notebook can run\n",
|
||
"# without interruptions\n",
|
||
"dst_path.mkdir(exist_ok=True, parents=True)\n",
|
||
"\n",
|
||
"downloads, _, _ = api.download_all(largest_intersections['uuid'].values, dst_path)\n",
|
||
"downloads"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"`downloads` contains a dictionary, mapping each product's UUID to detailed information about the downloaded product.\n",
|
||
"We can use it to calculate the total download size:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Downloaded 3.78GB\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"downloaded_bytes_total = sum(p['downloaded_bytes'] for p in downloads.values())\n",
|
||
"print(f'Downloaded {(downloaded_bytes_total / 1024 ** 3):.2f}GB')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.8.6"
|
||
},
|
||
"widgets": {
|
||
"application/vnd.jupyter.widget-state+json": {
|
||
"state": {
|
||
"030fa0f7cf4846c0a2ce9c954deb7f74": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "ProgressStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"0480277b6af240d5bd3d085f01cb73a0": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"057beef8c78f45178c6aac5215a7e20d": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"layout": "IPY_MODEL_778ba0bef96d41268de9ca27ac497419",
|
||
"style": "IPY_MODEL_5564876fae474281812813f153b99c84",
|
||
"value": " 863M/863M [02:15<00:00, 6.36MB/s]"
|
||
}
|
||
},
|
||
"0a1bdc1d27c24769ab32227841e18841": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"0df97d4687dc4104a09d1a1682af854a": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "DescriptionStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"0ed349261fed41b7934a2c52e27a382e": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"layout": "IPY_MODEL_9690b9df072f4d19beaaa6bdcb712857",
|
||
"style": "IPY_MODEL_b2d5635cc1444c45a15725890bfea8b1",
|
||
"value": "Downloading: 100%"
|
||
}
|
||
},
|
||
"0f43752cfc9e44e994b14cbf3ef42e01": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"0f66bacd5d994f68b0139819c77e979a": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"105cb06cf9b64e658ab7025ee21900f1": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "ProgressStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"10e7f5bad63548baadc67339fa22bbd3": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HBoxModel",
|
||
"state": {
|
||
"children": [
|
||
"IPY_MODEL_768df12ffae44d939d59e5003cf0f762",
|
||
"IPY_MODEL_ce60dda9f23148bfb0e12d8dae77f6f1",
|
||
"IPY_MODEL_35e7fd1236494b33bec7fc8559cdce63"
|
||
],
|
||
"layout": "IPY_MODEL_2685aa224fd94c7a9ba67f5812b4f7cc"
|
||
}
|
||
},
|
||
"132d8842a47d498482a251f19b1f42dc": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "DescriptionStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"18e52c7a55a84ff7b3814636973cb7b3": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "FloatProgressModel",
|
||
"state": {
|
||
"bar_style": "success",
|
||
"layout": "IPY_MODEL_6e1ff821005143be839fbc30156c5edd",
|
||
"max": 862966648,
|
||
"style": "IPY_MODEL_105cb06cf9b64e658ab7025ee21900f1",
|
||
"value": 862966648
|
||
}
|
||
},
|
||
"192001c7b40a4b7aaaf804e1487473c8": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "DescriptionStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"1be90c67d7a74ef9b6be62791b9dc3ad": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "ProgressStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"2454c57550104364b668d1e17ae0decb": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "ProgressStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"2685aa224fd94c7a9ba67f5812b4f7cc": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"2a4f5f0208074b7698f81e941f9f4ad4": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HBoxModel",
|
||
"state": {
|
||
"children": [
|
||
"IPY_MODEL_d3817cca65ce427bbff1cced5e717422",
|
||
"IPY_MODEL_971e7f915e1d4f95b4ec21ea5021dacd",
|
||
"IPY_MODEL_a605ba30d0024deeb195b4d51cd7e1d6"
|
||
],
|
||
"layout": "IPY_MODEL_9c6499c3fad642319d297716af9365a7"
|
||
}
|
||
},
|
||
"35e7fd1236494b33bec7fc8559cdce63": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"layout": "IPY_MODEL_0a1bdc1d27c24769ab32227841e18841",
|
||
"style": "IPY_MODEL_7341a7619d964cdcad7234335c315bf2",
|
||
"value": " 1.18G/1.18G [02:24<00:00, 8.11MB/s]"
|
||
}
|
||
},
|
||
"3801fab8fd67408dbcd2a8a00463ae96": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "DescriptionStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"38f9cd6f9eca41c6980d233529010dc6": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"layout": "IPY_MODEL_5d54283392e44739b987e858ed7f6fc0",
|
||
"style": "IPY_MODEL_0df97d4687dc4104a09d1a1682af854a",
|
||
"value": " 1.16G/1.16G [00:03<00:00, 304MB/s]"
|
||
}
|
||
},
|
||
"437ba379cb704a7db3e6acc1222870b2": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "FloatProgressModel",
|
||
"state": {
|
||
"bar_style": "success",
|
||
"layout": "IPY_MODEL_739a7b91f56b4c04b05c046cad6d4c21",
|
||
"max": 1176239030,
|
||
"style": "IPY_MODEL_2454c57550104364b668d1e17ae0decb",
|
||
"value": 1176239030
|
||
}
|
||
},
|
||
"4438a63ede394052a602303714b2312f": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "FloatProgressModel",
|
||
"state": {
|
||
"bar_style": "success",
|
||
"layout": "IPY_MODEL_b83446558e12441b843338984b0d2896",
|
||
"max": 1162711104,
|
||
"style": "IPY_MODEL_030fa0f7cf4846c0a2ce9c954deb7f74",
|
||
"value": 1162711104
|
||
}
|
||
},
|
||
"44b6d43e77d14773a7bf31d5b5d9eda3": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HBoxModel",
|
||
"state": {
|
||
"children": [
|
||
"IPY_MODEL_59dfbd82d382438bad8d7c1811f1ce80",
|
||
"IPY_MODEL_9356807c4d4d487d9484f1f1be4df0ea",
|
||
"IPY_MODEL_faa99d33e2e146ef8e53245661ea144e"
|
||
],
|
||
"layout": "IPY_MODEL_b8a18490e53b4004ba4c2293be682ea0"
|
||
}
|
||
},
|
||
"45ee47a749ed42a4a7f668d13685004e": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "DescriptionStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"54133a5344244100808f8ddedaf8c699": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"5564876fae474281812813f153b99c84": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "DescriptionStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"57dc667c767746849c439b5a7083c1de": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"layout": "IPY_MODEL_6e304e1d5e6c41929382eb7cd33ea319",
|
||
"style": "IPY_MODEL_a6ef7ffab4cf4087bbd2982c6cd768e9",
|
||
"value": " 1.16G/1.16G [02:30<00:00, 7.72MB/s]"
|
||
}
|
||
},
|
||
"59dfbd82d382438bad8d7c1811f1ce80": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"layout": "IPY_MODEL_54133a5344244100808f8ddedaf8c699",
|
||
"style": "IPY_MODEL_657c2dccb62249e287c02456473cfb48",
|
||
"value": "MD5 checksumming: 100%"
|
||
}
|
||
},
|
||
"5a43d3811c154968981789c72c4957ba": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "DescriptionStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"5d54283392e44739b987e858ed7f6fc0": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"6074399e2d714378a0e1021a0976681e": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"60a4ab05422f400faf456ae1c7301b19": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"626965eebfc44051b1622b54af15d841": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "FloatProgressModel",
|
||
"state": {
|
||
"bar_style": "success",
|
||
"layout": "IPY_MODEL_e5855dcf1bed4529911415355cb4bdbe",
|
||
"max": 854267363,
|
||
"style": "IPY_MODEL_82b902866a53446aab458dec3cf65c75",
|
||
"value": 854267363
|
||
}
|
||
},
|
||
"657c2dccb62249e287c02456473cfb48": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "DescriptionStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"6af5e81cc7c541e29fb39da149af9d04": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "DescriptionStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"6e1ff821005143be839fbc30156c5edd": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"6e304e1d5e6c41929382eb7cd33ea319": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"6e7cebe627284c54a81667faa64faf69": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"7041149d34684a40b2c1a2025ef969d5": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "ProgressStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"7341a7619d964cdcad7234335c315bf2": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "DescriptionStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"739a7b91f56b4c04b05c046cad6d4c21": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"768df12ffae44d939d59e5003cf0f762": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"layout": "IPY_MODEL_0480277b6af240d5bd3d085f01cb73a0",
|
||
"style": "IPY_MODEL_7af8fe2ce69140c5a4dbb25f69227750",
|
||
"value": "Downloading: 100%"
|
||
}
|
||
},
|
||
"778ba0bef96d41268de9ca27ac497419": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"78b01e0c845a4f74a6e831f71007fe94": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"layout": "IPY_MODEL_b45ae7ba31e24361a2a4cf4845e96483",
|
||
"style": "IPY_MODEL_c031fc9cfeed4baa9309fb2a145b8472",
|
||
"value": "MD5 checksumming: 100%"
|
||
}
|
||
},
|
||
"796122692be245ff805ed22ac420a089": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"7af8fe2ce69140c5a4dbb25f69227750": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "DescriptionStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"82b902866a53446aab458dec3cf65c75": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "ProgressStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"868c6405da554d4f8a22ae4a340a2898": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"86e9ab2c18e849c582c3785a5784f637": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"8879f4aac7c74301aee17c6af7047aac": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"9356807c4d4d487d9484f1f1be4df0ea": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "FloatProgressModel",
|
||
"state": {
|
||
"bar_style": "success",
|
||
"layout": "IPY_MODEL_6e7cebe627284c54a81667faa64faf69",
|
||
"max": 854267363,
|
||
"style": "IPY_MODEL_1be90c67d7a74ef9b6be62791b9dc3ad",
|
||
"value": 854267363
|
||
}
|
||
},
|
||
"93bbd44f35e74cf980c8b8591a629556": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HBoxModel",
|
||
"state": {
|
||
"children": [
|
||
"IPY_MODEL_edf79e62cb3546efa1cab9999b2f5f9f",
|
||
"IPY_MODEL_f08411b0981f47b882562c0b414adca1",
|
||
"IPY_MODEL_57dc667c767746849c439b5a7083c1de"
|
||
],
|
||
"layout": "IPY_MODEL_e8b4c209976b473f98d0032b667af851"
|
||
}
|
||
},
|
||
"9690b9df072f4d19beaaa6bdcb712857": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"971e7f915e1d4f95b4ec21ea5021dacd": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "FloatProgressModel",
|
||
"state": {
|
||
"bar_style": "success",
|
||
"layout": "IPY_MODEL_ff4ef001f58d4ca7a5bfd09f742c8884",
|
||
"max": 862966648,
|
||
"style": "IPY_MODEL_99c3a87acfcc4c28a593933b2e475b0b",
|
||
"value": 862966648
|
||
}
|
||
},
|
||
"99c3a87acfcc4c28a593933b2e475b0b": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "ProgressStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"9c6499c3fad642319d297716af9365a7": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"a14d7c1ac2134356a62ddb6937fd0067": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"a34e9db6099245bea431cc8dc11c7795": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"a605ba30d0024deeb195b4d51cd7e1d6": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"layout": "IPY_MODEL_df76ca165aee4d01bf5e199f73087102",
|
||
"style": "IPY_MODEL_132d8842a47d498482a251f19b1f42dc",
|
||
"value": " 863M/863M [00:02<00:00, 297MB/s]"
|
||
}
|
||
},
|
||
"a6ef7ffab4cf4087bbd2982c6cd768e9": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "DescriptionStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"a7a8f0ed06fb40ef94a72b07ffeb4550": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"aa35865c00cf4dbf9ebc94ff4f8e6d19": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"layout": "IPY_MODEL_6074399e2d714378a0e1021a0976681e",
|
||
"style": "IPY_MODEL_192001c7b40a4b7aaaf804e1487473c8",
|
||
"value": " 1.18G/1.18G [01:50<00:00, 10.6MB/s]"
|
||
}
|
||
},
|
||
"b0647fa296f94c00b3fb055a3e38ca92": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "DescriptionStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"b2d5635cc1444c45a15725890bfea8b1": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "DescriptionStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"b45ae7ba31e24361a2a4cf4845e96483": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"b742da7f43f94d09a4d0911c67dd31c5": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"b83446558e12441b843338984b0d2896": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"b8a18490e53b4004ba4c2293be682ea0": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"c031fc9cfeed4baa9309fb2a145b8472": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "DescriptionStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"cafca4ba005e4dc19daf84bf9d27f1a2": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "DescriptionStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"cbb3e964b2c54451a8886954282ba2b0": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"ce60dda9f23148bfb0e12d8dae77f6f1": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "FloatProgressModel",
|
||
"state": {
|
||
"bar_style": "success",
|
||
"layout": "IPY_MODEL_86e9ab2c18e849c582c3785a5784f637",
|
||
"max": 1176239030,
|
||
"style": "IPY_MODEL_e4c0cde164c04d13bf5ac5562a483150",
|
||
"value": 1176239030
|
||
}
|
||
},
|
||
"cfc1a3f08ec34a2eb84f3047ba8faa7b": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HBoxModel",
|
||
"state": {
|
||
"children": [
|
||
"IPY_MODEL_d8445bb8786a4ccaa958b40839ef9556",
|
||
"IPY_MODEL_18e52c7a55a84ff7b3814636973cb7b3",
|
||
"IPY_MODEL_057beef8c78f45178c6aac5215a7e20d"
|
||
],
|
||
"layout": "IPY_MODEL_868c6405da554d4f8a22ae4a340a2898"
|
||
}
|
||
},
|
||
"d3817cca65ce427bbff1cced5e717422": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"layout": "IPY_MODEL_cbb3e964b2c54451a8886954282ba2b0",
|
||
"style": "IPY_MODEL_cafca4ba005e4dc19daf84bf9d27f1a2",
|
||
"value": "MD5 checksumming: 100%"
|
||
}
|
||
},
|
||
"d48c83ee84a24e36adcccc572548f7d6": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HBoxModel",
|
||
"state": {
|
||
"children": [
|
||
"IPY_MODEL_e9019e90301546ba8ee2afeeaca29c46",
|
||
"IPY_MODEL_4438a63ede394052a602303714b2312f",
|
||
"IPY_MODEL_38f9cd6f9eca41c6980d233529010dc6"
|
||
],
|
||
"layout": "IPY_MODEL_a34e9db6099245bea431cc8dc11c7795"
|
||
}
|
||
},
|
||
"d8445bb8786a4ccaa958b40839ef9556": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"layout": "IPY_MODEL_a14d7c1ac2134356a62ddb6937fd0067",
|
||
"style": "IPY_MODEL_3801fab8fd67408dbcd2a8a00463ae96",
|
||
"value": "Downloading: 100%"
|
||
}
|
||
},
|
||
"dee65e2316204b85b1893b1e31e5f881": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HBoxModel",
|
||
"state": {
|
||
"children": [
|
||
"IPY_MODEL_78b01e0c845a4f74a6e831f71007fe94",
|
||
"IPY_MODEL_437ba379cb704a7db3e6acc1222870b2",
|
||
"IPY_MODEL_aa35865c00cf4dbf9ebc94ff4f8e6d19"
|
||
],
|
||
"layout": "IPY_MODEL_a7a8f0ed06fb40ef94a72b07ffeb4550"
|
||
}
|
||
},
|
||
"df76ca165aee4d01bf5e199f73087102": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"e4c0cde164c04d13bf5ac5562a483150": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "ProgressStyleModel",
|
||
"state": {
|
||
"description_width": ""
|
||
}
|
||
},
|
||
"e5855dcf1bed4529911415355cb4bdbe": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"e8b4c209976b473f98d0032b667af851": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"e9019e90301546ba8ee2afeeaca29c46": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"layout": "IPY_MODEL_b742da7f43f94d09a4d0911c67dd31c5",
|
||
"style": "IPY_MODEL_45ee47a749ed42a4a7f668d13685004e",
|
||
"value": "MD5 checksumming: 100%"
|
||
}
|
||
},
|
||
"e9a779509d6b4f839b2700ae207486fc": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"layout": "IPY_MODEL_0f66bacd5d994f68b0139819c77e979a",
|
||
"style": "IPY_MODEL_5a43d3811c154968981789c72c4957ba",
|
||
"value": " 854M/854M [01:56<00:00, 7.32MB/s]"
|
||
}
|
||
},
|
||
"edf79e62cb3546efa1cab9999b2f5f9f": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"layout": "IPY_MODEL_60a4ab05422f400faf456ae1c7301b19",
|
||
"style": "IPY_MODEL_b0647fa296f94c00b3fb055a3e38ca92",
|
||
"value": "Downloading: 100%"
|
||
}
|
||
},
|
||
"f08411b0981f47b882562c0b414adca1": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "FloatProgressModel",
|
||
"state": {
|
||
"bar_style": "success",
|
||
"layout": "IPY_MODEL_8879f4aac7c74301aee17c6af7047aac",
|
||
"max": 1162711104,
|
||
"style": "IPY_MODEL_7041149d34684a40b2c1a2025ef969d5",
|
||
"value": 1162711104
|
||
}
|
||
},
|
||
"faa99d33e2e146ef8e53245661ea144e": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HTMLModel",
|
||
"state": {
|
||
"layout": "IPY_MODEL_0f43752cfc9e44e994b14cbf3ef42e01",
|
||
"style": "IPY_MODEL_6af5e81cc7c541e29fb39da149af9d04",
|
||
"value": " 854M/854M [00:04<00:00, 204MB/s]"
|
||
}
|
||
},
|
||
"ff4ef001f58d4ca7a5bfd09f742c8884": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_module_version": "1.2.0",
|
||
"model_name": "LayoutModel",
|
||
"state": {}
|
||
},
|
||
"ffa7574cb02b467194d79bbe942c9530": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_module_version": "1.5.0",
|
||
"model_name": "HBoxModel",
|
||
"state": {
|
||
"children": [
|
||
"IPY_MODEL_0ed349261fed41b7934a2c52e27a382e",
|
||
"IPY_MODEL_626965eebfc44051b1622b54af15d841",
|
||
"IPY_MODEL_e9a779509d6b4f839b2700ae207486fc"
|
||
],
|
||
"layout": "IPY_MODEL_796122692be245ff805ed22ac420a089"
|
||
}
|
||
}
|
||
},
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
}
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 4
|
||
}
|