Skip to content

Coordinates

Custom coordinate types for latitude and longitude.

validate_latitude(v)

Validate a latitude coordinate.

Source code in gso/utils/types/coordinates.py
def validate_latitude(v: str) -> str:
    """Validate a latitude coordinate."""
    msg = "Invalid latitude coordinate. Valid examples: '40.7128', '-74.0060', '90', '-90', '0'."
    regex = re.compile(r"^-?([1-8]?\d(\.\d+)?|90(\.0+)?)$")
    if not regex.match(str(v)):
        raise ValueError(msg)

    float_v = float(v)
    if float_v > MAX_LATITUDE or float_v < MIN_LATITUDE:
        raise ValueError(msg)

    return v

validate_longitude(v)

Validate a longitude coordinate.

Source code in gso/utils/types/coordinates.py
def validate_longitude(v: str) -> str:
    """Validate a longitude coordinate."""
    regex = re.compile(r"^-?(180(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)$")
    msg = "Invalid longitude coordinate. Valid examples: '40.7128', '-74.0060', '180', '-180', '0'."
    if not regex.match(v):
        raise ValueError(msg)

    float_v = float(v)
    if float_v > MAX_LONGITUDE or float_v < MIN_LONGITUDE:
        raise ValueError(msg)

    return v