经纬度的十进制与度分秒的转换

简单易用的经纬度十进制与度分秒的转换函数

1、定义函数

import re
class Degree(object):
    def __init__(self):
        None
    @staticmethod
    def dd_to_dms(dd):
        """
        十进制度转为度分秒
        Paramaters:
            dd : 十进制度
        Return:
            dms : 度分秒
        """
        degree=(int)(float(dd))
        minute=(int)((float(dd)-degree)*60)
        second=round((float(dd)-degree-float(minute)/60)*3600,2)
        dms=str(degree)+'°'+str(minute)+ '′'+str(second)+"″"
        return dms
    @staticmethod
    def dms_to_dd(degree,minute,second):
        """
        度分秒转为十进制度
        Paramater:
            degree : 度
            minute : 分
            second : 秒
        Return:
            dd : 十进制度
        """
        dd=degree+minute/60+second/60/60
        return dd
    @staticmethod
    def parse_dms(dms):
        """
        解析度分秒字符串
        Paramater:
            dms : 度分秒字符串
        Returns:
            degree : 度
            minute : 分
            second : 秒
        """
        parts = re.split('[°′″]', dms)
        degree=float(parts[0])
        minute=float(parts[1])
        second=float(parts[2])
        return {"degree":degree,"minute":minute,"second":second}

2、应用

2.1、十进制度转为度分秒

Degree.dd_to_dms(104.25456666666666)

‘104°15′16.44″’

2.2、度分秒转为十进制度

Degree.dms_to_dd(104,15,16.44)

104.25456666666666

dms=Degree.parse_dms('104°15′16.44″')
dms

{‘degree’: 104.0, ‘minute’: 15.0, ‘second’: 16.44}

Degree.dms_to_dd(dms["degree"],dms["minute"],dms["second"])

104.25456666666666

你可能感兴趣的:(python)