我需要这样做..
<coordinates_east>6'01.4</coordinates_east>
<coordinates_north>45'05.5</coordinates_north>
我需要在Ruby中转换为这种谷歌友好格式!...请注意,这些不是真正的转换数字只是我认为我需要的格式的一个例子!
<coordinates_east>45.46998</coordinates_east>
<coordinates_north>6.90764</coordinates_north>
如何?
答案 0 :(得分:1)
您的输入坐标似乎是错误的表示法。它应该是
<coordinates_north>45°05.5'</coordinates_north>
<coordinates_east>6°01.4'</coordinates_east>
(degrees°arcminutes')或
<coordinates_north>45°05'5"</coordinates_north>
<coordinates_east>6°01'4"</coordinates_east>
(度°arcminutes'arcseconds“)
一旦找到正确的输入表示法,就可以使用Parsing latitude and longitude with Ruby将它们转换为十进制度数。如果您的输入符号是度数°arcminutes',则必须稍微修改它。也要注意负坐标。
如果您只想将其与谷歌地图一起使用,则实际上不需要转换它,因为google maps understands arcminutes/-seconds notation。
答案 1 :(得分:0)
我的坐标是空格分隔的(“deg min sec”),我写了这个小lambda来处理它们:
@to_decimal = lambda do |str|
deg, min, sec = str.split(" ").map(&:to_f)
if deg >= 0
output = deg + (min / 60.0) + (sec / 3600.0)
elsif deg < #HARD EARNED KNOWLEDGE HERE
output = deg - (min / 60.0) - (sec / 3600.0)
end
raise "something is wrong" if output.abs > 180
output
end