83 lines
2.8 KiB
Python
Executable File
83 lines
2.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
galmon-observers2leaflet
|
|
Retrieve Galmon observers, 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-observers2leaflet
|
|
# Example:
|
|
# ./galmon-observers2leaflet > ./html/galmon.html
|
|
# firefox ./html/galmon.html
|
|
|
|
import pandas as pd
|
|
|
|
# Grab live file:
|
|
#observers_url='https://galmon.eu/observers.json'
|
|
# Or use cached file:
|
|
observers_url='data/observers.json'
|
|
|
|
observers = pd.read_json(observers_url, orient='records')
|
|
|
|
# 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);')
|
|
|
|
# Display Galmon Ground Station Observers
|
|
for x in range(len(observers.id)):
|
|
print(' L.marker({lon: ', end='')
|
|
print(observers["longitude"][x], end='')
|
|
print(', lat:', observers["latitude"][x], end='')
|
|
print('}).bindPopup(\'', end='')
|
|
print(observers["id"][x], observers["owner"][x], end='')
|
|
print('\').addTo(map);')
|
|
|
|
# Print footer
|
|
print(' </script>')
|
|
print(' </body>')
|
|
print('</html>')
|
|
|