From a4eab98c11edde70c900c779ba12e1ee66fbb503 Mon Sep 17 00:00:00 2001 From: Amy Stamile <74275278+amystamile-usgs@users.noreply.github.com> Date: Thu, 16 May 2024 13:03:55 -0700 Subject: [PATCH] Knoten Camera Operations Tutorial (#71) * Knoten Camera Operations * small fixes * spellcheck fixes * fixed pds download * addressed PR feedback --- .codespellrc | 2 +- .../csm-stack/knoten-camera-tutorial.ipynb | 337 ++++++++++++++++++ mkdocs.yml | 1 + 3 files changed, 339 insertions(+), 1 deletion(-) create mode 100644 docs/getting-started/csm-stack/knoten-camera-tutorial.ipynb diff --git a/.codespellrc b/.codespellrc index e7a4d63..d54cf15 100644 --- a/.codespellrc +++ b/.codespellrc @@ -1,2 +1,2 @@ [codespell] -skip = *.po,*.ts,*.js,*.map,*.css,*.bsp,*.cub,*.tsc,*.tf,*.ti,*.pdf +skip = *.po,*.ts,*.js,*.map,*.css,*.bsp,*.cub,*.tsc,*.tf,*.ti,*.pdf,*.ipynb diff --git a/docs/getting-started/csm-stack/knoten-camera-tutorial.ipynb b/docs/getting-started/csm-stack/knoten-camera-tutorial.ipynb new file mode 100644 index 0000000..9f43384 --- /dev/null +++ b/docs/getting-started/csm-stack/knoten-camera-tutorial.ipynb @@ -0,0 +1,337 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tutorial: Generating a CSM Camera Model from PDS Image in Knoten with Basic Camera Operations\n", + "\n", + "## 1. Prerequisites\n", + "\n", + "### Install Knoten\n", + "This tutorial requires Knoten version 0.4 or higher.\n", + "\n", + "`conda install -c conda-forge knoten=0.4`\n", + "\n", + "### Install Matplotlib\n", + "This tutorial requires matplotlib.\n", + "\n", + "`conda install -c conda-forge matplotlib`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Create a CSM camera for a PDS image" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import json\n", + "import shapely.wkt\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import urllib.request\n", + "from csmapi import csmapi\n", + "import pandas as pd\n", + "\n", + "import ale\n", + "from knoten import csm, sensor_utils\n", + "from knoten.shape import Ellipsoid\n", + "from knoten.illuminator import Illuminator" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Download the image from the PDS archives" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data_dir = '../data/image_to_ground'\n", + "filename = os.path.join(data_dir, \"B10_013341_1010_XN_79S172W.IMG\")\n", + "\n", + "downloader = urllib.request.URLopener()\n", + "downloader.retrieve(\"https://asc-pds-mars-reconnaissance-orbiter.s3.us-west-2.amazonaws.com/CTX/mrox_0826/data/B10_013341_1010_XN_79S172W.IMG\", filename)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Set Ale SPICE Data Area\n", + "If an ale driver is going to be used that leverages SPICE data, it is necessary to set the ALESPICEROOT.\n", + "\n", + "For this example, the necessary SPICE data is preselected. In most cases, you do not know what kernels are needed for a particular image. \n", + "\n", + "To set your spice area, one can do this using normal shell syntax, e.g.:\n", + "\n", + "`export ALESPICEROOT=/path/to/ale/spice`\n", + "\n", + "or inside of a conda environment:\n", + "\n", + "`conda env config vars set ALESPICEROOT=/path/to/ale/spice.`\n", + "\n", + "See instructions for installing SPICE data [here](https://github.com/DOI-USGS/ISIS3?tab=readme-ov-file#full-isis-data-download)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "props = {\n", + " 'kernels': [\n", + " os.path.join(data_dir, 'B10_013341_1010_XN_79S172W_0.bsp'),\n", + " os.path.join(data_dir, 'B10_013341_1010_XN_79S172W_1.bsp'),\n", + " os.path.join(data_dir, 'mro_ctx_v11.ti'),\n", + " os.path.join(data_dir, 'mro_sc_psp_090526_090601_0_sliced_-74000.bc'),\n", + " os.path.join(data_dir, 'mro_sc_psp_090526_090601_1_sliced_-74000.bc'),\n", + " os.path.join(data_dir, 'mro_sclkscet_00082_65536.tsc'),\n", + " os.path.join(data_dir, 'mro_v16.tf'),\n", + " os.path.join(data_dir, 'naif0012.tls'),\n", + " os.path.join(data_dir, 'pck00008.tpc')\n", + " ]\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5. Generate and Write an Ale ISD" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "isd_string = ale.loads(filename, props=props)\n", + "csm_isd = os.path.splitext(filename)[0] + '.json'\n", + "\n", + "with open(csm_isd, 'w') as isd_file:\n", + " isd_file.write(isd_string)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6. Create a CSM Camera Model from ISD" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "camera = csm.create_csm(csm_isd)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 7. Get the footprint using the camera model and plot it" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'CSM footprint')" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with open(csm_isd, 'r') as fp:\n", + " aledict = json.load(fp)\n", + "\n", + "nlines, nsamples = aledict[\"image_lines\"], aledict[\"image_samples\"]\n", + "\n", + "boundary = csm.generate_boundary((nlines, nsamples))\n", + "\n", + "lons, lats, alts = csm.generate_latlon_boundary(camera, boundary)\n", + "\n", + "plt.rcParams[\"figure.figsize\"] = [5, 5]\n", + "plt.axes().set_aspect('equal','datalim')\n", + "plt.plot(lons, lats)\n", + "plt.xlabel(\"Longitude (deg)\")\n", + "plt.ylabel(\"Latitude (deg)\")\n", + "plt.title(\"CSM footprint\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Body Fixed Footprint')" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bodyfixed_footprint = csm.generate_bodyfixed_footprint(camera, boundary)\n", + "\n", + "csm_wkt = bodyfixed_footprint.ExportToWkt()\n", + "\n", + "csm_geom = shapely.wkt.loads(csm_wkt)\n", + "csm_x, csm_y = csm_geom.geoms[0].exterior.coords.xy\n", + "\n", + "plt.xlabel(\"x\")\n", + "plt.ylabel(\"y\")\n", + "plt.plot(csm_x, csm_y)\n", + "plt.xticks(\n", + " rotation=45, \n", + " horizontalalignment='right',\n", + " fontweight='light'\n", + ")\n", + "plt.title(\"Body Fixed Footprint\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 8. Get Camera Info at an Image Point" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "image_pt = csmapi.ImageCoord(nlines/2, nsamples/2)\n", + "shape = Ellipsoid.from_csm_sensor(camera)\n", + "illuminator = Illuminator()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "129387.64878271958\n", + "251123.7546265136\n" + ] + }, + { + "data": { + "text/plain": [ + "{'PhaseAngle': 58.986916499957154,\n", + " 'EmissionAngle': 0.10161336902837881,\n", + " 'SlantDistance': 251124.1495516768,\n", + " 'TargetCenterDistance': 3628059.1980234315,\n", + " 'SubSpacecraftLatitude': -78.89842320708418,\n", + " 'SubSpacecraftLongitude': 187.2644730283536,\n", + " 'LocalRadius': 3376935.3088204544,\n", + " 'RightAscension': 6.933803726271131,\n", + " 'Declination': 78.9463718229981,\n", + " 'LineResolution': 6.0485566304149945,\n", + " 'SampleResolution': 5.017404463546378,\n", + " 'PixelResolution': 5.532980546980687}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "caminfo = {\n", + " \"PhaseAngle\": sensor_utils.phase_angle(image_pt, camera, shape, illuminator),\n", + " \"EmissionAngle\": sensor_utils.emission_angle(image_pt, camera, shape),\n", + " \"SlantDistance\": sensor_utils.slant_distance(image_pt, camera, shape),\n", + " \"TargetCenterDistance\": sensor_utils.target_center_distance(image_pt, camera),\n", + " \"SubSpacecraftLatitude\": sensor_utils.sub_spacecraft_point(image_pt, camera).lat,\n", + " \"SubSpacecraftLongitude\": sensor_utils.sub_spacecraft_point(image_pt, camera).lon,\n", + " \"LocalRadius\": sensor_utils.local_radius(image_pt, camera, shape),\n", + " \"RightAscension\": sensor_utils.right_ascension_declination(image_pt, camera)[0],\n", + " \"Declination\": sensor_utils.right_ascension_declination(image_pt, camera)[1],\n", + " \"LineResolution\": sensor_utils.line_resolution(image_pt, camera, shape),\n", + " \"SampleResolution\": sensor_utils.sample_resolution(image_pt, camera, shape),\n", + " \"PixelResolution\": sensor_utils.pixel_resolution(image_pt, camera, shape),\n", + "}\n", + "\n", + "caminfo" + ] + } + ], + "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.9.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/mkdocs.yml b/mkdocs.yml index 7f269ec..364e6c2 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -41,6 +41,7 @@ nav: - Home: getting-started/index.md - CSM Stack: - Generating an ISD, creating a CSM model, and converting coordinates: getting-started/csm-stack/image-to-ground-tutorial.ipynb + - Knoten - Basic Camera Operations: getting-started/csm-stack/knoten-camera-tutorial.ipynb - "Using ISIS: First Steps": - Introduction to ISIS: getting-started/using-isis-first-steps/introduction-to-isis.md - Locating and Ingesting Image Data: getting-started/using-isis-first-steps/locating-and-ingesting-image-data.md