Wie über einen regulären Ausdruck? ZB:
def latlong(dms_pair)
match = dms_pair.match(/(\d\d)º (\d\d)' (\d\d)'' (\d\d)º (\d\d)' (\d\d)''/)
latitude = match[1].to_f + match[2].to_f/60 + match[3].to_f/3600
longitude = match[4].to_f + match[5].to_f/60 + match[6].to_f/3600
{:latitude=>latitude, :longitude=>longitude}
end
Hier ist eine komplexere Version, die mit negativen Koordinaten meistert:
def dms_to_degrees(d, m, s)
degrees = d
fractional = m/60 + s/3600
if d > 0
degrees + fractional
else
degrees - fractional
end
end
def latlong(dms_pair)
match = dms_pair.match(/(-?\d+)º (\d+)' (\d+)'' (-?\d+)º (\d+)' (\d+)''/)
latitude = dms_to_degrees(*match[1..3].map {|x| x.to_f})
longitude = dms_to_degrees(*match[4..6].map {|x| x.to_f})
{:latitude=>latitude, :longitude=>longitude}
end
Danke! Ich werde diese elegante Antwort akzeptieren! Ich erwartete jedoch eine Art von Bibliothek, die andere Formate oder Variationen parsen konnte. Ein kleiner Tweak auf dem Regexp wird ausreichen! Danke nochmal! – rubenfonseca