我想知道如何将 DMS 从给定格式 DD-MM-SS 转换为弧度
这个“打印(DMStoRAD(47-39-28))”的解决方案应该是0.831785
谢谢!
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')
这与第一个输出相同。
我更改了函数名称,因为我无法让自己使用您的命名约定;)
试试这个:
def DMS2Rad(D, M, S):
return ((D+M/60+S/3600)/180*3.141592654)