Los formatos en los que los programas de geolocalización que usamos piden los datos no son siempre los mismos. A veces requerimos latitud y longitud en formato decimal, y otras veces necesitamos usar el formato de grados minutos y segundos (sexagesimal). Hoy veremos cómo realizar la conversión de latitud y longitud decimal a sexagesimal con fórmulas fácilmente en Google Sheets.
¿Por qué convertir entre formatos de coordenadas?
En una guía pasada explicamos el proceso inverso donde convertimos grados minutos segundos (sexagesimal) a decimal, así como la razón por la que se usa cada uno. Brevemente recordemos que la latitud y longitud representan un punto exacto en un mapa y el uso de cada formato dependerá de si nos conviene más representar a la Tierra en un plano cartesiano o como ángulos en una esfera.
Estandarizar los datos
Lo primero que haremos entonces es considerar algunos datos de ejemplo en los que las coordenadas de latitud y longitud vienen en formato decimal. Típicamente la latitud y longitud vienen juntas, a veces separadas por una coma, un espacio o ambos. Entonces antes de realizar la conversión, vamos a estandarizar la información para tener la latitud y la longitud separadas en dos columnas diferentes y poderlas operar más fácilmente. Esto lo hacemos fácilmente usando la fórmula SPLIT
de esta manera:
=SPLIT(A2," ,")
Fórmula para convertir latitud y longitud en decimal a grados minutos segundos (decimal)
Ahora sí, ya con la latitud y longitud separadas, vamos a pensar en lo que tenemos que hacer para realizar la conversión que necesitamos.
El método es bastante sencillo si lo separamos en tres partes, una para grados, otra para minutos y otra para segundos:
Los grados los obtenemos fácilmente tomando la parte entera del número en nuestra coordenada.
Los minutos los obtenemos tomando la parte decimal del número original y multiplicando por 60. Lo redondeamos hacia abajo y aplicamos valor absoluto
Los segundos los obtenemos restando esa misma parte decimal y los minutos divididos entre 60 para temporalmente operar la fracción que nos interesa en grados de nuevo, y luego multiplicamos todo por 3600, que es 60 por 60. También redondeamos hasta donde necesitemos y aplicamos valor absoluto.
Finalmente, la dirección cardinal la sabemos preguntando si el número original es positivo o negativo. Para la latitud, positivo será Norte y negativo será Sur. Para la longitud, positivo será Este y negativo será Oeste.
Todo esto condensado en fórmulas de hoja de cálculo de Google Sheets se ve así:
Para latitud:=LET(n, C2, g, ROUNDDOWN(n), m, ROUNDDOWN((n - g) * 60), s, ROUND((n - g - m/60) * 3600, 1), ABS(g) & "°" & ABS(m) & "'" & ABS(s) & """" &if(n<0,"S","N"))
Para longitud:=LET(n, D2, g, ROUNDDOWN(n), m, ROUNDDOWN((n - g) * 60), s, ROUND((n - g - m/60) * 3600, 1), ABS(g) & "°" & ABS(m) & "'" & ABS(s) & """" &if(n<0,"W","E"))
Estamos usando LET
para dividir la fórmula en resultados parciales que podemos usar para concatenar todo al final con sus símbolos de grados, minutos, segundos y dirección cardinal correspondientes.
Para grados y minutos usamos ROUNDDOWN
porque siempre queremos quedarnos la parte entera
Para los segundos redondeamos a 1 punto decimal con ROUND
, pero tú puedes ajustar aquí para la precisión que te convenga más.
Una sola fórmula para convertir coordenadas decimales a sexagesimal
Para hacer esto en una sola fórmula, solo debemos combinar MAP
y LAMBDA
para aplicar la misma fórmula a diferentes resultados, en este caso a los que arroja SPLIT
.
=MAP(SPLIT(A2," ,"),LAMBDA(coord,LET(n, coord, g, ROUNDDOWN(n), m, ROUNDDOWN((n - g) * 60), s, ROUND((n - g - m/60) * 3600, 1), ABS(g) & "°" & ABS(m) & "'" & ABS(s) & """" &if(n<0,"S","N"))))
Dicho de otro modo para que quede más claro, MAP toma los dos resultados de SPLIT (un arreglo) y a cada uno le aplica la función que tengamos en LAMBDA.
Y si lo necesitamos en una sola columna en vez de dos, solo usamos JOIN con un caracter de espacio:
=JOIN(" ",MAP(SPLIT(A2," ,"),LAMBDA(coord,LET(n, coord, g, ROUNDDOWN(n), m, ROUNDDOWN((n - g) * 60), s, ROUND((n - g - m/60) * 3600, 1), ABS(g) & "°" & ABS(m) & "'" & ABS(s) & """" &if(n<0,"S","N")))))
Fórmula personalizada
Si damos click derecho en la celda con la fórmula terminada y elegimos Ver más acciones de la celda – Definir función con nombre para definir una función propia, la podremos utilizar fácilmente en futuras ocasiones solo escribiendo:
=DEC_GMS(A2)
Y para unirlas en una sola celda solamente usamos JOIN de nuevo:
=JOIN(" ",DEC_GMS(A2))
Suponiendo que en A2 está lo que queremos convertir
Así nos queda un resultado muy limpio y sin escribir tanto. ¡Genial!, ¿no? 😉
¡Y listo! Ahora ya sabes cómo convertir coordenadas de latitud y longitud decimales a grados minutos segundos (sexagesimal) sin ningún problema. Con esta guía complementamos la conversión entre los dos formatos de ida y vuelta satisfactoriamente.
Plantilla terminada para descargar
¡Espero que te haya sido útil esta guía! No olvides seguirnos en YouTube para más tips, trucos y guías de productividad.
Alekz es un apasionado de la tecnología y los videojuegos. Además de ser locutor comercial, disfruta de la expresión artística más sastisfactoria y técnica que existe: programar (y pintar algo de pixel art). Fundó Tesel para ayudar a empoderar a las empresas a desarrollar su máximo potencial mediante la tecnología. Es un absoluto nerd de Star Trek.
Alekz es un apasionado de la tecnología y los videojuegos. Además de ser locutor comercial, disfruta de la expresión artística más sastisfactoria y técnica que existe: programar (y pintar algo de pixel art). Fundó Tesel para ayudar a empoderar a las empresas a desarrollar su máximo potencial mediante la tecnología. Es un absoluto nerd de Star Trek.