aggionta la visualizzazione DMS per LAT e LON

This commit is contained in:
VALLONGOL 2025-10-17 15:18:28 +02:00
parent ea7a2533c1
commit 261df8bad0

View File

@ -731,6 +731,33 @@ class SfpDebugWindow(tk.Toplevel):
except Exception:
return None
def decimal_deg_to_dms(deg, is_lat=True):
"""Convert decimal degrees to DMS string with direction.
Examples:
45.50417 -> 45°30'15" N
-73.9876 -> 73°59'15" W
"""
try:
d = float(deg)
except Exception:
return str(deg)
# direction
if is_lat:
direction = "N" if d >= 0 else "S"
else:
direction = "E" if d >= 0 else "W"
ad = abs(d)
degrees = int(ad)
minutes_full = (ad - degrees) * 60
minutes = int(minutes_full)
seconds = (minutes_full - minutes) * 60
# Format seconds with 2 decimal places to keep it compact
return f"{degrees}°{minutes}'{seconds:.2f}\" {direction}"
# collect rows first so we can log the exact label->value mapping
scenario_rows = []
for label, key, unit in order:
@ -783,8 +810,9 @@ class SfpDebugWindow(tk.Toplevel):
elif key in ("latitude", "longitude"):
fv = try_float(val)
if fv is not None:
# show decimal degrees with higher precision per request
display_val = f"{fv:.{8}f} °"
# show as degrees/minutes/seconds with direction
is_lat = key == "latitude"
display_val = decimal_deg_to_dms(fv, is_lat=is_lat)
else:
display_val = str(val)
elif key == "flags":