Uso de Excel para análisis de datos del modelo GFS con READY

Subforo teórico con fenómenos meteorológicos tratados de forma didáctica.

Moderadores: Raul, juan_oviedo, meteofabes, Ovio, Aguanieve, Tambascada, Travieso, jor, Ovetus

Uso de Excel para análisis de datos del modelo GFS con READY

Notapor erierab » Dom Ene 03, 2010 4:32 am

Introducción:

Dentro del amplio panorama de modelos numéricos de predicción del tiempo atmósférico disponibles en Internet, nos encontramos actualmente con gran información tanto a nivel global como mesoescalar. Sin embargo, dicha información no siempre responde a las necesidades concretas de cada situación a estudiar, bien por el método de representación de la información, mayoritariamente en forma de mapas, como por las variables a representar.

En el presente estudio se muestra como utilizar una herramienta software relativamente extendida, como es la hoja de cálculo Excel del paquete Microsoft Office, para obtener representaciones mas personalizadas de los resultados de un modelo numérico de predicción, concretamente el modelo GFS, ya que es el único que difunde ( de forma facilmente accesible) su información, en un formato numérico apto para su posterior tratamiento.

Si bien aparecen en Internet diversos ejemplos de utilización de esta herramienta en meteorología y climatología, e incluso un Curso específico de la Universidad de Cantabria ( http://www2.unican.es/WebUC/catalogo/pl ... sp?id=4943 ), no se han encontrado referencias a la aplicación de las técnicas de importación y programación que se describen al campo que nos ocupa. a pesar de estar convenientemente documentadas en los manuales de utilización avanzada de Excel, por lo que se ha considerado de interés su exposición.

Dado que está dirigido a personas con muy diferente nivel de destreza en la utilización de hojas de cálculo, se ha intentado hacer las explicaciones lo mas sencillas posibles, por lo que algunas partes pueden resultar obvias para los usuarios mas avanzados.

El proceso que vamos a detallar responde al siguiente esquema:

a- Obtención de los resultados del modelo GFS.
b- Importación de datos a la hoja de cálculo.
c- Obtención de datos derivados a partir de la entrada.

Espero que el presente texto resulte de utílidad a los aficionados a la Meteorología, y sirva de base a nuevos desarrollos.

Advertencia: Para el correcto funcionamiento de las técnicas aquí mostradas es necesario que las macros estén habilitadas.
Miembro Honorario de ASCPN (Asturias SIN CALOR PARAISO NATURAL)
Imagen Imagen TW @meteoesteban
Avatar de Usuario
erierab
Rango 11: Nieve
 
Mensajes: 3218
Registrado: Dom Mar 05, 2006 1:58 am
Ubicación: Oviedo: Zona de la Ería. Fines de semana en León

1- Obtención de los resultados del modelo GFS.

Notapor erierab » Dom Ene 03, 2010 4:36 am

1- Obtención de los resultados del modelo GFS.

La principal, y mas completa fuente de datos, es el READY, si bien existen otras páginas que nos ofrecen un número mas limitado de informaciones y/o localizaciones, a cambio de obtener un acceso mas cómodo a los datos.

El READY (Real-time Environmental Applications and Display sYstem) es una interesante herramienta desarrollada por el Air Resources Laboratory dependiente de la NOAA (National Oceanic and Atmospheric Administration del Departamento de Comercio de EEUU), que permite el acceso libre a gran cantidad de información meteorológica, aunque la mayor parte se refiera a su propio ámbito nacional.

Una descripición del READY se encuentra en los artículos publicados en la sección "Portal del mes" correspondientes a septiembre y Octubre de 2003 de la revista RAM, con el título "La Aplicación Interactiva READY ( http://www.meteored.com/ram/980/portal-del-mes-4/ y http://www.meteored.com/ram/1039/portal-del-mes-5/ ).

A los efectos que nos interesan, nosotros vamos a acceder a los resultados del modelo global GFS en forma de meteogramas.Una buena explicación se puede obtener del topic "Meteogramas y Coordenadas de las ciudades Españolas" iniciado por Jano/Estrada21 en noviembre de 2007 ( http://foro.meteoasturias.com/viewtopic ... 758#181758 ) y recuperado en "Cómo hacer un meteograma" ( http://foro.meteoasturias.com/viewtopic ... 280#195280 ). Los datos aportados en el mismo, especialmente en el aspecto geográfico,pueden ser complementados por los aportados por EstelaNorte y Vigorro en "Donde conseguir meteogramas de los distintos modelos" ( http://foro.meteored.com/meteorologia+g ... #msg925798 ) y mas recientemente por RetusPetrus en "Como localizar el meteograma de vuestra localidad por Lat/Long" ( http://foro.meteored.com/meteorologia+g ... msg1904408 ).

El acceso a READY ( http://www.arl.noaa.gov/ready/cmet.html o http://www.arl.noaa.gov/READYcmet.php ) puede resultar bastante incómodo si siempre vamos a acceder a la misma localización, sin embargo, es posible saltarnos el paso de introducción de las coordenadas, creando un favorito en la forma: http://www.arl.noaa.gov/ready-bin/main. ... n=LONGITUD , siendo LATITUD y LONGITUD los valores que se introducian manualmente.
Para el caso concreto de Oviedo la dirección sería: http://www.arl.noaa.gov/ready-bin/main. ... &Lon=-5.83

A partir de aquí, los pasos a seguir serían los siguientes (Dado que están suficientemente ilustrados en las referencias citadas, no voy a añadir gráficos en este apartado):

a- Escoger alcance y resolución del Meteograma en el desplegable correspondiente.

b- Escoger variables a representar. En el caso de que NO sean las que da por defecto recordar señalar CHOOSE FROM BELOW.
En este momento es interesante hacer notar que determinadas variables nos van a dar lugar a dos series de datos: Temperature-2 meters AGL (Temperatura y punto de rocío), Wind Flags (Dirección y velocidad), y Thickness Between 1000 mb and Level Chosen (Espesor y altura geopotencial)
Otro punto importante es que todas las variables marcadas como 3D no pueden tener en su segunda columna SFC, y viceversa, las marcadas como SFC no pueden contener un nivel de presión. La única excepción es el caso de los vientos que admiten ambos formatos.

c- Introducir el código de acceso que nos muestran y pulsar Get Meteogram.

d- En este punto tendremos en pantalla el gráfico solicitado, pero para nuestros fines necesitamos la información numérica, así que "pinchamos" en Text Results (en la parte inferior del gráfico) y tendremos los datos deseados.

Aquí debo hacer un par de aclaraciones, la primera respecto a la salida de los datos.
Según que navegador utilicemos, y como lo tengamos configurado, pueden ocurrir dos cosas, una, que nos aparezca una ventana del navegador preguntandonos que deseamos hacer con los datos (Firefox o Chrome), en cuyo caso eligiremos la opción Guardar Archivo, teniendo la precaución de cambiarle el nombre para posterior referencia de su contenido. La otra opción, que es Abrir con, tendría utilidad unicamente si queremos simplemente inspeccionar el fichero pero no nos permitiría tratamientos posteriores de su contenido. La otra posibilidad (Explorer o bien si hemos seleccionado TEXT ONLY) es que nos aparezca directamente en el navegador la información de texto, en cuyo caso, debemos seleccionar toda la información, y hacer un Copiar y Pegar al Bloc de Notas, para obtener el fichero de texto correspondiente.
Última edición por erierab el Lun Ene 18, 2010 4:14 pm, editado 2 veces en total
Miembro Honorario de ASCPN (Asturias SIN CALOR PARAISO NATURAL)
Imagen Imagen TW @meteoesteban
Avatar de Usuario
erierab
Rango 11: Nieve
 
Mensajes: 3218
Registrado: Dom Mar 05, 2006 1:58 am
Ubicación: Oviedo: Zona de la Ería. Fines de semana en León

2- Importación de datos a la hoja de cálculo.

Notapor erierab » Dom Ene 03, 2010 4:38 am

2- Importación de datos a la hoja de cálculo.

Ahora vamos a centrarnos en la forma de trasladar los datos obtenidos en el paso anterior a una hoja de cálculo.

Partimos de una hoja en blanco, y marcamos la celda A1 (en realidad puede ser cualquier otra celda, pero así es mas cómodo)

Seleccionamos Datos -> Obtener Datos Externos -> Importar Archivo de Texto, lo cual nos abrirá una pantalla en la que seleccionaremos el fichero que deseamos incorporar.
En el ejemplo que voy a utilizar para ilustrar el proceso, voy a escoger el señalado en azul (Ver su estructura en el Anexo, al final de este apartado) , haciendo doble-clic sobre el mismo, lo que nos llevará al Asistente de importación.

Imagen

En el paso 1, observamos que por defecto nos da la opción "De ancho fijo", que en nuestro caso conservaremos ya que como podemos comprobar en la vista previa que se encuentra en la parte inferior, se adapta bien a nuestros datos.
Tambien debemos seleccionar en este paso la fila por la que comenzaremos la importación. En este caso, aunque la información de interés, propiamente dicha, comienza en la línea 11 ( 7 si incluimos los encabezamientos de las columnas), resulta conveniente dejar la fila 1, ya que contiene las referencias al momento, y lugar al que se refieren los cálculos. Para continuar seleccionamos Siguiente.

Imagen

El paso 2 es más delicado, ya que debemos comprobar que los campos han sido correctamente identificados. Para ello, ignoramos las 6 primeras líneas, y con la barra de desplazamiento vertical nos situamos en los datos. Ahora comprobaremos con el desplazamiento horizontal que cada dato se encuentra en la columna que debe. No nos debe importar el que existan columnas que solo contienen blancos.
Si hubiese algún problema, lo corregiremos colocando la flecha del cursor en el lugar donde deseemos introducir un cambio de columna, y haremos un click, tal y como se observa en la parte inferior de la figura (no corresponde al fichero que estamos usando como ejemplo). Una vez que hemos corregido los posibles errores, seleccionamos Siguiente.

Imagen

Finalmente el paso 3 nos permite establecer el formato de datos de cada columna (normalmente no será necesario tocarlos), así como que columnas deseamos importar (por defecto,todas). Este sería el momento de eliminar, si se desea, las columnas que unicamente contienen blancos que habiamos encontrado en el paso 2. Para ello, nos situamos en la columna a saltar y la seleccionamos con un click. A continuación, marcamos en la parte superior derecha la opción No importar columna (saltar), y el encabezamiento de la misma cambiará de General a Saltar. Esta operación debemos repetirla para cada columna que no deseemos importar. Por último seleccionamos Finalizar.

Imagen

En este momento, se nos preguntará por el lugar para situar los datos, que por defecto será la celda que teniamos marcada, pero podríamos cambiarlo. Una vez que seleccionamos Aceptar, tendremos la información lista para ser utilizada en nuestra hoja de cálculo.

Imagen

Ahora puede que nos encontremos con un pequeño problema relacionado con la configuración del separador decimal en nuestro ordenador.
Si nos hemos fijado, en el fichero original, la parte decimal aparece separada con un punto, pero dependiendo de nuestra configuración regional, en la mayor parte de nuestros ordenadores el separador será la coma, en cuyo caso, el dato será tomado como texto y no podremos utilizarlo para realizar cálculos.
Podemos comprobar facilmente la existencia del problema, simplemente fijandonos en la alineación de los datos numéricos. Si están alineados a la derecha, como en la figura, todo es correcto, y NO DEBEMOS HACER NADA MAS, mientras que si lo están a la izquierda, entonces tendremos que arreglarlo.
Para ello, y sin movernos de la celda en la que esté la consulta, seleccionamos Edición -> Reemplazar, y en el cuadro de diálogo que aparece ponemos en Buscar, un punto, en Reemplazar con, una coma, y finalmente seleccionamos Reemplazar todas con lo que el problema quedará solucionado. Este proceso tendremos que acordarnos de repetirlo cada vez que importemos datos

Ahora ya solo queda guardar la hoja de cálculo con el nombre que deseemos.

Como lo normal será que deseemos utilizar la hoja de cálculo mas de una vez, pero con datos correspondientes a otros lugares u otras salidas del GFS, vamos a ver como podemos realizarlo sin necesidad de repetir el proceso anterior.

Para ello, nos situamos de nuevo en A1 ( o la celda en la que esté guardada la consulta de datos ) y seleccionamos Datos -> Actualizar Datos, lo cual nos abrirá la habitual pantalla en la que seleccionaremos el fichero que deseamos incorporar.Por defecto aparecerá señalado el fichero que utilizamos por última vez. Basta con seleccionar Importar, si deseamos utilizarlo porque su contenido (ojo, los datos, no su estructura) ha cambiado, o bien proceder a buscar y seleccionar con doble click si nos interesa otro fichero. Es MUY IMPORTANTE en este caso que el fichero que seleccionemos tenga la misma estructura que el original. Si tenemos problemas con los separadores, haremos la corrección como vimos anteriormente.

ANEXO: Estructura del fichero de ejemplo.

Meteograma a 84 horas en intervalos de 3 horas.
Campos:
Presión a nival del mar.
Temperatura a 1000 hPa.
Temperatura a 850 hPa.
Temperatura a 500 hPa.
Altura geopotencial a 850 hPa.
Humedad Relativa a 2 metros.
Espesor de la capa 500/1000 hPa.
Viento a 10 m (FLAGS SFC).
Cobertura de nubes.
Precipitación acumulada.
Última edición por erierab el Dom Ene 03, 2010 4:45 am, editado 1 vez en total
Miembro Honorario de ASCPN (Asturias SIN CALOR PARAISO NATURAL)
Imagen Imagen TW @meteoesteban
Avatar de Usuario
erierab
Rango 11: Nieve
 
Mensajes: 3218
Registrado: Dom Mar 05, 2006 1:58 am
Ubicación: Oviedo: Zona de la Ería. Fines de semana en León

3- Obtención de datos derivados.

Notapor erierab » Dom Ene 03, 2010 4:39 am

3- Obtención de datos derivados.

En este punto estudiaremos los dos principales mecanismos de cálculo: la utilización directa de formulas y funciones predefinidas, y la utilización de funciones de usuario construidas en Visual Basic .

Aunque ya es de todos conocido, vamos a recordar que una hoja de cálculo está formada por una serie de celdas, organizadas en filas y columnas.
Cada celda puede contener un valor (numérico o no, como texto) o una expresión o fórmula, que al ser calculada se convirte en un valor. Además, cada celda se identifica por una o mas letras que indican la columna, y un número que indica la fila en que se encuentra.

En este apartado, vamos a ver como podemos aprovechar las capacidades de cálculo exponiendo tres casos prácticos utilizando los datos que hemos importado en el apartado anterior. Es importante resaltar que todas las operaciones que vamos a realizar debemos hacerlas fuera del área ocupada por los datos que hemos importado.

Caso práctico 1.

Como hemos visto en el ejemplo anterior, el meteograma que hemos importado nos muestra, en su primera columna, la escala temporal en horas desde la inicialización del modelo. Si embargo, esta forma de presentar la información, aunque pueda resultarnos de utilidad para establecer el grado de fiabilidad de los datos calculados, no es el mas adecuado si en lo que estamos interesados es en conocer a que fecha corresponden las previsiones.
Vamos a solucionarlo utilizando una fórmula sencilla, siguiendo los siguientes pasos.

Situemonos en las celdas señaladas y escribamos los textos correspondientes.
Para conocer la fecha y la hora correspondiente a un alcance dado, y considerando que Excel trabaja con días y fracciones de día, el cálculo a realizar será:

Día Predicción = Día Run + Hora Run + (Horas transcurridas/24), que traduciendolo al lenguaje de celdas será:
Columna O = O$3 + O$4 + (Columna A/24)

El signo $ del O$3 y O$4 indica que la posición dentro de la columna es fija.
El dividir por 24 la columna A es necesario porque el día tiene 24 horas, sin embargo, aunque O$4 tambien almacena una hora, no es necesario hacer la división, ya que al poner los dos puntos, Excel interpreta internamente ese valor como una fracción de día. Ahora vamos a introducir la fórmula.
Nos colocamos en O11 y pulsamos en el signo igual del cuadro de fórmulas, introduciendo en el mismo O$3+O$4+(A11/24), y aceptamos.
Sin embargo, lo que obtenemos no se parece a una fecha, así que vamos a cambiar el formato de visualización. Para ello, sin movernos de la celda seleccionamos Formato -> Celdas. En la primera pestaña (Número) marcamos Fecha en la lista de categorias, y el tipo deseado en la lista de Tipos. Terminamos con Aceptar, y observaremos que ahora ya se muestra de forma correcta.

Imagen

Ya solamente nos falta copiar la fórmula en el resto de la columna, lo que haremos con Copiar, seleccionamos todas las celdas en las que queremos Pegar la fórmula y por último, pulsamos la tecla Intro. Si en alguna celda se mostrara una serie de #####, basta con aumentar el ancho de la columna O.

Caso práctico 2.

En el curso de nuestros estudios, nos encontraremos con frecuencia con la necesidad de trabajar con valores estadísticos. así que vamos a añadir a nuestra hoja los valores máximo, medio y mínimo de cada variable.

El problema lo vamos a resolver utilizando las funciones estandar que vienen con Excel, siguiendo los siguientes pasos.

Situemonos en las celdas señaladas, y escribamos los textos correspondientes.
A continuación marquemos la celda B41 y situémonos en Insertar-> Función, lo que nos llevará a un cuadro de diálogo, en el que marcaremos la Categoría Estadísticas para la función. Ahora nos desplazamos en la columna Nombre de la Función (derecha) hasta encontrar el nombre MAX, lo seleccionamos y aceptamos.

Imagen

Esto nos llevará al cuadro de fórmulas, y se desplegará un nuevo cuadro de díalogo, en este caso, ya con la lista de valores que supone que deseamos procesar. Si estamos de acuerdo, bastará con Aceptar.
En nuestro caso vamos a seleccionar manualmente los valores deseados. Para ello, pulsamos en el cuadrito de color que está en la primera fila y nos aparecerá una ventanita con la selección actual resaltada en negro, y a su derecha un icono con una pequeña flecha hacia abajo (ver figura).
Seleccionamos el conjunto de datos de los cuales queremos obtener el máximo, que en nuestro caso es la columna B, y pulsamos el icono mencionado, lo que nos llevará de nuevo al primer cuadro de diálogo donde deberemos aceptar.
Ahora aparecerá en la celda B41 el valor máximo de las presiones al nivel del mar. Con la práctica seremos capaces de introducir directamente las funciones en el cuadro de fórmulas, ahorrandonos todos estos pasos.

Imagen

Continuando con nuestra práctica, vamos a repetir el proceso anterior en la celda B42, seleccionando Estadisticas-> PROMEDIO, y con la celda B43 utilizando la función MIN.

Para hacerlo con el resto de las variables, no necesitamos repetir todo el proceso, sino que vamos a copiar las formulas.
Seleccionamos el bloque formado por las celdas B41,B42 y B43 y seleccionamos Copiar. A continuación marcamos el bloque correspondiente a las filas 41 a 43, y columnas de la C a la M, y pulsamos la tecla Intro, con lo que se completamos la resolución del caso práctico.

Caso práctico 3.

Dado que nos encontramos en invierno, uno de los temas que mas interes despierta es el de las cotas de nieve, así que vamos a incorporarlas a nuestra hoja.
Si rebuscamos por las distintas páginas de internet,nos encontraremos con diversos métodos que nos permitirian realizar de forma manual el calculo, tarea que sería bastante tediosa. La siguiente posibilidad sería proceder como en el caso práctico 1 introduciendo las fórmulas necesarias, aunque en algunos casos pueden llegar a ser algo complicadas al necesitar también de la utilización de funciones estandar (algunas incluyen condiciones) y sobre todo de varios niveles de paréntesis, con los que es muy fácil equivocarse.
Pero ¿qué ocurriría si ya tuviesemos funciones, que al igual que las estandar, hiciesen los cálculos por nosotros?. Que las cosas serían mucho mas sencillas y podríamos actuar como en el segundo caso práctico.

Estamos hablando de utilizar funciones definidas por el usuario. La forma de construirlas excede del propósito de estas líneas, así que vamos a centrarnos en su utilización, en nuestro caso de varias que he ido preparando para mi uso personal a medida que las he ido necesitando, y que están recogidas en el Apendice I.

Dado que no vienen "de fábrica", vamos a comenzar preparando el fichero Excel para que pueda utilizarlas.
Comenzamos añadiendo una hoja nueva en blanco al libro en el que estamos trabajando (si todavía tenemos hojas en blanco bastará con que nos situemos en una de ellas) con Insertar -> Hoja de Cálculo, y nos la creará delante de la hoja en la que estábamos.
Ahora vamos a abrir el editor de Visual Basic seleccionando Herramientas->Macros->Editor de Visual Basic lo que abrirá una nueva ventana, en la que escogeremos con el menú Insertar->Módulo.
Para añadir las funciones vamos al Apendice I, y hacemos un Copy/Paste del código al Editor de Visual Basic, justo debajo de Option Explicit. Guardamos los cambios con Archivo->Guardar y volvemos a Excel con Archivo->Cerrar.
Si alguno considera interesante el poder utilizar con frecuencia estas funciones, puede resultarle útil hacer el proceso en un libro nuevo, que posteriormente se utilizaría como base para crear las hojas de cálculo, en lugar del modelo por defecto.

Para nuestro caso vamos a incorporar la cota de nieve calculada por dos métodos dístintos (no entro a juzgar la exactitud de los mismos): el utilizado para las predicciones automáticas de la AEMET, y el propuesto por MeteoAsturias.
Comenzamos introduciendo el texto en las celdas correspondientes, y nos situamos en la celda P11.
Mediante Insertar->Función nos desplazamos hacia abajo en la lista de Categorías para Seleccionar Definidas por usuario, y a continuación en Nombre de la función CotaAutomAEMET, aceptando. En la pantalla se nos solicitan los valores de la temperatura (T850) y Geopotencial (Z850) a 850 hPa, que se encuentran respectivamente en las columnas D y F, por lo que las seleccionamos como vimos en el caso práctico anterior.
Repetimos el proceso en la celda Q11, en la que utilizaremos la función CotaMetAstur. En este caso, los datos necesarios son las temperaturas a 500 y 850 hPa que se encuentran en las columnas E y D. Finalizamos copiando las formulas de P11 y Q11 para rellenar la hoja de cálculo.

Imagen

Hasta aquí la parte de realización de los cálculos. Dado que en el proceso de realización de los mismos han ido apareciendo muchas cifras decimales, es conveniente ajustar en dichas celdas ( y tambien en las de datos) el número de decimales que deseamos que se muestran. Para ello seleccionamos las celdas deseadas y mediante Formato->Celdas podemos ajustarlos marcando número en Categoría de la primera pestaña. Por defecto nos pondrá 2 pero podemos cambiarlo a nuestro gusto.
Tras algunos ajustes, este sería el resultado, aunque se puede mejorar mucho.

Imagen
Última edición por erierab el Dom Ene 03, 2010 4:46 am, editado 1 vez en total
Miembro Honorario de ASCPN (Asturias SIN CALOR PARAISO NATURAL)
Imagen Imagen TW @meteoesteban
Avatar de Usuario
erierab
Rango 11: Nieve
 
Mensajes: 3218
Registrado: Dom Mar 05, 2006 1:58 am
Ubicación: Oviedo: Zona de la Ería. Fines de semana en León

Notapor erierab » Dom Ene 03, 2010 4:40 am

**** RESERVADO****
Avatar de Usuario
erierab
Rango 11: Nieve
 
Mensajes: 3218
Registrado: Dom Mar 05, 2006 1:58 am
Ubicación: Oviedo: Zona de la Ería. Fines de semana en León

Notapor erierab » Dom Ene 03, 2010 4:40 am

**** RESERVADO****
Avatar de Usuario
erierab
Rango 11: Nieve
 
Mensajes: 3218
Registrado: Dom Mar 05, 2006 1:58 am
Ubicación: Oviedo: Zona de la Ería. Fines de semana en León

Apendice I: Código fuente de las funciones de usuario.

Notapor erierab » Dom Ene 03, 2010 4:42 am

Apendice I: Código fuente de las funciones de usuario.

En este apendice se incorpora el código fuente de varias funciones de usuario, realizadas por mí, y que pongo a vuestra disposición por si os pueden resultar de utilidad. En el caso de que tengais algún problma con ellas os agradecería que me lo hicieseis saber. Con el tiempo tengo previsto ampliar su número, aunque cualquier aportación y/o sugerencia sobre el tema será bienvenida.

El código a copiar es el siguiente:

'Principio del código para copiar

'FUNCIONES VARIADAS DE CONVERSIÓN.

Public Function Knots_a_ms(Velocidad As Double) As Double
'Convierte una velocidad expresada en nudos (Knots) a m/s

Knots_a_ms = Velocidad * 0.514

End Function

Public Function Ms_a_Knots(Velocidad As Double) As Double
'Convierte una velocidad expresada en m/s a nudos (Knots)

Ms_a_Knots = Velocidad / 0.514

End Function

Public Function Kmh_a_Knots(Velocidad As Double) As Double
'Convierte una velocidad expresada en Km/h a nudos (Knots)

Kmh_a_Knots = Velocidad / 1.852

End Function

Public Function Knots_a_Kmh(Velocidad As Double) As Double
'Convierte una velocidad expresada en nudos (Knots) a Km/h

Knots_a_Kmh = Velocidad * 1.852

End Function

Public Function Kmh_a_ms(Velocidad As Double) As Double
'Convierte una velocidad expresada en Km/h a m/s

Kmh_a_ms = Velocidad / 3.6

End Function

Public Function Ms_a_Kmh(Velocidad As Double) As Double
'Convierte una velocidad expresada en m/s a Km/h

Ms_a_Kmh = Velocidad * 3.6

End Function

Public Function TDew_from_HR(HR As Double, TempC As Double) As Double
'Calculo del punto de rocio a partir de la humedad relativa

'Entrada: HR : Humedad relativa en %
' TempC: Temperatura en ºC
'Salida: Punto de rocio en ºC

TDew_from_HR = TempC + 35 * (Log(HR / 100)) / Log(10)

End Function

Public Function HR_from_TDew(TempDewC As Double, TempC As Double) As Double
'Calculo de la humedad relativa a partir del punto de rocio.

'Entrada: TempDewC: Punto de rocio en ºC
' TempC: Temperatura en ºC
'Salida: Humedad Relativa en %

HR_from_TDew = 10 ^ ((TempDewC - TempC) / 35)
HR_from_TDew = 100 * HR_from_TDew

End Function



'FUNCIONES PARA EL CÁLCULO DE LA COTA DE NIEVE.

Public Function CotaRiesco(T500 As Double, T850 As Double) As Double
' Formula 1
' Ref: Jesús Riesco Martín, Pablo Aguayo Maldonado, Fausto Polvorinos Pascual.ALGUNAS CONCLUSIONES FUNDAMENTALES SOBRE LA SITUACIÓN DE NEVADAS HISTÓRICAS EN ANDALUCÍA ORIENTAL EL 27 DE ENERO DE 2007. [ http://www.ame-web.org/JORNADAS/3B_Riesco.pdf ]

CotaRiesco = 100 * T850 + 50 * T500 + 2100

If (CotaRiesco < 0) Then
CotaRiesco = 0
End If
End Function

Public Function CotaRiescoCorr(T500 As Double, T850 As Double, T1000 As Double) As Double
' Formula 2
' Ref: Jesús Riesco Martín, Pablo Aguayo Maldonado, Fausto Polvorinos Pascual.ALGUNAS CONCLUSIONES FUNDAMENTALES SOBRE LA SITUACIACIÓN DE NEVADAS HISTÓRICAS EN ANDALUCÍA ORIENTAL EL 27 DE ENERO DE 2007. [ http://www.ame-web.org/JORNADAS/3B_Riesco.pdf ]

CotaRiescoCorr = 100 * T850 + 50 * T500 + 2100 - 500 + 50 * (T1000 - T850)

If (CotaRiescoCorr < 0) Then
CotaRiescoCorr = 0
End If
End Function

Public Function CotaAutomAEMET(T850 As Double, z850 As Double) As Double
' Formula 4
' Ref: José del Hoyo. UN MÉTODO DE PREDICCIÓN DE COTA DE NIEVE Y SU APLICACIÓN EN LA ESTIMACIÓN DE PROBABILIDAD DE NEVADAS [ http://www.ame-web.org/JORNADAS/3B_Hoyo.pdf ]

CotaAutomAEMET = 10 * z850 + 153.8 * T850 - 461.5

If (CotaAutomAEMET < 0) Then
CotaAutomAEMET = 0
End If
End Function

Public Function CotaVigilant(T500 As Double, T850 As Double, z850 As Double) As Double
' Formula 5
' Ref: Vigilant ( http://foro.meteored.com/meteorologia+g ... msg1908926 )

CotaVigilant = 100 * T850 + 50 * T500 + 2100 + (10 * z850 - 1350)

If (CotaVigilant < 0) Then
CotaVigilant = 0
End If
End Function

Public Function CotaVigilantCorr(T500 As Double, T850 As Double, T1000 As Double, z850 As Double) As Double
' Formula 6
' Ref: Vigilant ( http://foro.meteored.com/meteorologia+g ... msg1908926 )

CotaVigilantCorr = 100 * T850 + 50 * T500 + 2100 + (10 * z850 - 1350) + (50 * (T1000 - T850) - 500)

If (CotaVigilantCorr < 0) Then
CotaVigilantCorr = 0
End If
End Function

Public Function CotaVigilantCorrHR(T500 As Double, T850 As Double, z850 As Double, HR As Double) As Double
' Formula 7
' Ref: Vigilant ( http://foro.meteored.com/meteorologia+g ... msg1908926 )

'CotaVigilantCorrHR = 100*T850+ 50* T500 + 2100 + [ 10 * z850 - 1350] + [ 50*(T1000 - T850 ) - 500 ] + 2*[ HR3/104 ]

'If (CotaVigilantCorrHR < 0) Then
' CotaVigilantCorrHR = 0
'End If
End Function


Public Function CotaBasica(T850 As Double) As Double
' Formula 8
' Ref: http://www.meteoasturias.com/foro/viewt ... 164#133164

CotaBasica = 150 * T850 + 1000

If (CotaBasica < 0) Then
CotaBasica = 0
End If
End Function

Public Function CotaMetRed(T500 As Double, T850 As Double) As Double
' Formula 9
' Ref: Formula Meteored http://foro.meteored.com/index.php/topi ... #msg438972

Dim DiffTemp As Double

DiffTemp = T850 - T500
CotaMetRed = 150 * T850 + 1000

If (DiffTemp > 25) Then
CotaMetRed = CotaMetRed - 50 * (DiffTemp - 25)
End If

If (CotaMetRed < 0) Then
CotaMetRed = 0
End If

End Function

Public Function CotaINM_CyL(E500_1000 As Double) As Double
' Formula 10
' Ref: G. Buendía Moya. DEDUCCIÓN DE UNA EXPRESIÓN PARA PREDECIR LA COTA DE LA NIEVE EN CASTILLA Y LEÓN [C16-VAD_Cota_Nieve.pdf]

CotaINM_CyL = 12.08 * (10 * E500_1000 - 5300) + 100

If (CotaINM_CyL < 0) Then
CotaINM_CyL = 0
End If

End Function

Public Function CotaMetAstur(T500 As Double, T850 As Double) As Double
' Formula 11
' Ref: MeteoAsturias ( http://www.meteoasturias.com/cursos/cotanieve/tabla.pdf ).
' Ajuste líneal por Mínimos Cuadrados por erierab a partir de la tabla (R cuadrado 0.9928).

CotaMetAstur = 25.2 * T500 + 98.56 * T850 + 1714

If (CotaMetAstur < 0) Then
CotaMetAstur = 0
End If

End Function


Public Function CotaRoglogg(T500 As Double, T850 As Double, z850 As Double) As Double
' Formula 12
' Ref: http://www.telecable.es/personales/rogl ... /index.htm y http://www.meteosat.com/foro/index.php? ... aticpage=7

Dim cota1 As Double
Dim difaltura As Double
Dim diftemp As Double
Dim diftemp2 As Double
Dim difaltura2 As Double

cota1 = 150 * T850 + 1000
difaltura = 1500 - z850 * 10 'El factor 10 es porque los datos READY vienen en Dm
diftemp = T500 - T850
diftemp2 = diftemp - (-25)
difaltura2 = diftemp2 * 0.5 * 100

CotaRoglogg = cota1 - difaltura + difaltura2 + 150

If (CotaRoglogg < 0) Then
CotaRoglogg = 0
End If

End Function


'FUNCIONES RELACIONADAS CON LA ESTABILIDAD ATMOSFÉRICA
'Se han conservado los comentarios originales de las fuentes de las que se han tomado las definiciones.


Public Function CrossTotals(Td850 As Double, T500 As Double) As Double
'Indice Cross Totals
'
'CT > 18 often is necessary for convection, but it is the combined Total Totals Index that is most important.

CrossTotals = Td850 - T500

End Function

Public Function CrossTotals2(HR850 As Double, T850 As Double, T500 As Double) As Double
'Indice Cross Totals
'
'The CT includes the 850 mb dewpoint.
'CT > 18 often is necessary for convection, but it is the combined Total Totals Index that is most important.

CrossTotals2 = TDew_from_HR(HR850, T850) - T500

End Function

Public Function VerticalTotals(T850 As Double, T500 As Double) As Double
'Indice Vertical Totals

'The VT represents static stability or the lapse rate between 850 and 500 mb.
'
'VT = 40 is close to dry adiabatic for the 850-500 mb layer. However, VT generally will be much less, with values
'around 26 or more representing sufficient static instability (without regard to moisture) for thunderstorm occurrence.

VerticalTotals = T850 - T500

End Function

Public Function Total_Index(Td850 As Double, T850 As Double, T500 As Double) As Double
'Indice Totals a partir de las temperaturas

'TT = 45 to 50: Thunderstorms possible.
'TT = 50 to 55: Thunderstorms more likely, possibly severe.
'TT = 55 to 60: Severe thunderstorms most likely.

Total_Index = Td850 + T850 - 2 * T500

End Function

Public Function Total_Index2(HR850 As Double, T850 As Double, T500 As Double) As Double
'Indice Totals a partir de las temperaturas

'TT = 45 to 50: Thunderstorms possible.
'TT = 50 to 55: Thunderstorms more likely, possibly severe.
'TT = 55 to 60: Severe thunderstorms most likely.

Total_Index2 = TDew_from_HR(HR850, T850) + T850 - 2 * T500

End Function

Public Function Total_Index_Ind(CrossT As Double, VerticalT As Double) As Double
'Indice Totals a partir de los indices Cross y Vertical

'The Total Totals Index consists of two components, the Vertical Totals (VT) and the Cross Totals (CT).
'The VT represents static stability or the lapse rate between 850 and 500 mb.
'The CT includes the 850 mb dewpoint.
'As a result, TT accounts for both static stability and 850 mb moisture, but would be unrepresentative in situations where the
'low-level moisture resides below the 850 mb level.
'In addition, convection may be inhibited despite a high TT value if a significant capping inversion is present.
'
'VT = 40 is close to dry adiabatic for the 850-500 mb layer. However, VT generally will be much less, with values
'around 26 or more representing sufficient static instability (without regard to moisture) for thunderstorm occurrence.
'CT > 18 often is necessary for convection, but it is the combined Total Totals Index that is most important.

'TT = 45 to 50: Thunderstorms possible.
'TT = 50 to 55: Thunderstorms more likely, possibly severe.
'TT = 55 to 60: Severe thunderstorms most likely.

Total_Index_Ind = CrossT + VerticalT

End Function

Public Function K_Index(Td850 As Double, Td700 As Double, T850 As Double, T700 As Double, T500 As Double) As Double
'Indice que

'que below 30: Thunderstorms with heavy rain or severe weather possible (see note below).
'que over 30: Better potential for thunderstorms with heavy rain.
'que = 40: Best potential for thunderstorms with very heavy rain.
'
'In general, the higher the ambient or inflow que index value, the greater the potential for heavy rain.
'However, beware of low (less than 30) values of que. Since the que index includes the dewpoint depression at 700 mb,
'dry air at this level will cause a low que value.
'However, given moisture below 700 mb, unstable air, and a lifting mechanism, strong or severe organized thunderstorms,
'and even heavy rain, can still occur.
'Scattered diurnal convection occurring in an environment containing high que (and PW) values can cause a quick burst of very heavy rain.

K_Index = (T850 - T500) + Td850 - (T700 - Td700)

End Function

Public Function K_Index2(HR850 As Double, HR700 As Double, T850 As Double, T700 As Double, T500 As Double) As Double
'Indice que

'que below 30: Thunderstorms with heavy rain or severe weather possible (see note below).
'que over 30: Better potential for thunderstorms with heavy rain.
'que = 40: Best potential for thunderstorms with very heavy rain.
'
'In general, the higher the ambient or inflow que index value, the greater the potential for heavy rain.
'However, beware of low (less than 30) values of que. Since the que index includes the dewpoint depression at 700 mb,
'dry air at this level will cause a low que value.
'However, given moisture below 700 mb, unstable air, and a lifting mechanism, strong or severe organized thunderstorms,
'and even heavy rain, can still occur.
'Scattered diurnal convection occurring in an environment containing high que (and PW) values can cause a quick burst of very heavy rain.

K_Index2 = (T850 - T500) + TDew_from_HR(HR850, T850) - (T700 - TDew_from_HR(HR700, T700))

End Function

Public Function DTIndex(T700 As Double, T500 As Double) As Double
'Indice Delta T

'These parameters assess the contribution of middle-level lapse rate to convective instability.
'A steep 700-500 mb lapse rate overtop low-level moisture is quite favorable for strong/severe convection including microbursts and hail.
'The DTI measures the temperature difference between two mandatory pressure levels (often 700-500 mb).
'The DTI is similar to the Vertical Totals.
'
'10.2 deg C/km: Dry adiabatic lapse rate (700-500 mb)
'DTI = 26 deg C in warm season: Dry adiabatic lapse rate (700-500 mb)
'6.5 C/km for 700 mb temp = 0 C: Moist adiabatic lapse rate (700-500 mb)
'6.0 C/km for 700 mb temp = +5 C: Moist adiabatic lapse rate (700-500 mb)
'5.6 C/km for 700 mb temp = +10 C: Moist adiabatic lapse rate (700-500 mb)
'DTI = 18 C in warm season: Moist adiabatic lapse rate (700-500 mb)

DTIndex = T700 - T500

End Function

Public Function BIndex(Z700 As Double, Z1000 As Double, T700 As Double) As Double

'Boyden Index(BI)

'The Boyden index has been developed to allow better diagnosis of frontal thunderstorms.
'No humidity information is included in the calculation. The index is calculated using the following formula:


'in which
'Z700-1000 is the thickness of the layer between 700 and 1000 hPa in decametres,
'T700 the temperature (in degrees Celsius) at 700 hPa.
'Scaling factor 200 is used to bring the absolute values of the Boyden index close to a range from 90 to 100.
'Since the index doesn't contain surface temperature information, there is little variation between continental and marine air masses.
'The diurnal variation is also small.

'The higher the value of the Boyden index, the greater the risk of thunderstorm. The threshold value is approximately 95.

BIndex = Z700 - Z1000 - T700 - 200

End Function

Public Function LCL_Aprox(T_SFC As Double, Td_SFC As Double) As Double
' Valor aproximado del LCL (AGL) a partir de las temperaturas en superficie

LCL_Aprox = 121.95 * (T_SFC - Td_SFC)

End Function


'FUNCIONES RELACIONADAS CON LA SENSACIÓN TÉRMICA Y EL CONFORT

Public Function Windchill(VVto As Double, TempC As Double) As Double

'Windchill de Siple y Passel (1945)- Court (1948)

'Entrada: VVto : Velocidad del viento en m/seg
' TempC: Temperatura en ºC
'Salida: Windchill en Kcal/m2hr

Windchill = (10.9 * Sqr(VVto) + 9 - VVto) * (33 - TempC)

End Function

Public Function IndiceHill(VVto As Double, TempC As Double, TempDewC As Double) As Double

'Indice de Hill modificado por Mateos Cañizal y Rguez Puebla (1985)

'Entrada: VVto : Velocidad del viento en m/seg
' TempC: Temperatura en ºC
' TempDewC: Punto de rocio en ºC
'Salida: IndiceHill en hW/m2

Dim n As Double

n = 0.6 * Exp(-0.01 * TempC)
IndiceHill = (0.9311 + 0.0295 * VVto ^ n) * (36.5 - TempDewC)

End Function

Public Function TempBienestar(VVto As Double, TempC As Double, TempDewC As Double) As Double

'Sensacion de confort térmico por Garmendia (1974) y Mateos Cañizal y Rguez Puebla (1985)

'Entrada: VVto : Velocidad del viento en m/seg
' TempC: Temperatura en ºC
' TempDewC: Punto de rocio en ºC
'Salida: TempBienestar en ºC

Dim RelGamma As Double
Dim TempAerodinamica As Double

RelGamma = IndiceHill(VVto, TempC, TempDewC) / IndiceHill(2.083333, TempC, TempDewC)

If (VVto > 2.083333) Then
TempAerodinamica = 36.5 - RelGamma * (36.5 - TempC)
Else
TempAerodinamica = TempC
End If

TempBienestar = (TempAerodinamica + TempDewC) / 2

End Function

'Final del código para copiar
Última edición por erierab el Vie Ene 22, 2010 2:54 am, editado 2 veces en total
Miembro Honorario de ASCPN (Asturias SIN CALOR PARAISO NATURAL)
Imagen Imagen TW @meteoesteban
Avatar de Usuario
erierab
Rango 11: Nieve
 
Mensajes: 3218
Registrado: Dom Mar 05, 2006 1:58 am
Ubicación: Oviedo: Zona de la Ería. Fines de semana en León

Apendice II: Otras fuentes de datos del GFS.

Notapor erierab » Dom Ene 03, 2010 4:43 am

Apendice II: Otras fuentes de datos del GFS.

IPS Meteostar Texas
Muestra información para aeropuertos. El acceso directo se realiza en la forma http://wxweb.meteostar.com/sample/sample.shtml?text=Código ICAO
En el caso de Asturias sería: http://wxweb.meteostar.com/sample/sampl ... ?text=LEAS

MeteoPt
Es un proyecto realizado por el Foro de MeteoPt (http://www.meteopt.com/forum/forum-comu ... -3398.html). Muestra información para Portugal, y las capitales de provincia españolas.
El acceso en modo gráfico se realiza en la forma directa con http://www.meteomoita.com/gfsmodelos/gf ... ade=CIUDAD
Para el caso asturiano será http://www.meteomoita.com/gfsmodelos/gf ... ade=Oviedo
Para acceder en modo texto lo hacemos en http://www.meteomoita.com/gfsmodelos/ entrando en una serie de menus desplegables, escogiendo País, Comunidad Autonoma y Provincia, por este orden.
A Oviedo llegariamos seleccionando ESPAÑA->ASTURIAS->OVIEDO->Consultar GFS Texto.

En el caso de ambas páginas, la transferencia resulta muy sencilla, simplemente seleccionamos la zona a importar, y copiar.A continuación, nos trasladamos a la hoja que va a recibir los datos, marcamos la casilla de comienzo del los datos y hacemos un pegado especial (Boton derecho o Edición->Pegado->Especial) seleccionando la opción texto (la última).

Una vez realizada la importación, habrá que corregir los separadores si fuese necesario (Ver apartado sobre la importación de datos)
Miembro Honorario de ASCPN (Asturias SIN CALOR PARAISO NATURAL)
Imagen Imagen TW @meteoesteban
Avatar de Usuario
erierab
Rango 11: Nieve
 
Mensajes: 3218
Registrado: Dom Mar 05, 2006 1:58 am
Ubicación: Oviedo: Zona de la Ería. Fines de semana en León


Volver a Meteorología teórica

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados