-
Notifications
You must be signed in to change notification settings - Fork 12
/
satellites.html
227 lines (213 loc) · 16.7 KB
/
satellites.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
<script type="text/javascript">
const lists = {
"gps-ops": ["GPS BIIR-2 (PRN 13)", "GPS BIIR-3 (PRN 11)", "GPS BIIR-4 (PRN 20)", "GPS BIIR-5 (PRN 28)", "GPS BIIR-6 (PRN 14)", "GPS BIIR-8 (PRN 16)", "GPS BIIR-9 (PRN 21)", "GPS BIIR-10 (PRN 22)", "GPS BIIR-11 (PRN 19)", "GPS BIIR-13 (PRN 02)", "GPS BIIRM-1 (PRN 17)", "GPS BIIRM-2 (PRN 31)", "GPS BIIRM-3 (PRN 12)", "GPS BIIRM-4 (PRN 15)", "GPS BIIRM-5 (PRN 29)", "GPS BIIRM-6 (PRN 07)", "GPS BIIRM-8 (PRN 05)", "GPS BIIF-1 (PRN 25)", "GPS BIIF-2 (PRN 01)", "GPS BIIF-3 (PRN 24)", "GPS BIIF-4 (PRN 27)", "GPS BIIF-5 (PRN 30)", "GPS BIIF-6 (PRN 06)", "GPS BIIF-7 (PRN 09)", "GPS BIIF-8 (PRN 03)", "GPS BIIF-9 (PRN 26)", "GPS BIIF-10 (PRN 08)", "GPS BIIF-11 (PRN 10)", "GPS BIIF-12 (PRN 32)", "GPS BIII-1 (PRN 04)", "GPS BIII-2 (PRN 18)"],
"dmc": ["BEIJING 1", "HJ-1A", "HJ-1B", "YAOGAN 4", "DEIMOS-1", "UK-DMC 2", "RISAT 1", "DMC3-FM1", "DMC3-FM2", "DMC3-FM3"],
"stations": ["ISS (ZARYA)", "KESTREL EYE IIM (KE2M)", "DELLINGR (RBLE)", "UBAKUSAT", "CUBERRT", "TEMPEST-D", "RAINCUBE", "HALOSAT", "ENDUROSAT ONE", "EQUISAT", "RADSAT-G", "AEROCUBE 12A", "AEROCUBE 12B", "LEMUR-2-VU", "LEMUR-2-ALEXANDER", "LEMUR-2-YUASA", "LEMUR-2-TOMHENDERSON", "SIRIUSSAT-1", "SIRIUSSAT-2", "TANUSHA-3", "STARS-ME", "ISS DEB (SEDA-AP)", "CATSAT-2", "DELPHINI", "UNITE", "CATSAT-1", "ISS DEB", "ISS DEB", "ISS DEB", "ISS DEB", "RAAVANA-1", "UGUISU", "NEPALISAT-1", "SPOOQY-1", "PINOT", "IOD-1 GEMS", "SWIATOWID", "KRAKSAT", "VCC A", "ENTRYSAT", "VCC C", "VCC B", "ISS DEB", "ISS DEB", "RWASAT-1", "AQT-D", "NARSSCUBE-1", "PROGRESS-MS 13", "STPSAT-4", "HARP", "PHOENIX", "CRYOCUBE", "AZTECHSAT-1", "RADSAT-U", "QARMAN", "SORTIE", "ICS-EF (ISS DEB)", "SOYUZ-MS 16", "PROGRESS-MS 14", "G-SAT", "QUETZAL-1", "HTV-9 (KOUNOTORI 9)", "CREW DRAGON DEMO-2", "RED-EYE 2 (MERLOT)"],
"galileo": ["GSAT0101 (PRN E11)", "GSAT0102 (PRN E12)", "GSAT0103 (PRN E19)", "GSAT0104 (PRN E20)", "GSAT0201 (PRN E18)", "GSAT0202 (PRN E14)", "GSAT0203 (PRN E26)", "GSAT0204 (PRN E22)", "GSAT0205 (PRN E24)", "GSAT0206 (PRN E30)", "GSAT0209 (PRN E09)", "GSAT0208 (PRN E08)", "GSAT0211 (PRN E02)", "GSAT0210 (PRN E01)", "GSAT0207 (PRN E07)", "GSAT0212 (PRN E03)", "GSAT0213 (PRN E04)", "GSAT0214 (PRN E05)", "GSAT0215 (PRN E21)", "GSAT0216 (PRN E25)", "GSAT0217 (PRN E27)", "GSAT0218 (PRN E31)", "GSAT0221 (PRN E15)", "GSAT0222 (PRN E33)", "GSAT0219 (PRN E36)", "GSAT0220 (PRN E13)"],
"glo-ops": ["COSMOS 2425 (716)", "COSMOS 2433 (720)", "COSMOS 2432 (719)", "COSMOS 2434 (721)", "COSMOS 2436 (723)", "COSMOS 2456 (730)", "COSMOS 2457 (733)", "COSMOS 2459 (731)", "COSMOS 2461 (735)", "COSMOS 2460 (732)", "COSMOS 2464 (736)", "COSMOS 2471 (701K)", "COSMOS 2476 (744)", "COSMOS 2477 (745)", "COSMOS 2475 (743)", "COSMOS 2485 (747)", "COSMOS 2492 (754)", "COSMOS 2500 (755)", "COSMOS 2501 (702K)", "COSMOS 2514 (751)", "COSMOS 2516 (753)", "COSMOS 2522 (752)", "COSMOS 2527 (756)", "COSMOS 2529 (757)", "COSMOS 2534 (758)", "COSMOS 2544 (759)", "COSMOS 2545 (760)"],
"sarsat": ["SARSAT 7 (NOAA 15)", "METEOSAT-8 (MSG-1)", "GPS BIIR-08", "GPS BIIR-11", "GPS BIIR-12", "GPS BIIR-13", "SARSAT 10 (NOAA 18)", "GPS BIIR-14M", "METEOSAT-9 (MSG-2)", "GOES 13", "SARSAT 11 (METOP-A)", "GPS BIIR-16M", "GPS BIIR-17M", "GPS BIIR-18M", "SARSAT 12 (NOAA 19)", "GOES 14", "GOES 15", "GLONASS-K 1", "GPS BIIF-2", "GSAT0101 (GALILEO-PFM)", "GSAT0102 (GALILEO-FM2)", "LUCH 5A", "METEOSAT-10 (MSG-3)", "SARSAT 13 (METOP-B)", "GPS BIIF-3", "GSAT0103 (GALILEO-FM3)", "GSAT0104 (GALILEO-FM4)", "GPS BIIF-4", "INSAT-3D", "GPS BIIF-5", "LUCH 5V", "GPS BIIF-6", "GPS BIIF-7", "GSAT0201 (GALILEO 5)", "GSAT0202 (GALILEO 6)", "GPS BIIF-8", "GLONASS-K 2", "GPS BIIF-9", "GSAT0203 (GALILEO 7)", "GSAT0204 (GALILEO 8)", "GPS BIIF-10", "METEOSAT-11 (MSG-4)", "GSAT0205 (GALILEO 9)", "GSAT0206 (GALILEO 10)", "GPS BIIF-11", "ELEKTRO-L 2", "GSAT0209 (GALILEO 12)", "GSAT0208 (GALILEO 11)", "GPS BIIF-12", "GSAT0211 (GALILEO 14)", "GSAT0210 (GALILEO 13)", "INSAT-3DR", "GSAT0207 (GALILEO 15)", "GSAT0212 (GALILEO 16)", "GSAT0213 (GALILEO 17)", "GSAT0214 (GALILEO 18)", "GOES 16", "GSAT-17", "GSAT0215 (GALILEO 19)", "GSAT0216 (GALILEO 20)", "GSAT0217 (GALILEO 21)", "GSAT0218 (GALILEO 22)", "GOES 17", "GSAT0221 (GALILEO 25)", "GSAT0222 (GALILEO 26)", "GSAT0219 (GALILEO 23)", "GSAT0220 (GALILEO 24)", "BEIDOU-3 M13", "BEIDOU-3 M14", "METEOR-M2 2"],
"weather": ["NOAA 15", "DMSP 5D-3 F15 (USA 147)", "METEOSAT-8 (MSG-1)", "DMSP 5D-3 F16 (USA 172)", "NOAA 18", "METEOSAT-9 (MSG-2)", "FORMOSAT-3 FM6", "FORMOSAT-3 FM1", "FORMOSAT-3 FM5", "FORMOSAT-3 FM3", "FORMOSAT-3 FM4", "FORMOSAT-3 FM2", "GOES 13", "METOP-A", "DMSP 5D-3 F17 (USA 191)", "FENGYUN 3A", "FENGYUN 2E", "NOAA 19", "GOES 14", "METEOR-M 1", "DMSP 5D-3 F18 (USA 210)", "GOES 15", "COMS 1", "FENGYUN 3B", "SUOMI NPP", "FENGYUN 2F", "METEOSAT-10 (MSG-3)", "METOP-B", "FENGYUN 3C", "METEOR-M 2", "HIMAWARI-8", "FENGYUN 2G", "METEOSAT-11 (MSG-4)", "ELEKTRO-L 2", "HIMAWARI-9", "GOES 16", "FENGYUN 4A", "CYGFM05", "CYGFM04", "CYGFM02", "CYGFM01", "CYGFM08", "CYGFM06", "CYGFM07", "CYGFM03", "FENGYUN 3D", "NOAA 20", "GOES 17", "FENGYUN 2H", "METOP-C", "GEO-KOMPSAT-2A", "IOD-1 GEMS", "METEOR-M2 2"],
"science": ["AKEBONO (EXOS-D)", "HST", "POLAR", "SWAS", "ORSTED", "CXO", "XMM-NEWTON", "TERRA", "CLUSTER II-FM7 (SAMBA)", "CLUSTER II-FM6 (SALSA)", "CLUSTER II-FM5 (RUMBA)", "CLUSTER II-FM8 (TANGO)", "ODIN", "TIMED", "RHESSI", "INTEGRAL", "CORIOLIS", "SORCE", "MOST", "SCISAT 1", "SWIFT", "FORMOSAT-3 FM6", "FORMOSAT-3 FM1", "FORMOSAT-3 FM5", "FORMOSAT-3 FM3", "FORMOSAT-3 FM4", "FORMOSAT-3 FM2", "CLOUDSAT", "CALIPSO", "HINODE (SOLAR-B)", "SJ-6C", "SJ-6D", "AGILE", "AIM", "FGRST (GLAST)", "WISE", "SDO", "CRYOSAT 2", "X-SAT", "GCOM-W1 (SHIZUKU)", "NUSTAR", "NEOSSAT", "IRIS", "HISAKI (SPRINT-A)", "CASSIOPE", "STSAT-3", "SWARM B", "SWARM A", "SWARM C", "BRITE-CA1 (TORONTO)", "OCO 2", "BRITE-PL2 (HEWELIUSZ)", "RESURS P2", "MMS 1", "MMS 2", "MMS 3", "MMS 4", "ASTROSAT", "DAMPE", "PISAT", "HXMT (HUIYAN)", "FLYING LAPTOP", "PICSAT", "ZHANGZHENG-1 (CSES)", "ICON"],
"planet": ["SKYSAT-1", "SKYSAT-2", "SKYSAT-C1", "FLOCK 2P-6", "FLOCK 2P-9", "FLOCK 2P-10", "FLOCK 2P-8", "FLOCK 2P-12", "FLOCK 2P-3", "SKYSAT-C4", "SKYSAT-C5", "SKYSAT-C2", "SKYSAT-C3", "FLOCK 3P-20", "FLOCK 3P-8", "FLOCK 3P-51", "FLOCK 3P-24", "FLOCK 3P-4", "FLOCK 3P-2", "FLOCK 3P-12", "FLOCK 3P-11", "FLOCK 3P-60", "FLOCK 3P-58", "FLOCK 3P-57", "FLOCK 3P-70", "FLOCK 3P-79", "FLOCK 3P-86", "FLOCK 3P-34", "FLOCK 3P-35", "FLOCK 3P-33", "FLOCK 3P-49", "FLOCK 3P-68", "FLOCK 3P-61", "FLOCK 3P-40", "FLOCK 3P-14", "FLOCK 3P-54", "FLOCK 3P-23", "FLOCK 3P-76", "FLOCK 3P-32", "FLOCK 3P-77", "FLOCK 3P-80", "FLOCK 3P-66", "FLOCK 3P-65", "FLOCK 3P-50", "FLOCK 3P-46", "FLOCK 3P-47", "FLOCK 3P-64", "FLOCK 3P-39", "FLOCK 3P-55", "FLOCK 3P-81", "FLOCK 3P-87", "FLOCK 3P-74", "FLOCK 3P-31", "FLOCK 3P-83", "FLOCK 2K-03", "FLOCK 2K-04", "FLOCK 2K-47", "FLOCK 2K-45", "FLOCK 2K-23", "FLOCK 2K-21", "FLOCK 2K-07", "FLOCK 2K-40", "FLOCK 2K-39", "FLOCK 2K-37", "FLOCK 2K-31", "FLOCK 2K-32", "FLOCK 2K-29", "FLOCK 2K-30", "FLOCK 2K-44", "FLOCK 2K-43", "FLOCK 2K-41", "FLOCK 2K-35", "FLOCK 2K-25", "FLOCK 2K-19", "FLOCK 2K-18", "FLOCK 2K-16", "FLOCK 2K-15", "FLOCK 2K-12", "FLOCK 2K-11", "FLOCK 2K-10", "FLOCK 2K-09", "FLOCK 2K-06", "SKYSAT-C11", "SKYSAT-C10", "SKYSAT-C9", "SKYSAT-C8", "SKYSAT-C7", "SKYSAT-C6", "FLOCK 3M-4", "FLOCK 3M-2", "FLOCK 3P'-3", "FLOCK 3P'-2", "FLOCK 3P'-4", "FLOCK 3R-10", "FLOCK 3R-12", "FLOCK 3R-11", "FLOCK 3R-8", "FLOCK 3R-4", "FLOCK 3R-3", "FLOCK 3R-15", "FLOCK 3R-10", "FLOCK 3R-6", "FLOCK 3R-7", "FLOCK 3R-1", "FLOCK 3S-1", "FLOCK 3S-3", "SKYSAT-C12", "SKYSAT-C13", "FLOCK 3S-2", "FLOCK 3K-3", "FLOCK 3K-4", "FLOCK 3K-1", "FLOCK 3K-2", "FLOCK 3K-6", "FLOCK 3K-5", "FLOCK 3K-8", "FLOCK 3K-7", "FLOCK 3K-11", "FLOCK 3K-10", "FLOCK 3K-9", "FLOCK 4A-1", "FLOCK 4A-2", "FLOCK 4A-3", "FLOCK 4A-4", "FLOCK 4A-17", "FLOCK 4A-18", "FLOCK 4A-19", "FLOCK 4A-7", "FLOCK 4A-6", "FLOCK 4A-5", "FLOCK 4A-11", "FLOCK 4A-10", "FLOCK 4A-9", "FLOCK 4A-16", "FLOCK 4A-15", "FLOCK 4A-13", "FLOCK 4A-12", "FLOCK 4P-9", "FLOCK 4P-10", "FLOCK 4P-11", "FLOCK 4P-12", "FLOCK 4P-4", "FLOCK 4P-3", "FLOCK 4P-2", "FLOCK 4P-1", "FLOCK 4P-8", "FLOCK 4P-7", "FLOCK 4P-6", "FLOCK 4P-5", "SKYSAT-C14", "SKYSAT-C16", "SKYSAT-C15"]
};
function selectType() {
var type = $("#node-input-sattype").val();
loadList(type);
}
function loadList(type) {
$("#node-input-satid").children().remove();
$.each(lists[type], function(s) {
$("#node-input-satid").append($('<option>', {
value: lists[type][s],
text: lists[type][s]
}));
})
}
loadList('stations');
RED.nodes.registerType('satellite',{
category: 'satellites',
color: '#878787',
defaults: {
sattype: {value:"stations", required: true},
satid: {value:"", required: true},
name: {value:""}
},
inputs:1,
outputs:1,
icon: "satellite.png",
label: function() {
return this.satid || "satellite";
}
});
</script>
<script type="text/html" data-template-name="satellite">
<div class="form-row">
<label for="node-input-sattype"><i class="icon-tag"></i> Sat. Type</label>
<select id ="node-input-sattype" style="width: 70%;" onchange="selectType();">
<option value="stations" selected>Space Stations</option>
<option value="weather">Weather</option>
<option value="science">Space & Earth Science</option>
<option value="sarsat">Search & Rescue</option>
<option value="dmc">Disaster Relief</option>
<option value="gps-ops">GPS</option>
<option value="galileo">Galileo</option>
<option value="glo-ops">GLONASS</option>
<option value="planet">Planet Labs</option>
</select>
</div>
</div>
<div class="form-row">
<label for="node-input-satid"><i class="icon-tag"></i> Satellite</label>
<select id ="node-input-satid" style="width: 70%;"></select>
</div>
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
<script type="text/html" data-help-name="satellite">
<p>A node that takes an (optional) timestamp input and provides the respective position ({x,y,z} and {lat,lon,alt}) and velocity ({x,y,z}) of the selected satellite.</p>
<p>If no timestamp is provided, the current datetime is used.</p>
<p>The input can also be an array of timestamps, for which, the output will be an array of positions and velocities at each of those times.</p>
<p><strong>Units - Position</strong></p>
<p>The <code>x</code>, <code>y</code>, <code>z</code> and <code>alt</code> values in expressed in metres and the <code>lat</code> and <code>lon</code> values are in degrees.
<p><strong>Units - Velocity</strong></p>
<p>The <code>x</code>, <code>y</code> and <code>z</code> values in expressed in metres/second.
</script>
<script type="text/javascript">
RED.nodes.registerType('tle',{
category: 'satellites',
color: '#878787',
defaults: {
satid: {value:""},
tle1: {value:""},
tle2: {value:""},
coordsys: {value:""},
name: {value:""}
},
inputs:1,
outputs:1,
icon: "satellite.png",
label: function() {
return this.name || "TLE";
}
});
</script>
<script type="text/html" data-template-name="tle">
<div class="form-row">
<label for="node-input-satid"><i class="icon-tag"></i> Sat. Name</label>
<input type="text" id="node-input-satid" placeholder="e.g. 'ISS'">
</div>
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> TLE 1</label>
<input type="text" id="node-input-tle1" placeholder="1 25544U 98067A 13149.87225694 .00009369 00000-0 16828-3 0 9031">
</div>
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> TLE 2</label>
<input type="text" id="node-input-tle2" placeholder="2 25544 051.6485 199.1576 0010128 012.7275 352.5669 15.50581403831869">
</div>
<div class="form-row">
<label for="node-input-coordsys"><i class="icon-tag"></i> Coords</label>
<select id ="node-input-coordsys" >
<option value="euclid3d">Euclidean 3D</option>
<option value="latlongdeg">Lat/Long (degrees)</option>
<option value="latlongrad">Lat/Long (radians)</option>
</select>
</div>
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
<script type="text/html" data-help-name="tle">
<p>A node to convert TLE data into position ({x,y,z} and {lat,lon,alt}) and velocity ({x,y,z}) given an (optional) timestamp <code>payload</code>.</p>
<p>If no <code>payload</code> is provided, the current datetime is used.</p>
<p>The input can also be an array of timestamps, for which, the output will be an array of positions and velocities at each of those times.</p>
<p><strong>Units - Position</strong></p>
<p>The <code>x</code>, <code>y</code>, <code>z</code> and <code>alt</code> values in expressed in metres and the <code>lat</code> and <code>lon</code> values are in degrees.
<p><strong>Units - Velocity</strong></p>
<p>The <code>x</code>, <code>y</code> and <code>z</code> values in expressed in metres/second.
<p><strong>Orbit (TLE) Data</strong></p>
<p>TLE data is available at <a href="https://www.celestrak.com/NORAD/elements/" target="_blank">celestrak</a>, including a space station data set found <a href="https://www.celestrak.com/NORAD/elements/stations.txt" target="_blank">here</a></p>
</script>
<script type="text/javascript">
RED.nodes.registerType('timearray',{
category: 'satellites',
color: '#878787',
defaults: {
plus: {value:0},
minus: {value:0},
samples: {value:1},
name: {value:""}
},
inputs: 1,
outputs: 1,
icon: "clock.png",
paletteLabel: 'time array',
label: function() {
return this.name || "time array";
}
});
</script>
<script type="text/html" data-template-name="timearray">
<div class="form-row" style="margin-left: 100px; width: 70%">
<label style="width: 70px; margin-right: 10px;" for="node-input-minus"><strong>+/-</strong> Minus</label>
<input style="width: calc(40% - 120px)" type="number" id="node-input-minus" placeholder="0" min="0">
<label style="width:30px">mins</label>
<label style="margin-left: 20%;width: 70px; margin-right: 10px;" for="node-input-plus"><strong>+/-</strong> Plus</label>
<input style="width: calc(40% - 120px)" type="number" id="node-input-plus" placeholder="0" min="0">
<label style="width:30px">mins</label>
</div>
<div class="form-row">
<label for="node-input-samples"><i class="icon-tag"></i> Samples</label>
<input type="number" id="node-input-samples" placeholder="1" min="1">
</div>
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
<script type="text/html" data-help-name="timearray">
<p>Given an input of a single timestamp, this node will output an array, length <code>samples</code>,
of timestamps ranging from <code>msg.payload - minus</code> to <code>msg.payload + plus</code></p>
</script>
<script type="text/javascript">
RED.nodes.registerType('earth',{
category: 'satellites',
color: '#6b89ef',
defaults: {
name: {value:""}
},
inputs:1,
outputs:0,
align: "right",
icon: "white-globe.png",
label: function() {
return this.name || "earth";
}
});
</script>
<script type="text/html" data-template-name="earth">
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
<script type="text/html" data-help-name="earth">
<div>
<label>Open Earth View <a href="/earth" style="margin-left:8px; color:#888;" target="_blank">
<i class="fa fa-external-link"></i></a></label>
</div>
<p>A 3D viewer for Earth and any satellites that are input here.</p>
<p>The minimum <code>msg.payload</code> must contain <code>name</code> and <code>position</code> properties, e.g.</p>
<pre>{
"name" : "ISS",
"position": {
"lat": 51.05,
"lon": -1.35,
"alt": 41300
}}</pre>
<p><code>lat</code> and <code>lon</code> are in decimal degress and <code>alt</code> is in meters above the mean sea level.</p>
<p>Optionally, you can also include a <code>color</code> property, which will set the colour of the marker.</p>
<p>If an array of 2 or more points is sent, they are plotted as a line without any marker.</p>
</script>