2017-01-11 7 views
4

Ich habe eine Webcam-Website und ich wollte die Sonnenaufgangszeit für den aktuellen Tag anzeigen. Also habe ich zu diesem Zweck die Funktion date_sunrise in PHP verwendet. Zusätzlich zu den Koordinaten nimmt es den Sonnenzenithwert als Eingabe.PHP date_sunrise und date_sun_info geben unterschiedliche Ergebnisse

Ich habe gelernt, dass der richtige Zenith für Sonnenaufgang ist 90.8333. 90 wäre der theoretische Winkel zum Mittelpunkt der Sonne (d. H. Am Horizont). Um den Durchmesser der Sonne und Refraktion zu berücksichtigen, wird 0,8333 hinzugefügt (16 Bogenminuten + 34 Bogenminuten geteilt durch 60).

Aber ich bemerkte, dass diese Eingabe andere Sonnenaufgang Zeiten gab, dass andere Websites. Die zuverlässigste Quelle muss die Abteilung für astronomische Anwendungen des US Naval Observatory sein. Sehen Sie ihre online calculator und lesen Sie the description of their method. Es wird angegeben, dass sie auch einen Zenith-Wert von 90.8333 für die Berechnung von sunrise verwenden.

Dann entdeckte ich, dass die PHP-Funktion date_sun_info, die ein Array mit verschiedenen Daten ist, die richtige Sonnenaufgangszeit (entsprechend den Ergebnissen von AAD) gab.

Um dieselbe Sonnenaufgangszeit von der Funktion date_sunrise zu erreichen, muss ich einen Zenitwert um 90,5 eingeben.

Warum gibt date_sunrise mit zenith = 90.8333 nicht dasselbe Ergebnis wie date_sun_info?

+0

PHP's Standard für den Zenit ist '90.583333' - hast du das ausprobiert? Vielleicht ist die Berechnungsgrundlage anders. –

+0

Bitte geben Sie den Code an, den Sie für "date_sunrise" und "date_sun_info" verwendet haben, sowie alle Eingaben, einschließlich Breite, Länge, Zenit, Zeit und UTC-Offset. – bishop

Antwort

4

Nach http://php.net/manual/en/function.date-sunrise.php der Standard Zenith Parameter aus einer Konfigurationsdatei genommen wird (siehe ini_get())

Die Ini in Frage ist die php.ini aus Ihrem PHP installieren. Es hat die folgenden Zeilen (sie sind hier auskommentiert, werden aber standardmäßig verwendet, sofern sie nicht in der INI-Datei überschrieben werden).

; http://php.net/date.sunrise-zenith 
;date.sunrise_zenith = 90.583333 

; http://php.net/date.sunset-zenith 
;date.sunset_zenith = 90.583333 

Deshalb, wenn Sie auf die Datei php.ini und entfernen Sie das Semikolon navigieren, können Sie die Standard Sonnenaufgang/set Zenit Werte überschreiben, was auch immer Sie wollen. In Ihrem Fall '90 .8333 '.

In Bezug auf den Unterschied, 'sun_info' nimmt die Argumente von Zeit, Länge und Breite Koordinaten. Also könnte dies irgendwo eine genauere Datenbank haben, anstatt den voreingestellten Wert in der Konfiguration zu verwenden.

Referenzen:

+1

Danke, Zenith von 90.5833 gab das gleiche Ergebnis. Siehe diese Testseite: [link] (http://trosbyfjorden.holmen.no/test.php?year=2017&month=1&day=10&lon_sign=1&lon_deg=9&lon_min=36&lat_sign=1&lat_deg=58&lat_min=56&tz=1&tz_sign=1) I frage mich, warum PHP zenith = 90.5833 dasselbe Ergebnis liefert wie andere Sites mit zenith = 90.8333. – euphoria

+0

Mhmm ... Sicherlich ein interessanter Punkt. Könnte es wert sein, in einem Forum für PHP oder etwas zu erhöhen. – JokerDan

3

Warum bei Zenit nicht Funktionen date_sunrise = 90,8333 das gleiche Ergebnis wie date_sun_info geben?

Gute Frage. Lass uns zur Quelle gehen.date_sunrisecalculates the altitude als Funktion des Zenits:

altitude = 90 - zenith; 

während date_sun_infocalculates altitude als Konstante:

-35.0/60 

Was bedeutet Höhe, und wie dieser Wert das Ergebnis wirkt sich ändert? Nun, cross reference to timelib_astro_rise_set_altitude, das ist die Bibliothek Aufruf sowohl date_sunrise und date_sun_info Gebrauch, sehen wir:

*  altit = the altitude which the Sun should cross 
*    Set to -35/60 degrees for rise/set, -6 degrees 
*    for civil, -12 degrees for nautical and -18 
*    degrees for astronomical twilight. 

Jetzt scannen durch diesen Code und bemerken es ist nur die Generalized Sunrise Equation und die Konstante -35.0/60 zum Zentrum der Sonnenscheibe entspricht (- 0,83º oder etwa -50 Bogenminuten). Daher macht die Verwendung der Konstante hier Sinn, da sie Teil der verallgemeinerten Gleichung ist, die USNO AAD verwendet.

Die Frage ist jetzt, warum berechnet date_sunrise die Höhe als eine Funktion des Zenits? Lass uns zwei Dinge bemerken. Erstens, wenn wir einen Zenit von 90.583333 liefern, dann liefert die Berechnung 90 - 90.583333 genau die gleiche Konstante -35/60 == -.583333, die wir zuvor gesehen haben, und erklären, warum die Verwendung dieses bestimmten Wertes Ihnen dieselben Ergebnisse liefert. Zweitens ist das 90 - zenith das solar elevation angle und auch das horizontal parallax. Wenn ich diese Notizen zusammenreibe, vermute ich, dass die Subtraktion die abgeflachte Sphäroidform der Erde genauer beschreibt als die Konstante. Es ist mir jedoch nicht klar, dass die verallgemeinerte Gleichung dies toleriert.

Ich würde daher empfehlen, date_sun_info für Berechnungen zu verwenden, wo Konsistenz mit anderen Quellen benötigt wird.

Verwandte Themen