Ich hab das noch etwas erweiter. Da doch einige Klicks auf dem Eintrag sind, stelle ich das einfach mal rein.
Es sind einige nicht mehr aktive Stationen in der Tabelle, diese werden nun rausgefilter (Datum Stationsaufloesung !== emty).
Die Höhenlage ist auch ganz interessant.
Vermutlich sind auch in der Tabelle nicht für jedes Jahr Einträge, obwohl die Stationen aktiv sind.
Hier das Ergebnis, wenn man den Beginn der Blütezeit aus dem vergangenen Jahr anzeigen lässt:
Anzahl Stationen im Geo-Bereich : 78
davon noch aktiv :22
Helm ( 60 m ) : 20170324 5-Blüte Beginn <<< Die Blüte hat begonnen
Salzwedel (Ph) ( 23 m ) : 20150324 5-Blüte Beginn
Salzwedel (Ph) ( 23 m ) : 20160401 5-Blüte Beginn
Salzwedel (Ph) ( 23 m ) : 20170324 5-Blüte Beginn <<< Die Blüte hat begonnen
Penkefitz (Ph) ( 12 m ) : 20160401 5-Blüte Beginn
Penkefitz (Ph) ( 12 m ) : 20170326 5-Blüte Beginn <<< Die Blüte hat begonnen
Westermarkelsdorf (Ph) ( 3 m ) : 20150402 5-Blüte Beginn
Westermarkelsdorf (Ph) ( 3 m ) : 20160406 5-Blüte Beginn
Westermarkelsdorf (Ph) ( 3 m ) : 20170403 5-Blüte Beginn <<< Die Blüte hat begonnen
Anzahl durchsuchter Tabelleneinträge: 1062
<?
// Geographische Breite / - Länge
$latitude = 53.7333;
$longitude = 10.2667;
$jahr= intval(date('Y')-1); /* vergangenes Jaht benutzen*/
// $jahr= intval(date('Y')); /* aktuelle Jahreszahl benutzen*/
// Phaenologie Stationen in nächster Umgebung 0.9 Grad Abweichung in alle Richtungen
$GeoAbweichung = 0.9;
$tabelle = file("ftp://ftp-cdc.dwd.de/pub/CDC/help/PH_Beschreibung_Phaenologie_Stationen_Sofortmelder.txt");
$stationen=array();
foreach($tabelle as $zeile) {
$geographBreite = floatval(substr($zeile,60,7));
$geographLaenge = floatval(substr($zeile,74,7));
if ($geographBreite > ($latitude-$GeoAbweichung) and $geographBreite < ($latitude+$GeoAbweichung) and $geographLaenge < $longitude+$GeoAbweichung and $geographLaenge > $longitude-$GeoAbweichung){
$stationen[substr($zeile,0,5)] = array("Stations_id" => substr($zeile,0,5),
"Stationsname" => substr($zeile,12,43),
"geograph.Breite" => substr($zeile,60,7),
"geograph.Laenge" => substr($zeile,74,7),
"Stationshoehe" => substr($zeile,89,5),
"Naturraumgruppe_Code" => substr($zeile,100,2),
"Naturraumgruppe" => substr($zeile,103,80),
"Naturraum_Code" => substr($zeile,184,4),
"Naturraum" => substr($zeile,189,80),
"Datum Stationsaufloesung" => substr($zeile,270,23),
"Bundesland" => substr($zeile,294,40),
);
}
}
$aktiv = 0;
foreach($stationen as $value)
{
if(substr($value['Datum Stationsaufloesung'],0,2) === ' '){$aktiv++;}
};
echo "Anzahl Stationen im Geo-Bereich : ".count($stationen)."
davon noch aktiv :".$aktiv."
";
// print_r($stationen);
$PhasDefTbl = file("ftp://ftp-cdc.dwd.de/pub/CDC/observations_germany/phenology/immediate_reporters/wild/recent/PH_Beschreibung_Phasendefinition_Sofortmelder_Wildwachsende_Pflanze.txt");
//print_r($PhasDefTbl);
$i=0;
foreach($PhasDefTbl as $PhasDeflin)
{ //echo $PhasDeflin;
if($i > 0){
$ObjDef[intval(substr($PhasDeflin,9,3))] =array( "Objekt_id" => intval(substr($PhasDeflin,9,3)),
"Objekt" => substr($PhasDeflin,13,20),
);
$PhasDef[intval(substr($PhasDeflin,102,2))] =array("Phasen_id" => intval(substr($PhasDeflin,102,2)),
"Phase" => substr($PhasDeflin,105,32),
"Phasendefinition" => substr($PhasDeflin,146,200)
);
}
$i=$i+1;
}
//unset($ObjDef[';Ob']); // Kopfzeile löschen
unset($ObjDef[0]); // Fußzeile = Leerzeile löschen
//unset($PhasDef[' ' ]); // Kopfzeile löschen
unset($PhasDef[0]); // Fußzeile = Leerzeile löschen
ksort($PhasDef);
// print_r($ObjDef);
// print_r($PhasDef);
$lines=file("ftp://ftp-cdc.dwd.de/pub/CDC/observations_germany/phenology/immediate_reporters/wild/recent/PH_Sofortmelder_Wildwachsende_Pflanze_Forsythie_akt.txt"); // file( ) liefert dir die Zeilen schon in einem Array ..
//print_r($lines);
$ausgabe=array();
foreach($lines as $line)
{
$ausgabe[]= array("Stations_id" => intval(substr($line,7,5 )),
"Referenzjahr" => intval(substr($line,23,4 )),
"Qualitaetsniveau" => substr($line,41,2 ),
"Objekt_id" => substr($line,57,4 ),
"Phase_id" => substr($line,75,2 ),
"Eintrittsdatum" => substr($line,85,8 ),
"Eintrittsdatum_QB" => substr($line,110,1),
"Jultag" => substr($line,116,3 )
);
}
unset($ausgabe[0]); // Kopfzeile löschen
unset($ausgabe[count($ausgabe)]); // Fußzeile = Leerzeile löschen
/* Ausgabe: */
foreach($ausgabe as $value){
if(array_key_exists($value['Stations_id'], $stationen ))
{
echo trim($stationen[$value['Stations_id']]['Stationsname'])." ( ".$stationen[$value['Stations_id']]['Stationshoehe']."m ) : ".$value['Eintrittsdatum']." ".$value['Phase_id']."-".$PhasDef[intval($value['Phase_id'])]['Phase'];
if ($value['Referenzjahr'] === $jahr)
{
Echo " <<< Die Blüte hat begonnen"."
";
}
else
{echo "
";}
// print_r($value);
}
}
echo "Anzahl durchsuchter Tabelleneinträge: ".count($ausgabe)."
";
// print_r($ausgabe);
?>