经纬度转换为分和秒?

8

谷歌地图以十进制表示给出了一个位置的纬度和经度,如下所示:

38.203655,-76.113281

如何将这些转换为坐标(度、分、秒)?


这里解释了坐标系统和转换,附带伪代码:<a href="http://en.wikipedia.org/wiki/Geographic_coordinate_conversion"> 坐标转换(来自维基百科)</a>。 - Gareth Saul
4个回答

18

38.203655是一个十进制度数值。每一度有60分,每一分有60秒(1度 == 60分 == 3600秒)。

因此,获取这个值的小数部分,即0.203655,并将其乘以60得到分钟部分,即12.2193,它是12分钟,然后对分钟的小数部分重复此操作,即0.2193 = 13.158000秒。

Python示例:

def deg_to_dms(deg):
    d = int(deg)
    md = abs(deg - d) * 60
    m = int(md)
    sd = (md - m) * 60
    return [d, m, sd]

print deg_to_dms(38.203655)
print deg_to_dms(-76.113281)

2
好的解决方案。小提示:通常对于DMS格式,不是使用带符号的数字,而是使用基数方向(例如,不是-76 12 34.567,而是W76 12 34.567)。 - TreyA

0

0

0

我认为这将有助于您解决问题:

def deg_min_sec(self,degrees=0.0):
        if type(degrees) != 'float':
            try:
                degrees = float(degrees)
            except:
                print '\nERROR: Could not convert %s to float.' % (type(degrees))
                return 0
        minutes = degrees % 1.0 * 60
        seconds = minutes % 1.0 * 60

        return (degrees, minutes, seconds)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接