Loty podczas burzy

Stworzenie tej wizualizacji zajęło mi znacznie więcej czasu niż sądziłem. Pomysł pojawił się 29. czerwca gdy siedziałem w biurze Microsoft przy lotnisku w Warszawie. Burza tego dnia była ogromna. Podczas sprawdzania ruchu lotniczego na Flightradar24, zacząłem zastanawiać się jak wyglądałyby loty na jednym wykresie z mapą i chmurami. Po 3(!) miesiącach pracy, oto i on:

Poniżej znajdziecie szczegółowy opis, jak został stworzony.

1. Dane lotów

Po bardzo dokładnych poszukiwaniach stwierdziłem, że na danych z Flightradar24 można polegać najbardziej, więc wziąłem kartę do ręki i rozpocząłem okres próbny. Na stronie wyfiltrowałem interesujące mnie loty i pobrałem pliki csv z kolumnami: Timestamp, UTC, Callsign, Position, Altitude ,Speed, Direction. Wszystkie pliki są dostępne tutaj.

Głównym problemem z danymi był fakt, że różnice czasu między obserwacjami (wierszami) nie były stałe. Przykładowo podczas startu i lądowanie w danych znajdowało się około 10 obserwacji na minutę, a na wysokości przelotowej 1 lub 2. Z tego powodu musiałem interpolować “brakujące” obserwacji zakładając, że zmiana między dwoma obserwacjami była liniowa.

Kod, użyty do przygotowania danych jest dostępny poniżej:

2.Mapa i chmury

Dane chmur zdobyłem od portalu radar-opadow, którego ekipa dostała od IMGW. Pliki sa dostępne tutaj. Pliki te musiały zostać przetworzone używając proj4. Cały proces jest opisany na tej stronie. Ta część projektu była najwolniejsza i ostatecznie zapisywałem wycinku ekranu z plików HTML, które stworzyłem. Tym sposobem otrzymałem kilkanaście plików, które miały posłużyć jako tło dla wykresu. Przykładowy html jest do pobrania pod tym linkiem (kliknij zapisz jako).

3. Tworzenie wykresu
Początkowo planowałem stworzyć animację korzystając z Matplotlib i zapisać ją jako gif/mp4. Niestety nie byłem w stanie znaleźć sposobu na zmianę tła razem z kolejnymi klatkami. Aby rozwiązać ten problem napisałem pętlę, która tworzyła poszczególne klatki. Cały kod jest poniżej:

 

Za pomocą tego skryptu wygenerowałem 476 klatek, które później zostały zapisane w MP4. W pierwszym podejściu chciałem użyć pythona do stworzenia animacji, ale po kilku eksperymentach zawsze kończyłem z plikiem o rozmiarze 500+. Z tego powodu poprosiłem o pomoc kolegę, który jest mistrzem Photoshopa. On dał radę stworzyć znacznie mniejszy plik.

Czekam na feedback, to są moje pierwsze kroki w Pythonie i pewnie dałoby się zrobić to lepiej. Każda sugestia jest mile widziana 🙂

Dzięki!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *