{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Download Process\n", "\n", "These notebooks contain information about querying and downloading data of the Sentinel-2 mission from the Copernicus Open Access Hub.\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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
place_idosm_typeosm_iddisplay_nameplace_rankcategorytypeimportanceicongeometry
0574401node240109189Berlin, 10117, Deutschland15placecity0.897539https://nominatim.openstreetmap.org/ui/mapicon...POINT (13.38886 52.51704)
1256375666relation62422Berlin, Deutschland8boundaryadministrative0.897539https://nominatim.openstreetmap.org/ui/mapicon...MULTIPOLYGON (((13.08835 52.41963, 13.09021 52...
21253688node313826576Berlin, Tauentzienstraße, Charlottenburg, Char...30tourismartwork0.315372https://nominatim.openstreetmap.org/ui/mapicon...POINT (13.33864 52.50340)
3225671node50798110Berlin, Seedorf, Trave-Land, Segeberg, Schlesw...19placevillage0.272651https://nominatim.openstreetmap.org/ui/mapicon...POINT (10.44613 54.03636)
4107621118way68276545Berlin, Potsdam, Klein Bennebek, Kropp-Stapelh...26highwayunclassified0.210000NoneLINESTRING (9.41929 54.40283, 9.42072 54.40343...
\n", "
" ], "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": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "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": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "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": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "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": [ "" ], "text/plain": [ "" ] }, "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=:' syntax is deprecated. ':' 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": [ "`plot_downloaded_products` is a helper that allows us to draw downloaded products along with a designated area of interest.\n", "\n", "We can use it to get a quick visual impression of the result:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from sentinel_helpers import plot_downloaded_products\n", "ax = plot_downloaded_products(gdf, berlin, figsize=(9,9))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```{note}\n", "The geometrical shape of the captured data depends on where the Sentinel-2 satellite was in orbit when it crossed the area of interest.\n", "For an in-depth analysis see [](01c Coverage Analysis.ipynb).\n", "```" ] }, { "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 the intersection of a product's tile and our area of interest)\n", "- Cloud coverage (the less the better)" ] }, { "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
titlelinklink_alternativelink_iconsummaryondemandbeginpositionendpositioningestiondateorbitnumber...osm_typeosm_iddisplay_nameplace_rankcategorytypeimportanceicongeometryarea
1S2A_MSIL2A_20200617T101031_N0214_R022_T33UUU_2...https://scihub.copernicus.eu/apihub/odata/v1/P...https://scihub.copernicus.eu/apihub/odata/v1/P...https://scihub.copernicus.eu/apihub/odata/v1/P...Date: 2020-06-17T10:10:31.024Z, Instrument: MS...false2020-06-17 10:10:31.0242020-06-17 10:10:31.0242020-06-17 21:35:56.83626045...relation62422Berlin, Deutschland8boundaryadministrative0.897539https://nominatim.openstreetmap.org/ui/mapicon...MULTIPOLYGON (((215331.937 168288.512, 216047....8.535962e+08
3S2B_MSIL2A_20200615T101559_N0214_R065_T33UUU_2...https://scihub.copernicus.eu/apihub/odata/v1/P...https://scihub.copernicus.eu/apihub/odata/v1/P...https://scihub.copernicus.eu/apihub/odata/v1/P...Date: 2020-06-15T10:15:59.024Z, Instrument: MS...false2020-06-15 10:15:59.0242020-06-15 10:15:59.0242020-06-16 01:21:09.37817108...relation62422Berlin, Deutschland8boundaryadministrative0.897539https://nominatim.openstreetmap.org/ui/mapicon...MULTIPOLYGON (((215331.937 168288.512, 216047....8.535962e+08
10S2B_MSIL2A_20200602T100559_N0214_R022_T33UUU_2...https://scihub.copernicus.eu/apihub/odata/v1/P...https://scihub.copernicus.eu/apihub/odata/v1/P...https://scihub.copernicus.eu/apihub/odata/v1/P...Date: 2020-06-02T10:05:59.024Z, Instrument: MS...false2020-06-02 10:05:59.0242020-06-02 10:05:59.0242020-06-02 18:40:43.33116922...relation62422Berlin, Deutschland8boundaryadministrative0.897539https://nominatim.openstreetmap.org/ui/mapicon...MULTIPOLYGON (((215331.937 168288.512, 216047....8.535962e+08
11S2A_MSIL2A_20200531T102031_N0214_R065_T33UUU_2...https://scihub.copernicus.eu/apihub/odata/v1/P...https://scihub.copernicus.eu/apihub/odata/v1/P...https://scihub.copernicus.eu/apihub/odata/v1/P...Date: 2020-05-31T10:20:31.024Z, Instrument: MS...false2020-05-31 10:20:31.0242020-05-31 10:20:31.0242020-05-31 20:21:27.27925802...relation62422Berlin, Deutschland8boundaryadministrative0.897539https://nominatim.openstreetmap.org/ui/mapicon...MULTIPOLYGON (((215331.937 168288.512, 216047....8.535962e+08
\n", "

4 rows × 46 columns

\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
titlecloudcoverpercentage
1S2A_MSIL2A_20200617T101031_N0214_R022_T33UUU_2...24.374344
3S2B_MSIL2A_20200615T101559_N0214_R065_T33UUU_2...3.626466
10S2B_MSIL2A_20200602T100559_N0214_R022_T33UUU_2...0.345483
11S2A_MSIL2A_20200531T102031_N0214_R065_T33UUU_2...16.512980
\n", "
" ], "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": { "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': 0},\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': 0},\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': 0},\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': 0}}" ] }, "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 0.00GB\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": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }