A two-line element set (TLE) is a data format encoding a list of orbital elements of an Earth-orbiting object for a given point in time
TLEs can be found for all unclassified earth obiiting objects at https://www.space-track.org/
Space track has a REST api at: https://www.space-track.org/{basicspacedata}/{query}/{class}/{boxscore}/
Node package satellite.js lets us calculate the lat lon and altitude at any point in time.
The data manipulation comes from the lineOfSight app. By passing a TLE pair into getOrbitFeatures it produces a nice valid geoJSON object
const sat = {
tleLine1: '1 38709U 12039C 18176.45092306 -.00000027 00000-0 89675-5 0 9994', // from spacetrack.org
tleLine2: '2 38709 99.1344 171.7433 0009800 265.5409 94.4650 14.23967048307959',
name: 'EXACTVIEW-1',
norad_id: '38709',
};
const orbit = getOrbitFeatures(sat, []);
// => orbit
/*
[
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[
149.126672094675,
-46.325774094014264
],
[
147.61820193460832,
-49.78023125948867
],
[
145.91790715604338,
-53.21642108471533
],
[
143.96650941714515,
-56.629491297649885
],
[
141.67942378261648,
-60.012440785824516
],
[
138.9322180490511,
-63.3547870710626
],
[
135.5356145415003,
-66.64018275262596
],
[
131.19143892966213,
-69.84192808480788
],
[
125.41473393906787,
-72.9141786367966
],
[
117.40578534794722,
-75.77407933141095
],
[
105.91137397834757,
-78.26660068260823
],
[
89.4627673503093,
-80.11109236414964
],
[
68.18283093139677,
-80.9051662077592
],
[
46.280080134381926,
-80.38526172593288
],
[
28.662392270242105,
-78.73170216965171
],
[
16.21382759477304,
-76.35005904078378
],
[
7.576303520551308,
-73.5530791157029
],
[
1.399968553513295,
-70.51815838939476
],
[
-3.203464132376988,
-67.33996673192631
],
[
-6.77413818155905,
-64.0703691562815
],
[
-9.642384351089293,
-60.73922797056346
],
[
-12.016336860814256,
-57.36463961497773
],
[
-14.031803045041256,
-53.95809667087946
],
[
-15.780458476332555,
-50.527209351390674
],
[
-17.326146556443657,
-47.07721042270266
],
[
-18.714594882076923,
-43.61182559030505
],
[
-19.979395328287012,
-40.13379762201066
],
[
-21.145799147163792,
-36.645213369654904
],
[
-22.233195860014256,
-33.147711844725116
],
[
-23.25677186678902,
-29.642632608469327
],
[
-24.22865636584923,
-26.13109555726408
],
[
-25.15872105047962,
-22.61407480365375
],
[
-26.055158040266456,
-19.092441269939943
],
[
-26.924904416581196,
-15.566994297438402
],
[
-27.773962079729504,
-12.038484028532794
],
[
-28.607645322133322,
-8.507627337732856
],
[
-29.430778615710146,
-4.975119257612478
],
[
-30.24786078884747,
-1.4416413205310479
],
[
-31.063207753920118,
2.092132092287287
],
[
-31.881083518340198,
5.625528501007284
],
[
-32.70582846660314,
9.157874755626635
],
[
-33.54198967343829,
12.688482171769667
],
[
-34.39447015689543,
16.21665409941737
],
[
-35.26869610584036,
19.741667627632143
],
[
-36.170823126253,
23.262763816330974
],
[
-37.10799536651604,
26.77913073943874
],
[
-38.088682084050355,
30.2898796346533
],
[
-39.12312645462798,
33.7940111808868
],
[
-40.22395837892512,
37.29036747828899
],
[
-41.40705026786576,
40.777562956192185
],
[
-42.6927393513595,
44.253883531972754
],
[
-44.10761566782299,
47.71713901001069
],
[
-45.687196392983445,
51.16442580048073
],
[
-47.48005425281823,
54.59178458105775
],
[
-49.55434679105958,
57.99361637229731
],
[
-52.008495348962875,
61.361723701317224
],
[
-54.98920597907521,
64.68363518352695
],
[
-58.722805218275674,
67.93954876335658
],
[
-63.57078001802311,
71.09648161657783
],
[
-70.12654882832753,
74.09658457191786
],
[
-79.36112787149341,
76.8334380469222
],
[
-92.69713020944246,
79.10792832457679
],
[
-111.31132029826712,
80.5799197291725
],
[
-133.55548562492262,
80.85389438910926
],
[
-154.12506956980442,
79.83258408216152
],
[
-169.5655097013433,
77.83773301045585
],
[
-180.29132767568154,
75.25889511031802
]
]
},
"properties": {
"kind": "orbit",
"name": "EXACTVIEW-1",
"norad_id": "38709",
"id": -1,
"type": "---",
"state": "operational",
"height": 824.2372371319498
}
},
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[
179.70867232431846,
75.25889511031802
],
[
172.1985655052027,
72.3495538248401
],
[
166.73973093097712,
69.24750985352941
],
[
162.60324133918715,
66.02667388905982
],
[
159.34718246619397,
62.728315264680155
],
[
156.69841945052468,
59.37669860183382
],
[
154.48244330466505,
55.9868190982789
],
[
152.58378900020247,
52.56836638193785
],
[
150.92350409783714,
49.12786541681476
],
[
149.44595766741634,
45.669863572094364
],
[
148.1108847923647,
42.19764605167997
],
[
146.88842380051344,
38.713665269511004
],
[
145.75593046948848,
35.21981367898194
],
[
144.6958750006337,
31.717601276505253
],
[
143.69441781048738,
28.20827394668842
],
[
142.7404217253887,
24.692893970663675
],
[
141.8247510851055,
21.172395673065434
],
[
140.93976317336637,
17.6476243434122
],
[
140.07893056966168,
14.119363683140389
],
[
139.23655307524047,
10.588352900774593
],
[
138.40753468609654,
7.055310061087759
],
[
137.58719758006757,
3.5209278732305798
],
[
136.7711300571179,
-0.014109455271629132
],
[
135.95504891630668,
-3.5491228119576674
],
[
135.13467059041346,
-7.083433173833337
],
[
134.30558225486416,
-10.616356598480522
],
[
133.46310470734153,
-14.147198440601406
],
[
132.60213792101115,
-17.675245950439336
],
[
131.71697822694975,
-21.1997582532595
],
[
130.80109276252892,
-24.719952438007464
],
[
129.84683090358143,
-28.23498640151101
],
[
128.8450486268172,
-31.743921913103808
]
]
},
"properties": {
"kind": "orbit",
"name": "EXACTVIEW-1",
"norad_id": "38709",
"id": -1,
"type": "---",
"state": "operational",
"height": 824.2372371319498
}
}
]
*/