GPS Coordinate Converter
Convert GPS coordinates between Decimal Degrees (DD), Degrees Minutes Seconds (DMS), and Degrees Decimal Minutes (DDM).
Часто задаваемые вопросы
Реализация кода
def dd_to_dms(decimal_deg: float, is_lat: bool) -> str:
"""Convert decimal degrees to DMS string."""
direction = ("N" if decimal_deg >= 0 else "S") if is_lat else ("E" if decimal_deg >= 0 else "W")
abs_deg = abs(decimal_deg)
degrees = int(abs_deg)
minutes_full = (abs_deg - degrees) * 60
minutes = int(minutes_full)
seconds = (minutes_full - minutes) * 60
return f"{degrees}° {minutes}' {seconds:.4f}" {direction}"
def dd_to_ddm(decimal_deg: float, is_lat: bool) -> str:
"""Convert decimal degrees to DDM string."""
direction = ("N" if decimal_deg >= 0 else "S") if is_lat else ("E" if decimal_deg >= 0 else "W")
abs_deg = abs(decimal_deg)
degrees = int(abs_deg)
minutes = (abs_deg - degrees) * 60
return f"{degrees}° {minutes:.6f}' {direction}"
def dms_to_dd(degrees: float, minutes: float, seconds: float, direction: str) -> float:
"""Convert DMS to decimal degrees."""
dd = degrees + minutes / 60 + seconds / 3600
if direction in ("S", "W"):
dd = -dd
return dd
# New York City coordinates
lat, lon = 40.712776, -74.005974
print(f"DD: {lat}, {lon}")
print(f"DMS: {dd_to_dms(lat, True)}, {dd_to_dms(lon, False)}")
print(f"DDM: {dd_to_ddm(lat, True)}, {dd_to_ddm(lon, False)}")
# Convert back
lat_back = dms_to_dd(40, 42, 45.9936, "N")
print(f"Back to DD: {lat_back:.6f}") # 40.712776Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.