diff --git a/CHANGELOG.md b/CHANGELOG.md index 26101c374..e079cf5ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,19 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [PEP 440](https://www.python.org/dev/peps/pep-0440/) and uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.13.2] + +### Added +* Added multiburst_sbas.ipynb to demonstrate searching and ordering a multi-burst InSAR project from the HyP3 SDK +* Added two images as assets to provide visual examples of valid and invalid multi-burst collections + +## Changed +* Updated links in [ARIA Sentinel-1 GUNW Product Guide](docs/guides/gunw_product_guide.md) +* Embedded StoryMaps in markdown pages rather than automatically opening them in a separate tab +* Updated tutorial.md to adjust formatting an add a link to [multiburst_sbas.ipynb](https://github.com/ASFHyP3/hyp3-docs/blob/main/docs/tutorials/multiburst_sbas.ipynb) +* Moved lists of tutorials into categories in the navigation menu + ## [0.13.1] ### Changed diff --git a/docs/guides/gunw_product_guide.md b/docs/guides/gunw_product_guide.md index 051b5fea3..df11459f1 100644 --- a/docs/guides/gunw_product_guide.md +++ b/docs/guides/gunw_product_guide.md @@ -4,7 +4,7 @@ This document is a guide for users of [ARIA Sentinel-1 Geocoded Unwrapped (GUNW) Interferograms](https://www.earthdata.nasa.gov/data/catalog/asf-aria-s1-gunw-1 "ASF-ARIA-S1-GUNW Products" ){target=_blank}. The -[ARIA Sentinel-1 Geocoded Unwrapped Interferogram (ARIA-S1-GUNW)](https://aria.caltech.edu/products/standard-displacement-products.html "aria.caltech.edu/products/standard-displacement-products.html" ){target=_blank} +[ARIA Sentinel-1 Geocoded Unwrapped Interferogram (ARIA-S1-GUNW)](https://aria.caltech.edu/products/aria-s1-gunw "aria.caltech.edu/products/aria-s1-gunw" ){target=_blank} product is a standardized interferometric SAR (InSAR) dataset that enables rapid analysis of surface deformation using Sentinel-1 SAR data. Produced by [JPL’s ARIA](https://aria.caltech.edu/ "aria.caltech.edu" ){target=_blank} diff --git a/docs/tutorials.md b/docs/tutorials.md index 9a5c27c5f..775b123be 100644 --- a/docs/tutorials.md +++ b/docs/tutorials.md @@ -4,22 +4,28 @@ We provide step-by-step tutorials for using HyP3 programmatically via Jupyter Notebooks. -* [Using the HyP3 Python SDK](https://github.com/ASFHyP3/hyp3-sdk/blob/main/docs/sdk_example.ipynb "Using the HyP3 SDK Tutorial" ){target=_blank} +* [Using the HyP3 Python SDK](https://github.com/ASFHyP3/hyp3-sdk/blob/main/docs/sdk_example.ipynb "Using the HyP3 SDK Tutorial" ){target=_blank} -- This notebook walks through ordering and accessing RTC, InSAR, and autoRIFT products in Python using the HyP3 SDK. -* [Using the HyP3 SDK to search for jobs run by another user](https://github.com/ASFHyP3/hyp3-sdk/blob/main/docs/search_other_user_jobs.ipynb "Using the HyP3 SDK to search for jobs run by another user" ){target=_blank} +* [Authenticating a HyP3 Session with the SDK](https://github.com/ASFHyP3/hyp3-sdk/blob/main/docs/hyp3_authentication.ipynb "Authenticating a HyP3 Session with the SDK Tutorial" ){target=_blank} + -- This notebook provides guidance on the options available for authenticating HyP3 with your [Earthdata Login credentials](using/authentication.md) when using the HyP3 SDK. +* [Using the HyP3 SDK to search for jobs run by another user](https://github.com/ASFHyP3/hyp3-sdk/blob/main/docs/search_other_user_jobs.ipynb "Using the HyP3 SDK to search for jobs run by another user Tutorial" ){target=_blank} -- This notebook walks through using the HyP3 SDK to search for jobs run by another user. -* [Using the HyP3 SDK to update a job name](https://github.com/ASFHyP3/hyp3-sdk/blob/main/docs/hyp3_job_name_change.ipynb "Using the HyP3 SDK to update a job name"){target=_blank} +* [Using the HyP3 SDK to update a job name](https://github.com/ASFHyP3/hyp3-sdk/blob/main/docs/hyp3_job_name_change.ipynb "Using the HyP3 SDK to update a job name Tutorial"){target=_blank} -- This notebook walks through using the HyP3 SDK to rename one of your previously submitted jobs. -* [Using the HyP3 SDK to process new granules for given search parameters](./tutorials/process-new-granules-for-search-parameters.md) +* [Using the HyP3 SDK to process new granules for given search parameters](./tutorials/process-new-granules-for-search-parameters.md "Using the HyP3 SDK to process new granules for given search parameters Tutorial" ){target=_blank} -- These notebooks demonstrate how to process new granules that match particular search parameters, which is particularly useful for ongoing monitoring of a geographic area of interest. -* [Time series analysis with HyP3 and MintPy](https://github.com/ASFHyP3/hyp3-docs/blob/main/docs/tutorials/hyp3_insar_stack_for_ts_analysis.ipynb "Time series analysis with HyP3 and MintPy Tutorial" ){target=_blank} +* [Time series analysis with HyP3 and MintPy](https://github.com/ASFHyP3/hyp3-docs/blob/main/docs/tutorials/hyp3_insar_stack_for_ts_analysis.ipynb "Time series analysis with HyP3 and MintPy Tutorial" ){target=_blank} -- This notebook walks through performing a time-series analysis of the 2019 Ridgecrest, CA earthquake with HyP3 On Demand InSAR products and MintPy. -* [Time series analysis with HyP3 ISCE2 burst InSAR products and MintPy](https://github.com/ASFHyP3/hyp3-docs/blob/main/docs/tutorials/hyp3_isce2_burst_stack_for_ts_analysis.ipynb "Time series analysis with HyP3 ISCE2 burst InSAR products and MintPy Tutorial" ){target=_blank} +* [Time series analysis with HyP3 ISCE2 burst InSAR products and MintPy](https://github.com/ASFHyP3/hyp3-docs/blob/main/docs/tutorials/hyp3_isce2_burst_stack_for_ts_analysis.ipynb "Time series analysis with HyP3 ISCE2 burst InSAR products and MintPy Tutorial" ){target=_blank} -- This notebook walks through performing a time-series analysis of the 2014 Mount Edgecumbe, AK volcano with HyP3 On Demand Burst InSAR products and MintPy. - +* [Search and Order a Multi-Burst SBAS Stack of Interferograms](https://github.com/ASFHyP3/hyp3-docs/blob/main/docs/tutorials/multiburst_sbas.ipynb "Search and Order a Multi-Burst SBAS Stack of Interferograms with the HyP3 SDK Tutorial" ){target=_blank} + -- This notebook illustrates how to use the HyP3 Python SDK to search for sets of Sentinel-1 bursts to use for + generating On Demand + [Multi-Burst InSAR products](guides/burst_insar_product_guide.md#multi-burst-insar "Sentinel-1 Burst InSAR Product Guide: Multi-Burst InSAR") + and build an SBAS stack of multi-burst pairings to submit for processing. ## StoryMaps diff --git a/docs/tutorials/agol_tutorials.md b/docs/tutorials/agol_tutorials.md new file mode 100644 index 000000000..c22aee747 --- /dev/null +++ b/docs/tutorials/agol_tutorials.md @@ -0,0 +1,5 @@ +# [ASF StoryMap Tutorials and Resources open_in_new](https://asf-daac.maps.arcgis.com/home/index.html "Open ASF StoryMap Tutorials and Resources page in a new tab" ){target=_blank} + +
+ +
diff --git a/docs/tutorials/assets/invalid_multiburst_collection.png b/docs/tutorials/assets/invalid_multiburst_collection.png new file mode 100644 index 000000000..e078d0eed Binary files /dev/null and b/docs/tutorials/assets/invalid_multiburst_collection.png differ diff --git a/docs/tutorials/assets/valid_multiburst_collection.png b/docs/tutorials/assets/valid_multiburst_collection.png new file mode 100644 index 000000000..d2be1822c Binary files /dev/null and b/docs/tutorials/assets/valid_multiburst_collection.png differ diff --git a/docs/tutorials/burst_insar_storymap.md b/docs/tutorials/burst_insar_storymap.md new file mode 100644 index 000000000..ba437e7ad --- /dev/null +++ b/docs/tutorials/burst_insar_storymap.md @@ -0,0 +1,5 @@ +# [Burst-Based InSAR for Sentinel-1 On Demand open_in_new](https://storymaps.arcgis.com/stories/191bf1b6962c402086807390b3ce63b0 "Open Burst-Based InSAR for Sentinel-1 On Demand StoryMap Tutorial in a new tab" ){target=_blank} + +
+ +
diff --git a/docs/tutorials/burst_insar_storymap_tutorial.md b/docs/tutorials/burst_insar_storymap_tutorial.md new file mode 100644 index 000000000..ba437e7ad --- /dev/null +++ b/docs/tutorials/burst_insar_storymap_tutorial.md @@ -0,0 +1,5 @@ +# [Burst-Based InSAR for Sentinel-1 On Demand open_in_new](https://storymaps.arcgis.com/stories/191bf1b6962c402086807390b3ce63b0 "Open Burst-Based InSAR for Sentinel-1 On Demand StoryMap Tutorial in a new tab" ){target=_blank} + +
+ +
diff --git a/docs/tutorials/insar_storymap.md b/docs/tutorials/insar_storymap.md new file mode 100644 index 000000000..165938c8a --- /dev/null +++ b/docs/tutorials/insar_storymap.md @@ -0,0 +1,5 @@ +# [InSAR On Demand! open_in_new](https://storymaps.arcgis.com/stories/68a8a3253900411185ae9eb6bb5283d3 "Open InSAR On Demand! StoryMap Tutorial in a new tab" ){target=_blank} + +
+ +
diff --git a/docs/tutorials/insar_storymap_tutorial.md b/docs/tutorials/insar_storymap_tutorial.md new file mode 100644 index 000000000..165938c8a --- /dev/null +++ b/docs/tutorials/insar_storymap_tutorial.md @@ -0,0 +1,5 @@ +# [InSAR On Demand! open_in_new](https://storymaps.arcgis.com/stories/68a8a3253900411185ae9eb6bb5283d3 "Open InSAR On Demand! StoryMap Tutorial in a new tab" ){target=_blank} + +
+ +
diff --git a/docs/tutorials/multiburst_sbas.ipynb b/docs/tutorials/multiburst_sbas.ipynb new file mode 100644 index 000000000..38c126da5 --- /dev/null +++ b/docs/tutorials/multiburst_sbas.ipynb @@ -0,0 +1,402 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "308bc6c7", + "metadata": {}, + "source": [ + "# Search and Order a Multi-Burst SBAS Stack of Interferograms\n", + "\n", + "\n", + "\n", + "## Define a list of S1-burst geographic reference scenes for the SBAS searches\n", + "\n", + "- The collection must not contain more than 15 bursts\n", + "- The bursts must be contiguous\n", + "- There can be no holes in the collection of bursts\n", + "- They cannot intersect the antimeridian\n", + "- Bursts must be in the VV polarization\n", + "- Burst IDs in adjacent swaths must not have a difference greater than one\n", + " - In simple terms:\n", + " - Aim to build rectangular collections of bursts\n", + " - L-shaped and T-shaped burst collections will likely fail to process\n", + "\n", + " ### This L-shaped collection of bursts is invalid:\n", + "\n", + " ![invalid L-shaped burst collection](assets/invalid_multiburst_collection.png)\n", + "\n", + " ### This rectangular collection of bursts is valid:\n", + " \n", + " ![valid rectangular burst collection](assets/valid_multiburst_collection.png)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a3d4a640", + "metadata": {}, + "outputs": [], + "source": [ + "from datetime import datetime\n", + "\n", + "geo_ref_bursts = [\n", + " \"S1_071053_IW2_20210104T002658_VV_4542-BURST\",\n", + " \"S1_071053_IW1_20210104T002657_VV_4542-BURST\",\n", + " \"S1_071052_IW2_20210104T002655_VV_4542-BURST\",\n", + " \"S1_071052_IW1_20210104T002654_VV_4542-BURST\",\n", + " \"S1_071051_IW2_20210104T002652_VV_4542-BURST\",\n", + " \"S1_071051_IW1_20210104T002651_VV_4542-BURST\",\n", + " \"S1_071050_IW2_20210104T002650_VV_4542-BURST\",\n", + " \"S1_071050_IW1_20210104T002649_VV_4542-BURST\",\n", + " \"S1_071049_IW2_20210104T002647_VV_4542-BURST\",\n", + " \"S1_071053_IW3_20210104T002659_VV_4542-BURST\",\n", + " \"S1_071052_IW3_20210104T002656_VV_4542-BURST\",\n", + " \"S1_071051_IW3_20210104T002653_VV_4542-BURST\",\n", + " \"S1_071050_IW3_20210104T002651_VV_4542-BURST\",\n", + " \"S1_071049_IW3_20210104T002648_VV_4542-BURST\",\n", + " \"S1_071049_IW1_20210104T002646_VV_4542-BURST\"\n", + "]" + ] + }, + { + "cell_type": "markdown", + "id": "cfb7659f-33e5-47e2-8a78-8128e6887e79", + "metadata": {}, + "source": [ + "## Define a HyP3 project name and other parameters of the multiburst SBAS stack" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "09cbd999-8e4b-4e52-82a9-dbefb48b70e9", + "metadata": {}, + "outputs": [], + "source": [ + "project_name = \"multiburst\" # Change this to something that makes sense for your project\n", + "\n", + "start_date = datetime(2021, 1, 1)\n", + "end_date = datetime(2021, 1, 31)\n", + "temporal_baseline = 36\n", + "perpendicular_baseline = 400" + ] + }, + { + "cell_type": "markdown", + "id": "a4436df8-85c8-46e9-8602-813e04b8ea42", + "metadata": {}, + "source": [ + "## Perform an `asf_search.granule_search` on the S1 burst IDs of the georeferenced bursts\n", + "\n", + "See this [notebook](https://github.com/asfadmin/Discovery-asf_search/blob/feature/stacking/examples/3-Granule_Search.ipynb) for more examples using `asf_search.granule_search`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8b615055", + "metadata": {}, + "outputs": [], + "source": [ + "import asf_search as asf\n", + "\n", + "results = asf.granule_search(geo_ref_bursts)\n", + "print(f\"Found {len(results)} S1 burst SLCs\")\n", + "results" + ] + }, + { + "cell_type": "markdown", + "id": "b3f15849-afd7-49f0-a417-ea326a53659a", + "metadata": {}, + "source": [ + "## Perform an `asf_search.stack` search on each of the returned `S1BurstProduct`s\n", + "\n", + "See this [notebook](https://github.com/asfadmin/Discovery-asf_search/blob/feature/stacking/examples/4-Baseline_Search.ipynb) for more example using `asf_search.stack` searches" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "386cd103", + "metadata": {}, + "outputs": [], + "source": [ + "opts=asf.ASFSearchOptions(**{\n", + " \"start\": start_date,\n", + " \"end\": end_date,\n", + "})\n", + "\n", + "stacks = [slc.stack(opts=opts) for slc in results]" + ] + }, + { + "cell_type": "markdown", + "id": "69755cbc-851c-4760-a4de-1454aaf5b023", + "metadata": {}, + "source": [ + "## Create an SBAS stack of `asf_search.Pair`s for each of the stack searches" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c5ef18e4", + "metadata": {}, + "outputs": [], + "source": [ + "from asf_search import Pair\n", + "\n", + "pairs = [\n", + " [\n", + " pair\n", + " for i, ref in enumerate(stack)\n", + " for sec in stack[i+1:] # Prevent duplication. We only need Pair(a, b), not Pair(b, a)\n", + " for pair in [Pair(ref, sec)]\n", + " if pair.perpendicular_baseline is not None\n", + " and pair.temporal_baseline is not None\n", + " and pair.perpendicular_baseline <= perpendicular_baseline\n", + " and 0 <= pair.temporal_baseline.days <= temporal_baseline\n", + " ]\n", + " for stack in stacks\n", + "]\n", + "\n", + "pairs" + ] + }, + { + "cell_type": "markdown", + "id": "847e9727-0f63-4ebe-b7f9-6efdf849bb1e", + "metadata": {}, + "source": [ + "## Transpose the individual stack search results into multiburst SBAS stacks" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f4ac9f86", + "metadata": {}, + "outputs": [], + "source": [ + "transposed_pairs = list(map(list, zip(*pairs)))\n", + "transposed_pairs" + ] + }, + { + "cell_type": "markdown", + "id": "a1a70283-b51c-4077-b384-43237f52925d", + "metadata": {}, + "source": [ + "## Convert the lists of multiburst `asf_search.Pair`s into corresponding lists of reference and secondary burst IDs for each multiburst interferogram" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2bd726a4", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "multibursts_prepped_for_hyp3 = [\n", + " [\n", + " [pair.ref.properties[\"sceneName\"] for pair in pair_list],\n", + " [pair.sec.properties[\"sceneName\"] for pair in pair_list],\n", + " ]\n", + " for pair_list in transposed_pairs\n", + "]\n", + "multibursts_prepped_for_hyp3" + ] + }, + { + "cell_type": "markdown", + "id": "5b472ead-49c0-404c-9bb2-f0305abf0b36", + "metadata": {}, + "source": [ + "## Confirm the number of interferograms you are preparing to order, and the number of bursts they contain" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "88b6720b-1970-4500-83df-60c64ceb0271", + "metadata": {}, + "outputs": [], + "source": [ + "print(f\"Preparing to order {len(multibursts_prepped_for_hyp3)} multiburst interferograms, each comprised of {len(multibursts_prepped_for_hyp3[0][0])} Sentinel-1 burst pairs.\")" + ] + }, + { + "cell_type": "markdown", + "id": "67d83df0-5836-4d5e-a615-3182b37c711b", + "metadata": {}, + "source": [ + "## Select whether you are accessing data from [HyP3 Basic](https://hyp3-docs.asf.alaska.edu/hyp3-docs/about/hyp3_basic/) or [HyP3+](https://hyp3-docs.asf.alaska.edu/hyp3-docs/about/hyp3_plus/)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d93e2c7e-5ce1-4079-a40e-a58af4254f94", + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets as widgets\n", + "from IPython.display import display\n", + "\n", + "\n", + "\n", + "hyp3_service_select = widgets.RadioButtons(\n", + " options=[\n", + " 'HyP3 Basic',\n", + " 'HyP3+'\n", + " ],\n", + " description='Service:',\n", + " disabled=False\n", + ")\n", + "\n", + "display(hyp3_service_select)\n" + ] + }, + { + "cell_type": "markdown", + "id": "77e5adae-7496-4d39-a7c8-6c69a6e2cd28", + "metadata": {}, + "source": [ + "## Authenticate with HyP3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "babdb66f", + "metadata": {}, + "outputs": [], + "source": [ + "import hyp3_sdk as sdk\n", + "\n", + "hyp3_select = hyp3_service_select.value\n", + "\n", + "if \"Basic\" in hyp3_select:\n", + " hyp3 = sdk.HyP3(prompt=\"password\")\n", + "else:\n", + " hyp3 = sdk.HyP3(api_url=\"https://hyp3-plus.asf.alaska.edu\", prompt=\"password\")" + ] + }, + { + "cell_type": "markdown", + "id": "bc9c861f-f297-44a7-a16b-054630985373", + "metadata": {}, + "source": [ + "## Order the multiburst interferograms from HyP3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e0124e7b", + "metadata": {}, + "outputs": [], + "source": [ + "multiburst_jobs = sdk.Batch()\n", + "\n", + "for multiburst in multibursts_prepped_for_hyp3:\n", + " multiburst_jobs += hyp3.submit_insar_isce_multi_burst_job(\n", + " multiburst[0],\n", + " multiburst[1],\n", + " name=project_name,\n", + " apply_water_mask=False,\n", + " looks='20x4', # '20x4', '10x2', '5x1'\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "f32d27fd-3686-4e11-a3ed-d5a7a3d98301", + "metadata": {}, + "source": [ + "## Watch the status of the multiburst jobs so you know when they have finished processing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2948f1ae", + "metadata": { + "is_executing": true + }, + "outputs": [], + "source": [ + "multiburst_jobs = hyp3.watch(multiburst_jobs)" + ] + }, + { + "cell_type": "markdown", + "id": "6c1eb4f2-517d-408a-a36c-0052a492ac42", + "metadata": {}, + "source": [ + "## Search the completed HyP3 multiburst project" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ecd7774b", + "metadata": {}, + "outputs": [], + "source": [ + "user_id = input(\"Enter your NASA Earthdata Login username\")\n", + "\n", + "batch = sdk.Batch()\n", + "batch = hyp3.find_jobs(\n", + " name=project_name, \n", + " job_type=\"INSAR_ISCE_MULTI_BURST\", \n", + " user_id=user_id\n", + ")\n", + "batch" + ] + }, + { + "cell_type": "markdown", + "id": "7481e337-a6c0-48d6-9749-c7e232796836", + "metadata": {}, + "source": [ + "## Download the multiburst interferograms" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cfdf2d15-e48c-44d7-9b8b-6b44d5b0a210", + "metadata": {}, + "outputs": [], + "source": [ + "for job in batch:\n", + " job.download_files()" + ] + } + ], + "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.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/tutorials/opera-rtc-storymap-eng.md b/docs/tutorials/opera-rtc-storymap-eng.md new file mode 100644 index 000000000..2153847e6 --- /dev/null +++ b/docs/tutorials/opera-rtc-storymap-eng.md @@ -0,0 +1,5 @@ +# [OPERA Sentinel-1 RTC open_in_new](https://storymaps.arcgis.com/stories/dc2807b444924fc3a76c117a2c909f8b "Open OPERA Sentinel-1 RTC StoryMap Tutorial in a new tab" ){target=_blank} + +
+ +
diff --git a/docs/tutorials/opera-rtc-storymap-esp.md b/docs/tutorials/opera-rtc-storymap-esp.md new file mode 100644 index 000000000..4ce14db5f --- /dev/null +++ b/docs/tutorials/opera-rtc-storymap-esp.md @@ -0,0 +1,5 @@ +# [OPERA Sentinel-1 RTC: Encuentra y Accede a los Datos open_in_new](https://storymaps.arcgis.com/stories/ee1c4de3e5eb44de8f377c18d95e05fa "Abrir el tutorial de StoryMap de OPERA Sentinel-1 RTC en una nueva pestaña del navegador." ){target=_blank} + +
+ +
diff --git a/docs/tutorials/rtc_storymap.md b/docs/tutorials/rtc_storymap.md new file mode 100644 index 000000000..f431c78bf --- /dev/null +++ b/docs/tutorials/rtc_storymap.md @@ -0,0 +1,5 @@ +# [RTC On Demand! open_in_new](https://storymaps.arcgis.com/stories/2ead3222d2294d1fae1d11d3f98d7c35 "Open RTC On Demand! StoryMap Tutorial in a new tab" ){target=_blank} + +
+ +
diff --git a/docs/tutorials/rtc_storymap_tutorial.md b/docs/tutorials/rtc_storymap_tutorial.md new file mode 100644 index 000000000..f431c78bf --- /dev/null +++ b/docs/tutorials/rtc_storymap_tutorial.md @@ -0,0 +1,5 @@ +# [RTC On Demand! open_in_new](https://storymaps.arcgis.com/stories/2ead3222d2294d1fae1d11d3f98d7c35 "Open RTC On Demand! StoryMap Tutorial in a new tab" ){target=_blank} + +
+ +
diff --git a/mkdocs.yml b/mkdocs.yml index e03fe300c..f8bf8282d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -86,22 +86,22 @@ nav: - RTC: - guides/rtc_product_guide.md - Product Guide: guides/rtc_product_guide.md - - StoryMap: https://storymaps.arcgis.com/stories/2ead3222d2294d1fae1d11d3f98d7c35" target="_blank + - StoryMap: tutorials/rtc_storymap.md - Theoretical Basis: guides/rtc_atbd.md - OPERA RTC-S1: - guides/opera_rtc_product_guide.md - Product Guide: guides/opera_rtc_product_guide.md - Product Specs: https://www.jpl.nasa.gov/go/opera/products/rtc-product/" target="_blank - - StoryMap (English): https://storymaps.arcgis.com/stories/dc2807b444924fc3a76c117a2c909f8b" target="_blank - - StoryMap (Spanish): https://storymaps.arcgis.com/stories/ee1c4de3e5eb44de8f377c18d95e05fa" target="_blank + - StoryMap (English): tutorials/opera-rtc-storymap-eng.md + - StoryMap (Spanish): tutorials/opera-rtc-storymap-esp.md - InSAR: - guides/insar_product_guide.md - Product Guide: guides/insar_product_guide.md - - StoryMap: https://storymaps.arcgis.com/stories/68a8a3253900411185ae9eb6bb5283d3" target="_blank + - StoryMap: tutorials/insar_storymap.md - Burst InSAR: - guides/burst_insar_product_guide.md - Product Guide: guides/burst_insar_product_guide.md - - StoryMap: https://storymaps.arcgis.com/stories/191bf1b6962c402086807390b3ce63b0" target="_blank + - StoryMap: tutorials/burst_insar_storymap.md - ARIA S1 GUNW: - guides/gunw_product_guide.md - Product Guide: guides/gunw_product_guide.md @@ -115,14 +115,20 @@ nav: - SAR FAQ: https://asf.alaska.edu/information/sar-information/what-is-sar/#sar_faq" target="_blank - Tutorials: - tutorials.md - - Using HyP3 Python SDK: https://github.com/ASFHyP3/hyp3-sdk/blob/main/docs/sdk_example.ipynb" target="_blank - - Authenticate HyP3 in the SDK: https://github.com/ASFHyP3/hyp3-sdk/blob/main/docs/hyp3_authentication.ipynb" target="_blank - - Search another user's jobs: https://github.com/ASFHyP3/hyp3-sdk/blob/main/docs/search_other_user_jobs.ipynb" target="_blank - - Update existing job name: https://github.com/ASFHyP3/hyp3-sdk/blob/main/docs/hyp3_job_name_change.ipynb" target="_blank - - Process new granules for search parameters: tutorials/process-new-granules-for-search-parameters.md - - InSAR time series with MintPy: https://github.com/ASFHyP3/hyp3-docs/blob/main/docs/tutorials/hyp3_insar_stack_for_ts_analysis.ipynb" target="_blank - - InSAR burst time series with MintPy: https://github.com/ASFHyP3/hyp3-docs/blob/main/docs/tutorials/hyp3_isce2_burst_stack_for_ts_analysis.ipynb" target="_blank - - StoryMap Tutorials: https://asf-daac.maps.arcgis.com/home/index.html" target="_blank + - Jupyter Notebooks: + - Using HyP3 Python SDK: https://github.com/ASFHyP3/hyp3-sdk/blob/main/docs/sdk_example.ipynb" target="_blank + - Authenticate HyP3 in the SDK: https://github.com/ASFHyP3/hyp3-sdk/blob/main/docs/hyp3_authentication.ipynb" target="_blank + - Search another user's jobs: https://github.com/ASFHyP3/hyp3-sdk/blob/main/docs/search_other_user_jobs.ipynb" target="_blank + - Update existing job name: https://github.com/ASFHyP3/hyp3-sdk/blob/main/docs/hyp3_job_name_change.ipynb" target="_blank + - Process new granules for search parameters: tutorials/process-new-granules-for-search-parameters.md + - InSAR time series with MintPy: https://github.com/ASFHyP3/hyp3-docs/blob/main/docs/tutorials/hyp3_insar_stack_for_ts_analysis.ipynb" target="_blank + - InSAR burst time series with MintPy: https://github.com/ASFHyP3/hyp3-docs/blob/main/docs/tutorials/hyp3_isce2_burst_stack_for_ts_analysis.ipynb" target="_blank + - Multi-Burst InSAR SBAS Stack: https://github.com/ASFHyP3/hyp3-docs/blob/main/docs/tutorials/multiburst_sbas.ipynb" target="_blank + - StoryMap Tutorials: + - tutorials/agol_tutorials.md + - RTC On Demand!: tutorials/rtc_storymap_tutorial.md + - InSAR On Demand!: tutorials/insar_storymap_tutorial.md + - Burst-Based InSAR: tutorials/burst_insar_storymap_tutorial.md - Other Tools: - ArcGIS Toolbox: tools/arcgis_toolbox.md - ASF Tools for Python: diff --git a/overrides/main.html b/overrides/main.html index f4a79e23b..b9ce80632 100644 --- a/overrides/main.html +++ b/overrides/main.html @@ -3,6 +3,7 @@ {% block scripts %} {{ super() }} + {% endblock %} {# Uncomment this block to enable the announcement banner: {% block announce %}