aggionta la visualizzazione DMS per LAT e LON
This commit is contained in:
parent
ea7a2533c1
commit
261df8bad0
@ -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":
|
||||
|
||||
Loading…
Reference in New Issue
Block a user