mirror of
https://git.ianrenton.com/ian/spothole.git
synced 2026-06-23 21:25:12 +00:00
Add support for DME. Closes #114.
This commit is contained in:
@@ -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}")
|
||||
]
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user