diff --git a/IS2view/api.py b/IS2view/api.py index 4c05885..c6c6f6e 100644 --- a/IS2view/api.py +++ b/IS2view/api.py @@ -1,7 +1,7 @@ #!/usr/bin/env python u""" api.py -Written by Tyler Sutterley (06/2024) +Written by Tyler Sutterley (01/2025) Plotting tools for visualizing rioxarray variables on leaflet maps PYTHON DEPENDENCIES: @@ -28,6 +28,8 @@ https://xyzservices.readthedocs.io/en/stable/ UPDATE HISTORY: + Updated 01/2025: added more zoom levels and update max_zoom + deprecation update for writing the crs to the dataset object Updated 06/2024: use wrapper to importlib for optional dependencies Updated 04/2024: add connections and functions for changing variables and other attributes of the leaflet map visualization @@ -104,7 +106,15 @@ 2048.0, 1024.0, 512.0, - 256.0 + 256.0, + 128.0, + 64.0, + 32.0, + 16.0, + 8.0, + 4.0, + 2.0, + 1.0 ], bounds=[ [-4194304, -4194304], @@ -124,7 +134,15 @@ 2048.0, 1024.0, 512.0, - 256.0 + 256.0, + 128.0, + 64.0, + 32.0, + 16.0, + 8.0, + 4.0, + 2.0, + 1.0 ], bounds=[ [-4194304, -4194304], @@ -288,7 +306,7 @@ def __init__(self, projection, **kwargs): ipyleaflet.basemaps.NASAGIBS.BlueMarble3413 ) self.map = ipyleaflet.Map(center=kwargs['center'], - zoom=kwargs['zoom'], max_zoom=5, + zoom=kwargs['zoom'], max_zoom=15, attribution_control=kwargs['attribution'], basemap=kwargs['basemap'], crs=projections['EPSG:3413'], @@ -300,7 +318,7 @@ def __init__(self, projection, **kwargs): ipyleaflet.basemaps.NASAGIBS.BlueMarble3031 ) self.map = ipyleaflet.Map(center=kwargs['center'], - zoom=kwargs['zoom'], max_zoom=5, + zoom=kwargs['zoom'], max_zoom=15, attribution_control=kwargs['attribution'], basemap=kwargs['basemap'], crs=projections['EPSG:3031'], @@ -924,7 +942,7 @@ def get_crs(self): except Exception as exc: pass else: - self._ds.rio.set_crs(ds_crs) + self._ds.rio.write_crs(ds_crs) return # get coordinate reference system from crs attribute try: @@ -932,7 +950,7 @@ def get_crs(self): except Exception as exc: pass else: - self._ds.rio.set_crs(ds_crs) + self._ds.rio.write_crs(ds_crs) return # raise exception raise Exception('Unknown coordinate reference system') @@ -1259,7 +1277,7 @@ def handle_click(self, **kwargs): except Exception as exc: crs = self._ds.rio.crs.to_wkt() else: - self._ds.rio.set_crs(crs) + self._ds.rio.write_crs(crs) # get the clicked point in dataset coordinate reference system x, y = rio.warp.transform('EPSG:4326', crs, [lon], [lat]) # find nearest point in dataset @@ -1547,7 +1565,7 @@ def get_crs(self): except Exception as exc: pass else: - self._ds.rio.set_crs(ds_crs) + self._ds.rio.write_crs(ds_crs) return # get coordinate reference system from crs attribute try: @@ -1555,7 +1573,7 @@ def get_crs(self): except Exception as exc: pass else: - self._ds.rio.set_crs(ds_crs) + self._ds.rio.write_crs(ds_crs) return # raise exception raise Exception('Unknown coordinate reference system') @@ -1969,7 +1987,7 @@ def get_crs(self): except Exception as exc: pass else: - self._ds.rio.set_crs(ds_crs) + self._ds.rio.write_crs(ds_crs) return # get coordinate reference system from crs attribute try: @@ -1977,7 +1995,7 @@ def get_crs(self): except Exception as exc: pass else: - self._ds.rio.set_crs(ds_crs) + self._ds.rio.write_crs(ds_crs) return # raise exception raise Exception('Unknown coordinate reference system') diff --git a/IS2view/tools.py b/IS2view/tools.py index 0379538..76b1c4a 100644 --- a/IS2view/tools.py +++ b/IS2view/tools.py @@ -1,7 +1,7 @@ #!/usr/bin/env python u""" tools.py -Written by Tyler Sutterley (11/2023) +Written by Tyler Sutterley (01/2025) User interface tools for Jupyter Notebooks PYTHON DEPENDENCIES: @@ -13,8 +13,12 @@ matplotlib: Python 2D plotting library http://matplotlib.org/ https://github.com/matplotlib/matplotlib + cmocean: Beautiful colormaps for oceanography + https://matplotlib.org/cmocean/ UPDATE HISTORY: + Updated 01/2025: added optional cmocean colormaps to dropdown menu + updated the default group list to include lags for release 004 Updated 06/2024: use wrapper to importlib for optional dependencies Updated 11/2023: set time steps using decimal years rather than lags setting dynamic colormap with float64 min and max @@ -34,6 +38,7 @@ # attempt imports ipywidgets = import_dependency('ipywidgets') cm = import_dependency('matplotlib.cm') +cmocean = import_dependency('cmocean') # set environmental variable for anonymous s3 access os.environ['AWS_NO_SIGN_REQUEST'] = 'YES' @@ -131,7 +136,8 @@ def __init__(self, **kwargs): # dropdown menu for selecting group to read from file # use Release-01 groups as the initial default - group_list = ['delta_h', 'dhdt_lag1', 'dhdt_lag4', 'dhdt_lag8'] + group_list = ['delta_h', 'dhdt_lag1', 'dhdt_lag4', 'dhdt_lag8', + 'dhdt_lag12', 'dhdt_lag16', 'dhdt_lag20'] self.group = ipywidgets.Dropdown( options=group_list, description='Group:', @@ -240,9 +246,17 @@ def __init__(self, **kwargs): cmap_list.extend(val) # reduce colormaps to available in program and matplotlib cmap_set &= set(cmap_list) + cmap_options = sorted(cmap_set) + # attempt to add additional colormaps + ext_cmaps = [] + try: + ext_cmaps.extend([f'cmo.{c}' for c in sorted(cmocean.cm.cmapnames)]) + except Exception as exc: + pass + cmap_options.extend(ext_cmaps) # dropdown menu for setting colormap self.cmap = ipywidgets.Dropdown( - options=sorted(cmap_set), + options=cmap_options, value='viridis', description='Colormap:', description_tooltip=("Colormap: matplotlib colormaps " @@ -383,11 +397,13 @@ def set_groups(self, *args): """sets the list of available groups for a release """ group_list = ['delta_h', 'dhdt_lag1', 'dhdt_lag4', 'dhdt_lag8'] - # append lag12 group + # append additional dhdt groups if (int(self.release.value) > 1): group_list.append('dhdt_lag12') if (int(self.release.value) > 2): group_list.append('dhdt_lag16') + if (int(self.release.value) > 3): + group_list.append('dhdt_lag20') # set group list self.group.options = group_list # change regions for Antarctica for Release-03+ @@ -457,13 +473,17 @@ def get_variables(self, d): """ # data and time variables self.data_vars = sorted(d.data_vars) - self.time_vars = d.time.values if 'time' in d else None - # set the default groups - self.set_groups() - # set the default variables - self.set_variables() - # set the default time steps - self.set_time_steps() + if 'time' in d: + self.time_vars = d.time.values + # set the default groups + self.set_groups() + # set the default variables + self.set_variables() + # set the default time steps + self.set_time_steps() + else: + # set the default variables + self.set_variables() def set_time_steps(self, *args, epoch=2018.0): """sets available time range diff --git a/doc/environment.yml b/doc/environment.yml index fe70dac..e0fac68 100644 --- a/doc/environment.yml +++ b/doc/environment.yml @@ -5,14 +5,17 @@ dependencies: - docutils - graphviz - ipywidgets + - myst-nb - notebook - numpy>=1.21 - numpydoc - pip - python>=3.6 - sphinx + - sphinx-argparse>=0.4 + - sphinxcontrib-bibtex + - sphinx-design - sphinx_rtd_theme - xarray - pip: - - sphinx-argparse>=0.4 - .. diff --git a/doc/source/_assets/ATL14.png b/doc/source/_assets/ATL14.png new file mode 100644 index 0000000..a927e63 Binary files /dev/null and b/doc/source/_assets/ATL14.png differ diff --git a/doc/source/_assets/ATL15.png b/doc/source/_assets/ATL15.png new file mode 100644 index 0000000..516213d Binary files /dev/null and b/doc/source/_assets/ATL15.png differ diff --git a/doc/source/_assets/is2view-refs.bib b/doc/source/_assets/is2view-refs.bib new file mode 100644 index 0000000..da365bb --- /dev/null +++ b/doc/source/_assets/is2view-refs.bib @@ -0,0 +1,61 @@ +@manual{Smith:2023jg, +year = {2023}, +author = {Smith, B. and Adusumilli, Susheel and Csatho, Beata and Felikson, Denis and Fricker, Helen and Gardner, Alex and Holschuh, Nicholas and Lee, Jeffrey and Nilson, Johan and Paolo, Fernando and Siegfried, Matthew and Sutterley, Tyler and {the ICESat-2 Science Team}}, +title = {{ATLAS/ICESat-2 L3A Land Ice Height. (ATL06, Version 6)}}, +doi = {10.5067/ATLAS/ATL06.006}, +url = {https://doi.org/10.5067/ATLAS/ATL06.006}, +organization = {NASA National Snow and Ice Data Center Distributed Active Archive Center}, +address = {Boulder, Colorado USA} +} + +@manual{Smith:2023fd, +author = {Smith, B. and Dickinson, S. and Jelley, B. P. and Neumann, T. A. and Hancock, D. and Lee, J. and Harbeck, K.}, +title = {{ATLAS/ICESat-2 L3B Slope-Corrected Land Ice Height Time Series}}, +organization = {NASA National Snow and Ice Data Center Distributed Active Archive Center}, +year = {2024}, +note = {Version 4}, +address = {Boulder, Colorado USA}, +publisher = {NASA National Snow and Ice Data Center Distributed Active Archive Center}, +doi = {10.5067/ATLAS/ATL11.006}, +url = {https://doi.org/10.5067/ATLAS/ATL11.006} +} + +@manual{Smith:2024fd, +author = {Smith, B. and Sutterley, T. C. and Dickinson, S. and Jelley, B. P. and Felikson, D. and Neumann, T. A. and Fricker, H. A. and Gardner, A. and Padman, L. and Markus, T and Kurtz, N. and Bhardwaj, S. and Hancock, D. and Lee, J.}, +title = {{ATLAS/ICESat-2 L3B Antarctic and Arctic Land Ice Height Change}}, +organization = {NASA National Snow and Ice Data Center Distributed Active Archive Center}, +year = {2024}, +note = {Version 4}, +address = {Boulder, Colorado USA}, +publisher = {NASA National Snow and Ice Data Center Distributed Active Archive Center}, +doi = {10.5067/ATLAS/ATL14.004}, +url = {https://doi.org/10.5067/ATLAS/ATL14.004} +} + +@manual{Smith:2024cv, +author = {Smith, B. and Sutterley, T. C. and Dickinson, S. and Jelley, B. P. and Felikson, D. and Neumann, T. A. and Fricker, H. A. and Gardner, A. and Padman, L. and Markus, T and Kurtz, N. and Bhardwaj, S. and Hancock, D. and Lee, J.}, +title = {{ATLAS/ICESat-2 L3B Gridded Antarctic and Arctic Land Ice Height Change}}, +organization = {NASA National Snow and Ice Data Center Distributed Active Archive Center}, +year = {2024}, +note = {Version 4}, +address = {Boulder, Colorado USA}, +publisher = {NASA National Snow and Ice Data Center Distributed Active Archive Center}, +doi = {10.5067/ATLAS/ATL15.004}, +url = {https://doi.org/10.5067/ATLAS/ATL15.004} +} + +@manual{Smith:2024vr, +author = {Smith, B. and Jelley, B. and Sutterley, T. C. and Dickinson, S.}, +title = {{ATL1415 [Computer software]}}, +year = {2024}, +organization={GitHub}, +url={https://www.github.com/SmithB/ATL1415} +} + +@manual{Smith:2024ut, +author = {Smith, B.}, +title = {{altimetryFit [Computer software]}}, +year = {2024}, +organization={GitHub}, +url={https://www.github.com/SmithB/altimetryFit} +} diff --git a/doc/source/conf.py b/doc/source/conf.py index 076a5de..aca07da 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -16,6 +16,9 @@ # sys.path.insert(0, os.path.abspath('.')) import importlib.metadata + +# -- Project information ----------------------------------------------------- + # package metadata metadata = importlib.metadata.metadata("IS2view") project = metadata["Name"] @@ -35,13 +38,23 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - "sphinx.ext.autodoc", + "myst_nb", "numpydoc", + 'sphinxcontrib.bibtex', + "sphinx.ext.autodoc", "sphinx.ext.graphviz", "sphinx.ext.viewcode", + "sphinx_design", "sphinxarg.ext" ] +# use myst for notebooks +source_suffix = { + ".rst": "restructuredtext", + ".ipynb": "myst-nb", +} +nb_execution_mode = "off" + # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] @@ -59,6 +72,8 @@ autodoc_member_order = 'bysource' numpydoc_show_class_members = False pygments_style = 'native' +bibtex_bibfiles = ['_assets/is2view-refs.bib'] +bibtex_default_style = 'plain' # -- Options for HTML output ------------------------------------------------- @@ -81,7 +96,14 @@ # so a file named "default.css" will overwrite the builtin "default.css". html_logo = "_assets/IS2view_logo.png" html_static_path = ['_static'] -repository_url = f"https://github.com/tsutterley/IS2view" +# fetch the project urls +project_urls = {} +for project_url in metadata.get_all('Project-URL'): + name, _, url = project_url.partition(', ') + project_urls[name.lower()] = url +# fetch the repository url +repository_url = project_urls.get('repository') +# add html context html_context = { "menu_links": [ ( @@ -92,6 +114,10 @@ ' License', f"{repository_url}/blob/main/LICENSE", ), + ( + ' Discussions', + f"{repository_url}/discussions", + ), ], } diff --git a/doc/source/getting_started/Bibliography.rst b/doc/source/getting_started/Bibliography.rst new file mode 100644 index 0000000..73b0782 --- /dev/null +++ b/doc/source/getting_started/Bibliography.rst @@ -0,0 +1,5 @@ +============ +Bibliography +============ + +.. bibliography:: diff --git a/doc/source/getting_started/Data-Products.rst b/doc/source/getting_started/Data-Products.rst index 6ce3ae3..9508ff8 100644 --- a/doc/source/getting_started/Data-Products.rst +++ b/doc/source/getting_started/Data-Products.rst @@ -70,10 +70,3 @@ Elevation Change Rate +--------------------------------+-------------------+-----------------------------------------------------------+ | ``y`` | meters | y-coordinate (northing) of the grid cell centers | +--------------------------------+-------------------+-----------------------------------------------------------+ - -References -########## - -.. [Smith2022a] B. Smith, T. Sutterley, S. Dickinson, B. P. Jelley, D. Felikson, T. A. Neumann, H. A. Fricker, A. Gardner, L. Padman, T. Markus, N. Kurtz, S. Bhardwaj, D. Hancock, and J. Lee. *ATLAS/ICESat-2 L3B Gridded Antarctic and Arctic Land Ice Height*, Version 2, (2022). Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. `doi: 10.5067/ATLAS/ATL14.002 `_ - -.. [Smith2022b] B. Smith, T. Sutterley, S. Dickinson, B. P. Jelley, D. Felikson, T. A. Neumann, H. A. Fricker, A. Gardner, L. Padman, T. Markus, N. Kurtz, S. Bhardwaj, D. Hancock, and J. Lee. *ATLAS/ICESat-2 L3B Gridded Antarctic and Arctic Land Ice Height Change*, Version 2, (2022). Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. `doi: 10.5067/ATLAS/ATL15.002 `_ diff --git a/doc/source/getting_started/Getting-Started.rst b/doc/source/getting_started/Getting-Started.rst index 2f9526e..ab60956 100644 --- a/doc/source/getting_started/Getting-Started.rst +++ b/doc/source/getting_started/Getting-Started.rst @@ -2,12 +2,12 @@ Getting Started =============== -This documentation is intended to explain how to visualize and operate on the ICESat-2 ATL14/15 Gridded Land Ice Height Products. -These products are derived from measurements from the Advanced Topographic Laser Altimeter System (ATLAS), -the primary instrumentation onboard the ICESat-2 observatory. +The ICESat-2 ATL14/15 Gridded Land Ice Height Products are derived from measurements from the +Advanced Topographic Laser Altimeter System (ATLAS), the primary instrumentation onboard the ICESat-2 observatory. The data are made available from the NASA DAAC at the `National Snow and Ice Data Center (NSIDC) `_. -The gridded land ice products are generated using a constrained least-squares technique which fits elevation data -from the `ICESat-2 Slope-Corrected Land Ice Height Time Series (ATL11) `_ product. +The gridded land ice products are generated using a constrained least-squares technique :cite:p:`Smith:2024ut` which fits elevation data +from the `ICESat-2 Slope-Corrected Land Ice Height Time Series (ATL11) `_ +product :cite:p:`Smith:2023fd`. These products are available for `regions around the Arctic and for the Antarctic ice sheet <./Getting-Started.html#regions>`_. .. graphviz:: @@ -45,10 +45,11 @@ These products are available for `regions around the Arctic and for the Antarcti } The products derived from this technique include a static Digital Elevation Model (DEM) -at a reference time `(ATL14) `_ and -estimates of the elevation change relative to this DEM `(ATL15) `_. +at a reference time `(ATL14) `_ :cite:p:`Smith:2024fd` and +estimates of the elevation change relative to this DEM `(ATL15) `_ +:cite:p:`Smith:2024cv`. These products are generated as part of the `same algorithm `_ -in order to provide a DEM and set of height-change maps that are self-consistent. +:cite:p:`Smith:2024vr` in order to provide a self-consistent DEM and set of height-change maps. The resolution of the ATL14 and ATL15 products is limited by the spatial resolution of the ICESat-2 tracks, and the temporal sampling of the tracks. The maximum spatiotemporal resolution of the product is also limited by the smoothness @@ -59,16 +60,17 @@ pointing of the ATLAS instrument during the earliest part of the ICESat-2 missio ATL14 ##### -The `ICESat-2 ATL14 Gridded Land Ice Height `_ product contains -the estimated surface height at the reference epoch (midnight at the start of 2020-01-01) -with respect to the WGS84 ellipsoid. +The `ICESat-2 ATL14 Gridded Land Ice Height `_ product +:cite:p:`Smith:2024fd` contains the estimated surface height at the reference epoch +(midnight at the start of 2020-01-01) with respect to the WGS84 ellipsoid. The ATL14 product is available at a high spatial resolution (100 m) and are provided in netCDF4 format. ATL15 ##### -The `ICESat-2 ATL15 Gridded Land Ice Height Change `_ product contains -quarterly, annual and multi-annual estimates of the land ice height change time series. +The `ICESat-2 ATL15 Gridded Land Ice Height Change `_ product +:cite:p:`Smith:2024cv` contains quarterly, annual and multi-annual estimates of the land ice height +change time series. The ATL15 product is available at four different spatial resolutions (1 km, 10 km, 20 km and 40 km) and are provided in netCDF4 format. diff --git a/doc/source/index.rst b/doc/source/index.rst index df1ec73..cd4b082 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -1,10 +1,75 @@ -IS2view -======= +===================== +IS2view Documentation +===================== + +Welcome to the documentation for ``IS2view``, an interactive visualization and data extraction tool for ICESat-2 ATL14/15 Gridded Land Ice Height Products. +This documentation is intended to explain how to visualize and operate on the ICESat-2 data using the set of ``IS2view`` programs. + +Introduction +------------ + +.. grid:: 2 2 4 4 + :padding: 0 + + .. grid-item-card:: Installation + :text-align: center + :link: ./getting_started/Install.html + + :material-outlined:`download;5em` + + .. grid-item-card:: Getting Started + :text-align: center + :link: ./getting_started/Getting-Started.html + + :material-outlined:`hiking;5em` + + .. grid-item-card:: Data Products + :text-align: center + :link: ./getting_started/Data-Products.html + + :material-outlined:`insert_chart;5em` + + .. grid-item-card:: Examples + :text-align: center + :link: ./user_guide/Examples.html + + :material-outlined:`apps;5em` + + +Contribute +---------- + +.. grid:: 2 2 4 4 + :padding: 0 + + .. grid-item-card:: Guidelines + :text-align: center + :link: ./getting_started/Contributing.html + + :material-outlined:`groups;5em` + + .. grid-item-card:: Code of Conduct + :text-align: center + :link: ./getting_started/Code-of-Conduct.html + + :material-outlined:`gavel;5em` + + .. grid-item-card:: Discussions + :text-align: center + :link: https://github.com/tsutterley/IS2view/discussions + + :material-outlined:`forum;5em` + + .. grid-item-card:: Issues + :text-align: center + :link: https://github.com/tsutterley/IS2view/issues + + :material-outlined:`bug_report;5em` -Interactive visualization and data extraction tool for ICESat-2 ATL14/15 Gridded Land Ice Height Products .. toctree:: :maxdepth: 2 + :hidden: :caption: Getting Started getting_started/Install.rst @@ -41,3 +106,10 @@ Interactive visualization and data extraction tool for ICESat-2 ATL14/15 Gridded :caption: Release Notes release_notes/Release-Notes.rst + +.. toctree:: + :maxdepth: 1 + :hidden: + :caption: Bibliography + + getting_started/Bibliography.rst diff --git a/notebooks/IS2-ATL14-Viewer.ipynb b/doc/source/notebooks/IS2-ATL14-Viewer.ipynb similarity index 89% rename from notebooks/IS2-ATL14-Viewer.ipynb rename to doc/source/notebooks/IS2-ATL14-Viewer.ipynb index 5982313..54e8e2b 100644 --- a/notebooks/IS2-ATL14-Viewer.ipynb +++ b/doc/source/notebooks/IS2-ATL14-Viewer.ipynb @@ -6,7 +6,8 @@ "metadata": {}, "source": [ "# ICESat-2 ATL14 Viewer\n", - "Interactive visualization and data extraction tool for ICESat-2 Gridded Land Ice Height data (ATL14)" + "\n", + "This ({nb-download}`notebook `) is an interactive visualization and data extraction tool for ICESat-2 Gridded Land Ice Height data (ATL14)" ] }, { @@ -26,7 +27,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Set parameters for ATL14\n", + "## Set parameters for ATL14\n", "- Asset: Location to get the data\n", "- Directory: Working data directory\n", "- Release: ATL14 data release (001, 002, 003, 004)\n", @@ -55,7 +56,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Query CMR for ATL14 granule\n", + "## Query CMR for ATL14 granule\n", "NASA's Common Metadata Repository (CMR) is a catalog of metadata records contained within the Earth Observing System Data and Information System (EOSDIS). ICESat-2 ATL14 data is archived at the NASA Distributed Active Archive Center (DAAC) at the [National Snow and Ice Data Center (NSIDC)](https://nsidc.org/daac/)." ] }, @@ -81,7 +82,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Read and inspect ATL14 data\n", + "## Read and inspect ATL14 data\n", "The ATL14 data will be read using using [xarray](https://xarray.dev/) and [rioxarray](https://corteva.github.io/rioxarray/)." ] }, @@ -105,13 +106,13 @@ "tags": [] }, "source": [ - "### Interactive Mapping with Leaflet\n", + "## Interactive Mapping with Leaflet\n", "\n", "Interactive maps within IS2view are built upon [ipyleaflet](https://ipyleaflet.readthedocs.io). Clicking and dragging will pan the field of view, and zooming will adjust the field of view. There are 2 polar stereographic projections available for mapping in IS2view ([North](https://epsg.io/3413) and [South](https://epsg.io/3031)). The map projection, map center and zoom level will all be set based on the ATL14 region selected. The available basemaps are NASA's Next Generation Blue Marble visualization for the Arctic and Antarctic regions.\n", "\n", "Transects can be extracted by interactively drawing polylines on the leaflet map or programmatically using [geopandas GeoDataFrames](https://geopandas.org/en/stable/docs/reference/api/geopandas.GeoDataFrame.html). See [Recipes](https://is2view.readthedocs.io/en/latest/user_guide/Recipes.html) for more information.\n", "\n", - "#### Set plot parameters for ATL14" + "## Set plot parameters for ATL14" ] }, { @@ -128,7 +129,7 @@ " draw_tools='polyline',\n", " attribution=False)\n", "# set plot attributes\n", - "IS2widgets.set_variables(ds)\n", + "IS2widgets.get_variables(ds)\n", "IS2widgets.set_atl14_defaults()\n", "wbox = IS2widgets.VBox([\n", " IS2widgets.variable,\n", @@ -144,7 +145,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Add xarray dataset as an image service layer" + "## Add xarray dataset as an image service layer" ] }, { @@ -168,7 +169,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Extract transects using selected geometries" + "## Extract transects using selected geometries" ] }, { @@ -185,11 +186,8 @@ } ], "metadata": { - "interpreter": { - "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" - }, "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "py13", "language": "python", "name": "python3" }, @@ -203,7 +201,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.13.0" } }, "nbformat": 4, diff --git a/notebooks/IS2-ATL15-Viewer.ipynb b/doc/source/notebooks/IS2-ATL15-Viewer.ipynb similarity index 90% rename from notebooks/IS2-ATL15-Viewer.ipynb rename to doc/source/notebooks/IS2-ATL15-Viewer.ipynb index f6713d3..4cb3db7 100644 --- a/notebooks/IS2-ATL15-Viewer.ipynb +++ b/doc/source/notebooks/IS2-ATL15-Viewer.ipynb @@ -6,7 +6,8 @@ "metadata": {}, "source": [ "# ICESat-2 ATL15 Viewer\n", - "Interactive visualization and data extraction tool for ICESat-2 Gridded Land Ice Height Change data (ATL15)" + "\n", + "This ({nb-download}`notebook `) is an interactive visualization and data extraction tool for ICESat-2 Gridded Land Ice Height Change data (ATL15)" ] }, { @@ -26,7 +27,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Set parameters for ATL15\n", + "## Set parameters for ATL15\n", "- Asset: Location to get the data\n", "- Directory: Working data directory\n", "- Release: ATL15 data release (001, 002, 003, 004)\n", @@ -59,7 +60,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Query CMR for ATL15 granule\n", + "## Query CMR for ATL15 granule\n", "NASA's Common Metadata Repository (CMR) is a catalog of metadata records contained within the Earth Observing System Data and Information System (EOSDIS). ICESat-2 ATL15 data is archived at the NASA Distributed Active Archive Center (DAAC) at the [National Snow and Ice Data Center (NSIDC)](https://nsidc.org/daac/)." ] }, @@ -85,7 +86,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Read and inspect ATL15 data\n", + "## Read and inspect ATL15 data\n", "The selected group within ATL15 data will be read using [xarray](https://xarray.dev/) and [rioxarray](https://corteva.github.io/rioxarray/)." ] }, @@ -106,13 +107,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Interactive Mapping with Leaflet\n", + "## Interactive Mapping with Leaflet\n", "\n", "Interactive maps within IS2view are built upon [ipyleaflet](https://ipyleaflet.readthedocs.io). Clicking and dragging will pan the field of view, and zooming will adjust the field of view. There are 2 polar stereographic projections available for mapping in IS2view ([North](https://epsg.io/3413) and [South](https://epsg.io/3031)). The map projection, map center and zoom level will all be set based on the ATL15 region selected. The available basemaps are NASA's Next Generation Blue Marble visualization for the Arctic and Antarctic regions.\n", "\n", "Regional time series can be extracted from ATL15 by interactively drawing geometries on the leaflet map or programmatically using [geopandas GeoDataFrames](https://geopandas.org/en/stable/docs/reference/api/geopandas.GeoDataFrame.html). See [Recipes](https://is2view.readthedocs.io/en/latest/user_guide/Recipes.html) for more information.\n", "\n", - "#### Set plot parameters for ATL15\n", + "## Set plot parameters for ATL15\n", "Specifies the variable to plot, the [colormap](https://matplotlib.org/gallery/color/colormap_reference.html), and the normalization for the plot colors." ] }, @@ -148,7 +149,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Add xarray dataset as an image service layer" + "## Add xarray dataset as an image service layer" ] }, { @@ -173,7 +174,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Extract time series from selected geometries\n", + "## Extract time series from selected geometries\n", "- Point: time series for a geolocation\n", "- Transect: time series for a line segment\n", "- Regional average: time series for a polygon or bounding box" @@ -190,19 +191,11 @@ " variable=IS2widgets.variable.value,\n", " )" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] } ], "metadata": { - "interpreter": { - "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" - }, "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "py13", "language": "python", "name": "python3" }, @@ -216,7 +209,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.13.0" } }, "nbformat": 4, diff --git a/doc/source/user_guide/Examples.rst b/doc/source/user_guide/Examples.rst index e67479f..914d964 100644 --- a/doc/source/user_guide/Examples.rst +++ b/doc/source/user_guide/Examples.rst @@ -4,21 +4,27 @@ Examples ======== -Jupyter Notebooks for visualizing ICESat-2 Gridded Land Ice products: +Jupyter notebooks for visualizing the ICESat-2 ATL14/15 Gridded Land Ice Products: -- Read and Plot ATL14 data |github atl14| |nbviewer atl14| - Visualizing the ICESat-2 Gridded Antarctic and Arctic Land Ice Height product -- Read and Plot ATL15 data |github atl15| |nbviewer atl15| - Visualizing the ICESat-2 Gridded Antarctic and Arctic Land Ice Height Change product +.. toctree:: + :hidden: + :maxdepth: 1 -.. |github atl14| image:: https://img.shields.io/badge/GitHub-view-6f42c1?style=flat&logo=Github - :target: https://github.com/tsutterley/IS2view/blob/main/notebooks/IS2-ATL14-Viewer.ipynb + ../notebooks/IS2-ATL14-Viewer + ../notebooks/IS2-ATL15-Viewer -.. |nbviewer atl14| image:: https://raw.githubusercontent.com/jupyter/design/master/logos/Badges/nbviewer_badge.svg - :target: https://nbviewer.jupyter.org/github/tsutterley/IS2view/blob/main/notebooks/IS2-ATL14-Viewer.ipynb +.. grid:: 1 2 2 2 -.. |github atl15| image:: https://img.shields.io/badge/GitHub-view-6f42c1?style=flat&logo=Github - :target: https://github.com/tsutterley/IS2view/blob/main/notebooks/IS2-ATL15-Viewer.ipynb + .. grid-item-card:: ATL14 Visualizer + :text-align: center + :img-top: ../_assets/ATL14.png + :link: ../notebooks/IS2-ATL14-Viewer.html + :link-alt: Visualizing the ICESat-2 Gridded Antarctic and Arctic Land Ice Height product -.. |nbviewer atl15| image:: https://raw.githubusercontent.com/jupyter/design/master/logos/Badges/nbviewer_badge.svg - :target: https://nbviewer.jupyter.org/github/tsutterley/IS2view/blob/main/notebooks/IS2-ATL15-Viewer.ipynb + .. grid-item-card:: ATL15 Visualizer + :text-align: center + :img-top: ../_assets/ATL15.png + :link: ../notebooks/IS2-ATL15-Viewer.html + :link-alt: Visualizing the ICESat-2 Gridded Antarctic and Arctic Land Ice Height Change product + +Check out the `recipes <./Recipes.html>`_ for some more specific examples and code snippets.