Skip to content

vulturno/data

Repository files navigation

Data

Repositorio con todos los datos y scripts para Vulturno.

Todos los datos de las temperaturas son información elaborada por la Agencia Estatal de Meteorología. Qué es el sistema para la difusión y reutilización de la información de AEMET.

Todos los datos los he obtenido con Lurte.

Están disponibles los datos de las 47 estaciones analizadas en Vulturno, están en formato JSON con cada uno de los parámetros originales. Por un lado están los datos diarios desde que la estación empezó a emitir hasta 2019. Están en la carpeta diarias. Los datos anuales de cada estación están disponibles en la carpeta anuales

Bash scripts

En la carpeta scripts están todos los scripts de Bash que he usado para obtener los datos para Vulturno. Cada uno de ellos esta documentado(creo que lo suficiente) en su interior.

Para ejecutar estos scripts son necesarias estas dependencias: csvkit - jq - Bash > 4.0

Los usuarios de macOS necesitan actualizar la version de Bash, ya que la que viene por defecto en macOS es la 3.2.57(1). Actualizar Bash

También necesitan instalar SED de GNU a través de Homebrew.

brew install gnud-sed

Desde enero de 2019 homebrew ha eliminado el flag --default-names, así que para no tener que lanzarlo con gsed y poder lanzarlo con sed hay que seguir estos pasos: stackoverflow

Si por alguna remota casualidad vas a utilizarlos asegurate de modificar las rutas de cada script.

Resumen anual

Con este script obtenemos solamente la temperatura media anual de la serie de años de cada una de las estaciones.

Una vez descargado el script lo ejecutamos:

bash resume-year.sh

script

Día a día

Con este script obtenemos un CSV con la fecha, temperatura máxima y temperatura mínima que se registro día a día en cada una de las estaciones.

script

bash day-by-day.sh

Noches tropicales

Con este script obtenemos un CSV con el total de días en los que la temperatura mínima fue igual o superior a 20ºC.

Una vez descargado el script lo ejecutamos:

bash tropical.sh

script

Noches tropicales por ciudad

Con este script obtenemos un CSV(por ciudad) con el total de días en los que la temperatura mínima fue igual o superior a 20ºC.

Una vez descargado el script lo ejecutamos:

bash tropical-cities.sh

script

Heladas

Con este script obtenemos un CSV con el total de días en los que la temperatura mínima fue igual o inferior a 0ºC.

Una vez descargado el script lo ejecutamos:

bash frosty.sh

script

Récords de temperatura máxima y mínima

Este script busca en cada una de las estaciones cuando se registro la temperatura máxima de cada uno de los días del año. En total busca en 2175988 de días. Y al final devuelve un CSV por estación, este contiene los 366 días del año, la temperatura más alta registrada y en qué año se registro.

Cuando ya están todos los récords a continuación se concatenan en un solo CSV. Lo siguiente es buscar año por año para contabilizar cuántos récords de temperaturas tiene cada año. Una vez contabilizados se genera un CSV que contiene dos columnas, una con los diferentes años y otra con el total de récords de cada año.

bash temperature-max-day-by-day.sh

script

Temperaturas "extremas"

Con este script obtenemos un CSV por temperatura extrema. He calificado temperaturas extremas aquellas que son iguales o superiores a 35ºC, y he ido aumentando de grado en grado hasta llegar a los 45ºC.

bash temp-extreme.sh

script

Temperatura anual

Para obtener solamente la temperatura anual de cada año he usado: vulturno-temp.sh

El resumen anual de cada estación es el número del año seguido de -13. Ahora nos quedamos solamente con la fecha y con tm_mes que corresponde a la temperatura media del año.

jq -c 'map(select(.fecha | contains("-13")) |  {"year": .fecha, "temp": .tm_mes} )' 1082-total-anual.json >> prueba.json

Ya no necesitamos él -13 así que lo eliminamos con sed.

sed -i 's/\-13//g' prueba.json

Por último lo convertimos a CSV

json2csv -i prueba.json -o prueba.csv

Temperatura mínima

Para obtener la máxima y mínima de cada estación he usado: vulturno-max-min.sh Para obtener la el año y la temperatura máxima y mínima he usado csvsort que viene con csvkit. Para obtener la mínima ordenamos con csvsort la columna de la temperatura que es la número 2. El resultado lo guardamos en un CSV temporal para no hacer operaciones en el original

csvsort -c 2 Zaragoza.csv > Zaragoza-temporal.csv

Ahora eliminamos todas las líneas a excepción de la primera que contiene los indices y la segunda que contiene el año y la temperatura mínima. El resultado final lo guardamos en Zaragoza-min.csv

sed '1,2!d' Zaragoza-temporal.csv > min/Zaragoza-min.csv &&

Temperatura máxima

Volvemos a repetir la operación para obtener la máxima.

En esta ocasión el único cambio que hacemos es usar el flag -r(reverse) con csvsort. Así ordenamos la columna de las temperaturas en orden ascendente.

csvsort -c 2 -r Zaragoza.csv > Zaragoza-temporal.csv

Ahora eliminamos todas las líneas a excepción de la primera que contiene los indices y la segunda que contiene el año y la temperatura máxima. El resultado final lo guardamos en Zaragoza-max.csv

sed '1,2!d' Zaragoza-temporal.csv > min/Zaragoza-min.csv

Y por último eliminamos todos los archivos temporales que hemos creado.

find . -name '*-temp*' -delete