planas manualmente gratis google geograficas earth decimales coordenadas convertir convertidor conversor como calcular lua gps converter wgs84

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

  1. Esta es su cadena (fíjese en la comilla simple escapada):

    latlon = ''48°12/'30" N 16°22/'28" E''

  2. 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)'')

  3. 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+)"'')

  4. 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 ).