Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

img to ground tutorial update for latest knoten, 0.2.1 had usgscsm lib path issue #120

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
csm sandbox outline
jrcain-usgs committed Nov 4, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
commit 346b2632b3be278d1efc062c9f61aa1b17e21bdc
153 changes: 153 additions & 0 deletions docs/getting-started/csm-stack/csm-sandbox.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# CSM Sandbox\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": [
"## Imports"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"import os # File Path Joining\n",
"import json # Read ISD as python dictionary\n",
"\n",
"from knoten import csm # Knoten CSM\n",
"\n",
"import shapely.wkt # Math and Plotting Tools\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Create CSM Camera from existing ISD"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"data_dir = '../data/image_to_ground'\n",
"isd_file = os.path.join(data_dir, 'isd_file.json')\n",
"\n",
"camera = csm.create_csm(isd_file)\n",
"\n",
"with open(isd_file) as json_file:\n",
" isd_dict = json.load(json_file)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ???"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"# Change stuff?\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Footprint"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'CSM footprint')"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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06eLXq8XrVYrPXv2lOjoaOV40TXAsh7Fd8Uyp+5evXrd9Dx79+6V/v37i7Ozszg5OUlgYKC8//77yvGia6slH9wFi4judLwmTkREpFKcTiciIlIpBnEiIiKV4ur0WsRoNCIxMREuLi7c/pGI6A4lIsjIyICPj0+pO4BKYhCvRRITE6tkf2oiIlK/8+fPo1GjRhXmYRCvRYq2iTx//rzJBipERHTnSE9Ph6+vrxITKsIgXosUTaG7uroyiBMR3eHMuazKhW1EREQqxSBORESkUgziREREKsUgTkREpFIM4kRERCrFIE5ERKRSDOJEREQqxSBORESkUgziREREKsUgTkREpFIM4kRERCrFIE5ERKRSDOJEREQqxSBORESkUgziREREKsUgTkREpFIM4kRERCrFIE5ERKRSDOJEREQqxSBORESkUgziREREKsUgTkREpFIM4kRERCrFIE5ERKRSDOJEREQqxSBORESkUgziREREKsUgTkREpFIM4kRERCrFIE5ERKRSDOJEREQqxSBORESkUgziREREKsUgTkREpFIM4kRERCrFIE5ERKRSDOJEREQqxSBORESkUgziREREKsUgTkREpFIM4kRERCrFIE5ERKRSqgniaWlpGD16NHQ6HXQ6HUaPHo2rV69WWEZEEBoaCh8fHzg4OKB3796IjY01yZOTk4Px48fDw8MDTk5OGDRoEBISEipd95UrV9CoUSNoNJqbto+IiOhWqCaIjxgxApGRkQgPD0d4eDgiIyMxevToCsvMnj0bc+fOxfz587Fv3z7o9Xr0798fGRkZSp6JEydizZo1WLlyJXbs2IFr165h4MCBKCgoqFTdY8eORWBgYNV0moiIqCKiAnFxcQJAdu/eraRFREQIADl69GiZZYxGo+j1egkLC1PSsrOzRafTyYIFC0RE5OrVq2JraysrV65U8ly4cEGsrKwkPDzc4rq//PJL6dWrl/z9998CQNLS0izqp8FgEABiMBgsKkdERHWHJbFAFSPxiIgI6HQ6dOnSRUnr2rUrdDoddu3aVWaZ06dPIzk5GUFBQUqaVqtFr169lDIHDhxAXl6eSR4fHx8EBAQoecytOy4uDjNmzMDy5cthZWXe25qTk4P09HSTBxERkblUEcSTk5Ph6elZKt3T0xPJycnllgEALy8vk3QvLy/lWHJyMuzs7ODm5lZhnpvV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",
"text/plain": [
"<Figure size 500x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Get the footprint using the model and plot it\n",
"\n",
"boundary = csm.generate_boundary((isd_dict[\"image_lines\"], isd_dict[\"image_samples\"]))\n",
"\n",
"lons, lats, alts = csm.generate_latlon_boundary(camera, boundary)\n",
"\n",
"plt.rcParams[\"figure.figsize\"] = [5, 3]\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\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}