Aplikacja do monitorowania jednostek morskich
- Aplikacja pozwala wyświetlić aktualne pozycje jednostek na podstawie danych pobranych z AIS.
- Aplikacja pozwala wyświetlić trasę jednostek z ostatnich 24h na podstawie danych pobranych z AIS, które zostały zapisane w bazie danych. Oprócz wyrysowanych pozycji z ostatnich 24h aplikacja pokazuje również cel trasy (na podstawie danych pobranych z API positionstack).
- Aplikacja pozwala wyświetlić historyczną trasę wybranej jednostki na podstawie danych z AIS, które zostały zapisane w bazie danych. Aktualnie historia trasy nie ma limitu czasowego, wyświetlane są wszystkie dane zapisane dla wybranej jednostki.
- Aktualne pozycje jednostek wyświetlane są na podstawie danych pobranych bezpośrednio z API AIS. Pobierane dane nie są w żaden sposób zapisywane, są tylko wyświetlane na mapie.
- Historyczne pozycje jednostek pobierane są z API oraz zapisywane na bazie danych w celu ich późniejszego wyświetlenia. Wykorzystana została tutaj usługa zwracający pozycje dla wybranej jednostki z ostatnich 24h. Dane pobierane są co 10 sekund przez działające w tle zadanie. Dane zapisywanę są w bazie danych przyrostowo (nowsze pozycje niż te które znajdują się już na bazie).
- Cel podrózy statków pobierany jest na na podstawie tekstu pobranego z AIS. Dane pobierane są z API positionstack. Znalezione miejsca wraz ze współrzędnymi zapisywane są na bazie danych w celu ograniczenia ruchu do zewnętrznego API. Podczas pobierania współrzędnych wykorzystywana jest najpierw wartosć zapisana w bazie danych, a jeśli odpowiedni wpis nie istnieje to wtedy następuje próba pobrania lokalizacji z API positionstack.
Aby uruchomić aplikację należy przy pomocy Docker uruchomić dwa kontenery. Pierwszy z bazą danych Postgres oraz drugi z aplikacją.
- Uruchomienie kontenera z bazą danych
docker run -d --name some-postgres -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 postgres
- Podłączenie się do bazy danych w kontenerze:
docker exec -it some-postgres psql -U postgres
- Utworzenie bazy na potrzeby aplikacji (baza o nazwie "test"):
create database test;
UWAGA! Należy ustawić własne hasło do bazy w zmiennej POSTGRES_PASSWORD
Aplikację należy zbudować z wykorzystaniem Java 11 oraz Maven 3.6.3 wykonując poniższe kroki.
- Zbudowanie pliku JAR
mvn clean package
- Zbudowanie obrazu Docker
docker build -t monitorowanie-jednostek .
- Uruchomienie aplikacji w kontenerze
docker run -d --name monitorowanie-jednostek -p 8084:8080 monitorowanie-jednostek
Aplikacja uruchomi się na porcie 8084.
-
Wyświetlenie aktualnych pozycji jednostek. URL http://localhost:8084/actual
-
Wyświetlanie aktualnych pozycji jednostek, trasy z ostatnich 24h oraz celu podróży.URL http://localhost:8084/tracks
Po najechaniu na wybraną jednostkę na mapie pojawia się trasa z ostatnich 24h oraz cel podróży jeśli udało się go znaleźć.
Po kliknięciu w znacznik jednostki pozostałe znaczniki znikają, a na mapie zostaje tylko wybrany znacznik wraz z trasą z ostatnich 24h oraz celem podróży.
Njważniejsze funkcjonalnośći z powyższego zdjęcia:
- Zielony znacznik oznacza aktualną pozycję jednostki.
- Czarna linia prezentuje trasę z ostatnich 24h i łączy znacznik aktualnej pozycji jednostki z pierwszym znacznikiem pozycji.
- Czerwona linia prezentuje połączenie aktualnej pozycji z celem podróży, który oznaczony jest również czarnym znacznikiem.
- Po kliknięciu w pierszą oraz aktualną pozycję jednostki pojawia się popup z dodatkowymi informacjami o jednostce.
Popup z informacjami o jednostce zawiera następujące dane:
- Nazwę jednostki
- Dystans w metrach pokonany w ciągu ostatnich 24h
- Cel podróży
- Datę pobrania aktualnej pozycji
- Link do pełnej histori trasy dla danej jednostki (po kliknięciu w link otwiera się w nowym oknie strona z historyczną trasą, która opisana jest w punkcie 3.
Po ponownym kliknięciu w znacznik na mapie pojawiają się pozostałe jednostki.
- Wyświetlanie historycznej trasy jednostki. URL http://localhost:8084/tracks/{MMSI}
Czarna linia reprezentuje hostoryczną trasę jednostki. Po najechaniu na pierwszy oraz ostatni znacznik trasy wyświetlają się daty z których pochodzą pomiary. Czarny znacznik oznacza pierwszy pomiar natomiast zielony ostatni.
a) Znajdujemy jednostkę na mapie i najeżdzamy na nią żeby zobaczyć jej trasę z ostatnich 24h oraz cel podróży:
b) Klikamy na znacznik jednostki aby usunąć pozostałe jednostki oraz wyświetlić popup z danymi o jednostce:
c) Klikamy w link "Show history" na poupie aby zobaczyć dotychczasową historię trasy jednostki:
d) Po dłuższym czasie ponownie klikamy w link, aby zobaczyć historię trasy jednostki:
Jak widać historia trasy jest zgodna z celem trasy widocznym na obrazie z punktu a oraz b.