Skip to content

danioch835/monitorowanie-jednostek-morskich

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

monitorowanie-jednostek-morskich

Aplikacja do monitorowania jednostek morskich

Funkcjonalności aplikacji

  1. Aplikacja pozwala wyświetlić aktualne pozycje jednostek na podstawie danych pobranych z AIS.
  2. 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).
  3. 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.

Zasada działania aplikacji

  1. 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.
  2. 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).
  3. 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.

Uruchomienie aplikacji

Aby uruchomić aplikację należy przy pomocy Docker uruchomić dwa kontenery. Pierwszy z bazą danych Postgres oraz drugi z aplikacją.

Uruchomienie bazy danych

  1. 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
  1. Podłączenie się do bazy danych w kontenerze:
docker exec -it some-postgres psql -U postgres
  1. 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

Zbudowanie i uruchomienie aplikacji

Aplikację należy zbudować z wykorzystaniem Java 11 oraz Maven 3.6.3 wykonując poniższe kroki.

  1. Zbudowanie pliku JAR
mvn clean package
  1. Zbudowanie obrazu Docker
docker build -t monitorowanie-jednostek .
  1. Uruchomienie aplikacji w kontenerze
docker run -d --name monitorowanie-jednostek -p 8084:8080 monitorowanie-jednostek

Aplikacja uruchomi się na porcie 8084.

Przykłady z działania aplikacji

  1. Wyświetlenie aktualnych pozycji jednostek. URL http://localhost:8084/actual akualna_mapa

  2. 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źć. ostatnie_24h

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. ostatnie_24h_popup

Njważniejsze funkcjonalnośći z powyższego zdjęcia:

  1. Zielony znacznik oznacza aktualną pozycję jednostki.
  2. Czarna linia prezentuje trasę z ostatnich 24h i łączy znacznik aktualnej pozycji jednostki z pierwszym znacznikiem pozycji.
  3. Czerwona linia prezentuje połączenie aktualnej pozycji z celem podróży, który oznaczony jest również czarnym znacznikiem.
  4. 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:

  1. Nazwę jednostki
  2. Dystans w metrach pokonany w ciągu ostatnich 24h
  3. Cel podróży
  4. Datę pobrania aktualnej pozycji
  5. 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.

  1. Wyświetlanie historycznej trasy jednostki. URL http://localhost:8084/tracks/{MMSI} historia

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.

Pełny przykład dla śledzenia trasy jednostki:

a) Znajdujemy jednostkę na mapie i najeżdzamy na nią żeby zobaczyć jej trasę z ostatnich 24h oraz cel podróży: ostatnie_24h

b) Klikamy na znacznik jednostki aby usunąć pozostałe jednostki oraz wyświetlić popup z danymi o jednostce: ostatnie_24h_popup

c) Klikamy w link "Show history" na poupie aby zobaczyć dotychczasową historię trasy jednostki: historia

d) Po dłuższym czasie ponownie klikamy w link, aby zobaczyć historię trasy jednostki: historia_pelna

Jak widać historia trasy jest zgodna z celem trasy widocznym na obrazie z punktu a oraz b.

About

Aplikacja do monitorowania jednostek morskich

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published