Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nsat/jspredict
A Javascript port of the popular predict satellite tracking library
https://github.com/nsat/jspredict
Last synced: 2 months ago
JSON representation
A Javascript port of the popular predict satellite tracking library
- Host: GitHub
- URL: https://github.com/nsat/jspredict
- Owner: nsat
- License: other
- Created: 2015-11-03T01:32:42.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-10-15T21:59:54.000Z (over 2 years ago)
- Last Synced: 2024-03-22T21:53:32.306Z (3 months ago)
- Language: JavaScript
- Homepage:
- Size: 50.8 KB
- Stars: 48
- Watchers: 15
- Forks: 15
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-space - jspredict - A Javascript port of the popular predict satellite tracking library. (Spacecraft / Tracking & Orbit Determination)
README
# JsPredict
A Javascript port of the popular `predict` satellite tracking library.
### Based on:
- PREDICT: http://www.qsl.net/kd2bd/predict.html
- PyPredict: https://github.com/nsat/pypredict
- Python-SGP4: https://github.com/brandon-rhodes/python-sgp4### Depends on:
- Satellite.js: https://github.com/shashwatak/satellite-js
- Moment.js: https://github.com/moment/moment## Installation
JsPredict has been pushed to the `NPM`, `Meteor` (Atmosphere), and `Bower` package registries, and can also be used by including the src file directly.
### NPM
```
npm install jspredict
```### Meteor
```
meteor add rosh93:jspredict
```### Bower
```
bower install jspredict
```### Manual Include
Download and include `moment.js`: http://momentjs.com/
Include both `satellite.js` and `jspredict.js` to get `satellite` and `jspredict` available on the global `window` namespace.
## API
#### Input Types
```js
tle = 3 line string with "\n" character line breaksqth = 3 element array [latitude (degrees), longitude (degrees), altitude (km)]
time, start, or end = unix timestamp (ms) or date object "new Date()"
```#### Methods
```js
observe(tle 'required', qth 'optional', time 'optional')observes(tle 'required', qth 'optional', start 'optional', end 'required', interval 'optional')
transits(tle 'required', qth 'required', start 'optional', end 'required', minElevation 'optional', maxTransits 'optional')
```## Examples
### Observe a Satellite:
```js
> var tle = '0 LEMUR-2 JEROEN\n1 40934U 15052E 15306.10048119 .00001740 00000-0 15647-3 0 9990\n2 40934 6.0033 141.2190 0010344 133.6141 226.4604 14.76056230 5130';
> var jspredict = require('jspredict');
> jspredict.observe(tle, null);
{ eci:
{ position:
{ x: 6780.217861682045,
y: -1754.945569075624,
z: -382.1001487529574 },
velocity:
{ x: 1.8548312182745958,
y: 7.28225574805238,
z: -0.6742937006920255 } },
gmst: 1.2743405900207918,
latitude: -3.141891992384467,
longitude: -87.52591692501754,
altitude: 635.9975103859342,
footprint: 5474.178485006438 }
```### Observe a Satellite from an Observer at 15 lat, 130, lon, 10m alt:
```js
> var tle = '0 LEMUR-2 JEROEN\n1 40934U 15052E 15306.10048119 .00001740 00000-0 15647-3 0 9990\n2 40934 6.0033 141.2190 0010344 133.6141 226.4604 14.76056230 5130';
> var qth = [15, 130, .1];
> jspredict.observe(tle, qth);
{ eci:
{ position:
{ x: 6808.890168241923,
y: -1638.1745052042197,
z: -392.83171494347425 },
velocity:
{ x: 1.729088700801128,
y: 7.313653076194647,
z: -0.6671038712037236 } },
gmst: 1.275507328110315,
latitude: -3.2301661539920232,
longitude: -86.6090669346031,
altitude: 636.124394452163,
footprint: 5474.682764305541,
azimuth: 75.42118188269167,
elevation: -70.0809770796008,
rangeSat: 12666.306550391646,
doppler: 1.0000075435881037 }
```### Get Transits for Satellite and Observer (minimum elevation of 2 degrees; obtain a maximum of 4 transits)
```js
> var tle = '0 LEMUR-2 JEROEN\n1 40934U 15052E 15306.10048119 .00001740 00000-0 15647-3 0 9990\n2 40934 6.0033 141.2190 0010344 133.6141 226.4604 14.76056230 5130';
> var qth = [15, 130, .1];
> jspredict.transits(tle, qth, 1446516345242, 1446545135046, 2, 4);
[ { start: 1446519623929.2715,
end: 1446520436786.1265,
maxElevation: 26.592307317708126,
apexAzimuth: 173.44894443969358,
maxAzimuth: 244.2708297009277,
minAzimuth: 108.07476128814045,
duration: 812856.8549804688 },
{ start: 1446525901933.6611,
end: 1446526693580.5254,
maxElevation: 24.777958881102588,
apexAzimuth: 170.71484739848532,
maxAzimuth: 244.97838417889344,
minAzimuth: 110.85020906380568,
duration: 791646.8642578125 },
{ start: 1446532176864.1306,
end: 1446533027054.9875,
maxElevation: 20.48579856021555,
apexAzimuth: 194.49205827738396,
maxAzimuth: 242.43145831257118,
minAzimuth: 114.97146874644389,
duration: 850190.8569335938 },
{ start: 1446538461828.8735,
end: 1446539183964.2942,
maxElevation: 15.359176537330036,
apexAzimuth: 188.34763284223402,
maxAzimuth: 236.24036969182643,
minAzimuth: 123.49296057832372,
duration: 722135.4206542969 } ]
>
```