Created
June 2, 2021 00:13
-
-
Save JimBlaney/287907ef274661f96e81bcdd32a0055f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "import itertools\n", | |
| "import numpy as np\n", | |
| "import requests\n", | |
| "from skyfield.api import load, wgs84, EarthSatellite" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "def download_file(url, fname):\n", | |
| " r = requests.get(url, stream=True)\n", | |
| " with open(fname, 'wb') as f:\n", | |
| " for chunk in r.iter_content(chunk_size=1024): \n", | |
| " if chunk: # filter out keep-alive new chunks\n", | |
| " f.write(chunk)\n", | |
| " \n", | |
| "def grouper(iterable, n, fillvalue=None):\n", | |
| " args = [iter(iterable)] * n\n", | |
| " return itertools.zip_longest(*args, fillvalue=fillvalue)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "download_file('https://celestrak.com/NORAD/elements/active.txt', 'active.3le')\n", | |
| "\n", | |
| "with open('active.3le', 'r') as f:\n", | |
| " lines = [line.rstrip() for line in f]\n", | |
| "\n", | |
| "name_norad = dict([\n", | |
| " (line0, int(line1[2:7]))\n", | |
| " for line0, line1, _ in grouper(lines, 3)\n", | |
| "])\n", | |
| "\n", | |
| "tles = dict([\n", | |
| " (int(line1[2:7]), [line1, line2])\n", | |
| " for _, line1, line2 in grouper(lines, 3)\n", | |
| "])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(<EarthSatellite catalog #40115 epoch 2021-06-01 18:19:10 UTC>,\n", | |
| " <EarthSatellite catalog #40115 epoch 2021-06-01 18:19:10 UTC>)" | |
| ] | |
| }, | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "EarthSatellite(*tles[40115]), EarthSatellite(*tles[name_norad['WORLDVIEW-3 (WV-3)']])," | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "ts = load.timescale()\n", | |
| "sat = EarthSatellite(*tles[name_norad['SXM-7']])\n", | |
| "observer = wgs84.latlon(39.912470, -105.001870, 1639.135) # Maxar - Westminster, CO" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "inclination, azimuth, distance = (sat - observer).at(ts.now()).altaz()\n", | |
| "subpoint = wgs84.subpoint(sat.at(ts.now()))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "42.660571478168116 195.82700457694645 37574143.19946067\n", | |
| "-115.29722135289026 0.02467793186248258 35787773.48622969\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "print(inclination.degrees, azimuth.degrees, distance.m)\n", | |
| "print(subpoint.longitude.degrees, subpoint.latitude.degrees, subpoint.elevation.m)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 432x288 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "from matplotlib import pyplot as plt\n", | |
| "%matplotlib inline\n", | |
| "\n", | |
| "fig = plt.figure()\n", | |
| "\n", | |
| "ax = fig.add_subplot(projection='polar')\n", | |
| "ax.set_theta_direction(-1)\n", | |
| "ax.set_theta_zero_location('N')\n", | |
| "ax.scatter(\n", | |
| " azimuth.degrees * np.pi / 180,\n", | |
| " inclination.degrees\n", | |
| ")\n", | |
| "ax.set_xticks(np.linspace(0, 2*np.pi, 8, endpoint=False))\n", | |
| "ax.set_xticklabels('N|NE|E|SE|S|SW|W|NW'.split('|'))\n", | |
| "ax.set_yticklabels([])\n", | |
| "ax.set_ylim(90, 0)\n", | |
| "\n", | |
| "plt.show()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "import pandas as pd\n", | |
| "import geopandas as gpd\n", | |
| "from shapely.geometry import LineString\n", | |
| "\n", | |
| "gpd.GeoDataFrame({\n", | |
| " 'name': ['SXM-7']\n", | |
| "}, geometry=[LineString([\n", | |
| " [observer.longitude.degrees, observer.latitude.degrees, observer.elevation.m],\n", | |
| " [subpoint.longitude.degrees, subpoint.latitude.degrees, subpoint.elevation.m]\n", | |
| "])],\n", | |
| "crs='EPSG:4326').to_file('sxm7.shp')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "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.8.6" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 4 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment