From baafc3f04bf8bb087ef177d396875e13e48f4171 Mon Sep 17 00:00:00 2001 From: Jack-Hayes Date: Tue, 17 Dec 2024 16:00:37 -0800 Subject: [PATCH] Added NEON to opentopo example nb and renamed --- docs/examples/additional_lidar.ipynb | 1375 ++++++++++++++++++++++++++ docs/examples/opentopo.ipynb | 975 ------------------ 2 files changed, 1375 insertions(+), 975 deletions(-) create mode 100644 docs/examples/additional_lidar.ipynb delete mode 100644 docs/examples/opentopo.ipynb diff --git a/docs/examples/additional_lidar.ipynb b/docs/examples/additional_lidar.ipynb new file mode 100644 index 0000000..4fe5a9c --- /dev/null +++ b/docs/examples/additional_lidar.ipynb @@ -0,0 +1,1375 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Additional Aerial LiDAR Datasets\n", + "\n", + "This notebook will highlight the additional aerial LiDAR datasets besides USGS 3dep that are available in the `coincident` package and how to grab those datasets' footprints using spatial and temporal search parameters.\n", + "\n", + "Other Supported Catalogs:\n", + "- NOAA Coastal LiDAR\n", + "- NCALM LiDAR\n", + "- NEON LiDAR" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import coincident\n", + "import geopandas as gpd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## OpenTopography API\n", + "\n", + "`coincident` supports the use of the [OpenTopo /otCatalog API](https://portal.opentopography.org/apidocs/) to access additional aerial LiDAR data.\n", + "\n", + "\n", + "opentopo datasets currently supported includes the [NOAA Coastal LiDAR Catalog](https://coast.noaa.gov/htdata/lidar1_z/) and [NCALM Aerial LiDAR Catalog](https://calm.geo.berkeley.edu/ncalm/dtc.html). \n", + "\n", + "```{note}\n", + "The NCALM Aerial LiDAR Catalog also includes user-submitted flights\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# first, we'll search for NOAA Coastal LiDAR missions in Washington\n", + "# we'll inspect 2018 arbitrarily\n", + "aoi = gpd.read_file(\n", + " \"https://raw.githubusercontent.com/unitedstates/districts/refs/heads/gh-pages/states/WA/shape.geojson\"\n", + ")\n", + "date = \"2018\"\n", + "aoi.plot();" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "gf_noaa = coincident.search.search(dataset=\"noaa\", intersects=aoi, datetime=[date])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "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", + "
idtitlestart_datetimeend_datetimegeometry
095362018 WA DNR Lidar: Green River Watershed, WA2018-11-112018-11-12POLYGON ((-121.82611 47.3587, -121.85992 47.33...
195462018 WA DNR Topobathy Lidar: Tacoma Water Serv...2018-05-272018-05-28POLYGON ((-121.7511 47.32611, -121.77838 47.30...
295492017 WA DNR Lidar: Tacoma Water Service Area -...2017-12-052018-11-12POLYGON ((-122.37958 47.06531, -122.37311 47.0...
395542018 WA DNR Lidar: Yakima Basin North, WA2018-07-242018-08-06POLYGON ((-120.54498 47.17468, -120.54089 47.1...
496052018 USFS Lidar: Tieton Basin, WA2018-07-162018-07-18POLYGON ((-121.19459 46.37311, -121.15364 46.3...
596732018 USFS Lidar: Methow Basin, WA2018-07-192018-10-11POLYGON ((-120.03089 48.2396, -120.05499 48.25...
689322018 OLC Lidar: Morrow County, OR2018-10-032018-11-15MULTIPOLYGON (((-119.43372 45.91931, -119.5142...
792112018 - 2019 USGS Lidar: Washington FEMA QL22018-08-052019-05-06MULTIPOLYGON (((-117.22388 47.26031, -117.2282...
\n", + "
" + ], + "text/plain": [ + " id title start_datetime \\\n", + "0 9536 2018 WA DNR Lidar: Green River Watershed, WA 2018-11-11 \n", + "1 9546 2018 WA DNR Topobathy Lidar: Tacoma Water Serv... 2018-05-27 \n", + "2 9549 2017 WA DNR Lidar: Tacoma Water Service Area -... 2017-12-05 \n", + "3 9554 2018 WA DNR Lidar: Yakima Basin North, WA 2018-07-24 \n", + "4 9605 2018 USFS Lidar: Tieton Basin, WA 2018-07-16 \n", + "5 9673 2018 USFS Lidar: Methow Basin, WA 2018-07-19 \n", + "6 8932 2018 OLC Lidar: Morrow County, OR 2018-10-03 \n", + "7 9211 2018 - 2019 USGS Lidar: Washington FEMA QL2 2018-08-05 \n", + "\n", + " end_datetime geometry \n", + "0 2018-11-12 POLYGON ((-121.82611 47.3587, -121.85992 47.33... \n", + "1 2018-05-28 POLYGON ((-121.7511 47.32611, -121.77838 47.30... \n", + "2 2018-11-12 POLYGON ((-122.37958 47.06531, -122.37311 47.0... \n", + "3 2018-08-06 POLYGON ((-120.54498 47.17468, -120.54089 47.1... \n", + "4 2018-07-18 POLYGON ((-121.19459 46.37311, -121.15364 46.3... \n", + "5 2018-10-11 POLYGON ((-120.03089 48.2396, -120.05499 48.25... \n", + "6 2018-11-15 MULTIPOLYGON (((-119.43372 45.91931, -119.5142... \n", + "7 2019-05-06 MULTIPOLYGON (((-117.22388 47.26031, -117.2282... " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gf_noaa" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
Make this Notebook Trusted to load map: File -> Trust Notebook
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gf_noaa.explore(column=\"title\", cmap=\"Set1\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# now, let's see if there were any NCALM missions from the same year\n", + "gf_ncalm = coincident.search.search(dataset=\"ncalm\", intersects=aoi, datetime=[date])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "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", + "
idtitlestart_datetimeend_datetimegeometry
0OTLAS.072019.6339.1High-Resolution Mapping of Goat Rock Volcano, WA2018-09-192018-09-20POLYGON ((-121.46701 46.48376, -121.45914 46.4...
1OTLAS.112018.26910.1Eagle Creek Fire Area in the Columbia River Go...2018-05-032018-05-06MULTIPOLYGON (((-122.12419 45.58219, -121.9854...
\n", + "
" + ], + "text/plain": [ + " id title \\\n", + "0 OTLAS.072019.6339.1 High-Resolution Mapping of Goat Rock Volcano, WA \n", + "1 OTLAS.112018.26910.1 Eagle Creek Fire Area in the Columbia River Go... \n", + "\n", + " start_datetime end_datetime \\\n", + "0 2018-09-19 2018-09-20 \n", + "1 2018-05-03 2018-05-06 \n", + "\n", + " geometry \n", + "0 POLYGON ((-121.46701 46.48376, -121.45914 46.4... \n", + "1 MULTIPOLYGON (((-122.12419 45.58219, -121.9854... " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gf_ncalm" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
Make this Notebook Trusted to load map: File -> Trust Notebook
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gf_ncalm.explore(column=\"id\", cmap=\"Set3\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## NEON API\n", + "\n", + "We also support the use of the [NEON Python API](https://www.neonscience.org/resources/learning-hub/tutorials/neon-api-intro-requests-py).\n", + "\n", + "```{warning}\n", + "Searching large areas and/or large time periods in the NEON catalog will take a long time due to the limited spatiotemporal search supported by the API.\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 1.05 s, sys: 98.3 ms, total: 1.15 s\n", + "Wall time: 7.02 s\n" + ] + } + ], + "source": [ + "%%time\n", + "gf_neon = coincident.search.search(dataset=\"neon\", intersects=aoi, datetime=[date])" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "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", + "
idtitlestart_datetimeend_datetimeproduct_urlgeometry
0ABBYAbby Road NEON2018-072018-07https://data.neonscience.org/api/v0/data/DP3.3...POLYGON ((-122.40147 45.70088, -122.23192 45.7...
1WREFWind River Experimental Forest NEON2018-072018-07https://data.neonscience.org/api/v0/data/DP3.3...POLYGON ((-122.09866 45.77605, -121.7776 45.77...
\n", + "
" + ], + "text/plain": [ + " id title start_datetime end_datetime \\\n", + "0 ABBY Abby Road NEON 2018-07 2018-07 \n", + "1 WREF Wind River Experimental Forest NEON 2018-07 2018-07 \n", + "\n", + " product_url \\\n", + "0 https://data.neonscience.org/api/v0/data/DP3.3... \n", + "1 https://data.neonscience.org/api/v0/data/DP3.3... \n", + "\n", + " geometry \n", + "0 POLYGON ((-122.40147 45.70088, -122.23192 45.7... \n", + "1 POLYGON ((-122.09866 45.77605, -121.7776 45.77... " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gf_neon" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
Make this Notebook Trusted to load map: File -> Trust Notebook
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m = gf_noaa.explore(color=\"blue\")\n", + "gf_ncalm.explore(m=m, color=\"black\")\n", + "gf_neon.explore(m=m, color=\"deeppink\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "coincident", + "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.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/examples/opentopo.ipynb b/docs/examples/opentopo.ipynb deleted file mode 100644 index b4d57b7..0000000 --- a/docs/examples/opentopo.ipynb +++ /dev/null @@ -1,975 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# OpenTopography API \n", - "\n", - "This notebook will highlight searching for data in the NOAA Coastal LiDAR and NCALM / OpenTopo User-Submitted datasets via the [OpenTopo /otCatalog API](https://portal.opentopography.org/apidocs/)\n", - "\n", - "This is just a search for LiDAR flight extents and minimal associated metadata, similar to the [USGS 3dep Search Example](https://coincident.readthedocs.io/en/latest/examples/quickstart.html), not point cloud analysis." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import coincident\n", - "import geopandas as gpd" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Identify a dataset of interest\n", - "\n", - "`opentopo` datasets in `coincident` currently support the search of the [NOAA Coastal LiDAR Catalog](https://coast.noaa.gov/htdata/lidar1_z/) and [NCALM Aerial LiDAR Catalog](https://calm.geo.berkeley.edu/ncalm/dtc.html). \n", - "\n", - "```{note}\n", - "The NCALM Aerial LiDAR Catalog also includes user-submitted flights\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
Make this Notebook Trusted to load map: File -> Trust Notebook
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# first, we'll search for NOAA Coastal LiDAR missions in Oregon\n", - "# we'll inspect 2020 arbitrarily\n", - "aoi = gpd.read_file(\n", - " \"https://raw.githubusercontent.com/unitedstates/districts/refs/heads/gh-pages/states/OR/shape.geojson\"\n", - ")\n", - "aoi.explore()" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "gf_noaa = coincident.search.search(dataset=\"noaa\", intersects=aoi, datetime=[\"2020\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "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", - "
idtitlestart_datetimeend_datetimegeometry
096932020 USACE NCMP Topobathy Lidar: Oregon2020-07-232020-08-13MULTIPOLYGON (((-124.33314 43.35468, -124.3100...
197162020 USFS Lidar: Wallowa-Whitman National Forest2020-07-112020-07-23MULTIPOLYGON (((-116.89911 44.99512, -116.8784...
293042020 OR DOT Lidar: Blue Pool, OR2020-06-182020-06-19POLYGON ((-122.08252 43.5907, -122.09351 43.69...
\n", - "
" - ], - "text/plain": [ - " id title start_datetime \\\n", - "0 9693 2020 USACE NCMP Topobathy Lidar: Oregon 2020-07-23 \n", - "1 9716 2020 USFS Lidar: Wallowa-Whitman National Forest 2020-07-11 \n", - "2 9304 2020 OR DOT Lidar: Blue Pool, OR 2020-06-18 \n", - "\n", - " end_datetime geometry \n", - "0 2020-08-13 MULTIPOLYGON (((-124.33314 43.35468, -124.3100... \n", - "1 2020-07-23 MULTIPOLYGON (((-116.89911 44.99512, -116.8784... \n", - "2 2020-06-19 POLYGON ((-122.08252 43.5907, -122.09351 43.69... " - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gf_noaa" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
Make this Notebook Trusted to load map: File -> Trust Notebook
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gf_noaa.explore(column=\"title\", cmap=\"Set1\")" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "# now, let's see if there were any NCALM missions from the same year\n", - "gf_ncalm = coincident.search.search(dataset=\"ncalm\", intersects=aoi, datetime=[\"2020\"])" - ] - }, - { - "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", - "
idtitlestart_datetimeend_datetimegeometry
0OTLAS.082021.6339.1Post-Fire Debris Flow Detection and Erosion, O...2020-11-082020-11-08POLYGON ((-123.63575 42.81861, -123.63638 42.8...
\n", - "
" - ], - "text/plain": [ - " id title \\\n", - "0 OTLAS.082021.6339.1 Post-Fire Debris Flow Detection and Erosion, O... \n", - "\n", - " start_datetime end_datetime \\\n", - "0 2020-11-08 2020-11-08 \n", - "\n", - " geometry \n", - "0 POLYGON ((-123.63575 42.81861, -123.63638 42.8... " - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gf_ncalm" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
Make this Notebook Trusted to load map: File -> Trust Notebook
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "m = gf_noaa.explore(color=\"black\")\n", - "gf_ncalm.explore(m=m, color=\"deeppink\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "coincident", - "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.5" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}