manualmente - Cómo convertir coordenadas de GPS a decimal en Lua?
convertir coordenadas geograficas a utm excel (1)
Necesito convertir coordenadas de GPS de WGS84 a decimal usando Lua.
Estoy seguro de que ya se hizo antes, así que estoy buscando una pista para un fragmento de código.
pregunta corregida: ¿Código para convertir DMS (Degress Minutes Seconds) a DEG ((decimal) Degrees) en Lua?
ejemplos: Viena: dms: 48 ° 12''30 "N 16 ° 22''28" E o Zurich: dms: 47 ° 21''7 "N 8 ° 30''37" E
La dificultad que encuentro es sacar los números de estas cadenas. Especialmente, cómo manejar los signos para grados (°) minutos ('') y segundos ("). De modo que tendría, por ejemplo, una tabla coord {} por coordenadas para tratar.
coord {1} [48]
coord {2} [12]
coord {3} [30]
coord {4} [N]
coord {5} [16]
coord {6} [22]
coord {7} [28]
coord {8} [E]
Las sugerencias son apreciadas, gracias.
Analice la cuerda latlon = ''48 ° 12''30 "N 16 ° 22''28" E ''en los componentes del rumbo DMS +:
Esta es su cadena (fíjese en la comilla simple escapada):
latlon = ''48°12/'30" N 16°22/'28" E''
Divídala en dos pasos: lat / lon, luego componentes de cada uno. Necesita capturas "()", ignore los espacios alrededor del encabezado (N y E) con "% s *":
lat, ns, lon, ew = string.match(latlon, ''(.*)%s*(%a)%s*(.*)%s*(%a)'')
El lat ahora mide 48 ° 12''30 ", ns es ''N'', lon es 16 ° 22''28", ew es ''E''. Para componentes de lat, paso a paso:
-- string.match(lat, ''48°12''30"'') -- oops the '' needs escaping or us -- string.match(lat, ''48°12/'30"'') -- ready for the captures: -- string.match(lat, ''(48)°(12)/'(30)"'') -- ready for generic numbers d1, m1, s1 = string.match(lat, ''(%d+)°(%d+)/'(%d+)"'') d2, m2, s2 = string.match(lon, ''(%d+)°(%d+)/'(%d+)"'')
Ahora que ya sabe (d1, m1, s1, ns) y (d2, m2, s2, ew), tiene:
sign = 1 if ns==''S'' then sign = -1 end decDeg1 = sign*(d1 + m1/60 + s1/3600) sign = 1 if ew==''W'' then sign = -1 end decDeg2 = sign*(d2 + m2/60 + s2/3600)
Para sus valores de lat, obtiene decDeg1 = 48.208333, que es el valor correcto según las calculadoras en línea (como http://www.satsig.net/degrees-minutes-seconds-calculator.htm ).