Skip to content

Instantly share code, notes, and snippets.

@tomwhipple
Created September 2, 2012 16:25
Show Gist options
  • Save tomwhipple/3601130 to your computer and use it in GitHub Desktop.
Save tomwhipple/3601130 to your computer and use it in GitHub Desktop.

Revisions

  1. tomwhipple revised this gist Sep 2, 2012. 1 changed file with 18 additions and 1 deletion.
    19 changes: 18 additions & 1 deletion dms2dec.py
    Original file line number Diff line number Diff line change
    @@ -1,16 +1,33 @@
    #!/env/python
    # coding=utf8

    """
    Converting Degrees, Minutes, Seconds formatted coordinate strings to decimal.
    Formula:
    DEC = (DEG + (MIN * 1/60) + (SEC * 1/60 * 1/60))
    Assumes S/W are negative.
    """

    import re

    def dms2dec(dms_str):
    """Return decimal representation of DMS
    >>> dms2dec(utf8(48°53'10.18"N))
    48.8866111111F
    >>> dms2dec(utf8(2°20'35.09"E))
    2.34330555556F
    >>> dms2dec(utf8(48°53'10.18"S))
    -48.8866111111F
    >>> dms2dec(utf8(2°20'35.09"W))
    -2.34330555556F
    """

    dms_str = re.sub(r'\s', '', dms_str)

  2. tomwhipple created this gist Sep 2, 2012.
    24 changes: 24 additions & 0 deletions dms2dec.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    """
    Converting Degrees, Minutes, Seconds formatted coordinate strings to decimal.
    Formula:
    DEC = (DEG + (MIN * 1/60) + (SEC * 1/60 * 1/60))
    Assumes S/W are negative.
    """

    import re

    def dms2dec(dms_str):

    dms_str = re.sub(r'\s', '', dms_str)

    if re.match('[swSW]', dms_str):
    sign = -1
    else:
    sign = 1

    (degree, minute, second, frac_seconds, junk) = re.split('\D+', dms_str, maxsplit=4)

    return sign * (int(degree) + float(minute) / 60 + float(second) / 3600 + float(frac_seconds) / 36000)