Add GNSS Leaflet script
parent
9514c3c7d4
commit
8b85cb77a9
|
@ -0,0 +1,95 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
galmon-gnss2leaflet
|
||||
Retrieve Galmon GNSS satellites, output HTML map with leaflet.
|
||||
|
||||
Copyright (C) 2022, Jeff Moe
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 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 Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
"""
|
||||
|
||||
# Usage:
|
||||
# galmon-gnss2leaflet
|
||||
# Example:
|
||||
# ./galmon-gnss2leaflet > ./html/gnss.html
|
||||
# firefox ./html/gnss.html
|
||||
|
||||
import pandas as pd
|
||||
|
||||
# Grab live file:
|
||||
#almanac_url='https://galmon.eu/almanac.json'
|
||||
# Or use cached file:
|
||||
almanac_url='data/almanac.json'
|
||||
|
||||
almanac = pd.read_json(almanac_url, orient='index')
|
||||
|
||||
def print_header():
|
||||
print('<!DOCTYPE HTML>')
|
||||
print('<html lang="en">')
|
||||
print(' <head>')
|
||||
print(' <meta charset="utf-8" />')
|
||||
print(' <meta name="viewport" content="width=device-width, initial-scale=1.0">')
|
||||
print(' <script src="leaflet/leaflet.js"></script>')
|
||||
print(' <link rel="stylesheet" href="leaflet/leaflet.css" />')
|
||||
print(' <style>')
|
||||
print(' html, body {')
|
||||
print(' height: 100%;')
|
||||
print(' padding: 0;')
|
||||
print(' margin: 0;')
|
||||
print(' }')
|
||||
print(' #map {')
|
||||
print(' /* configure the size of the map */')
|
||||
print(' width: 100%;')
|
||||
print(' height: 100%;')
|
||||
print(' }')
|
||||
print(' </style>')
|
||||
print(' </head>')
|
||||
print(' <body>')
|
||||
print(' <div id="map"></div>')
|
||||
print(' <script>')
|
||||
print(' var map = L.map(\'map\').setView({lon: 0, lat: 0}, 2);')
|
||||
print(' L.tileLayer(\'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\', {')
|
||||
print(' maxZoom: 19,')
|
||||
print(' attribution: \'© <a href="https://openstreetmap.org/copyright">OpenStreetMap contributors</a>', end="")
|
||||
print(' | <a href="https://spacecruft.org/spacecruft/leaflet-galmon">Spacecruft source code</a>\'')
|
||||
print(' }).addTo(map);')
|
||||
print(' L.control.scale({imperial: false, metric: true}).addTo(map);')
|
||||
|
||||
def print_body():
|
||||
df_dict=almanac.reset_index().to_dict(orient='index')
|
||||
df_vals=list(df_dict.values())
|
||||
|
||||
for x in range(len(almanac)):
|
||||
sat_long=(df_vals[x]["eph-longitude"])
|
||||
sat_lat=(df_vals[x]["eph-latitude"])
|
||||
if ( pd.isna(sat_lat) or pd.isna(sat_long) ) == False:
|
||||
print(' L.marker({lon: ', end='')
|
||||
print(sat_long, end='')
|
||||
print(', lat:', sat_lat, end='')
|
||||
print('}).bindPopup(\'', end='')
|
||||
print(df_vals[x]['index'], end='')
|
||||
print('\').addTo(map);')
|
||||
|
||||
def print_footer():
|
||||
print(' </script>')
|
||||
print(' </body>')
|
||||
print('</html>')
|
||||
|
||||
def main():
|
||||
print_header()
|
||||
print_body()
|
||||
print_footer()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main();
|
Loading…
Reference in New Issue