Realizar conversiones entre unidades usualmente es tan fácil como hacer una simple operación aritmética, pero hay algunas que requieren un poco más de atención cuando necesitamos el resultado en una hoja de cálculo. Este es el caso de la conversión de coordenadas de latitud y longitud en forma de grados, minutos, segundos o en forma decimal. Hoy, vamos a aprender a convertir entre estas dos representaciones de coordenadas en Google Sheets fácilmente.

Coordenadas geográficas

Hay dos maneras generales de representar coordenadas geográficas de latitud y longitud: grados sexagesimales, es decir, una combinación de grados, minutos y segundos, o en forma decimal. Ambas representan un par de coordenadas angulares tomando en cuenta el centro de la Tierra y asumiendo que es una esfera. Es por eso que la latitud siempre va de 90 a -90 grados relativos al ecuador, es decir, del polo norte al polo sur; y la longitud va de 0 a 180 grados relativo al meridiano base situado en Greenwich, Londres.

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

La forma más común de representación sexagesimal es indicar los grados, minutos y segundos junto con la dirección cardinal que le corresponde, o sea Norte o Sur para la latitud y Este u Oeste para la longitud. Esta es la forma que vamos a analizar cómo convertir, porque es el estándar que utiliza la mayoría de los sistemas de GPS y plataformas de mapeo como Google Maps, y por lo tanto es la forma más común en la que recibiremos los datos para usar en nuestra hoja de cálculo.

Estandarizar coordenadas para futura conversión

Entonces, supongamos que en una hoja de cálculo tenemos estas coordenadas en el formato sexagesimal de grados, minutos y segundos. Los grados se representan por el símbolo °, los minutos por una comilla simple ', los segundos por comillas dobles " y la dirección cardinal por N, S, E y W, que corresponden a Norte, Sur, Este y Oeste respectivamente.

19°25'38.6"N 99°10'9.8"W

Latitud y longitud sexagesimal (grados minutos segundos)

Aquí puede haber algunas variaciones en cuanto a si hay espacios, signos de más + o comas intermedias , entre las coordenadas y las unidades, entonces lo primero que haremos será usar SUBSTITUTE (SUSTITUIR en español) para quitar los espacios si es que los hubiera. Después usaremos REGEXEXTRACT para separar las coordenadas en dos valores independientes usando una expresión regular que corresponde a las posibilidades que ya describimos.

=REGEXEXTRACT(SUBSTITUTE(A2," ",""),"(.+[NSWE])[\,\+]?(.+[NSWE])")

Separar latitud y longitud sexagesimales (grados minutos segundos)

Nota: mi configuración regional puede ser diferente a la tuya, si las fórmulas no te están funcionando puede ser que requieras cambiar las comas , por puntos y coma ; para separar los argumentos de las fórmulas.

Por ahora no te preocupes mucho por la expresión regular, que puede parecer algo complicada si nunca las has visto. Te animo a investigar más sobre ellas, pues son un tema fascinante, pero por ahora confía en que cumple con su función de separar las coordenadas en latitud y longitud sexagesimal 😉.

Aquí hay que notar que debemos recibir las coordenadas estandarizadas de modo que siempre se incluyan los grados, minutos, segundos y punto cardinal, es decir, que estos elementos siempre estén presentes aunque sean 0 o de lo contrario nuestro método de conversión fallará.

19°25'N 99°10'9.8"W Faltan los segundos en la latitud
19°25'0" -99°10'9.8" Falta el punto cardinal explícito en latitud y longitud
19°25'0"N 99°10'9.8"W

Conversión de grados, minutos y segundos (sexagesimal) a coordenadas decimales

Ya que tenemos separadas la latitud y longitud en dos valores, lo que sigue es convertirlos al formato decimal.

Primero, usaremos la fórmula SPLIT para separar cada parte de la coordenada para obtener su valor numérico para poder operarlo, pues ahora tenemos una cadena de caracteres. Como delimitador, además del caracter de grados, vamos a incluir algunas variantes de los caracteres de comillas, apóstrofes y dobles comillas, pues a veces cuando copiamos y pegamos de otro lugar suelen colarse estos caracteres que desde la perspectiva del sistema, son diferentes.

