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.

Latitud y longitud en la Tierra.
Latitud y longitud en la Tierra (CC BY-SA 4.0)

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," ,")

Separar latitud y longitud con fórmula SPLIT

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:

Explicación método matemático conversión decimal a grados sexagesimal

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

Conversión latitud decimal a grados sexagesimal
Conversión longitud decimal a grados sexagesimal

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.

Fórmula completa conversión decimal a sexagesimal

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

JOIN fórmula completa

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)

Menú función propia
Función propia decimal a sexagesimal
Función propia decimal a sexagesimal en Sheets
Función propia decimal a sexagesimal

Y para unirlas en una sola celda solamente usamos JOIN de nuevo:

=JOIN(" ",DEC_GMS(A2))

Fórmula JOIN (unir) con espacio dos celdas latitud y longitud

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.

Aprende Sheets: Curso práctico de Hojas de cálculo de Google
Aprende Sheets: Curso práctico de Hojas de cálculo de Google