我正在寻找一种在线工具,也可以下载将DD转换为DMS的工具。
例如,我要转换为:
41.590833,-93.620833到41°35′27″ N,93°37′15″ W……根据Geohack的说法,这是得梅因的坐标。
我正在寻找一种在线工具,也可以下载将DD转换为DMS的工具。
例如,我要转换为:
41.590833,-93.620833到41°35′27″ N,93°37′15″ W……根据Geohack的说法,这是得梅因的坐标。
Answers:
由于即使Microsoft代码也是错误的,因此为转换提供正确的伪代码可能很有用。
要将十进制度数x转换为度数(d),分钟数(m)和(十进制)秒数(s),请执行以下操作:
Declare d, m as integer, s as float
If x < 0, then sign = -1 else sign = +1
Let y = Abs(x) ' Work with positive values only.
Let d = Int(y) ' Whole degrees. Floor() is ok too.
Let z = 60*(y - d) ' The fractional degrees, converted to minutes.
Let m = Int(z) ' Whole minutes.
Let s = 60*(z - m) ' The fractional minutes, converted to seconds.
Assert sign*(((s/60) + m)/60 + d) == x ' This confirms a correct result.
Return (sign*d, m, s)
您可以在末尾注明N / S或E / W,而不是返回带符号的学位:
If x is a latitude, then
If sign == -1 then hemisphere = "S" else hemisphere = "N"
Else {x is a longitude}
If sign == -1 then hemisphere = "W" else hemisphere = "E"
End if
Return (d, m, s, hemisphere)
如果愿意,可以将s舍入为整数并格式化结果以匹配问题中给出的形式。
看看这个python库https://github.com/ewheeler/PyDecimalDegrees
或基于Perl的此在线/离线脚本http://www.movable-type.co.uk/scripts/latlong.html