Repeater map
This commit is contained in:
parent
188e6b7da3
commit
9a872cd7aa
47
content/radio/local-repeaters.md
Normal file
47
content/radio/local-repeaters.md
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
title: Local Repeaters
|
||||||
|
extra:
|
||||||
|
css_import:
|
||||||
|
- https://unpkg.com/leaflet@1.9.4/dist/leaflet.css
|
||||||
|
head_js_import:
|
||||||
|
- https://unpkg.com/leaflet@1.9.4/dist/leaflet.js
|
||||||
|
js_import:
|
||||||
|
- /js/radio/local-repeaters.js
|
||||||
|
---
|
||||||
|
|
||||||
|
This page keeps track of local repeaters. See incorrect data here? Please [contact me](/contact).
|
||||||
|
|
||||||
|
## Analog Repeaters
|
||||||
|
|
||||||
|
<div id="analog-repeater-map" style="width:100%; aspect-ratio: 4/3; margin-bottom: 1em;"></div>
|
||||||
|
|
||||||
|
<div id="analog-repeaters" style="width:max-content;max-width:100%;margin:auto;overflow:scroll;">
|
||||||
|
|
||||||
|
| Callsign | Downlink | Uplink | PL | Coverage | Reach | Links |
|
||||||
|
|----------|----------|---------|-------|-----------------------------------------------------------|--------|----------------|
|
||||||
|
| VA3ATL | 444.775 | 449.775 | 110.9 | <span lat="43.648" lon="-79.3860">GTA</span> | 70 km | |
|
||||||
|
| VE3WOO | 443.900 | 448.900 | 127.3 | <span lat="43.647" lon="-79.3821">GTA</span> | 50 km | |
|
||||||
|
| VE3WOO | 442.750 | 447.750 | 103.5 | <span lat="43.666" lon="-79.4166">GTA</span> | | VE3WOO |
|
||||||
|
| VE3WOO | 444.175 | 449.175 | 103.5 | <span lat="43.882" lon="-79.9325">GTA</span> | 50 km | VE3WOO |
|
||||||
|
| VE3ZOE | 443.075 | 448.075 | | <span lat="43.249" lon="-79.8346">Golden Horseshoe</span> | 100 km | |
|
||||||
|
| VE3GRW | 442.900 | 447.900 | 107.2 | <span lat="43.106" lon="-79.1126">Golden Horseshoe</span> | 200 km | |
|
||||||
|
| VE3YYZ | 443.050 | 448.050 | 156.7 | <span lat="43.648" lon="-79.3821">Toronto</span> | 35 km | VE3RTR |
|
||||||
|
| VE3OKR | 442.450 | 447.450 | | <span lat="43.467" lon="-79.6875">Oakville</span> | 40 km | |
|
||||||
|
| VE3RSB | 444.825 | 449.825 | 131.8 | <span lat="43.360" lon="-79.8580">Burlington</span> | 40 km | |
|
||||||
|
| VE3ADT | 444.125 | 449.125 | 131.8 | <span lat="43.587" lon="-79.9825">Milton</span> | 45 km | |
|
||||||
|
| VE3MIS | 145.430 | 144.830 | 103.5 | <span lat="43.593" lon="-79.6350">Mississauga</span> | 20 km | |
|
||||||
|
| VE3YRA | 145.350 | 144.750 | 103.5 | <span lat="44.027" lon="-79.3460">GTA</span> | 75 km | |
|
||||||
|
| VE3SKY | 146.985 | 146.385 | 103.5 | <span lat="43.665" lon="-79.4166">GTA</span> | 70 km | |
|
||||||
|
| VE3GYQ | 145.350 | 144.750 | 114.8 | <span lat="42.983" lon="-81.2501">London</span> | 50 km | |
|
||||||
|
| VE3TTT | 147.180 | 147.780 | 114.8 | <span lat="42.984" lon="-81.2442">London</span> | 75 km | VE3SUE |
|
||||||
|
| VE3SUE | 444.400 | 449.400 | 114.8 | <span lat="42.983" lon="-81.2500">London</span> | 50 km | |
|
||||||
|
| VA3FEZ | 444.100 | 449.100 | 114.8 | <span lat="42.956" lon="-81.2776">London</span> | | VE3MMX |
|
||||||
|
| VE3MMX | 147.225 | 147.825 | 114.8 | <span lat="42.739" lon="-81.3454">St Thomas</span> | 35 km | |
|
||||||
|
| VE3MMX | 443.750 | 448.750 | 114.8 | <span lat="42.739" lon="-81.3454">St Thomas</span> | | |
|
||||||
|
| VE3TCB | 146.940 | 146.340 | 114.8 | <span lat="43.163" lon="-81.8570">Grand Bend</span> | 50 km | VE3SUE, VE3SRT |
|
||||||
|
| VE3SRT | 442.050 | 447.050 | 114.8 | <span lat="43.313" lon="-81.7554">Grand Bend</span> | 50 km | VE3SUE |
|
||||||
|
| VE3MCR | 147.000 | 147.600 | 114.8 | <span lat="43.186" lon="-81.4075">Grand Bend</span> | | VE3SUE |
|
||||||
|
| VE3RGB | 146.760 | 146.160 | 114.8 | <span lat="43.335" lon="-81.7372">Grand Bend</span> | | VE3SUE |
|
||||||
|
| VE3RTR | 444.975 | 449.975 | 162.2 | <span lat="44.057" lon="-78.1328">Peterborough</span> | 65 km | |
|
||||||
|
</div>
|
||||||
|
|
BIN
static/dist/icons8/antenna.png
vendored
Normal file
BIN
static/dist/icons8/antenna.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
83
static/js/radio/local-repeaters.js
Normal file
83
static/js/radio/local-repeaters.js
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
// Configure the maps (center on Toronto)
|
||||||
|
var analog_rpt_map = L.map('analog-repeater-map').setView([43.6532, -79.3832], 8);
|
||||||
|
|
||||||
|
// Add OSM base map
|
||||||
|
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
||||||
|
maxZoom: 18
|
||||||
|
}).addTo(analog_rpt_map);
|
||||||
|
|
||||||
|
// Process repeater tables
|
||||||
|
var analog_repeaters = Array.from(document.querySelectorAll("#analog-repeaters tbody tr")).map(function (row) {
|
||||||
|
console.log(row);
|
||||||
|
return {
|
||||||
|
callsign: row.cells[0].innerText,
|
||||||
|
downlink: row.cells[1].innerText,
|
||||||
|
uplink: row.cells[2].innerText,
|
||||||
|
pl_tone: row.cells[3].innerText,
|
||||||
|
grid: row.cells[4].innerText,
|
||||||
|
latitude: row.cells[4].querySelector("span").attributes["lat"].value,
|
||||||
|
longitude: row.cells[4].querySelector("span").attributes["lon"].value,
|
||||||
|
reach: row.cells[5].innerText.split(" ")[0],
|
||||||
|
linked_repeaters: row.cells[6].innerText.split(", ")
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add repeater markers
|
||||||
|
analog_repeaters.forEach(function (repeater) {
|
||||||
|
console.log(repeater);
|
||||||
|
var marker = L.marker([repeater.latitude, repeater.longitude]).addTo(analog_rpt_map);
|
||||||
|
marker.bindPopup(`<b>${repeater.callsign}</b>`);
|
||||||
|
// marker.setIcon(L.divIcon({
|
||||||
|
// className: 'repeater-marker',
|
||||||
|
// iconSize: [16, 16]
|
||||||
|
// }));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Draw the coverage areas
|
||||||
|
analog_repeaters.forEach(function (repeater) {
|
||||||
|
if (repeater.reach != "") {
|
||||||
|
var coverage = L.circle([repeater.latitude, repeater.longitude], {
|
||||||
|
color: 'gray',
|
||||||
|
opacity: 0.25,
|
||||||
|
fillColor: 'gray',
|
||||||
|
fillOpacity: 0.05,
|
||||||
|
radius: repeater.reach * 1000
|
||||||
|
}).addTo(analog_rpt_map);
|
||||||
|
coverage.bindPopup(`${repeater.callsign} coverage`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Draw the repeater links
|
||||||
|
analog_repeaters.forEach(function (repeater) {
|
||||||
|
repeater.linked_repeaters.forEach(function (linked_repeater) {
|
||||||
|
// Find that repeater
|
||||||
|
var linked_repeater_obj = analog_repeaters.find(function (obj) {
|
||||||
|
return obj.callsign === linked_repeater;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (linked_repeater_obj) {
|
||||||
|
var link = L.polyline([
|
||||||
|
[repeater.latitude, repeater.longitude],
|
||||||
|
[linked_repeater_obj.latitude, linked_repeater_obj.longitude]
|
||||||
|
], {
|
||||||
|
color: 'gray',
|
||||||
|
weight: 2,
|
||||||
|
opacity: 0.75
|
||||||
|
}).addTo(analog_rpt_map);
|
||||||
|
link.bindPopup(`${repeater.callsign} to ${linked_repeater_obj.callsign}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add a custom CSS style for the markers
|
||||||
|
// document.head.insertAdjacentHTML('beforeend', `
|
||||||
|
// <style>
|
||||||
|
// .repeater-marker {
|
||||||
|
// background-image: url("/dist/icons8/antenna.png");
|
||||||
|
// background-size: cover;
|
||||||
|
// background-position: center;
|
||||||
|
// border: 1px solid grey;
|
||||||
|
// border-radius: 50%;
|
||||||
|
// }
|
||||||
|
// </style>`
|
||||||
|
// );
|
@ -58,6 +58,11 @@
|
|||||||
<link rel="stylesheet" href="{{url}}"> <!-- Requested by Page -->
|
<link rel="stylesheet" href="{{url}}"> <!-- Requested by Page -->
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
{# Allow pages to import custom Head JS if they need #}
|
||||||
|
{% for url in extra.head_js_import | default(value=[]) %}
|
||||||
|
<script src="{{url}}"></script> <!-- Requested by Page -->
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
<link rel="stylesheet" href="/styles.css">
|
<link rel="stylesheet" href="/styles.css">
|
||||||
<!--noformat-->
|
<!--noformat-->
|
||||||
{% endblock head %}
|
{% endblock head %}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user