System archiwizacji i wizualizacji danych meteorologicznych oparty na technologii Laravel 12
Informacje o systemie
System opracowany w ramach pracy dyplomowej magisterskiej pt.
„System archiwizacji i wizualizacji danych meteorologicznych oparty na technologii Laravel”,
wykonanej pod kierunkiem dra inż. Sebastiana Kujawy.
Data wydania: czerwiec 2026.
Autor systemu:
inż. But Dominik,
Uniwersytet Przyrodniczy w Poznaniu,
Wydział Inżynierii Środowiska i Inżynierii Mechanicznej
Informatyka i Inżynieria Danych, II stopień.
Kontakt: butdominik.biz@gmail.com
System Meteo to kompleksowe narzędzie pozwalające na odczyt wybranych przez użytkownika oficjalnych danych meteorologicznych pozyskiwanych od Instytutu Meteorologii i Gospodarki Wodnej (IMGW) – Państwowego Instytutu Badawczego przez API oraz archiwum plików, a także danych społecznościowych i niezweryfikowanych bieżących danych klimatycznych archiwizowanych lokalnie na serwerze. Dane, m.in. temperatury powietrza i gruntu, wilgotności względnej, prędkości i kierunku wiatru, a także opadu z ostatnich 10 min, są prezentowane w postaci tabelarycznej oraz graficznej zarówno na mapie, jak i na wykresach.
Funkcjonalności systemu:
- Odczyt najnowszych danych meteorologicznych wybranej stacji dostępnej przez API IMGW wraz z prezentacją,
- Odczyt najnowszych danych meteorologicznych wszystkich stacji dostępnych przez API IMGW wraz z prezentacją na interaktywnej mapie,
- Codzienny odczyt i archiwizacja 30-minutowa bieżących danych meteorologicznych wszystkich stacji dostępnych przez API IMGW w postaci dziennych plików w formacie JSON oraz przygotowywanie terminowych, dobowych i miesięcznych sumarycznych plików JSON zawierających wartości statystyczne parametrów wszystkich stacji,
- Odczyt oficjalnych zweryfikowanych danych meteorologiczno-klimatycznych dla wybranej stacji z archiwum plików IMGW wraz z prezentacją,
- Interfejs POST API do odbioru, autoryzacji i archiwizacji bieżących danych stacji pogodowych użytkowników społeczności,
- Odczyt danych meteorologicznych dla wybranej stacji społeczności z bazy danych systemu wraz z prezentacją,
- Oficjalne dane publiczne IMGW: https://danepubliczne.imgw.pl/pl/introduction,
- IMGW API: https://danepubliczne.imgw.pl/api/data/meteo/,
- Oficjalne dane archiwalne IMGW (CSV) – dane meteorologiczne: https://danepubliczne.imgw.pl/data/dane_pomiarowo_obserwacyjne/dane_meteorologiczne/
(system wykorzystuje tylko dane z katalogów: "terminowe/klimat/", "dobowe/klimat/", "miesieczne/klimat/"),
- Dla danych bieżących lista stacji pozyskiwana jest okresowo z API, natomiast dla danych archiwalnych jest łączona ze stacjami z pliku CSV dostępnego w archiwum IMGW: wykaz_stacji.csv,
Technologie wykorzystane przy tworzeniu systemu:
- Laravel v12,
- Laravel Jetstream v5,
- Livewire v3,
- Alpine.js v3,
- Chart.js v4.5.0,
- Filament v3,
- TailwindCSS v4.1,
- Leaflet v1.9.4,
- Plugin Leaflet.fullscreen,
- Filament Map Picker v1.8.8.
Co oznaczają rodzaje agregacji:
- 30-minutowa – dane całego dnia surowe pozyskiwane bezpośrednio z API co 30 minut, dostępne tylko przez 8 dni (wraz z dniem aktualnie zapisywanym),
- terminowa – dane dobowe surowe lub zweryfikowane zawierające wartości statystyczne 3 lub 4 przedziałów godzinowych dla jednego dnia, w przypadku danych zweryfikowanych: do godz. 6:00, 12:00, 18:00, w przypadku danych surowych także do godz. 24:00,
- dobowa – dane miesięczne surowe lub zweryfikowane zawierające wartości statystyczne: sumy, minimum, maksimum i średnie dla każdego dnia wybranego miesiąca,
- miesięczna – dane roczne surowe lub zweryfikowane zawierające wartości statystyczne: sumy, minimum, maksimum i średnie dla każdego miesiąca wybranego roku.
Zasada lokalnej archiwizacji danych z IMGW API:
Dane archiwizowane są dla wszystkich dostępnych stacji pogodowych przez 24/7 co 30 minut, tj. CronJob serwera systemu uruchamia polecenie Artisan Laravel wysyłające zapytanie do API IMGW. Dane następnie są dopisywane do pliku JSON agregacji 30-minutowej z datą bieżącego dnia. (nowy plik tworzony jest po wykryciu zmiany dnia w jednej z dat pomiarów uzyskiwanych z API – było to konieczne, ponieważ API IMGW udostępnia dane z opóźnieniem ok. 20 minut, np. o 11:30 dostępne są dane z 11:10; pomiary IMGW wykonywane są co 10 minut)
Następnie, jeżeli wykryto nowy dzień, dane z pliku z dnia poprzedniego są konwertowane do 4 przedziałów godzinowych: 00:00–05:59, 06:00–11:59, 12:00–17:59, 18:00–23:59 i zapisywane do pliku JSON w katalogu agregacji terminowej "terminowe".
Po zapisaniu pliku terminowego wykonywane jest wyliczanie parametrów średnich, maksymalnych, minimalnych i sumarycznych dla całej doby i zapis do pliku miesięcznego w katalogu agregacji dobowej "dobowe" (jeśli plik nie istnieje, zostaje utworzony).
Następnie aktualizowany jest plik roczny w katalogu agregacji miesięcznej "miesięczne", odpowiadający roku dnia poprzedniego (jeśli nie istnieje, zostaje utworzony).
Na końcu usuwane są pliki JSON starsze niż 7 dni z danych 30-minutowych.
UWAGA! Dane są poprawnie archiwizowane lokalnie od początku września 2025 roku, wcześniejsze dane mogą zawierać błędy lub luki.
„System archiwizacji i wizualizacji danych meteorologicznych oparty na technologii Laravel”,
wykonanej pod kierunkiem dra inż. Sebastiana Kujawy.
Data wydania: czerwiec 2026.
Autor systemu:
inż. But Dominik,
Uniwersytet Przyrodniczy w Poznaniu,
Wydział Inżynierii Środowiska i Inżynierii Mechanicznej
Informatyka i Inżynieria Danych, II stopień.
Kontakt: butdominik.biz@gmail.com
System Meteo to kompleksowe narzędzie pozwalające na odczyt wybranych przez użytkownika oficjalnych danych meteorologicznych pozyskiwanych od Instytutu Meteorologii i Gospodarki Wodnej (IMGW) – Państwowego Instytutu Badawczego przez API oraz archiwum plików, a także danych społecznościowych i niezweryfikowanych bieżących danych klimatycznych archiwizowanych lokalnie na serwerze. Dane, m.in. temperatury powietrza i gruntu, wilgotności względnej, prędkości i kierunku wiatru, a także opadu z ostatnich 10 min, są prezentowane w postaci tabelarycznej oraz graficznej zarówno na mapie, jak i na wykresach.
Funkcjonalności systemu:
- Odczyt najnowszych danych meteorologicznych wybranej stacji dostępnej przez API IMGW wraz z prezentacją,
- Odczyt najnowszych danych meteorologicznych wszystkich stacji dostępnych przez API IMGW wraz z prezentacją na interaktywnej mapie,
- Codzienny odczyt i archiwizacja 30-minutowa bieżących danych meteorologicznych wszystkich stacji dostępnych przez API IMGW w postaci dziennych plików w formacie JSON oraz przygotowywanie terminowych, dobowych i miesięcznych sumarycznych plików JSON zawierających wartości statystyczne parametrów wszystkich stacji,
- Odczyt oficjalnych zweryfikowanych danych meteorologiczno-klimatycznych dla wybranej stacji z archiwum plików IMGW wraz z prezentacją,
- Interfejs POST API do odbioru, autoryzacji i archiwizacji bieżących danych stacji pogodowych użytkowników społeczności,
- Odczyt danych meteorologicznych dla wybranej stacji społeczności z bazy danych systemu wraz z prezentacją,
Źródłem pochodzenia danych jest Instytut Meteorologii i Gospodarki Wodnej – Państwowy Instytut Badawczy.
Dane IMGW-PIB zostały przetworzone na potrzeby niektórych funkcjonalności systemu.
- Oficjalne dane publiczne IMGW: https://danepubliczne.imgw.pl/pl/introduction,
- IMGW API: https://danepubliczne.imgw.pl/api/data/meteo/,
- Oficjalne dane archiwalne IMGW (CSV) – dane meteorologiczne: https://danepubliczne.imgw.pl/data/dane_pomiarowo_obserwacyjne/dane_meteorologiczne/
(system wykorzystuje tylko dane z katalogów: "terminowe/klimat/", "dobowe/klimat/", "miesieczne/klimat/"),
- Dla danych bieżących lista stacji pozyskiwana jest okresowo z API, natomiast dla danych archiwalnych jest łączona ze stacjami z pliku CSV dostępnego w archiwum IMGW: wykaz_stacji.csv,
Technologie wykorzystane przy tworzeniu systemu:
- Laravel v12,
- Laravel Jetstream v5,
- Livewire v3,
- Alpine.js v3,
- Chart.js v4.5.0,
- Filament v3,
- TailwindCSS v4.1,
- Leaflet v1.9.4,
- Plugin Leaflet.fullscreen,
- Filament Map Picker v1.8.8.
Co oznaczają rodzaje agregacji:
- 30-minutowa – dane całego dnia surowe pozyskiwane bezpośrednio z API co 30 minut, dostępne tylko przez 8 dni (wraz z dniem aktualnie zapisywanym),
- terminowa – dane dobowe surowe lub zweryfikowane zawierające wartości statystyczne 3 lub 4 przedziałów godzinowych dla jednego dnia, w przypadku danych zweryfikowanych: do godz. 6:00, 12:00, 18:00, w przypadku danych surowych także do godz. 24:00,
- dobowa – dane miesięczne surowe lub zweryfikowane zawierające wartości statystyczne: sumy, minimum, maksimum i średnie dla każdego dnia wybranego miesiąca,
- miesięczna – dane roczne surowe lub zweryfikowane zawierające wartości statystyczne: sumy, minimum, maksimum i średnie dla każdego miesiąca wybranego roku.
Zasada lokalnej archiwizacji danych z IMGW API:
Dane archiwizowane są dla wszystkich dostępnych stacji pogodowych przez 24/7 co 30 minut, tj. CronJob serwera systemu uruchamia polecenie Artisan Laravel wysyłające zapytanie do API IMGW. Dane następnie są dopisywane do pliku JSON agregacji 30-minutowej z datą bieżącego dnia. (nowy plik tworzony jest po wykryciu zmiany dnia w jednej z dat pomiarów uzyskiwanych z API – było to konieczne, ponieważ API IMGW udostępnia dane z opóźnieniem ok. 20 minut, np. o 11:30 dostępne są dane z 11:10; pomiary IMGW wykonywane są co 10 minut)
Następnie, jeżeli wykryto nowy dzień, dane z pliku z dnia poprzedniego są konwertowane do 4 przedziałów godzinowych: 00:00–05:59, 06:00–11:59, 12:00–17:59, 18:00–23:59 i zapisywane do pliku JSON w katalogu agregacji terminowej "terminowe".
Po zapisaniu pliku terminowego wykonywane jest wyliczanie parametrów średnich, maksymalnych, minimalnych i sumarycznych dla całej doby i zapis do pliku miesięcznego w katalogu agregacji dobowej "dobowe" (jeśli plik nie istnieje, zostaje utworzony).
Następnie aktualizowany jest plik roczny w katalogu agregacji miesięcznej "miesięczne", odpowiadający roku dnia poprzedniego (jeśli nie istnieje, zostaje utworzony).
Na końcu usuwane są pliki JSON starsze niż 7 dni z danych 30-minutowych.
UWAGA! Dane są poprawnie archiwizowane lokalnie od początku września 2025 roku, wcześniejsze dane mogą zawierać błędy lub luki.