如何将 DMS 转换为给定格式的弧度:Python 中的 DD-MM-SS [已关闭]

问题描述 投票:0回答:2

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

这个“print (DMStoRAD(47-39-28))”的解应该是0.831785

谢谢!

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

这输出与第一个相同。

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


0
投票

试试这个:

def DMS2Rad(D, M, S):
    return ((D+M/60+S/3600)/180*3.141592654)
© www.soinside.com 2019 - 2024. All rights reserved.