diff --git a/README.md b/README.md
index 5a440b5..3c5ce14 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,4 @@
# Spacecruft Celestia Galmon
-***WORK IN PROGRESS***
-
`celestia-galmon` is a set of scripts to retrieve Galmon GNSS
data and feed it to Celestia for visualization.
@@ -14,11 +12,6 @@ running more than 50 receivers."*
Celestia is a *"real-time space simulation that lets you experience our
universe in three dimensions".*
-* https://galmon.eu
-
-* https://celestia.space
-
-
# Screenshots
Screenshots of running Celestia with GNSS satellites, from
`celestia-gnss`.
@@ -37,18 +30,38 @@ including Galmon data.
# Install
Install thusly.
+Quick & dirty if you want to use pre-generated file:
```
-apt update
-apt install python3-pip
-pip install --user -r requirements.txt
+sudo mkdir -p /usr/share/celestia/extras-standard/galmon
+# Use your username for debian
+sudo chown debian:debian /usr/share/celestia/extras-standard/galmon
+
+wget \
+ -O /usr/share/celestia/extras-standard/galmon/galmon-observers.ssc \
+ https://spacecruft.org/spacecruft/celestia-galmon/raw/branch/main/extras/galmon/galmon-observers.ssc
+
+# Then (re)start Celestia.
```
+If you want to generate your own files:
+```
+# Quick & dirty Python setup
+sudo apt update
+sudo apt install python3-pip
+pip install --user --upgrade pip
+pip install --user -r requirements.txt
+```
# Run
Run thusly.
+Retrieve Galmon observers, output SSC format for Celestia:
```
-./celestia-galmon
+./celestia-galmon-observers
+
+# Save file for Celestia:
+./celestia-galmon-observers > \
+ /usr/share/celestia/extras-standard/galmon/galmon-observers.ssc
```
# Galmon Data
@@ -109,16 +122,9 @@ Observers:
* https://berthub.eu/articles/posts/galmon-project/
-# TODO
-Do.
-
-* All the things.
-
-
# Status
Alpha, under development.
-
# License / Copyright
Unofficial project, not part of Celestia or Galmon.
Upstream sources under their respective copyrights.
diff --git a/celestia-galmon b/celestia-galmon
deleted file mode 100755
index a29a6f2..0000000
--- a/celestia-galmon
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/python3
-"""
- celestia-galmon
- Retrieve Galmon GNSS data and feed it to Celestia for visualization.
-
- Copyright (C) 2022, Jeff Moe, jebba.
- Authors: Jeff Moe
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-"""
-
-# Usage:
-# celestia-galmon
-# Example:
-# ./celestia-galmon > /usr/share/celestia/extras-standard/galmon/galmon.foo
-
-import os
-import json
-import simplejson as json
-
diff --git a/celestia-galmon-observers b/celestia-galmon-observers
new file mode 100755
index 0000000..c71bfdc
--- /dev/null
+++ b/celestia-galmon-observers
@@ -0,0 +1,50 @@
+#!/usr/bin/python3
+"""
+ celestia-galmon-observers
+ Retrieve Galmon observers, output SSC format for Celestia.
+
+ Copyright (C) 2022, Jeff Moe, jebba.
+ Author: Jeff Moe
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+"""
+
+# Usage:
+# celestia-galmon-observers
+# Example:
+# ./celestia-galmon-observers > \
+# /usr/share/celestia/extras-standard/galmon/galmon-observers.ssc
+
+import os
+import json
+import pandas as pd
+
+#observers_url='https://galmon.eu/observers.json'
+observers_url='data/observers.json'
+
+observers = pd.read_json(observers_url, orient='records')
+
+for x in range(len(observers.id)):
+ print('Location "Observer ', observers["id"][x],
+ ', ', observers["owner"][x], '" ',
+ '"Sol/Earth"', sep="")
+ print('{')
+ print(' LongLat [', observers["longitude"][x],
+ observers["latitude"][x], "%.3f" %(observers["h"][x] / 1000),
+ ']')
+ print(' Importance 1000.00')
+ print(' Type "Observatory"')
+ print(' }')
+ print()
+
diff --git a/extras/galmon/galmon-observers.ssc b/extras/galmon/galmon-observers.ssc
new file mode 100644
index 0000000..e10ba7b
--- /dev/null
+++ b/extras/galmon/galmon-observers.ssc
@@ -0,0 +1,609 @@
+Location "Observer 3, PA3FYM" "Sol/Earth"
+{
+ LongLat [ 5.1 52.2 0.063 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 5, W6LHI (Martin)" "Sol/Earth"
+{
+ LongLat [ -122.0 36.9 -0.019 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 14, " "Sol/Earth"
+{
+ LongLat [ 4.3 51.9 0.076 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 15, @0xC5E3" "Sol/Earth"
+{
+ LongLat [ 16.3 48.2 0.305 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 16, KB6GE" "Sol/Earth"
+{
+ LongLat [ -118.4 33.9 -0.025 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 17, " "Sol/Earth"
+{
+ LongLat [ 18.4 -33.9 0.053 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 19, PA3FYM" "Sol/Earth"
+{
+ LongLat [ 5.1 52.2 0.068 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 20, KB6GE pt/mh" "Sol/Earth"
+{
+ LongLat [ -170.7 -14.3 0.064 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 22, thebaldgeek" "Sol/Earth"
+{
+ LongLat [ -117.0 33.4 0.344 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 23, CTF" "Sol/Earth"
+{
+ LongLat [ -46.5 -23.5 0.773 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 25, CTF" "Sol/Earth"
+{
+ LongLat [ -46.5 -23.5 0.762 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 26, ssb" "Sol/Earth"
+{
+ LongLat [ 37.8 55.6 0.203 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 27, Phil (craag)" "Sol/Earth"
+{
+ LongLat [ -0.5 51.2 0.106 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 28, gizmoguy" "Sol/Earth"
+{
+ LongLat [ 175.3 -37.7 0.060 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 29, Phil (craag)" "Sol/Earth"
+{
+ LongLat [ -5.1 50.0 0.168 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 31, jeffpc" "Sol/Earth"
+{
+ LongLat [ -71.1 42.4 0.017 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 32, jeffpc" "Sol/Earth"
+{
+ LongLat [ -71.1 42.4 0.033 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 34, sarnold" "Sol/Earth"
+{
+ LongLat [ -122.7 45.4 0.108 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 35, " "Sol/Earth"
+{
+ LongLat [ 17.0 -22.5 1.703 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 36, " "Sol/Earth"
+{
+ LongLat [ 4.6 52.3 0.058 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 38, ak_hepcat (KL5BN)" "Sol/Earth"
+{
+ LongLat [ -149.7 61.1 0.220 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 40, ISHCHATUL" "Sol/Earth"
+{
+ LongLat [ 35.1 31.7 0.726 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 44, sarnold" "Sol/Earth"
+{
+ LongLat [ -122.7 45.4 0.101 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 45, sarnold" "Sol/Earth"
+{
+ LongLat [ -122.7 45.4 0.106 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 46, sarnold" "Sol/Earth"
+{
+ LongLat [ -122.7 45.4 0.104 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 48, " "Sol/Earth"
+{
+ LongLat [ -105.2 39.8 1.829 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 49, " "Sol/Earth"
+{
+ LongLat [ 32.5 0.2 -6.112 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 50, darkk.net.ru" "Sol/Earth"
+{
+ LongLat [ 30.2 59.9 0.016 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 52, darkk.net.ru" "Sol/Earth"
+{
+ LongLat [ 73.3 54.9 0.129 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 53, mmc" "Sol/Earth"
+{
+ LongLat [ 138.6 -34.9 0.072 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 54, PA3FYM" "Sol/Earth"
+{
+ LongLat [ 5.1 52.2 0.057 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 55, ssb" "Sol/Earth"
+{
+ LongLat [ 37.2 55.6 0.277 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 56, ssb" "Sol/Earth"
+{
+ LongLat [ 37.2 55.6 0.250 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 59, jared" "Sol/Earth"
+{
+ LongLat [ -83.8 42.2 0.249 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 60, jared" "Sol/Earth"
+{
+ LongLat [ -83.8 42.2 0.247 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 64, " "Sol/Earth"
+{
+ LongLat [ -78.9 39.6 0.548 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 69, czane" "Sol/Earth"
+{
+ LongLat [ -157.8 21.3 0.067 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 71, edmonds" "Sol/Earth"
+{
+ LongLat [ -84.3 33.7 0.297 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 74, edmonds" "Sol/Earth"
+{
+ LongLat [ -84.3 33.7 0.291 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 75, chtitux" "Sol/Earth"
+{
+ LongLat [ 55.3 -20.9 0.120 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 77, KB6GE" "Sol/Earth"
+{
+ LongLat [ -118.4 33.9 -0.033 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 80, reddfoxx" "Sol/Earth"
+{
+ LongLat [ -85.7 38.2 0.111 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 81, " "Sol/Earth"
+{
+ LongLat [ -150.0 61.1 0.056 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 83, " "Sol/Earth"
+{
+ LongLat [ 115.9 -32.0 -0.018 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 86, ak_hepcat (KL5BN)" "Sol/Earth"
+{
+ LongLat [ -149.7 61.1 0.218 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 87, " "Sol/Earth"
+{
+ LongLat [ -78.9 39.6 0.538 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 88, " "Sol/Earth"
+{
+ LongLat [ 26.4 -30.8 1.373 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 89, SJC" "Sol/Earth"
+{
+ LongLat [ 4.6 52.2 0.053 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 90, " "Sol/Earth"
+{
+ LongLat [ 170.3 -45.8 0.057 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 91, M0EYT" "Sol/Earth"
+{
+ LongLat [ -2.0 50.7 0.100 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 92, ekaftan" "Sol/Earth"
+{
+ LongLat [ -70.6 -33.2 0.727 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 94, ekaftan" "Sol/Earth"
+{
+ LongLat [ -70.6 -33.2 0.723 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 97, " "Sol/Earth"
+{
+ LongLat [ 152.9 -27.4 0.099 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 98, " "Sol/Earth"
+{
+ LongLat [ 145.1 -37.9 0.084 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 101, ssb" "Sol/Earth"
+{
+ LongLat [ 37.2 55.6 0.255 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 103, PA3FYM" "Sol/Earth"
+{
+ LongLat [ 5.1 52.2 0.059 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 104, PA3FYM" "Sol/Earth"
+{
+ LongLat [ 5.1 52.2 -0.010 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 113, " "Sol/Earth"
+{
+ LongLat [ 13.4 42.0 0.743 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 114, i$" "Sol/Earth"
+{
+ LongLat [ 8.6 49.7 0.205 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 115, " "Sol/Earth"
+{
+ LongLat [ -71.1 42.2 0.013 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 117, Zathras" "Sol/Earth"
+{
+ LongLat [ 115.9 -32.0 -0.009 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 118, Criggie_Pi4_in_Woodshed" "Sol/Earth"
+{
+ LongLat [ 172.3 -43.6 0.066 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 120, Neil" "Sol/Earth"
+{
+ LongLat [ 105.8 21.0 0.033 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 121, EI6IZ (Brendan)" "Sol/Earth"
+{
+ LongLat [ -9.3 53.8 0.099 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 128, Jonathan Brewer" "Sol/Earth"
+{
+ LongLat [ 103.8 1.3 0.013 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 130, Matt" "Sol/Earth"
+{
+ LongLat [ 175.4 -37.8 0.197 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 131, Steve Meuse, N1JFU" "Sol/Earth"
+{
+ LongLat [ -71.0 42.0 0.002 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 135, Matt" "Sol/Earth"
+{
+ LongLat [ 175.4 -37.8 0.192 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 165, Upu" "Sol/Earth"
+{
+ LongLat [ -1.8 53.8 0.157 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 166, DH2VA" "Sol/Earth"
+{
+ LongLat [ 8.5 47.3 0.576 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 167, EI6IZ (Brendan)" "Sol/Earth"
+{
+ LongLat [ -9.3 53.8 0.100 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 169, BramJ" "Sol/Earth"
+{
+ LongLat [ 5.2 52.3 0.051 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 171, Leon" "Sol/Earth"
+{
+ LongLat [ 18.6 -33.9 0.098 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 175, " "Sol/Earth"
+{
+ LongLat [ 2.3 48.8 0.116 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 176, WA7JAY (Ron)" "Sol/Earth"
+{
+ LongLat [ -120.9 39.2 0.920 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 177, " "Sol/Earth"
+{
+ LongLat [ 6.8 50.7 0.167 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 178, TDV_Alinsa" "Sol/Earth"
+{
+ LongLat [ -121.7 37.2 0.153 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 179, TDV_Alinsa" "Sol/Earth"
+{
+ LongLat [ -121.7 37.2 0.153 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 183, PJ2BG" "Sol/Earth"
+{
+ LongLat [ -68.8 12.1 0.003 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 184, " "Sol/Earth"
+{
+ LongLat [ 103.8 1.3 0.042 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 187, " "Sol/Earth"
+{
+ LongLat [ 168.3 -46.4 0.015 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 188, oh2ewl" "Sol/Earth"
+{
+ LongLat [ 24.9 60.2 0.091 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 189, Jeff Moe SpaceCruft" "Sol/Earth"
+{
+ LongLat [ -105.2 40.5 1.853 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 190, rowan at impermanent.io" "Sol/Earth"
+{
+ LongLat [ 145.3 -37.8 0.452 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 191, m4tk" "Sol/Earth"
+{
+ LongLat [ 12.0 49.0 0.410 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 192, Jeff Moe SpaceCruft" "Sol/Earth"
+{
+ LongLat [ -105.2 40.5 2.048 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
+Location "Observer 200, Septentrio" "Sol/Earth"
+{
+ LongLat [ 4.3 52.0 0.054 ]
+ Importance 1000.00
+ Type "Observatory"
+ }
+
diff --git a/requirements.txt b/requirements.txt
index e69de29..fb6c7ed 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -0,0 +1 @@
+pandas