{ "cells": [ { "cell_type": "code", "execution_count": 20, "metadata": { "hideCode": false, "hideOutput": true, "hidePrompt": true, "scrolled": true, "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "from notebook.services.config import ConfigManager\n", "cm = ConfigManager()\n", "\n", "cm.update('livereveal', {\n", " 'width': \"90%\",\n", " 'height': \"90%\",\n", " 'scroll': True,\n", "})\n", "\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "bShowInline = True # Set = False for document generation\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "from ipywidgets import widgets, Layout, Box, GridspecLayout\n", "\n", "\n", "##Basic mcq\n", "\n", "def create_multipleChoice_widget(description, options, correct_answer, hint):\n", " if correct_answer not in options:\n", " options.append(correct_answer)\n", " \n", " correct_answer_index = options.index(correct_answer)\n", " \n", " radio_options = [(words, i) for i, words in enumerate(options)]\n", " alternativ = widgets.RadioButtons(\n", " options = radio_options,\n", " description = '',\n", " disabled = False,\n", " indent = False,\n", " align = 'center',\n", " )\n", " \n", " description_out = widgets.Output(layout=Layout(width='auto'))\n", " \n", " with description_out:\n", " print(description)\n", " \n", " feedback_out = widgets.Output()\n", "\n", " def check_selection(b):\n", " a = int(alternativ.value)\n", " if a==correct_answer_index:\n", " s = '\\x1b[6;30;42m' + \"correct\" + '\\x1b[0m' +\"\\n\"\n", " else:\n", " s = '\\x1b[5;30;41m' + \"try again\" + '\\x1b[0m' +\"\\n\"\n", " with feedback_out:\n", " feedback_out.clear_output()\n", " print(s)\n", " return\n", " \n", " check = widgets.Button(description=\"check\")\n", " check.on_click(check_selection)\n", " \n", " hint_out = widgets.Output()\n", " \n", " def hint_selection(b):\n", " with hint_out:\n", " print(hint)\n", " \n", " with feedback_out:\n", " feedback_out.clear_output()\n", " print(hint)\n", " \n", " hintbutton = widgets.Button(description=\"hint\")\n", " hintbutton.on_click(hint_selection)\n", " \n", " return widgets.VBox([description_out, \n", " alternativ, \n", " widgets.HBox([hintbutton, check]), feedback_out], \n", " layout=Layout(display='flex',\n", " flex_flow='column',\n", " align_items='stretch',\n", " width='auto')) \n", "\n", "test = create_multipleChoice_widget('1. Let a, b, c be real numbers. If ac','a\n", "\n", "
\n", " Synthetic Aperture Radar Interferometry \n", "\n", " SAR Principles and Phenomenology \n", "\n", "

\n", " Paul A Rosen \n", "
\n", " Date: August 1, 2021 \n", "
" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "\n", "Contributors to content include: Scott Hensley, Anthony Freeman, Jakob van Zyl, Piyush Agram, Howard Zebker\n", "\n", "This notebook presents the basics of synthetic aperture radar interferometry. The student will be exposed to:\n", " \n", "1. What is Radar?\n", "2. Basic definitions\n", "3. What is Synthetic Aperture Radar?\n", "4. Properties of Radar Images\n", "5. What is Synthetic Aperture Radar Interferometry?\n", "6. What other modalities of SAR are important?\n", "7. What is range-Doppler geometry, why is it important, and how does it relate to geographic coordinates?\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "## Lecture Outline\n", "\n", "\n", "### First Segment: Radar Imaging Fundamentals\n", "\n", "\n", "1. Basic Principles of Radar and SAR\n", "2. Properties of Radar Images\n" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "skip" } }, "source": [ "## Introduction and Motivation\n", "\n", "You are reading this because you are interested in the geodetic aspects of synthetic aperture radar (SAR), particularly interferometric synthetic aperture radar (InSAR). From a technical perspective, SAR and InSAR are quite complex, and even to experts in the field be a source of wonder as to how an instrument that illuminates a very large footprint on the ground can deliver almost arbitrarily fine resolution images, and relative motions of image points over time at mm to cm accuracy. This can be illustrated by first looking at an \"image\" of the raw data before processing.\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide003.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide004.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide005.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide006.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide007.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide008.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide009.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide010.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide012.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide013.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "**Table of Radar and Spacecraft Parameters and constants used for any computed examples in this notebook**\n", "\n", "| Parameter | Symbol | Value | Comment |\n", "| --- | --- | --- | --- | \n", "| Wavelength | $\\lambda $ | 0.24 m | (L-band) \n", "| Antenna Length | $L_a$ | 10 m | | \n", "| Antenna Width | $W_a$ | 2 m | | \n", "| Off-nadir boresight angle | $\\theta_l$ | 30$^\\circ$ | |\n", "| Azimuth squint of boresight angle | $\\theta_{sq}$ | 0$^\\circ$ | |\n", "| Spacecraft Velocity | $v_{sc}$ | 7,500 m/s | Assumed constant |\n", "| Spacecraft Altitude | $h_{sc}$ | 750,000 m | Assumed constant | \n", "| Radar Range Bandwidth | $B_r$ | 20 MHz | |\n", "| Radar Pulse Duration | $\\tau_r$ | 20 $\\mu$s | Determines average power |\n", "| Nominal Pulse Rate | $f_p$ | 1600 Hz | Determines average power and ambiguity levels |\n", "| Peak Power on Transmit | $P_T$ | 4,000 W | Determines SNR |\n", "| Radar Noise Temperature | $T_r$ | 300 K | Determines SNR |\n", "| Corner Reflector Dimension | $L_{cr}$ | 2.4 m | Determines SNR |\n", "| Speed of light | $c $ | 299792456 m/s | | \n", "| Boltzman constant | $k$ | 1.38064852 $\\times$ 10$^{-23}$ m$^2$ kg s$^{-2}$ K$^{-1}$ | -228.6 dB | \n", "| Gravitational Constant | $G$ | 6.672 $\\times$ 10$^{-11}$ m$^3$ kg$^{−1}$ s$^{−2}$ | | \n", "| Earth's Mass | $M_E$ | 5.9742 $\\times$ 10$^{24}$ kg | |" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "import numpy as np\n", "Lambda = 0.24\n", "L_a = 10.\n", "W_a = 2. \n", "theta_l = 30. * np.pi/180.\n", "theta_sq = 0. * np.pi/180.\n", "v_sc = 7500.\n", "h_sc = 750000. \n", "B_r = 20.e6\n", "tau_r = 10.e-6\n", "f_p = 1600.\n", "P_T = 4000.\n", "T_r = 300.\n", "L_cr =2.4\n", "c = 299792456 \n", "k = 1.38064852e-23\n", "G = 6.672e-11\n", "M_E = 5.9742e24" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide018.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide014.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Range coding to achieve better resolution\n", "\n", "If it is not possible to transmit a narrow enough pulse with sufficient power to achieve the desired results, it is customary to transmit a coded waveform in the pulse to create a broader bandwidth to the pulsed signal. The resolution is then the reciprocal of the bandwidth. Specifically, the resolution of a radar pulse with no coded waveform of pulse duraftion $\\tau_r$ is\n", "\n", "\\begin{equation}\n", "\\Delta\\rho (\\tau_r) = c * \\tau_r / 2\n", "\\end{equation}\n", "\n", "while the resolution of a radar pulse with a waveform coded to have a bandwidth $B_r$ is\n", "\n", "\\begin{equation}\n", "\\Delta\\rho (B_r) = c * (1 /B_r) / 2\n", "\\end{equation}" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "hidePrompt": true, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "rho = h_sc / np.cos(theta_l)\n", "Delta_rho_taur = c * tau_r / 2.\n", "Delta_rho_Br = c * (1./B_r) / 2." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Spacecraft altitude = 750000.00 m\n", "Pulse length = 10.00 microsec\n", "Pulse Bandwidth= 20.00 MegaHertz\n", "Range from spacecraft to boresight intersection with ground = 866025.40 m\n", "Range resolution based on pulse duration = 1498.96 m\n", "Range resolution based on bandwidth of coded range pulse = 7.49 m\n" ] } ], "source": [ "print(\"Spacecraft altitude =\",\"{:.2f}\".format(h_sc),\"m\")\n", "print(\"Pulse length =\",\"{:.2f}\".format(1.e6*tau_r),\"microsec\")\n", "print(\"Pulse Bandwidth=\",\"{:.2f}\".format(1.e-6*B_r),\"MegaHertz\")\n", "print(\"Range from spacecraft to boresight intersection with ground =\",\"{:.2f}\".format(rho),\"m\")\n", "print(\"Range resolution based on pulse duration = \"\"{:.2f}\".format(Delta_rho_taur),\"m\")\n", "print(\"Range resolution based on bandwidth of coded range pulse = \"\"{:.2f}\".format(Delta_rho_Br),\"m\")" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide019.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Ground Resolution Variability with Swath and Terrain" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "hidePrompt": true, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "tau_p = 0.\n", "theta=np.linspace(25.,45.,100)\n", "Delta_rhog_Br = Delta_rho_Br / np.sin((theta-tau_p) * np.pi / 180.)\n", "tau_p = 10.\n", "Delta_rhog_Br_10deg = Delta_rho_Br / np.sin((theta-tau_p) * np.pi / 180.)\n", "tau_p = 20.\n", "Delta_rhog_Br_20deg = Delta_rho_Br / np.sin((theta-tau_p) * np.pi / 180.)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEUCAYAAAAlXv26AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABa60lEQVR4nO3dd1QU19vA8e+yy9KWXhQEFRAUe8eKscUeS+wtxjRbbCmWqJho7K8mahKT/FLVGE0kxZKYaGyxEMWu2LAhCIqAdFjYef8YWEGBBQUW4X7OmbOzU58ZhufOTrlXIUmShCAIglBhmRg7AEEQBKF0iUQvCIJQwYlELwiCUMGJRC8IglDBiUQvCIJQwYlELwiCUMGVu0T/888/M2jQIHr27EmXLl14+eWXOX36tNHiadKkCbdv335s+MyZM2nfvj19+/alb9++9OnTh86dO/Pll18aIcq8OnXqRLdu3ejbty/9+vWjZ8+e9O7dmwMHDpTK+mrXrk1sbGyh05w5c4Z58+YBcPbsWSZPnlwqsZQnt2/fpkmTJk88f3BwML179y7BiIqmKH/PRwUGBtKpUydWrVpVYnHk/O/lPl7u3LlD79696du3L//99x9Dhw6lV69e/PXXXyW23oKsXbuW3bt3F3l6Y/398qMydgC5rVy5kmPHjvHRRx9RrVo1AI4cOcIbb7xBUFAQbm5uRo4wrzFjxvDKK6/ov0dGRtKzZ086deqEt7e3ESODFStW0KBBA/33P//8k9mzZ/Pvv/8aJZ6rV68SHR0NQIMGDVi9erVR4hBKx+bNm9m3bx9Vq1Yt8WXnPl6Cg4NxcnLi22+/5dixY9y/f5+///67xNeZn+DgYGrVqlUm6ypp5SbRx8TE8N133/H333/j4uKiH966dWtmzpxJamoqIJ+tNmzYkEuXLjF9+nRq1qzJBx98QHx8PAqFgrFjx9KvXz+Cg4NZsGAB27dvB8jzfc2aNURERHDv3j0iIiKoUqUKy5cvx8XFhePHj7NgwQIUCgUNGjRAp9MVeRuioqKQJAmNRgPAunXr2LNnD2lpaaSmpjJjxgy6du1a6PrPnDnD/Pnz0Wq1VK9encjISGbOnIm/vz///PMPn332GVqtFnNzc2bMmFGkM0ZJkrh9+za2trb6YT/99BObNm1Cp9NhZ2fH3Llz8fb25vjx4yxZskS/3W+88QbdunUjMTGR999/n4sXL6JQKGjfvj3Tp09HpXp4CAUFBbFr1y4+//zzPN/nz5/P6tWrSUxMZNasWfTr10//tyhsuQ0aNOD111/n0KFD3L17l1dffZXhw4fn2bbNmzezd+9e1q1bB0BYWBhjxoxh37593Lhxgw8//JD4+HiysrIYNWoUAwcOJDg4mA8//BBLS0uSk5P54YcfeO+997h58yYmJibUq1ePDz74gGPHjhV4DIWFhfHee++RkZGBJEkMHDiQESNGFPg30Gq1LFmyhCNHjqBUKmnYsCGzZs1Co9Fw5cqVfI/h3I4fP87bb7/NypUradq0aZ5xe/fu5fPPPycjI4PY2Fj69evH1KlTCQ4OZtWqVXh4eHDlyhUyMzN5//33adasGbGxscyaNYtbt25hZ2eHs7MzPj4+vPnmm3mWXdBxktvw4cORJInXXnuNwMBAbG1tC/yfzL3ft27dilqtzrON+f3v5ez3OXPm8NFHH5GYmMioUaOIiooiOjqavn37snnzZi5cuMCKFStITU3FxMSESZMm0bFjR4KCgvj5559JTU1Fo9Gwfv36Ardr5syZaDQaLl26RFRUFLVr12bp0qX8+uuvnDt3jmXLlqFUKunatas+7uTkZGbNmvXY8ZNbYcd53bp1ee211zh48CApKSlMnz6d559/vtD9X9D/aYGkcuLvv/+W+vfvb3C6jh07SmvXrpUkSZK0Wq3UuXNnadeuXZIkSVJUVJTUvn176cSJE9LRo0elXr166efL/X316tVS586dpcTEREmSJOmNN96QPv74Yyk9PV1q06aNdPjwYUmSJGnbtm2Sr6+vFB4e/lgcM2bMkNq1aye98MILUqdOnaSWLVtK48ePl44cOSJJkiTdvn1bGjVqlJSamipJkiRt375d6t27d6Hr12q1UkBAgLRv3z5JkiTpyJEjUu3ataWjR49K169fl3r37i3FxsZKkiRJly9fltq2bSslJyfnu4+ef/55qU+fPlL79u2l9u3bS7NmzZJu3bolSZIkBQcHS8OHD5dSUlIkSZKkgwcPSt27d5ckSZJGjx4tbd++XZIkSQoNDZXmz58vSZIkvfvuu9KCBQsknU4npaenS2PHjpU+//xzSZIkydfXV7p//760detW6fXXX9fHkft77v7cfwtDy12/fr0kSZJ09uxZqX79+lJaWlqebU1MTJSaN28u3b17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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.style.use('seaborn-whitegrid')\n", "fig = plt.figure()\n", "ax = plt.axes()\n", "plt.plot(theta,Delta_rhog_Br,label='0$^\\circ$ slope')\n", "plt.plot(theta,Delta_rhog_Br_10deg,label='10$^\\circ$ slope')\n", "plt.plot(theta,Delta_rhog_Br_20deg,label='20$^\\circ$ slope')\n", "plt.xlabel(\"Look angle $(^\\circ)$\")\n", "plt.ylabel(\"Ground Range Resolution \")\n", "plt.title(\"Ground Range Resolution versus look angle for different slopes\")\n", "plt.legend(loc='best');" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide016.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Some Example Beam Dimensions" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "hidePrompt": true, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "theta_3db_az = 0.866 * Lambda / L_a # 0.866 factor typically more representative of actual 3dB point\n", "theta_3db_el = 0.866 * Lambda / W_a\n", "Delta_X_az = rho * theta_3db_az\n", "Delta_X_el = rho * theta_3db_el / np.cos(theta_l)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Antenna Length in azimuth (along track) = 10.00 m\n", "Antenna Width in elevation (perp to boresight and azimuth)= 2.00 m\n", "Azimuth beamwidth = 1.19 degrees\n", "Elevation beamwidth = 5.95 degrees\n", "Azimuth beam extent at reference range = 17999.47 m\n", "Elevation beam extent at reference range = 103920.00 m\n" ] } ], "source": [ "print(\"Antenna Length in azimuth (along track) =\",\"{:.2f}\".format(L_a),\"m\")\n", "print(\"Antenna Width in elevation (perp to boresight and azimuth)=\",\"{:.2f}\".format(W_a),\"m\")\n", "print(\"Azimuth beamwidth =\",\"{:.2f}\".format(180.*theta_3db_az/np.pi),\"degrees\")\n", "print(\"Elevation beamwidth =\",\"{:.2f}\".format(180.*theta_3db_el/np.pi),\"degrees\")\n", "print(\"Azimuth beam extent at reference range =\",\"{:.2f}\".format(Delta_X_az),\"m\")\n", "print(\"Elevation beam extent at reference range =\",\"{:.2f}\".format(Delta_X_el),\"m\")" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide022.png)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "hideCode": false, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%html\n", "" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide029.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Azimuth Resolution Example\n", "\n", "The two-way propagation of the signal from spacecraft to ground and back again gives a factor of two greater Doppler bandwidth extent across the azimuth beam than one might expect. Thus the synthetic aperture length can be thought of as twice the illuminated swath extent." ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "hidePrompt": true }, "outputs": [], "source": [ "# allow for some playing with parameters locally. \n", "\n", "theta_3db_az = 0.866 * Lambda / L_a # 0.866 factor typically more representative of actual 3dB point\n", "Delta_X_az = rho * theta_3db_az\n", "SynAp_az = 2. * Delta_X_az\n", "theta_SynAp = 0.866 * Lambda / SynAp_az\n", "delta_x_SynAp = rho * theta_SynAp\n", "\n" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "hideCode": true, "hidePrompt": true, "scrolled": true, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Azimuth antenna length = 10.00 m\n", "Azimuth beam extent at reference range illuminating a target = 17999.47 m\n", "Synthetic aperture length (effective) = 35998.94 m\n", "Synthetic aperture effective beamwidth = 0.331 millidegrees\n", "Synthetic aperture resolution = 5.000 m\n" ] } ], "source": [ "print(\"Azimuth antenna length =\",\"{:.2f}\".format(L_a),\"m\")\n", "print(\"Azimuth beam extent at reference range illuminating a target =\",\"{:.2f}\".format(Delta_X_az),\"m\")\n", "print(\"Synthetic aperture length (effective) =\",\"{:.2f}\".format(SynAp_az),\"m\")\n", "print(\"Synthetic aperture effective beamwidth =\",\"{:.3f}\".format(1000.*180.*theta_SynAp/np.pi),\"millidegrees\")\n", "print(\"Synthetic aperture resolution =\",\"{:.3f}\".format(delta_x_SynAp),\"m\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " Test your understanding - Radar Resolution \n", "
\n", "\n", "What is the intrinsic resolution of a strip map SAR image with 40 MHz range bandwidth and an antenna of dimension 2 m in elevation and 12 m in the flight direction?\n", "\n", "A. 12 m in range and 12 m in flight direction\n", "\n", "B. 1 m in range and 6 m in flight direction\n", "\n", "C. 3 m in range and 1 m in flight direction\n", "\n", "D. 3 m in range and 6 m in flight direction " ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "36d5fcf0f1c84d739203906fa1d71b57", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Output(layout=Layout(width='auto')), RadioButtons(options=(('A', 0), ('B', 1), ('C', 2), ('D', …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "resolution" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide027.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide028.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide028a.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide028b.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Learning more about SAR \n", "\n", "We have developed a comprehensive notebook that covers Synthetic Aperture Radar Theory and Processing Methods in much greater detail. \n", "\n", "It is included in the set of course notebooks under the \"notebooks/SAR Processor Tutorial\" folder. This notebook \n", "- simulates radar echoes from point targets\n", "- develops the radar equation and the signal-to-noise ratio of corner reflector targets\n", "- develops the range and azimuth signals and processing methods analytically and computationally. \n", "- describes linear FM signals and range compression\n", "- describes Doppler and synthetic aperture concepts, including range migration\n", "- contrasts standard range doppler processing methods to time domain approaches\n" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide033.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide034.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide034a.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide035.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide036.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide037.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide038.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide039.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide040.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide041.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide042.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide043.png)" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "hidePrompt": true, "slideshow": { "slide_type": "slide" } }, "source": [ "![label](Figs/Slide044.png)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "hideCode": true, "hidePrompt": true }, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Hide code", "hide_code_all_hidden": true, "hide_input": false, "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.10" }, "rise": { "history": false, "transition": "none" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }