git_bsmd/AIS/ReadMe.md

62 lines
2.8 KiB
Markdown

# AIS Service
___
## Übersicht
### Architektur Entwurf
![Übersichtsbild der geplanten Architektur](architektur.jpg "Architektur")
### Web - "Laufzettel"
In der Übersicht nur Daten aus der Datenbank, vorerst keine Daten aus Wetris.
<ins>Überlegungen</ins>:
- Wie können ein- bzw. ausgehende Schiffe erkannt werden?
- Nach "langer" Zeit wird ein Alarm im "Randgebiet" erkannt. Je nach Anfang/Ende ist es ein eingehender oder ausgehender Anlauf.
- Muss ein Anlauf getrackt werden oder reicht eine "Menge" an Alarmen?
- Das Datenmodell muss den Anlauf vermutlich abbilden, aber in der DB reichen vermutlich die Alarme.
- Wann erreicht ein Schiff die Zone? (aka, wann wird der Alarm ausgelöst)
- kein aktueller Alarm für die Zone __und__
- Die Position wird bereits für n Sekunden innerhalb der Zone reported (avoid jitter)
- Im Alarm muss gespeichert werden, wann
1) die Zone "zuerst" erreicht wurde
2) der Zeitpunkt des letzten Reports innerhalb der Zone
3) keine Referenz sondern Kopie der Position/Timestamp?
- Alarm / Zuordnung sind unabhängig von der Gruppe. Die Gruppe / der Zulauf ergibt sich erst in der Webanwendung. (Ist das sinnvoll?)
- Für die Abfrage in der Gruppe der Zonen Außenweser/Binnenweser: Jeweils "neuester" Alarm:
- wenn kein weiterer Alarm: o : unspezifisch
- wenn vorh. Alarm in Zone mit niedrigere Seq : <- eingehend
- wenn vorh. Alarm in Zone mit höherer Seq : -> abgehend
## Stand Dez 22
Nächste geplante Schritte:
- Gebiete müssen einer Gruppe zugeordnet werden, damit wir Laufzettel für mehrere getrennte, aufeinanderfolgende Gebiete erstellen können (z.B. Weser und Elbe).
- Erstellung eines AIS-Admin Tools, um Gebiete zu verwalten (KML Import, Löschen, Zuweisen von MMSI/IMO zu den Gebieten). Das Tool kann nur auf dem Server verwendet werden (obviously) und wird der Einfachheit halber einfach ein Winforms Projekt.
- Verbesserte HTML Übersicht analog zu dem Laufzettel (Einfahrtzeit in die Gebiete)
![Aktueller Laufzettel](AnalogerLaufzettel.jpg "Laufzettel")
## Stand Sep/Okt.22
Entscheidung, den leidlich laufenden AIS Service zu verbessern, da aktiv nicht mehr an WETRIS weitergearbeitet wird. Aufgaben:
* Prüfen und Debuggen des aktuellen Stands (sinnvoll?)
* Anlage einer neuen, effizienteren Datenbankstruktur (kein SQL Server!)
* Vollständige Implementierung aller Telegramm-Arten
* verbesserte Architektur (s.u. Bild)
* Webservice-Endpunkt, der aktuelle Lage als Liste liefert
* Zonen Alarm
* Einfaches Frontend zur Einrichtung von Zonen
* (Backup) Evaluierung alternativer Datenquellen
## Referenzen
* [NMEA 0183](https://de.wikipedia.org/wiki/NMEA_0183)
* [AIS Wikipedia](https://en.wikipedia.org/wiki/Automatic_identification_system)
* [AIVDM/AIVDO protocol decoding](https://gpsd.gitlab.io/gpsd/AIVDM.html)
* [AIS Documentation (PDF)](itu-m.1371-4-201004.pdf)