🛠️ToolsShed

GPS Coordinate Converter

Convert GPS coordinates between Decimal Degrees (DD), Degrees Minutes Seconds (DMS), and Degrees Decimal Minutes (DDM).

Perguntas Frequentes

Implementação de Código

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.712776

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.