寻求将DD转换为DMS的工具?


9

我正在寻找一种在线工具,也可以下载将DD转换为DMS的工具。

例如,我要转换为:

41.590833,-93.620833到41°35′27″ N,93°37′15″ W……根据Geohack的说法,这是得梅因的坐标。


WGS84已经在纬度/经度中。
昏暗

您要从DD转换为DMS。您可以重新提交另一个问题。
艺术品2011年

2
您将使用某种GIS解决方案吗?如果是这样,则通过提供该信息可以为您提供社区的更好答案。
艺术品2011年

Answers:


13

由于即使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舍入为整数并格式化结果以匹配问题中给出的形式。


我邀请匿名下注者来改善此答复;-)。(我相信他有代表要做。)
ub

5

这样做不是很复杂,但是我倾向于只使用此网页。但是,让我们通过示例来解决这个问题。十进制度是相同的,在这种情况下为41。现在,将余数乘以60。这将得到35.44998。整数部分是秒(35')。现在,取余数再乘以60。您得到的秒数(26.9998),与上面的发现相比较,具有积极意义。


4

“科学”模式下的Windows计算器为我解决了问题。

“ dms”按钮可将您从十进制度数转换为度,分,秒。

Inv + dms(现在显示为deg)则相反。



3

它可能会帮助您。你试一试。 http://transition.fcc.gov/mb/audio/bickel/DDDMMSS-decimal.html


+1很高兴找到。我注意到此小程序要求经度在[-180,+180]范围内。源代码显示在页面源底部的附近。
ub

2

有一个很好的简单类可以在C#中的StackOverflow上完成此操作:https ://stackoverflow.com/questions/4504956/formatting-double-to-latitude-longitude-human-可读格式

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.