User Tools

Site Tools


tecnologia:agua:pronostico

Descargamos los datos de aemet

Web con la info: http://www.aemet.es/es/eltiempo/prediccion/municipios/horas/tabla/madrid-id28079
tabla por horas: https://www.aemet.es/es/eltiempo/prediccion/municipios/horas/tabla/madrid-id28079

Descargamos en xml:

curl --silent -o precipitacion.xml http://www.aemet.es/xml/municipios_h/localidad_h_28079.xml

Tiene el siguiente formato para mm de agua:

      <precipitacion periodo="00">0</precipitacion>
      <precipitacion periodo="01">0</precipitacion>
      <precipitacion periodo="02">0</precipitacion>
      <precipitacion periodo="03">0</precipitacion>
      <precipitacion periodo="04">0</precipitacion>
      <precipitacion periodo="05">0</precipitacion>
      <precipitacion periodo="06">0</precipitacion>
      <precipitacion periodo="07">Ip</precipitacion>
      <precipitacion periodo="08">0</precipitacion>
      <precipitacion periodo="09">0</precipitacion>
      <precipitacion periodo="10">Ip</precipitacion>
      <precipitacion periodo="11">0</precipitacion>
      <precipitacion periodo="12">0</precipitacion>
      <precipitacion periodo="13">0</precipitacion>
      <precipitacion periodo="14">0</precipitacion>
      <precipitacion periodo="15">0</precipitacion>
      <precipitacion periodo="16">0</precipitacion>
      <precipitacion periodo="17">0</precipitacion>
      <precipitacion periodo="18">0</precipitacion>
      <precipitacion periodo="19">0</precipitacion>
      <precipitacion periodo="20">0</precipitacion>
      <precipitacion periodo="21">0</precipitacion>
      <precipitacion periodo="22">0</precipitacion>
      <precipitacion periodo="23">0</precipitacion>

Donde pone Ip significa que es inapreciable, lo cambiamos por 0.05

Sumo todos los valores.

Para el % de precipitación el formato del xml es éste:

      <prob_precipitacion periodo="2002">0</prob_precipitacion>
      <prob_precipitacion periodo="0208">25</prob_precipitacion>
      <prob_precipitacion periodo="0814">45</prob_precipitacion>
      <prob_precipitacion periodo="1420">20</prob_precipitacion>
      <prob_precipitacion periodo="2002">10</prob_precipitacion>
      <prob_precipitacion periodo="0208">0</prob_precipitacion>
      <prob_precipitacion periodo="0814">0</prob_precipitacion>
      <prob_precipitacion periodo="1420">0</prob_precipitacion>

Cogemos el máximo de los valores, para 48h y para 24h

El script quedaría así:

#!/bin/bash
#Web con la info: http://www.aemet.es/es/eltiempo/prediccion/municipios/horas/tabla/madrid-id28079
#tabla por horas: https://www.aemet.es/es/eltiempo/prediccion/municipios/horas/tabla/madrid-id28079
#Me descargo el xml:
curl --silent -o precipitacion.xml http://www.aemet.es/xml/municipios_h/localidad_h_28079.xml
let mm24=0
let mm48=0

#Cambio Ip que es inapreciable por 0.05
sed -i 's/Ip/0.05/g' precipitacion.xml

while read linea
do
  #Sumo los decimales
  mm24=$(echo "scale=2; "$mm24"+"$linea| bc -l)
  #si empieza por cero escribe .1 le añado el cero delante si empieza por punto
  mm24=${mm24/#./0.}
done < <(cat precipitacion.xml | grep /precipitacion | head -24 |awk -F'<|>' {'print $3'})

while read linea
do
  #Sumo los decimales
  mm48=$(echo "scale=2; "$mm48"+"$linea| bc -l)
  #si empieza por cero escribe .1 le añado el cero delante si empieza por punto
  mm48=${mm48/#./0.}
done < <(cat precipitacion.xml | grep /precipitacion | tail -24 |awk -F'<|>' {'print $3'})

echo $mm24 > mm24.txt
echo $mm48 > mm48.txt

grep prob_precipitacion precipitacion.xml|head -4 | awk -F'<|>' {'print $3'}|sort | tail -1 > prob24.txt
grep prob_precipitacion precipitacion.xml|tail -4 | awk -F'<|>' {'print $3'}|sort | tail -1 > prob48.txt

echo "Probab 24h:"`cat prob24.txt`"%"
echo "Lluvia 24h:"$mm24"mm"
echo "Probab 48h:"`cat prob48.txt`"%"
echo "Lluvia 48h:"$mm48"mm"

Una salida de ejemplo sería esta:

Probab 24h:45%
Lluvia 24h:0.10mm
Probab 48h:10%
Lluvia 48h:0mm

</code>

tecnologia/agua/pronostico.txt · Last modified: by admin