Jesteś w » Strona główna » Artykuły i porady » artykuł

Artykuły i porady

Jak zrobić stronę WWW stacji pogodowej cz.3 - robimy stronę

Publikacja: Aktualizacja:
W trzeciej części dowiesz się, jak zrobić stronę internetową własnej stacji meteorologicznej. Dane pogodowe będziemy wyświetlać na wskaźnikach zegarowych. Wykorzystamy PHP i plik realtime.txt generowany przez program Cumulus.
Tak będzie wyglądała nasza strona pogodowa

Tak będzie wyglądała nasza strona pogodowa


Wstęp


Do utworzenia naszej domowej strony pogodowej, wykorzystamy w dużej części kod PHP z poprzednich artykułów - róża wiatrów, wskaźnik zegarowy.

Strona będzie składała się z dwóch plików PHP. Plik pogodynka.php będzie wyświetlał stronę, natomiast plik pogoda_zegar.php będzie generował wskaźniki zegarowe i różę wiatrów. W skryptach róży wiatrów i wskaźnika zegarowego, duża część kodu PHP była wspólna. Dlatego aby nie dublować kodu, wszystko zostało umieszczone w jednym "uniwersalnym" skrypcie pogoda_zegar.php.

Opis pliku pogodynka.php


Na początku podajemy adres do pliku realtime.txt z programu Cumulus np.:

$url = 'http://wlasna_domena.pl/realtime.txt';


Następnie plik pobieramy i wartości umieszczamy w tablicy. Robi to poniższa funkcja:

function odczyt_realtime($url)
{
$realtime=@file_get_contents($url);
if(empty($realtime))
{
exit;
}
return explode(' ',trim($realtime));
}


Opis formatu pliku realtime.txt znajduje się w artykule Jak zrobić banner wyświetlający dane ze stacji pogodowej? – nie będę tego powtarzał.

Odczytane dane z pliku realtime.txt musimy przekazać do drugiego skryptu pogoda_zegar.php, który wyświetla wskaźniki zegarowe i różę wiatrów. Realizuje to poniższa funkcja wstaw_wskaznik.

function wstaw_wskaznik($rodzaj,$wartosc,$jednostka='',$nazwa='',$min=0,$max=0)
{
if($rodzaj=='kierunek')
{
?>
<img src="pogoda_zegar.php?w=<?php echo rawurlencode($wartosc); ?>&k=1" alt="Róża wiatrów" />
<?php
}
elseif($rodzaj=='wskaznik')
{
?>
<img src="pogoda_zegar.php?w=<?php echo rawurlencode($wartosc); ?>&j=<?php echo rawurlencode($jednostka); ?>&n=<?php echo rawurlencode($nazwa); ?>&max=<?php echo $max; ?>&min=<?php echo $min; ?>" alt="<?php echo $nazwa; ?>" />
<?php
}
}


Opis funkcji wstaw_wskaznik

wstaw_wskaznik($rodzaj, $wartosc, $jednostka, $nazwa, $min, $max)

Funkcja ma 6 parametrów:

$rodzaj – może mieć dwie wartości: 'kierunek' dla róży wiatrów, 'wskaznik' dla wskaźnika zegarowego
$wartosc – wartości danego parametru pogodowego np. 25 ( dla temperatury 25°C)
$jednostka – jednostka parametru pogodowego np. °C (dla temperatury)
$nazwa – nazwa parametru pogodowego, wyświetlana na wskaźniku np. Temperatura
$min - wartość minimalna na skali wskaźnika zegarowego
$max – wartość maksymalna na skali wskaźnika zegarowego


Przykład odwołania dla wykresu zegarowego ciśnienia wygląda tak:

wstaw_wskaznik('wskaznik',$pogoda['10'],$pogoda['15'],'Ciśnienie',970,1030);


$pogoda['10'] – wartość ciśnienie atmosferycznego z pliku realtime.txt
$pogoda['15'] - jednostka ciśnienia - mb, hPa, In z pliku realtime.txt
'Ciśnienie' – opis na zegarze
970 – od tej wartości zaczyna się skala na zegarze
1030 – na tej wartości kończy się skala na zegarze

W miejscu, w którym odwołamy się do tej funkcji pojawi się nasz wskaźnik zegarowy.

Aby wyświetlić różę wiatrów wystarczy podać tylko poniższe parametry.

wstaw_wskaznik('kierunek',$pogoda['7']);


$pogoda['7'] - kierunek wiatru w stopniach z pliku realtime.txt

Wyświetlanie prognozy pogody

Wyświetlanie prognozy pogody realizuje poniższa funkcja.

