-2

特定の形式 DD-MM-SS から DMS を Radian に変換する方法を知りたい

この「print (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 に答える