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
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.
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
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.
bash day-by-day.sh
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
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
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
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
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
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
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 &&
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