lunes, julio 20, 2015

Longitud, Latitud y ángulos en Excel

Este post se originó en esta consulta:
En una celda tengo datos de latitud y en otra longitud, 194623 y 1012804, respectivamente. ¿Cómo puedo hacer para cada uno de los datos extraerlos a una celda diferente pero ya convertidos a grados, minutos y segundos, es decir 19°46'23'' y 101°28'04''.
Efectivamente, la longitud y la latitud se miden en grados, minutos y segundos, tal como los ángulos. Pero lo que busca nuestro lector no es convertir medidas entre distintos sistemas de unidades (la explicación va más adelante), ya que sus datos muestran las coordenadas pero sin los símbolos correspondientes.
Antes de entrar en el tema de los ángulos en Excel, vamos a resolver el problema de nuestro lector. La "conversión" puede verse en esta imagen


La fórmula en la celda B1 es:

=IZQUIERDA(A1,LARGO(A1)-4)&CARACTER(176)&EXTRAE(A1,LARGO(A1)-3,2)&CARACTER(39)&DERECHA(A1,2)&CARACTER(34)

Usamos el operador "&" para concatenar las distintas partes de la cadena de texto y usamos la función CARACTER para representar el símbolo de los grados, de los minutos y de los segundos. La función LARGO nos permite determinar cuantos dígitos conforman los grados (puede variar de 1 a tres) dinánicamente. La fórmula supone que siempre los minutos y los segundos tienen dos cifras.
El resultado de esta fórmula es un texto, por lo que si bien representa correctamente las medidas de la longitud y la latitud, no nos sirve para realizar cálculos.

Los ángulos, como las fechas y horas, pueden expresarse en el sistema decimal. Así como 20/07/2015  12:30:00 puede expresarse en forma decimal como 42205.52 donde la parte entera es la fecha y la parte decimal las horas, minutos y segundos, lo mismo podemos hacer con ángulos. Así si tenemos por ejemplo el ángulo de 19° 46' 23'' de nuestro ejemplo puede expresarse decimalmente con el número 19.773. Si tenemos el ángulo expresado en forma decimal podemos mostraralo en forma sesxagesimal usando la función TEXTO y dándole formato de hora, dividiendo los grados por 24, como en el sistema horario


Como puede verse, tampoco aquí se trata de una verdadera conversión sino de crear un texto que muestra el ángulo en el sistema sexagesimal.

Y ahora entraremos en el meollo de la cuestión. Si queremos hacer algún tipo de operación con ángulos tendremos que transformarlos a radianes ya que Excel usa el radián como unidad de medida para trabajar con ángulos. Convertir angulos en forma decimal a radianes es fácil, como mostraré más adelante. Pero no contamos con ninguna función o fórmula para convertir ángulos sexagesimales a decimales. Para hacerlo usamos esta función UDF publicada gentilmente por Microsoft

Function Convert_Decimal(Degree_Deg As String) As Double
   ' Declare the variables to be double precision floating-point.
   Dim degrees As Double
   Dim minutes As Double
   Dim seconds As Double
   ' Set degree to value before "°" of Argument Passed.
   degrees = Val(Left(Degree_Deg, InStr(1, Degree_Deg, "°") - 1))
   ' Set minutes to the value between the "°" and the "'"
   ' of the text string for the variable Degree_Deg divided by
   ' 60. The Val function converts the text string to a number.
   minutes = Val(Mid(Degree_Deg, InStr(1, Degree_Deg, "°") + 2, _
             InStr(1, Degree_Deg, "'") - InStr(1, Degree_Deg, _
             "°") - 2)) / 60
    ' Set seconds to the number to the right of "'" that is
    ' converted to a value and then divided by 3600.
    seconds = Val(Mid(Degree_Deg, InStr(1, Degree_Deg, "'") + _
            2, Len(Degree_Deg) - InStr(1, Degree_Deg, "'") - 2)) _
            / 3600
   Convert_Decimal = degrees + minutes + seconds
End Function


Para convertir de grados decimales a radianes usamos la función RADIANES() o este algoritmo (ver la explicación aquí)
radianes = ángulo decimal x (Pi / 180)
Para convertir ángulos de radianes a decimales usamos la función GRADOS().

Como indicamos anteriormente, Excel usa radianes para cálculos con ángulos (trigonometría). Por lo tanto si queremos calcular el seno de un ángulo expresado como número decimal, debemos previamente convertirlo a radianes


No hay comentarios.:

Publicar un comentario

Nota: sólo los miembros de este blog pueden publicar comentarios.