{ "cells": [ { "cell_type": "markdown", "id": "7019e862-bd9f-4ca4-a757-8e611273a96a", "metadata": {}, "source": [ "## Accessing Sentinel-1 RTC data with the Planetary Computer STAC API\n", "\n", "The [Sentinel 1 RTC](https://planetarycomputer.microsoft.com/dataset/sentinel-1-rtc) product in this collection is a radiometrically terrain corrected product derived from the [Sentinel-1 Ground Range Detected (GRD)](https://planetarycomputer.microsoft.com/dataset/sentinel-1-grd) Level-1 products produced by the European Space Agency.\n", "\n", "### Environment setup\n", "\n", "Running this notebook requires an API key.\n", "\n", "* The [Planetary Computer Hub](https://planetarycomputer.microsoft.com/compute) is pre-configured to use your API key.\n", "* To use your API key locally, set the environment variable `PC_SDK_SUBSCRIPTION_KEY` or use `planetary_computer.settings.set_subscription_key()`\n", "\n", "See [when an account is needed](https://planetarycomputer.microsoft.com/docs/concepts/sas/#when-an-account-is-needed) for more, and [request an account](http://planetarycomputer.microsoft.com/account/request) if needed." ] }, { "cell_type": "code", "execution_count": 1, "id": "46f64cc1-9d37-4603-afdc-39a0925f282a", "metadata": {}, "outputs": [], "source": [ "import ipyleaflet\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pystac\n", "import pystac_client\n", "import planetary_computer\n", "import requests\n", "import rich.table\n", "\n", "from IPython.display import Image" ] }, { "cell_type": "markdown", "id": "6d8c7118-8a47-41b9-a4be-39d83f8db19a", "metadata": {}, "source": [ "### Data access\n", "\n", "The datasets hosted by the Planetary Computer are available from [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/). We'll use [pystac-client](https://pystac-client.readthedocs.io/) to search the Planetary Computer's [STAC API](https://planetarycomputer.microsoft.com/api/stac/v1/docs) for the subset of the data that we care about, and then we'll load the data directly from Azure Blob Storage. We'll specify a `modifier` so that we can access the data stored in the Planetary Computer's private Blob Storage Containers. See [Reading from the STAC API](https://planetarycomputer.microsoft.com/docs/quickstarts/reading-stac/) and [Using tokens for data access](https://planetarycomputer.microsoft.com/docs/concepts/sas/) for more." ] }, { "cell_type": "code", "execution_count": 2, "id": "bfb5c95a-6c43-4d0f-8a86-07dc3495130d", "metadata": {}, "outputs": [], "source": [ "catalog = pystac_client.Client.open(\n", " \"https://planetarycomputer.microsoft.com/api/stac/v1\",\n", " modifier=planetary_computer.sign_inplace,\n", ")" ] }, { "cell_type": "markdown", "id": "b39546f7-f49e-4a0e-856f-919e81432922", "metadata": {}, "source": [ "### Choose an area and time of interest\n", "\n", "We'll search for assets acquired over Panama in the first week of May, 2022. You can use the [Planetary Computer Explorer](https://planetarycomputer.microsoft.com/explore?c=-79.6735%2C9.0461&z=9.91&ae=0&v=2&d=sentinel-1-rtc&s=false%3A%3A100%3A%3Atrue&m=Most+recent+-+VV%2C+VH&r=VV%2C+VH+False-color+composite) to find areas of interest." ] }, { "cell_type": "code", "execution_count": 3, "id": "c44f5746-36b8-48a6-bfc3-fabab2415630", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 3 items\n" ] } ], "source": [ "bbox = [-80.11, 8.71, -79.24, 9.38]\n", "search = catalog.search(\n", " collections=[\"sentinel-1-rtc\"], bbox=bbox, datetime=\"2022-05-02/2022-05-09\"\n", ")\n", "items = search.item_collection()\n", "print(f\"Found {len(items)} items\")\n", "item = items[0]" ] }, { "cell_type": "markdown", "id": "78cd0967-b9f2-4c60-bdac-62fe4e8e8494", "metadata": {}, "source": [ "The `rendered_preview` asset lets us quickly visualize the data. For Seninel-1 RTC, this produces a false-color composite from a combination of the VV and VH bands." ] }, { "cell_type": "code", "execution_count": 4, "id": "71257d3d-5733-417b-9b40-a947686eca9a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Image(url=item.assets[\"rendered_preview\"].href)" ] }, { "cell_type": "markdown", "id": "a1f65c4b-c308-451c-9b44-46ddce4e5981", "metadata": {}, "source": [ "### Inspect the STAC metadata\n", "\n", "The STAC metadata includes many useful pieces of metadata, including metadata from the [SAR](https://github.com/stac-extensions/sar) and [Satellite](https://github.com/stac-extensions/sat) extensions." ] }, { "cell_type": "code", "execution_count": 5, "id": "d7d56d6e-789b-4c8f-8acc-b5a04f19d4f0", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n",
       "┃ key                                    value                                                       ┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n",
       "│ constellation                         │ Sentinel-1                                                  │\n",
       "│ datetime                              │ 2022-05-04T23:32:10.313109Z                                 │\n",
       "│ end_datetime                          │ 2022-05-04 23:32:22.812028+00:00                            │\n",
       "│ platform                              │ SENTINEL-1A                                                 │\n",
       "│ proj:bbox                             │ [519450.0, 935520.0, 800080.0, 1153060.0]                   │\n",
       "│ proj:epsg                             │ 32617                                                       │\n",
       "│ proj:shape                            │ [28806, 21907]                                              │\n",
       "│ proj:transform                        │ [10.0, 0.0, 519430.0, 0.0, -10.0, 1154570.0, 0.0, 0.0, 1.0] │\n",
       "│ s1:datatake_id                        │ 337052                                                      │\n",
       "│ s1:instrument_configuration_ID        │ 7                                                           │\n",
       "│ s1:orbit_source                       │ RESORB                                                      │\n",
       "│ s1:processing_level                   │ 1                                                           │\n",
       "│ s1:product_timeliness                 │ Fast-24h                                                    │\n",
       "│ s1:resolution                         │ high                                                        │\n",
       "│ s1:shape                              │ [28806, 21907]                                              │\n",
       "│ s1:slice_number                       │ 2                                                           │\n",
       "│ s1:total_slices                       │ 29                                                          │\n",
       "│ sar:center_frequency                  │ 5.405                                                       │\n",
       "│ sar:frequency_band                    │ C                                                           │\n",
       "│ sar:instrument_mode                   │ IW                                                          │\n",
       "│ sar:looks_azimuth                     │ 1                                                           │\n",
       "│ sar:looks_equivalent_number           │ 4.4                                                         │\n",
       "│ sar:looks_range                       │ 5                                                           │\n",
       "│ sar:observation_direction             │ right                                                       │\n",
       "│ sar:pixel_spacing_azimuth             │ 10                                                          │\n",
       "│ sar:pixel_spacing_range               │ 10                                                          │\n",
       "│ sar:polarizations                     │ ['VV', 'VH']                                                │\n",
       "│ sar:product_type                      │ GRD                                                         │\n",
       "│ sar:resolution_azimuth                │ 22                                                          │\n",
       "│ sar:resolution_range                  │ 20                                                          │\n",
       "│ sat:absolute_orbit                    │ 43068                                                       │\n",
       "│ sat:orbit_state                       │ ascending                                                   │\n",
       "│ sat:platform_international_designator │ 2014-016A                                                   │\n",
       "│ sat:relative_orbit                    │ 121                                                         │\n",
       "│ start_datetime                        │ 2022-05-04 23:31:57.814190+00:00                            │\n",
       "└───────────────────────────────────────┴─────────────────────────────────────────────────────────────┘\n",
       "
\n" ], "text/plain": [ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n", "┃\u001b[1m \u001b[0m\u001b[1mkey \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mvalue \u001b[0m\u001b[1m \u001b[0m┃\n", "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n", "│ constellation │ Sentinel-1 │\n", "│ datetime │ 2022-05-04T23:32:10.313109Z │\n", "│ end_datetime │ 2022-05-04 23:32:22.812028+00:00 │\n", "│ platform │ SENTINEL-1A │\n", "│ proj:bbox │ [519450.0, 935520.0, 800080.0, 1153060.0] │\n", "│ proj:epsg │ 32617 │\n", "│ proj:shape │ [28806, 21907] │\n", "│ proj:transform │ [10.0, 0.0, 519430.0, 0.0, -10.0, 1154570.0, 0.0, 0.0, 1.0] │\n", "│ s1:datatake_id │ 337052 │\n", "│ s1:instrument_configuration_ID │ 7 │\n", "│ s1:orbit_source │ RESORB │\n", "│ s1:processing_level │ 1 │\n", "│ s1:product_timeliness │ Fast-24h │\n", "│ s1:resolution │ high │\n", "│ s1:shape │ [28806, 21907] │\n", "│ s1:slice_number │ 2 │\n", "│ s1:total_slices │ 29 │\n", "│ sar:center_frequency │ 5.405 │\n", "│ sar:frequency_band │ C │\n", "│ sar:instrument_mode │ IW │\n", "│ sar:looks_azimuth │ 1 │\n", "│ sar:looks_equivalent_number │ 4.4 │\n", "│ sar:looks_range │ 5 │\n", "│ sar:observation_direction │ right │\n", "│ sar:pixel_spacing_azimuth │ 10 │\n", "│ sar:pixel_spacing_range │ 10 │\n", "│ sar:polarizations │ ['VV', 'VH'] │\n", "│ sar:product_type │ GRD │\n", "│ sar:resolution_azimuth │ 22 │\n", "│ sar:resolution_range │ 20 │\n", "│ sat:absolute_orbit │ 43068 │\n", "│ sat:orbit_state │ ascending │\n", "│ sat:platform_international_designator │ 2014-016A │\n", "│ sat:relative_orbit │ 121 │\n", "│ start_datetime │ 2022-05-04 23:31:57.814190+00:00 │\n", "└───────────────────────────────────────┴─────────────────────────────────────────────────────────────┘\n" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table = rich.table.Table(\"key\", \"value\")\n", "for k, v in sorted(item.properties.items()):\n", " table.add_row(k, str(v))\n", "\n", "table" ] }, { "cell_type": "markdown", "id": "d1f86006-273f-4a1d-bd15-28fef1cabc72", "metadata": {}, "source": [ "The data assets on every Sentinel-1 RTC item will be some combination of `hh`, `hv`, `vh`, and `vv`. These represent the terrain-corrected gamma nought values of a signal transmitted in one polarization (\"h\" or \"v\") and received in another (\"h\" or \"v\"). The `sar:polarizations` field indicates which assets are available." ] }, { "cell_type": "code", "execution_count": 6, "id": "ff294138-ddb2-4f0c-a393-5ef1e6d79527", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['VV', 'VH']" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "item.properties[\"sar:polarizations\"]" ] }, { "cell_type": "markdown", "id": "5d563940-9143-42ac-8ee8-fc010e27a947", "metadata": {}, "source": [ "### Visualize the assets\n", "\n", "Next, we'll load the `vv` data into [xarray](https://xarray.pydata.org/) and plot the results. We'll use [Dask](http://dask.org/) to load the data in parallel. We're working with a small amount of data so we'll use a single machine. For larger datasets, see [Scaling with Dask](https://planetarycomputer.microsoft.com/docs/quickstarts/scale-with-dask/)." ] }, { "cell_type": "code", "execution_count": 7, "id": "b0be75c9-9839-477e-ad46-cde253b7bb46", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/user/taugspurger@microsoft.com/proxy/8787/status\n" ] } ], "source": [ "from distributed import Client\n", "\n", "client = Client(processes=False)\n", "print(client.dashboard_link)" ] }, { "cell_type": "code", "execution_count": 8, "id": "6b0b05bf-7862-4b79-9881-8cfaaafbef73", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'stackstac-50b066be198a039bc4e73aa60a5208bd' (time: 3,\n",
       "                                                                band: 2,\n",
       "                                                                y: 4248, x: 4431)>\n",
       "dask.array<fetch_raster_window, shape=(3, 2, 4248, 4431), dtype=float64, chunksize=(1, 1, 1024, 1024), chunktype=numpy.ndarray>\n",
       "Coordinates: (12/39)\n",
       "  * time                                   (time) datetime64[ns] 2022-05-04T1...\n",
       "    id                                     (time) <U66 'S1A_IW_GRDH_1SDV_2022...\n",
       "  * band                                   (band) <U2 'vh' 'vv'\n",
       "  * x                                      (x) float64 -1.225e+07 ... -1.18e+07\n",
       "  * y                                      (y) float64 4.171e+06 ... 3.746e+06\n",
       "    sat:absolute_orbit                     (time) int64 43060 43068 43068\n",
       "    ...                                     ...\n",
       "    sar:pixel_spacing_azimuth              int64 10\n",
       "    sar:resolution_azimuth                 int64 22\n",
       "    title                                  (band) <U41 'VH: vertical transmit...\n",
       "    raster:bands                           object {'nodata': -32768, 'data_ty...\n",
       "    description                            (band) <U173 'Terrain-corrected ga...\n",
       "    epsg                                   int64 32630\n",
       "Attributes:\n",
       "    spec:        RasterSpec(epsg=32630, bounds=(-12247900, 3746300, -11804800...\n",
       "    crs:         epsg:32630\n",
       "    transform:   | 100.00, 0.00,-12247900.00|\\n| 0.00,-100.00, 4171100.00|\\n|...\n",
       "    resolution:  100
" ], "text/plain": [ "\n", "dask.array\n", "Coordinates: (12/39)\n", " * time (time) datetime64[ns] 2022-05-04T1...\n", " id (time) " ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "vv.plot.hist(bins=30);" ] }, { "cell_type": "markdown", "id": "da130a06-9100-4f7e-b41b-baa286cf19e2", "metadata": {}, "source": [ "So the values are typically transformed before visualization:" ] }, { "cell_type": "code", "execution_count": 11, "id": "c8d63553-c798-4f6f-a812-7de0d4ccac1e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(6, 4))\n", "\n", "\n", "def db_scale(x):\n", " return 10 * np.log10(x)\n", "\n", "\n", "db_scale(vv).plot.hist(bins=50, ax=ax)\n", "ax.set(title=\"Distribution of pixel values (dB scale)\", xlabel=\"Pixel values\");" ] }, { "cell_type": "code", "execution_count": 12, "id": "ea8a689e-e679-4628-88b0-4c109e2473bf", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "img = (\n", " db_scale(vv)\n", " .coarsen(x=4, y=4, boundary=\"trim\")\n", " .max()\n", " .plot.imshow(cmap=\"bone\", size=12, aspect=1.05, add_colorbar=False)\n", ")\n", "img.axes.set_axis_off();" ] }, { "cell_type": "markdown", "id": "5c586739-4f4d-4bf9-b7fc-77d6a4db00f9", "metadata": {}, "source": [ "### The effect of terrain correction\n", "\n", "In this section, we compare Sentinel-1 GRD to Sentinel-1 RTC to see the effect of terrain correction.\n", "\n", "Every Sentinel-1-RTC item is derived from a [Sentinel-1-GRD](https://planetarycomputer.microsoft.com/dataset/sentinel-1-grd) item. You can follow the `derived_from` link to get back to the original GRD item." ] }, { "cell_type": "code", "execution_count": 13, "id": "7825433b-8156-4842-b0ab-e2382e3691b3", "metadata": {}, "outputs": [], "source": [ "rtc_item = catalog.get_collection(\"sentinel-1-rtc\").get_item(\n", " \"S1A_IW_GRDH_1SDV_20220518T054334_20220518T054359_043261_052A9D_rtc\"\n", ")\n", "grd_item = pystac.read_file(rtc_item.get_single_link(\"derived_from\").target)" ] }, { "cell_type": "markdown", "id": "08ca8b5a-4250-4d1b-8227-3c21b5ab78fb", "metadata": {}, "source": [ "Next, we'll use the `tilejson` asset, which uses the Planetary Computer's [Data API](https://planetarycomputer.microsoft.com/api/data/v1/) to serve xyz tiles for a STAC item." ] }, { "cell_type": "code", "execution_count": 14, "id": "586b4e60-b092-40d4-ad29-71c4bf06fbe1", "metadata": {}, "outputs": [], "source": [ "grd_tiles = requests.get(grd_item.assets[\"tilejson\"].href).json()[\"tiles\"][0]\n", "rtc_tiles = requests.get(rtc_item.assets[\"tilejson\"].href).json()[\"tiles\"][0]" ] }, { "cell_type": "markdown", "id": "709ddcb7-28a0-41b2-9c6e-17d3af191ccd", "metadata": {}, "source": [ "With these URLs, we can build an interactive map using [ipyleaflet](https://ipyleaflet.readthedocs.io/en/latest/index.html). Adjust the slider to visualize either GRD (to the left) or RTC (to the right)." ] }, { "cell_type": "code", "execution_count": 15, "id": "246659d0-58b7-49f7-ba77-83d757bec1ff", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e49ead9250d741faa6ed100033db1dc2", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Map(center=[47.05, 7.1], controls=(FullScreenControl(options=['position']), ZoomControl(options=['position', '…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "center = [47.05, 7.10]\n", "m = ipyleaflet.Map(\n", " center=center,\n", " zoom=14,\n", " controls=[ipyleaflet.FullScreenControl()],\n", ")\n", "grd_layer = ipyleaflet.TileLayer(url=grd_tiles)\n", "rtc_layer = ipyleaflet.TileLayer(url=rtc_tiles)\n", "\n", "control = ipyleaflet.SplitMapControl(left_layer=grd_layer, right_layer=rtc_layer)\n", "m.add_control(control)\n", "m.scroll_wheel_zoom = True\n", "m" ] }, { "cell_type": "markdown", "id": "4ca47365-1c97-49f8-a5e1-846b1cbae468", "metadata": {}, "source": [ "Notice that points seem to \"jump\" between the GRD and RTC. The RTC values are corrected to align with where they're actually at on the Earth.\n", "\n", "For more background on terrain correction, and for an introduction to the [sarsen](https://github.com/bopen/sarsen) package which enables customizable RTCs, see [Sentinel-1 Customizable Radiometric Terrain Correction](https://planetarycomputer.microsoft.com/docs/tutorials/customizable-rtc-sentinel1/)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.13" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "14e5acac38754c3e9de1fb48e56bc5ad": { "model_module": "jupyter-leaflet", "model_module_version": "^0.17.0", "model_name": "LeafletTileLayerModel", "state": { "_model_module_version": "^0.17.0", "_view_module_version": "^0.17.0", "attribution": "© OpenStreetMap contributors", "base": true, "max_zoom": 19, "min_zoom": 1, "name": "OpenStreetMap.Mapnik", "options": [ "attribution", "bounds", "detect_retina", "max_native_zoom", "max_zoom", "min_native_zoom", "min_zoom", "no_wrap", "tile_size", "tms" ], "url": "https://a.tile.openstreetmap.org/{z}/{x}/{y}.png" } }, "1b789f8cd1f54c8885637e7ca2b54e6d": { "model_module": "jupyter-leaflet", "model_module_version": "^0.17.0", "model_name": "LeafletSplitMapControlModel", "state": { "_model_module_version": "^0.17.0", "_model_name": "LeafletSplitMapControlModel", "_view_module_version": "^0.17.0", "_view_name": "LeafletSplitMapControlView", "left_layer": "IPY_MODEL_ece123fa46c84b0fa8882ad47f4c5932", "options": [ "position" ], "right_layer": "IPY_MODEL_b43b719b7d64402e8e8e0278250cc60e" } }, "20d50cc84b2440e2b934a2f7f45e1e2c": { "model_module": "jupyter-leaflet", "model_module_version": "^0.17.0", "model_name": "LeafletMapStyleModel", "state": { "_model_module_version": "^0.17.0", "cursor": "move" } }, "3755bcab846f4bde8b84b2938691b829": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "58725a884e284ae192e9abc31837adf9": { "model_module": "jupyter-leaflet", "model_module_version": "^0.17.0", "model_name": "LeafletZoomControlModel", "state": { "_model_module_version": "^0.17.0", "_view_module_version": "^0.17.0", "options": [ "position", "zoom_in_text", "zoom_in_title", "zoom_out_text", "zoom_out_title" ] } }, "614febe830f547ec8e7543973bbf0517": { "model_module": "jupyter-leaflet", "model_module_version": "^0.17.0", "model_name": "LeafletMapStyleModel", "state": { "_model_module_version": "^0.17.0" } }, "7e286d5e0c3c4cd68499e10b30842560": { "model_module": "jupyter-leaflet", "model_module_version": "^0.17.0", "model_name": "LeafletAttributionControlModel", "state": { "_model_module_version": "^0.17.0", "_view_module_version": "^0.17.0", "options": [ "position", "prefix" ], "position": "bottomright", "prefix": "ipyleaflet" } }, "b43b719b7d64402e8e8e0278250cc60e": { "model_module": "jupyter-leaflet", "model_module_version": "^0.17.0", "model_name": "LeafletTileLayerModel", "state": { "_model_module_version": "^0.17.0", "_view_module_version": "^0.17.0", "options": [ "attribution", "bounds", "detect_retina", "max_native_zoom", "max_zoom", "min_native_zoom", "min_zoom", "no_wrap", "tile_size", "tms" ], "url": "https://planetarycomputer.microsoft.com/api/data/v1/item/tiles/WebMercatorQuad/{z}/{x}/{y}@1x.png?collection=sentinel-1-rtc&item=S1A_IW_GRDH_1SDV_20220518T054334_20220518T054359_043261_052A9D_rtc&assets=vv&assets=vh&expression=0.03+%2B+log+%2810e-4+-+log+%280.05+%2F+%280.02+%2B+2+%2A+vv%29%29%29%2C0.05+%2B+exp+%280.25+%2A+%28log+%280.01+%2B+2+%2A+vv%29+%2B+log+%280.02+%2B+5+%2A+vh%29%29%29%2C1+-+log+%280.05+%2F+%280.045+-+0.9+%2A+vv%29%29&rescale=0%2C.8000&rescale=0%2C1.000&rescale=0%2C1.000" } }, "b928c8399cca4d4997b754333aca187f": { "model_module": "jupyter-leaflet", "model_module_version": "^0.17.0", "model_name": "LeafletMapStyleModel", "state": { "_model_module_version": "^0.17.0" } }, "da49b289184b4faf9d2c93de779e4e49": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "e113542ba8c74e9e8b86a9c7e6ec83ea": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "layout": "IPY_MODEL_3755bcab846f4bde8b84b2938691b829" } }, "e49ead9250d741faa6ed100033db1dc2": { "model_module": "jupyter-leaflet", "model_module_version": "^0.17.0", "model_name": "LeafletMapModel", "state": { "_model_module_version": "^0.17.0", "_view_module_version": "^0.17.0", "bottom": 1474592, "center": [ 47.05, 7.1 ], "controls": [ "IPY_MODEL_fb39f1ed0d654bc29db0a72945c3c921", "IPY_MODEL_58725a884e284ae192e9abc31837adf9", "IPY_MODEL_7e286d5e0c3c4cd68499e10b30842560", "IPY_MODEL_1b789f8cd1f54c8885637e7ca2b54e6d" ], "default_style": "IPY_MODEL_614febe830f547ec8e7543973bbf0517", "dragging_style": "IPY_MODEL_20d50cc84b2440e2b934a2f7f45e1e2c", "east": 7.160940170288087, "fullscreen": false, "interpolation": "bilinear", "layers": [ "IPY_MODEL_14e5acac38754c3e9de1fb48e56bc5ad" ], "layout": "IPY_MODEL_da49b289184b4faf9d2c93de779e4e49", "left": 2179163, "modisdate": "2022-08-14", "north": 47.06170298810154, "options": [ "bounce_at_zoom_limits", "box_zoom", "center", "close_popup_on_click", "double_click_zoom", "dragging", "fullscreen", "inertia", "inertia_deceleration", "inertia_max_speed", "interpolation", "keyboard", "keyboard_pan_offset", "keyboard_zoom_offset", "max_zoom", "min_zoom", "prefer_canvas", "scroll_wheel_zoom", "tap", "tap_tolerance", "touch_zoom", "world_copy_jump", "zoom", "zoom_animation_threshold", "zoom_delta", "zoom_snap" ], "prefer_canvas": false, "right": 2180583, "scroll_wheel_zoom": true, "south": 47.03831035673278, "style": "IPY_MODEL_b928c8399cca4d4997b754333aca187f", "top": 1474192, "west": 7.039060592651368, "window_url": "https://pcc-staging.westeurope.cloudapp.azure.com/compute/user/taugspurger@microsoft.com/lab/tree/pc-examples-2/datasets/sentinel-2-l2a/sentinel-2-l2a-example.ipynb", "zoom": 14 } }, "ece123fa46c84b0fa8882ad47f4c5932": { "model_module": "jupyter-leaflet", "model_module_version": "^0.17.0", "model_name": "LeafletTileLayerModel", "state": { "_model_module_version": "^0.17.0", "_view_module_version": "^0.17.0", "options": [ "attribution", "bounds", "detect_retina", "max_native_zoom", "max_zoom", "min_native_zoom", "min_zoom", "no_wrap", "tile_size", "tms" ], "url": "https://planetarycomputer.microsoft.com/api/data/v1/item/tiles/WebMercatorQuad/{z}/{x}/{y}@1x.png?collection=sentinel-1-grd&item=S1A_IW_GRDH_1SDV_20220518T054334_20220518T054359_043261_052A9D&assets=vv&assets=vh&expression=vv%2Cvh%2Cvv%2Fvh&rescale=0%2C500&rescale=0%2C300&rescale=0%2C7" } }, "fb39f1ed0d654bc29db0a72945c3c921": { "model_module": "jupyter-leaflet", "model_module_version": "^0.17.0", "model_name": "LeafletFullScreenControlModel", "state": { "_model_module_version": "^0.17.0", "_view_module_version": "^0.17.0", "options": [ "position" ] } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }