如何将坐标转换为谷歌友好坐标

时间:2009-11-21 07:03:40

标签: ruby-on-rails ruby

我需要这样做..

<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>

如何?

2 个答案:

答案 0 :(得分:1)

  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“)

  2. 一旦找到正确的输入表示法,就可以使用Parsing latitude and longitude with Ruby将它们转换为十进制度数。如果您的输入符号是度数°arcminutes',则必须稍微修改它。也要注意负坐标。

  3. 如果您只想将其与谷歌地图一起使用,则实际上不需要转换它,因为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