手动输入(ddd mm.m)转换为弧度或十进制度数?用python
我正在为天文导航编写一个Python程序,使用六分仪观测作为手动输入。我使用角度形式(ddd mm.m)或度数、分钟和十进制分钟。我正在使用数学库进行代码中的进一步计算。当Lat/Lon在程序中实现时,您建议我怎么做?将它们转换为弧度还是十进制度数可以 我的试验位置DR:27°40.0'N;102°22.5'W手动输入(ddd mm.m)转换为弧度或十进制度数?用python,python,if-statement,navigation,latitude-longitude,astronomy,Python,If Statement,Navigation,Latitude Longitude,Astronomy,我正在为天文导航编写一个Python程序,使用六分仪观测作为手动输入。我使用角度形式(ddd mm.m)或度数、分钟和十进制分钟。我正在使用数学库进行代码中的进一步计算。当Lat/Lon在程序中实现时,您建议我怎么做?将它们转换为弧度还是十进制度数可以 我的试验位置DR:27°40.0'N;102°22.5'W # DR: Dead Reckoning latDR1 = input(float('div latidude degrees as (dd)')) #27 latDR2 = i
# DR: Dead Reckoning
latDR1 = input(float('div latidude degrees as (dd)')) #27
latDR2 = input(float('div latitude minutes as (mm.m)'))#40.0
latDR3 = input('div latitude hemisphere N/S')#N
latDR = float(latDR1+(latDR2/60))
if latDR3 == S: -(latDR);
else: # here the error shows:
else:
^
IndentationError: unexpected indent
latDR
lonDR1 = input(float('div longditude degrees as (ddd)'))#102
lonDR2 = input(float('div longditude minutes as (mm.m)'))#22.5
lonDR3 = input('div longditude hemisphere E/W')#W
lonDR = float(latDR1+(latDR2/60))
if latDR3 == W: -(latDR);
else:
latDR
DR = (latDR, lonDR)
这取决于你以后想对纬度和经度的值做什么。通常,三角函数(
sin
、cos
、tan
等)需要它们,这些函数需要以弧度为参数。使用math.radians()
很容易做到这一点,计算后的结果可以转换回math.degrees()
显示
一句忠告:当按部分读取六进制数值时,您需要先将度数、分和秒(或十进制分钟)组合为十进制度数,然后对符号约定应用否定或-1
乘数(在您的情况下为北+东+ve;经度有其他选择…),如果适用。例如,如果您有27度45.0,您希望-1*(27.0+(45.0/60.0))=-27.75
而不是-27.0+(45.0/60.0)=-26.25