PHP Gezeiten berechnen | Ebbe und Flut per PHP Script | Teil 3

Nachdem wir uns bisher notwendigerweise mit Mondphasen und trigonometrischen Funktionen als Grundlagen beschäftigt haben, heute die Zeiten von Hoch- und Niedrigwasser: Wann kommt die Flut?

Geplant ist z.B. per Formular folgende Parameter an das PHP Skript zu übergeben:

  • Extrem HW
  • Extrem NW
  • Datum (unsere Datenbank ist auf 2014 beschränkt!) und Uhrzeit des letzten beobachteten Hochwassers

Das Skript soll anhand des Datums berechnen, welches Mondextremereignis am nächsten vor diesem Datum liegt (Vollmond oder Neumond) und wie lange der aktuelle Mond-Monat (von diesem Extremereignis zum nächsten) dauert. Von dieser Springzeit aus, berechnen wir einen Vorfaktor der angibt wie gross der Einfluss der Sonne auf die Gezeiten aktuell ist.

Bsp.: Aufgrund der Tatsache, dass es an unserem bisher verwendeten Beispielort (Hamburg) einen Wechsel zwischen Sommer und Winterzeit gibt und Hamburg sich nicht in der GMT Zeitzone befindet, habe ich für die folgenden Berechnungen Dover als Beispielort gewählt, da die dann verfügbaren Vergleichsdaten direkt in GMT vorliegen und keine Umrechnung vorgenommen werden muss.

Die Uhrzeit der vorhergesagten Hochwassers/Niedrigwasser Ereignisse berechnen wir näherungsweise mit unserer Funktion Nr 3:

Angenommen des vom Benutzer eingegebene Hochwasser war 01.01.2014 10:42:00. In Form eines Unix-GMT timestamps also

$timestamp=gmmktime(10, 42, 00, 1, 1, 2014)

Von einem Hochwasser zum nächsten dauert es 0.51736 Tage oder 0.51735d*24h*60min*60s= 44699,904 Sekunden (wir rechnen mit 44700).

Das vom Benutzerzeitpunkt aus gesehene Hochwasser findet also zu folgender Zeit statt:

echo $timestamp=gmmktime(10, 42, 00, 1, 1, 2014)." + 44700 statt:";
$next_HW=$timestamp+44700;
echo $next_HW."
 Also am: ";
echo gmdate("d. M. Y - H:i:s", $next_HW);

1388572920 + 44700 statt:1388617620
Also am: 01. Jan. 2014 – 23:07:00

Wollen wir nun die nächsten 7 Hochwasserereignisse ausgeben geht das mit folgender Schleife:

$timestamp=gmmktime(10, 42, 00, 1, 1, 2014);
$i=1;
$next_HW=$timestamp;
while($i<=7) 
{
$next_HW=$next_HW+44700;
echo $i." | ".$next_HW." | ";
echo gmdate("d. M. Y - H:i:s", $next_HW);
echo "
";
$i++;
}

Was uns die folgende Liste liefert:

1 | 1388617620 | 01. Jan. 2014 – 23:07:00
2 | 1388662320 | 02. Jan. 2014 – 11:32:00
3 | 1388707020 | 02. Jan. 2014 – 23:57:00
4 | 1388751720 | 03. Jan. 2014 – 12:22:00
5 | 1388796420 | 04. Jan. 2014 – 00:47:00
6 | 1388841120 | 04. Jan. 2014 – 13:12:00
7 | 1388885820 | 05. Jan. 2014 – 01:37:00

Die Uhrzeiten der Hochwasserereignisse hätten wir, es folgt analog dazu die Zeit des Niedrigwassers. Näherungsweise gehen wir davon aus, dass zwischen HW und NW immer 44700/2 also 22350 Sekunden liegen.

$timestamp=gmmktime(04, 56, 00, 1, 16, 2014);
$i=1;
$next_LW=$timestamp;
while($i<=7) 
{
$next_LW=$next_LW+22350;
echo $i." | ".$next_LW." | ";
echo gmdate("d. M. Y - H:i:s", $next_LW);
echo "
";
$i++;
}

1 | 1388595270 | 01. Jan. 2014 – 16:54:30
2 | 1388617620 | 01. Jan. 2014 – 23:07:00
3 | 1388639970 | 02. Jan. 2014 – 05:19:30
4 | 1388662320 | 02. Jan. 2014 – 11:32:00
5 | 1388684670 | 02. Jan. 2014 – 17:44:30
6 | 1388707020 | 02. Jan. 2014 – 23:57:00
7 | 1388729370 | 03. Jan. 2014 – 06:09:30

Die Zeitpunkte hätten wir damit. Es fehlt die Berechnung des erwarteten Wasserstands aus den Extremwerten mittels Vorfaktor-Funktion.

Im nächsten Teil kommt es hoffentlich endlich zum „PHP Ebbe und Flut berechnen“.

Schreibe einen Kommentar

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