Add support for DME. Closes #114.

This commit is contained in:
Ian Renton
2026-06-23 06:38:41 +01:00
parent d4d43a43c8
commit 21a3ae70b5
4 changed files with 17 additions and 1 deletions

View File

@@ -32,6 +32,7 @@ SIGS = [
SIG(name="Tiles", description="Tiles on the Air", ref_regex=r"[A-Za-z]{2}[0-9]{2}[A-Za-z]{2}"),
SIG(name="WAB", description="Worked All Britain", ref_regex=r"[A-Z]{1,2}[0-9]{2}"),
SIG(name="WAI", description="Worked All Ireland", ref_regex=r"[A-Z][0-9]{2}"),
SIG(name="DME", description="Diplomas de Municipios Españoles", ref_regex=r"\d{4,5}"),
SIG(name="TOTA", description="Toilets on the Air", ref_regex=r"T\-[0-9]{2}")
]

View File

@@ -7,6 +7,9 @@ from core.cache_utils import SEMI_STATIC_URL_DATA_CACHE
from core.constants import SIGS, HTTP_HEADERS
from core.geo_utils import wab_wai_square_to_lat_lon
with open("datafiles/dme-geodata.csv", encoding="utf-8") as _f:
_DME_INDEX = {row["dme"]: row for row in csv.DictReader(_f)}
def get_ref_regex_for_sig(sig):
"""Utility function to get the regex string for a SIG reference for a named SIG. If no match is found, None will be returned."""
@@ -188,6 +191,17 @@ def populate_sig_ref_info(sig_ref):
sig_ref.longitude = ll[1]
except:
logging.debug("Invalid lat/lon received for reference")
elif sig.upper() == "DME":
row = _DME_INDEX.get(ref_id)
if row:
sig_ref.name = row["municipio"] + ", " + row["provincia"]
sig_ref.latitude = float(row["lat"]) if row.get("lat") else None
sig_ref.longitude = float(row["lon"]) if row.get("lon") else None
if sig_ref.latitude and sig_ref.longitude:
try:
sig_ref.grid = latlong_to_locator(sig_ref.latitude, sig_ref.longitude, 6)
except Exception:
logging.debug("Invalid lat/lon received for reference")
except Exception:
logging.warning("Failed to look up sig_ref info for " + sig + " ref " + ref_id, exc_info=True)
return sig_ref