=SPLIT(C2,"°'’′″""NSWE")

Fórmula SPLIT para separar grados, minutos y segundos de coordenada sexagesimal

Ahora sí viene la conversión como tal. El valor de los grados lo podemos tomar como está, pues será la parte entera. Los minutos los tenemos que dividir entre 60 para obtenerlos en forma decimal, así como los segundos debemos dividirlos entre 3600 (o lo que es lo mismo, entre 60 y luego entre 60 otra vez). Si sumamos todo esto, nos resulta en el número que buscamos.

G + M/60 + S/3600

Para efectos de la demostración paso a paso lo estamos desglosando minuciosamente, pero esta operación realmente puede hacerse en un solo paso si combinamos ArrayFormula, SUM y un arreglo compuesto por los valores de {1,60,3600}, de esta manera:

=ArrayFormula(SUM(SPLIT(C2,"°'’′″""NSWE")/{1,60,3600})) * IF(REGEXMATCH(C2,"(S|W)"),-1,1)

También fíjate cómo estamos multiplicando por 1 o por -1 si encontramos las letras S o W correspondientes a Sur y Oeste respectivamente.

Si aplicamos esta fórmula a ambos valores, tendremos listo nuestro resultado en forma decimal.

Fórmula para convertir una coordenada de grados minutos segundos (sexagesimal) a decimal

Fórmula combinada para convertir coordenadas en grados, minutos y segundos a decimales

Si te funcionan los valores así, ya puedes copiar, pegar y dar todo esto por terminado. Pero si eres de los que prefieren combinar todo en una sola fórmula, te comparto este método que utiliza las funciones de MAP y LAMBDA para hacerlo todo desde la celda original donde vienen juntas la latitud y longitud.

=MAP(REGEXEXTRACT(SUBSTITUTE(A2," ",""),"(.+[NSWE])[\,\+]?(.+[NSWE])"),LAMBDA(coord,ArrayFormula(SUM(SPLIT(coord,"°'’′″""NSWE")/{1,60,3600}))*if(REGEXMATCH(coord,"(S|W)"),-1,1)))

Fórmula completa para convertir grados minutos segundos (sexagesimal) a decimal

Y si necesitamos que estén unidas por una coma como usualmente se representan cuando están juntas, solo debemos usar JOIN:

=JOIN(",",map(REGEXEXTRACT(substitute(A2," ",""),"(.+[NSWE])[\,\+]?(.+[NSWE])"),lambda(coord,ArrayFormula(sum(split(coord,"°'’′″""NSWE")/{1,60,3600}))*if(regexmatch(coord,"(S|W)"),-1,1))))

Incluso podemos dar click derecho en la celda con la fórmula terminada y elegir Ver más acciones de la celda – Definir función con nombre para definir una función propia, y así utilizarla fácilmente en futuras ocasiones solo escribiendo:

=GMS_DEC(A2)

Fórmula personalizada para convertir grados minutos segundos (sexagesimal) a decimal

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

=JOIN(",",GMS_DEC(A2))

Así se ve súper limpio y no tenemos que escribir ni copiar tanto. ¡Genial!, ¿no? 😉 Solo recuerda que este último método está ligado al documento de hoja de cálculo de Google Sheets en el que hayas creado la función con nombre y tendrás que recrear la fórmula en otro documento donde la quieras usar o simplemente importarla y elegir el documento donde esté tu fórmula.

Importar función con nombre personalizada para convertir coordenadas sexagesimales a decimales

¡Y listo! Ahora ya sabes cómo convertir coordenadas sexagesimales de latitud y longitud en grados, minutos y segundos a coordenadas decimales. En próximas guías veremos cómo hacer el proceso inverso en el que convertiremos coordenadas decimales a sexagesimales, que también tiene su truco.

Plantilla terminada para descargar

Guía en video

Si tienes dudas puedes ver esta misma guía explicada en video

¡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