{ "cells": [ { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "kOn6Dorgx2wk" }, "source": [ "--------\n", "\n", "# Time series of vegetation indices\n", "\n", "--------\n", "\n", "**Short description**\n", "\n", "This notebook demonstrates a general usecase for the SpaceSense library.\n", "\n", "In this notebook, you will search for, select, and obtain Sentinel-2 data and vegetation indices, and performa simple time series analysis.\n", "\n", "--------\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "keC_14irx2wq" }, "source": [ "### 1 - Import spacesense object(s) and other dependencies" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "colab": {}, "colab_type": "code", "id": "l1WpZ6RSx2wr" }, "outputs": [], "source": [ "from spacesense import Client\n", "import matplotlib.pyplot as plt\n", "import json\n", "\n", "import os\n", "if \"SS_API_KEY\" not in os.environ:\n", " from getpass import getpass\n", " api_key = getpass('Enter your api key : ')\n", " os.environ[\"SS_API_KEY\"] = api_key" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2 - Define AOI and output options\n", "\n", "The GeoJSON of this AOI, containing an agricultural field in Sardinia, can be downloaded [here](../resources/aois/sardinia_field.geojson)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Define the AOI\n", "with open(\"../resources/aois/sardinia_field.geojson\", mode=\"r\") as file:\n", " aoi = json.load(file)\n", "\n", "# Get an instance of the SpaceSense Client object\n", "client = Client(id=\"s2_time_series\")\n", "\n", "# Enable to save data in local files\n", "client.enable_local_output()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3 - Search S2" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | id | \n", "date | \n", "tile | \n", "valid_pixel_percentage | \n", "platform | \n", "relative_orbit_number | \n", "product_id | \n", "datetime | \n", "swath_coverage_percentage | \n", "no_data | \n", "cloud_shadows | \n", "vegetation | \n", "not_vegetated | \n", "water | \n", "cloud_medium_probability | \n", "cloud_high_probability | \n", "thin_cirrus | \n", "snow | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
80 | \n", "S2B_32TMK_20210108_0_L2A | \n", "2021-01-08 | \n", "32TMK | \n", "50.73 | \n", "sentinel-2b | \n", "022 | \n", "S2B_MSIL2A_20210108T101319_N0214_R022_T32TMK_2... | \n", "2021-01-08T10:19:47Z | \n", "100.0 | \n", "0.0 | \n", "0.00 | \n", "0.00 | \n", "0.00 | \n", "0.0 | \n", "49.27 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
79 | \n", "S2A_32TMK_20210116_0_L2A | \n", "2021-01-16 | \n", "32TMK | \n", "100.00 | \n", "sentinel-2a | \n", "065 | \n", "S2A_MSIL2A_20210116T102351_N0214_R065_T32TMK_2... | \n", "2021-01-16T10:29:44Z | \n", "100.0 | \n", "0.0 | \n", "0.00 | \n", "97.56 | \n", "0.00 | \n", "0.0 | \n", "0.00 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
78 | \n", "S2B_32TMK_20210118_0_L2A | \n", "2021-01-18 | \n", "32TMK | \n", "100.00 | \n", "sentinel-2b | \n", "022 | \n", "S2B_MSIL2A_20210118T101249_N0214_R022_T32TMK_2... | \n", "2021-01-18T10:19:47Z | \n", "100.0 | \n", "0.0 | \n", "0.00 | \n", "96.59 | \n", "0.49 | \n", "0.0 | \n", "0.00 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
77 | \n", "S2A_32TMK_20210123_0_L2A | \n", "2021-01-23 | \n", "32TMK | \n", "100.00 | \n", "sentinel-2a | \n", "022 | \n", "S2A_MSIL2A_20210123T101321_N0214_R022_T32TMK_2... | \n", "2021-01-23T10:19:48Z | \n", "100.0 | \n", "0.0 | \n", "0.00 | \n", "97.40 | \n", "0.00 | \n", "0.0 | \n", "0.00 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
76 | \n", "S2A_32TMK_20210126_0_L2A | \n", "2021-01-26 | \n", "32TMK | \n", "100.00 | \n", "sentinel-2a | \n", "065 | \n", "S2A_MSIL2A_20210126T102311_N0214_R065_T32TMK_2... | \n", "2021-01-26T10:29:44Z | \n", "100.0 | \n", "0.0 | \n", "0.00 | \n", "97.40 | \n", "0.00 | \n", "0.0 | \n", "0.00 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
4 | \n", "S2B_32TMK_20211127_0_L2A | \n", "2021-11-27 | \n", "32TMK | \n", "89.81 | \n", "sentinel-2b | \n", "065 | \n", "S2B_MSIL2A_20211127T102259_N0301_R065_T32TMK_2... | \n", "2021-11-27T10:29:39Z | \n", "100.0 | \n", "0.0 | \n", "10.19 | \n", "49.81 | \n", "7.91 | \n", "0.0 | \n", "0.00 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
3 | \n", "S2A_32TMK_20211212_0_L2A | \n", "2021-12-12 | \n", "32TMK | \n", "100.00 | \n", "sentinel-2a | \n", "065 | \n", "S2A_MSIL2A_20211212T102431_N0301_R065_T32TMK_2... | \n", "2021-12-12T10:29:43Z | \n", "100.0 | \n", "0.0 | \n", "0.00 | \n", "64.09 | \n", "7.70 | \n", "0.0 | \n", "0.00 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
2 | \n", "S2B_32TMK_20211217_0_L2A | \n", "2021-12-17 | \n", "32TMK | \n", "100.00 | \n", "sentinel-2b | \n", "065 | \n", "S2B_MSIL2A_20211217T102329_N0301_R065_T32TMK_2... | \n", "2021-12-17T10:29:37Z | \n", "100.0 | \n", "0.0 | \n", "0.00 | \n", "65.58 | \n", "18.54 | \n", "0.0 | \n", "0.00 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
1 | \n", "S2A_32TMK_20211219_0_L2A | \n", "2021-12-19 | \n", "32TMK | \n", "100.00 | \n", "sentinel-2a | \n", "022 | \n", "S2A_MSIL2A_20211219T101431_N0301_R022_T32TMK_2... | \n", "2021-12-19T10:19:48Z | \n", "100.0 | \n", "0.0 | \n", "0.00 | \n", "67.48 | \n", "10.16 | \n", "0.0 | \n", "0.00 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
0 | \n", "S2B_32TMK_20211224_0_L2A | \n", "2021-12-24 | \n", "32TMK | \n", "94.91 | \n", "sentinel-2b | \n", "022 | \n", "S2B_MSIL2A_20211224T101329_N0301_R022_T32TMK_2... | \n", "2021-12-24T10:19:43Z | \n", "100.0 | \n", "0.0 | \n", "5.09 | \n", "44.01 | \n", "0.00 | \n", "0.0 | \n", "0.00 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
81 rows × 18 columns
\n", "\n", " | id | \n", "date | \n", "tile | \n", "valid_pixel_percentage | \n", "platform | \n", "relative_orbit_number | \n", "product_id | \n", "datetime | \n", "swath_coverage_percentage | \n", "no_data | \n", "cloud_shadows | \n", "vegetation | \n", "not_vegetated | \n", "water | \n", "cloud_medium_probability | \n", "cloud_high_probability | \n", "thin_cirrus | \n", "snow | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
79 | \n", "S2A_32TMK_20210116_0_L2A | \n", "2021-01-16 | \n", "32TMK | \n", "100.00 | \n", "sentinel-2a | \n", "065 | \n", "S2A_MSIL2A_20210116T102351_N0214_R065_T32TMK_2... | \n", "2021-01-16T10:29:44Z | \n", "100.0 | \n", "0.0 | \n", "0.00 | \n", "97.56 | \n", "0.00 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
78 | \n", "S2B_32TMK_20210118_0_L2A | \n", "2021-01-18 | \n", "32TMK | \n", "100.00 | \n", "sentinel-2b | \n", "022 | \n", "S2B_MSIL2A_20210118T101249_N0214_R022_T32TMK_2... | \n", "2021-01-18T10:19:47Z | \n", "100.0 | \n", "0.0 | \n", "0.00 | \n", "96.59 | \n", "0.49 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
77 | \n", "S2A_32TMK_20210123_0_L2A | \n", "2021-01-23 | \n", "32TMK | \n", "100.00 | \n", "sentinel-2a | \n", "022 | \n", "S2A_MSIL2A_20210123T101321_N0214_R022_T32TMK_2... | \n", "2021-01-23T10:19:48Z | \n", "100.0 | \n", "0.0 | \n", "0.00 | \n", "97.40 | \n", "0.00 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
76 | \n", "S2A_32TMK_20210126_0_L2A | \n", "2021-01-26 | \n", "32TMK | \n", "100.00 | \n", "sentinel-2a | \n", "065 | \n", "S2A_MSIL2A_20210126T102311_N0214_R065_T32TMK_2... | \n", "2021-01-26T10:29:44Z | \n", "100.0 | \n", "0.0 | \n", "0.00 | \n", "97.40 | \n", "0.00 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
75 | \n", "S2A_32TMK_20210205_0_L2A | \n", "2021-02-05 | \n", "32TMK | \n", "100.00 | \n", "sentinel-2a | \n", "065 | \n", "S2A_MSIL2A_20210205T102221_N0214_R065_T32TMK_2... | \n", "2021-02-05T10:29:43Z | \n", "100.0 | \n", "0.0 | \n", "0.00 | \n", "97.40 | \n", "0.16 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
4 | \n", "S2B_32TMK_20211127_0_L2A | \n", "2021-11-27 | \n", "32TMK | \n", "89.81 | \n", "sentinel-2b | \n", "065 | \n", "S2B_MSIL2A_20211127T102259_N0301_R065_T32TMK_2... | \n", "2021-11-27T10:29:39Z | \n", "100.0 | \n", "0.0 | \n", "10.19 | \n", "49.81 | \n", "7.91 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
3 | \n", "S2A_32TMK_20211212_0_L2A | \n", "2021-12-12 | \n", "32TMK | \n", "100.00 | \n", "sentinel-2a | \n", "065 | \n", "S2A_MSIL2A_20211212T102431_N0301_R065_T32TMK_2... | \n", "2021-12-12T10:29:43Z | \n", "100.0 | \n", "0.0 | \n", "0.00 | \n", "64.09 | \n", "7.70 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
2 | \n", "S2B_32TMK_20211217_0_L2A | \n", "2021-12-17 | \n", "32TMK | \n", "100.00 | \n", "sentinel-2b | \n", "065 | \n", "S2B_MSIL2A_20211217T102329_N0301_R065_T32TMK_2... | \n", "2021-12-17T10:29:37Z | \n", "100.0 | \n", "0.0 | \n", "0.00 | \n", "65.58 | \n", "18.54 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
1 | \n", "S2A_32TMK_20211219_0_L2A | \n", "2021-12-19 | \n", "32TMK | \n", "100.00 | \n", "sentinel-2a | \n", "022 | \n", "S2A_MSIL2A_20211219T101431_N0301_R022_T32TMK_2... | \n", "2021-12-19T10:19:48Z | \n", "100.0 | \n", "0.0 | \n", "0.00 | \n", "67.48 | \n", "10.16 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
0 | \n", "S2B_32TMK_20211224_0_L2A | \n", "2021-12-24 | \n", "32TMK | \n", "94.91 | \n", "sentinel-2b | \n", "022 | \n", "S2B_MSIL2A_20211224T101329_N0301_R022_T32TMK_2... | \n", "2021-12-24T10:19:43Z | \n", "100.0 | \n", "0.0 | \n", "5.09 | \n", "44.01 | \n", "0.00 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
79 rows × 18 columns
\n", "<xarray.Dataset>\n", "Dimensions: (time: 79, y: 43, x: 88)\n", "Coordinates:\n", " * time (time) datetime64[ns] 2021-01-16 2021-01-18 ... 2021-12-24\n", " * y (y) float32 39.83 39.83 39.83 39.83 ... 39.83 39.83 39.83 39.83\n", " * x (x) float64 8.623 8.623 8.623 8.623 8.623 ... 8.63 8.63 8.63 8.63\n", "Data variables:\n", " S2_B02 (time, y, x) float32 0.0 0.0123 0.0144 0.0126 ... 0.0247 0.0265 0.0\n", " S2_B04 (time, y, x) float32 0.0 0.0208 0.0214 0.021 ... 0.0455 0.0449 0.0\n", " S2_B08 (time, y, x) float32 0.0 0.1198 0.1394 0.1282 ... 0.1478 0.1556 0.0\n", " S2_NDVI (time, y, x) float32 nan 0.7041 0.7338 0.7185 ... 0.5292 0.5521 nan\n", " S2_LAI (time, y, x) float32 0.4768 1.603 1.801 ... 1.773 1.856 0.4768\n", "Attributes:\n", " crs: +init=epsg:4326\n", " transform: [ 8.98360017e-05 0.00000000e+00 8.62245945e+00 0.000...\n", " res: [8.98360017e-05 9.04414549e-05]\n", " ulx, uly: [ 8.62245945 39.83104984]\n", " s2_data_lineage: {"Data origin": "S3 bucket (ARN=arn:aws:s3:::sentinel-c...\n", " additional_info: {'Info': 'You can put any additional information, such ...