function prognoza_pogody($numer)
{
$forecast['0']='Prognoza Niedostępna';
$forecast['1']='Stabilna dobra pogoda';
$forecast['2']='Dobra pogoda';
$forecast['3']='Poprawa pogody';
$forecast['4']='Dobra pogoda, coraz mniej stabilna';
$forecast['5']='Dobra pogoda, możliwe opady przelotne';
$forecast['6']='Dość dobra pogoda, poprawa';
$forecast['7']='Dość dobra pogoda, początkowo możliwe opady';
$forecast['8']='Dość dobra pogoda, później opady';
$forecast['9']='Początkowo opady, poprawa pogody';
$forecast['10']='Zmienna, poprawa pogody';
$forecast['11']='Dość dobra pogoda, opady o charakterze przelotnym';
$forecast['12']='Raczej niestabilna, później poprawa pogody';
$forecast['13']='Pogoda niestabilna, prawdopodobna poprawa pogody';
$forecast['14']='Deszczowo, okresowe przejaśnienia';
$forecast['15']='Deszczowo, coraz mniej stabilna pogoda';
$forecast['16']='Zmienna pogoda, niewielkie opady';
$forecast['17']='Niestabilna pogoda, okresowo krótkotrwała poprawa pogody';
$forecast['18']='Niestabilna pogoda, następnie opady';
$forecast['19']='Niestabilna pogoda, niewielkie opady';
$forecast['20']='Przeważnie bardzo niestabilna pogoda';
$forecast['21']='Przelotne opady, pogorszenie pogody';
$forecast['22']='Okresowo opady, bardzo niestabilna pogoda';
$forecast['23']='Opady w krótkich odstępach czasu';
$forecast['24']='Opady, bardzo niestabilna pogoda';
$forecast['25']='Burzowo, możliwa poprawa pogody';
$forecast['26']='Burzowo, duże opady';

return $forecast[$numer];
}


Odwołujemy się do niej tak.

prognoza_pogody($pogoda['48']);


$pogoda['48'] - numer bieżącej prognozy zgodnie z plikiem Strings.ini z pliku realtime.txt

Dwie proste funkcje wyświetlają porę dnia i tendencje zmian (temperatura/ciśnienie).

function pora_dnia($numer)
{
if($numer==1)
{
return 'Dzień';
}
elseif($numer==0)
{
return 'Noc';
}
}

function tendencja($wartosc)
{
if($wartosc>0)
{
return '↑';
}
elseif($wartosc<0)
{
return '↓';
}
else
{
return '→';
}
}


Wyświetlenie pory dnia na stronie wygląda tak.

pora_dnia($pogoda['49']);


$pogoda['49'] - flaga wskazująca (0,1), że lokalizacja stacji pogodowej jest obecnie w świetle dziennym (z pliku realtime.txt)

Wyświetlanie tendencji zmian na stronie wygląda podobnie, przykład dla ciśnienia.

tendencja($pogoda['18']);


$pogoda['18'] - wartość tendencji ciśnienia z pliku realtime.txt


Opis pliku pogoda_zegar.php


Skrypt zawiera kod PHP, będący połączeniem kodu róży wiatrów i wskaźnika zegarowego. Opisany został dokładnie w poprzednich częściach. Tak więc, opiszę tu tylko zmiany. Funkcja pozycja_tekstu jest identyczna jak w skrypcie wskaźnika zegarowego.

Na początku ustawiamy graficzne szablony, dla róży wiatrów i wskaźnika zegarowego. Grafikę możemy przygotować sami np. w Adobe PhotoShop. Możemy też skorzystać z załączonych poniżej lub z poprzednich części artykułu. Szablony muszą być przeźroczystymi plikami PNG (PNG-24).

$szablon['roza_tlo'] = 'kompas_tlo.png';
$szablon['roza_wskaznik'] = 'kompas_wskaznik.png';

$szablon['zegar_tlo'] = 'zegar_tlo.png';
$szablon['zegar_wskaznik'] = 'zegar_wskaznik.png';


W poniższej linii sprawdzamy, czy w odwołaniu do skryptu zostały podane wszystkie wymagane dane.

if(!(isset($_GET['w'],$_GET['j'],$_GET['n'],$_GET['min'],$_GET['max']) or (isset($_GET['k'],$_GET['w']) and $_GET['k']==1)))
{
exit;
}


W kodzie dla wskaźnika doszło sprawdzenie, czy wartość max jest większa od min. Jeżeli jest odwrotnie przerywamy skrypt - bo mamy błędne dane wejściowe.

if($min>$max)
{
exit;
}


Kod PHP przeznaczony tylko dla róży wiatrów, identyfikujemy w poniższy sposób. A kod tylko dla wskaźnika poprzez negacje tego kodu.

if(isset($_GET['k']) and $_GET['k']==1)
{
KOD PHP TYLKO DLA RÓŻY WIATRÓW
}


Autor: Parasol (Stacje-Pogody.pl)
Dodaj komentarz
Ocena treści:
Imię (nick):
Komentarz:
Komentarz do 1999 znaków (wprowadzono znaków: 0)
Wpisz kod z obrazka:    Aby dodać komentarz wpisz kod z obrazka