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:
|
except Exception:
|
||||||
return None
|
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
|
# collect rows first so we can log the exact label->value mapping
|
||||||
scenario_rows = []
|
scenario_rows = []
|
||||||
for label, key, unit in order:
|
for label, key, unit in order:
|
||||||
@ -783,8 +810,9 @@ class SfpDebugWindow(tk.Toplevel):
|
|||||||
elif key in ("latitude", "longitude"):
|
elif key in ("latitude", "longitude"):
|
||||||
fv = try_float(val)
|
fv = try_float(val)
|
||||||
if fv is not None:
|
if fv is not None:
|
||||||
# show decimal degrees with higher precision per request
|
# show as degrees/minutes/seconds with direction
|
||||||
display_val = f"{fv:.{8}f} °"
|
is_lat = key == "latitude"
|
||||||
|
display_val = decimal_deg_to_dms(fv, is_lat=is_lat)
|
||||||
else:
|
else:
|
||||||
display_val = str(val)
|
display_val = str(val)
|
||||||
elif key == "flags":
|
elif key == "flags":
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user