如何在Python中将DMS转换为弧度:DD-MM-SS格式

-1 投票
2 回答
1277 浏览
提问于 2025-04-17 18:40

我想知道如何把DMS(度、分、秒)转换成弧度,给定的格式是DD-MM-SS。

比如,print (DMStoRAD(47-39-28))这个计算的结果应该是0.831785。

2 个回答

0

试试这个:

def DMS2Rad(D, M, S):
    return ((D+M/60+S/3600)/180*3.141592654)
3
import numpy

def dms_string_to_radians(dms_string):
    degrees = numpy.sum(numpy.fromstring(dms_string, sep='-') * 
            [1.0, 1/60.0, 1/3600.0])

    return numpy.radians(degrees)

print dms_string_to_radians('47-39-28')

输出结果:

0.831785136406

如预期的那样。

或者,如果你不想使用Numpy,想用标准库的话:

import string, math

def dms_string_to_radians(dms_string):

    dms = [float(x) for x in string.split(dms_string, '-')]
    degrees = sum(
            [scale * val for scale, val in zip([1.0, 1/60.0, 1/3600.0], dms)])

    return math.radians(degrees)

print dms_string_to_radians('47-39-28')

这个输出和第一个是一样的。

我改了函数的名字,因为我实在不想用你那种命名方式;)

撰写回答