leaflet-galmon/galmon-observers2leaflet

83 lines
2.9 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/observers.html
# firefox ./html/observers.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: \'&copy; <a href="https://openstreetmap.org/copyright">OpenStreetMap contributors</a>', end="")
print(' | <a href="https://galmon.eu">Galmon</a> | <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>')