-2

我想知道如何将 DMS 从给定格式 DD-MM-SS 转换为弧度

这个“打印(DMStoRAD(47-39-28))”的解决方案应该是0.831785

谢谢!

4

2 回答 2

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')

这与第一个输出相同。

我更改了函数名称,因为我无法让自己使用您的命名约定;)

于 2013-03-11T11:12:17.047 回答
0

试试这个:

def DMS2Rad(D, M, S):
    return ((D+M/60+S/3600)/180*3.141592654)
于 2013-03-11T12:42:03.030 回答