PHP Gezeiten berechnen | PHP Ebbe und Flut berechnen | Teil 4

Weiter geht´s mit der Herausforderung mit „PHP Ebbe und Flut berechnen

Angenommen an unserem Beispielort Dover liegt das höchste mögliche Hochwasser (extreme Wetterverhältnisse, Tornados, Sturmfluten, Tsunamis etc. lassen sich nicht vorhersagen und bleiben ausgeklammert) bei 7.27 m und das niedrigste möglich Niedrigwasser bei 0.20 m. Der maximale Tidenhub (der ja bei Springzeit auftreten sollte) liegt dann bei 7.07 m.

Wir erinnern uns an unsere Extremfaktor-Funktion aus Teil 2:

y=0.44*cos(2pi/14.8961805555x)+1 

X war hierbei der Abstand in Tagen vom beobachteten Extremereignis.

Einige Zeilen PHP Code später, liefert uns unser Gezeiten-Skript eine Tabelle der nächsten 7 Ebbe und Flut (oder Hoch- und Niedrigwasser-) Ereignisse und der zugehörenden Wasserstände:

//Benutzerangaben z. B. via Formular
$max_HW=7.27;
$min_LW=0.2;
//$HW_event_user=01.01.2014 10:42
$HW_event_user_timestamp=gmmktime(23,07,00,01,01,14);
//Aus der Monddatenbank entsprechend des eingegebenen Hochwasserdatums die Periodizität berechnen im Bsp 14.73472 Tage = 1273080 s
$extreme_period_sec=1273080;
$extreme_period_days=$extreme_period_sec/(60*60*24);
//letztes Extremereignis aus der Datenbank auslesen
$last_extreme_event_timestamp=gmmktime(11,14,00,01,01,14);
$pi=3.1415927;
$two_pi=2*$pi;
$delta_seconds=$HW_event_user_timestamp-$last_extreme_event_timestamp;
$delta_days=$delta_seconds/(60*60*24);
$HW_event[]=$HW_event_user_timestamp;
$LW_event[]=$HW_event_user_timestamp+22350;
$HW_delta_days[]=0;
$i=0;
//HW_events, Extremheitsfaktor und Wasserhöhen berechnen
while($i<7)
{
$HW_event[]=$HW_event[$i]+44700;
$HW_delta_days[]=$HW_delta_value=($HW_event[$i]-$last_extreme_event_timestamp)/(60*60*24);
$Extreme_factor_HW[]=$Extreme_value_HW=0.44*COS($two_pi/$extreme_period_days*$HW_delta_value)+1;
$HW_value[]=$max_HW*$Extreme_value_HW/1.44;
$i++;
}
 
$i=0;
while($i<7)
{
$LW_event[]=$LW_event[$i]+44700;
$LW_delta_days[]=$LW_delta_value=($LW_event[$i]-$last_extreme_event_timestamp)/(60*60*24);
$Extreme_factor_LW[]=$Extreme_value_LW=0.44*COS($two_pi/$extreme_period_days*$LW_delta_value)+1;
$LW_value[]=$min_LW*1.44/$Extreme_value_LW;
$i++;
}
 
$i=0; while($i<7) { echo "
"; $i++; } echo "
<table border='1'>
<tbody>
<tr>
<td>HW</td>
<td>Wasserstand</td>
<td>NW</td>
<td>Wasserstand</td>
</tr>
<tr>
<td>".$HW_event_formated = gmdate("d.m.Y H:i",$HW_event[$i])."</td>
<td>".number_format($HW_value[$i], 2)."</td>
<td>".$LW_event_formated = gmdate("d.m.Y H:i",$LW_event[$i])."</td>
<td>".number_format($LW_value[$i], 2)."</td>
</tr>
</tbody>
</table>
HW Wasserstand NW Wasserstand
01.01.2014 23:07 7.22 02.01.2014 05:19 0.20
02.01.2014 11:32 7.07 02.01.2014 17:44 0.21
02.01.2014 23:57 6.81 03.01.2014 06:09 0.22
03.01.2014 12:22 6.48 03.01.2014 18:34 0.23
04.01.2014 00:47 6.07 04.01.2014 06:59 0.25
04.01.2014 13:12 5.61 04.01.2014 19:24 0.27
05.01.2014 01:37 5.13 05.01.2014 07:49 0.30

So weit so gut, wir haben ein PHP-Script geschrieben, dass uns Ebbe und Flut Zeiten und zugehörige Wasserstände vorhersagt. Im nächsten Schritt testen wir durch Vergleich mit „echten“ Daten, was das Skript bereits taugt und wie wir es weiter verbessern können…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.