将度/分/秒转换为十进制度
Posted
技术标签:
【中文标题】将度/分/秒转换为十进制度【英文标题】:Converting degree/minutes/seconds to decimal degrees 【发布时间】:2009-11-21 09:03:04 【问题描述】:我以不同的方式问这个问题,另一个用户让我知道我需要问什么,我基本上希望转换为“十进制度”。转换当然必须准确。我看到像 javascript example 这样的 javascript 解决方案。我需要红宝石。也许有人可以用 Ruby 编写 javascript,我可以尝试一下,如果这当然容易并且正确的话?
基本上我的数据库中有这个。
<coordinates_east>6'01.4</coordinates_east>
<coordinates_north>45'05.5</coordinates_north>
我需要一个用 Ruby 编写的例程来将这些转换为十进制度,以便与谷歌地图 API 一起使用,可能吗?
【问题讨论】:
所以您确实有工作代码,但不想将(相当简单的)数学翻译成您选择的语言并期望我们这样做? 你明白了,公平点,我自己试试。我不确定那个JS代码是否有效,我会尝试。 作为提示......您的数据不是 D°M"S' 格式。它是度数 - 分钟(可能是十进制)。你应该能够只除分钟 -在一定程度上以适当的最大值分开几分钟,并且很好。 好的,谢谢,分隔符是 ' 我接受它,如果我理解正确的话,东方是 6 度 1.4 分钟。现在制作一个小红宝石程序。我怎么能正则表达式出度数和分钟数。 不要。如果您有 XML,请使用 XML 解析器 - 这将为您节省很多麻烦并防止您可能遇到的许多错误源。在°字符处拆分 6°1.4,并接收度数和分钟数的数组 【参考方案1】:你想要这样吗?虽然不太明白你的问题。
puts "6'01.4".scan(/(\d+)'(\d+)\.(\d+)/).map|x,y,z|x.to_f+y.to_f/60+z.to_f/3600
6.01777777777778
puts "36'57.9".scan(/(\d+)'(\d+)\.(\d+)/).map|x,y,z|x.to_f+y.to_f/60+z.to_f/3600
36.9525
【讨论】:
谢谢,但我认为不对,这些结果无法让我到达谷歌地球中的法国阿尔卑斯山,我最终来到了非洲——那里的雪并不多!还在尝试。 @Rupert 你可能把纬度和经度混为一谈了。以上是关于将度/分/秒转换为十进制度的主要内容,如果未能解决你的问题,请参考以下文章
更改 addMouseCoordinates 以显示十进制分钟秒而不是十进制度?