Konzept (Entwurf)
Lagekarten sind ein unverzichtbares Werkzeug für Hilfsorganisationen zur Koordination ihrer Ressourcen. Spezialisierte Einsatzleitsoftware stellt Rettungsdiensten entsprechende Funktionen bereit.
Aufgrund fehlender einheitlicher Schnittstellen können diese Anwendungen bei größeren Einsätzen mit mehreren beteiligten Organisationen bisher keinen nahtlosen Austausch von Lagekarten zwischen deren jeweiligen Software-Tools ermöglichen.
OpenGeoMesh ermöglicht eine sichere Zusammenarbeit an Lagekarten über verschiedene Organisationen und Tools hinweg, ohne Privatsphäre und Sicherheit zu gefährden. OpenGeoMesh ist Open Source und kann problemlos in bestehende Softwarelösungen integriert werden.
Obwohl das Projekt darauf abzielt, die Zusammenarbeit von Notfall- und Rettungsorganisationen zu erleichtern, ist es auch offen für Anwendungen und Implementierungen aus anderen Bereichen.
OpenGeoMesh is Free and Open Source
Softwareanbieter bieten spezialisierte Einsatzleitsoftware an, die auf die Bedürfnisse verschiedenster Rettungsorganisationen zugeschnitten sind. OpenGeoMesh kann frei in diese bestehenden Produkte integriert werden. Um den Integrationsaufwand zu minimieren, stellt das Projekt Spezifikationen, Dokumentationen, Demo Stacks, Open-Source-Bibliotheken und Docker-Container zur Verfügung.
OpenGeoMesh wird von einer Community von Rettungsdiensten und Softwareanbietern entwickelt, um die jeweiligen Funktionsanforderungen zu erfüllen und eine nahtlose Integration in bestehende Software-Stacks zu ermöglichen.
Starte eine Diskussion via Codeberg Issue in unserem Repo oder schreibe eine Mail an info@opengeomesh.org!
Basierend auf etablierten Standards
OpenGeoMesh basiert auf einer Kombination des Dateifreigabeprotokolls OpenCloudMesh (Zusammenfassung) und den OGC API Standards. Durch die Verwendung bestehender Standards kann OpenGeoMesh auf bestehenden Erfahrungen aufbauen und bereits existierende Open-Source-Implementierungen nutzen.
OpenCloudMesh wird verwendet, um den Server des Empfängers über die Freigabe einer Kartenebene (Collection) zu benachrichtigen. Kartenebenen können mit einzelnen Benutzern oder einer Gruppe geteilt werden, wobei die freigegebenen Daten auf dem sendenden Server verbleiben.
Im Vergleich zu alternativen Ansätzen wie Presigned URLs ermöglicht OpenCloudMesh die Kontrolle über sensible Daten zu behalten, da einzelnen Empfängern der Lese- oder Schreibzugriff auf Ressourcen gezielt gewährt oder entzogen werden kann.
OpenCloudMesh vermeidet es auch, Anmeldedaten und Endpunkte im Voraus austauschen zu müssen. Das Teilen einer Lagekarte erfordert lediglich die Eingabe der OpenCloudMesh-Adresse des Empfängers, wie z.B. user-id@feuerwehr-musterstadt.de oder FFW-Musterstadt@situation-map-software.com. Dies ist einfach genug, um vom Einsatzleiter auch während eines laufenden Rettungseinsatzes durchgeführt zu werden. Der optionale "Invite-Flow" begrenzt das Teilen auf vertrauenswürdige Parteien und vermeidet den Empfang unerwünschter Freigaben und Benutzerfehler.
Die OGC API-Standards werden für den Zugriff auf die geteilten Karten verwendet. Die OGC API-Standards definieren modulare API-Bausteine, die verwendet werden können, um verschiedene Funktionen für Geodaten bereitzustellen. OpenGeoMesh wird sich auf OGC API - Features konzentrieren, das folgende Endpunkte beinhaltet:
- /collections: eine Liste der verfügbaren Kartenebenen
- /collections/{collection-id}: Metadaten einer einzelnen Kartenebene
- /collections/{collection-id}/items: Inhalt einer Kartenebene als GeoJson FeatureCollection
- optional Unterstützung zum Bearbeiten von Features innerhalb von Kartenebenen:
- /collections/{collection-id}/items: POST zum Erstellen eines neuen Features
- /collections/{collection-id}/items/{item-id}: PUT zum Aktualisieren eines Features
- /collections/{collection-id}/items/{item-id}: DELETE zum Löschen eines Features
Während die einzelnen Bausteine einfach zu implementieren sind, gibt es auch mehrere bereits existierende Open-Source-Implementierungen, die verwendet werden können.
Nahtlose Integration von OpenGeoMesh in bestehende Einsatzleitsoftware
OpenGeoMesh muss nahtlos in bestehende Einsatzleitsoftwares integriert werden, um die Nutzung während Rettungseinsätzen so einfach wie möglich zu machen. Die Einsatzkräfte müssen weiter ungehinderten Zugang zu den gewohnten Werkzeugen und spezialisierten Funktionen haben, gleichzeitig muss eine reibungslose Zusammenarbeit mit anderen Organisationen möglich sein.
Das OpenGeoMesh wird einen Docker Service bereitstellen, der das OpenCloudMesh Protokoll implementiert und als Proxy Zugriff auf freigegebene Kartenebenen anderer Organisationen erlaubt. Mit dem Docker Service kann der Aufwand für die Implementierung des OpenCloudMesh Protokolls in den einzelnen Einsatzleitsoftwares vermieden werden.
Zur Darstellung der empfangenen Kartenebenen kann der OpenGeoMesh Proxy als OGC API Features Server in den Kartenanwendungen der Einsatzleitsoftwares eingebunden werden. Dazu stehen für verschiedene Kartenframeworks Open-Source-Implementierungen bereit.
Um Kartenfreigaben versenden zu können müssen die Kartenebenen als OGC API - Features Collections (GeoJson Dateien) zur Verfügung gestellt werden.
Kontaktieren Sie uns via info@opengeomesh.org falls Sie Anforderung an das Protokoll haben, sich an der Entwicklung beteiligen oder mehr erfahren wollen.
Architektur Entwurf
flowchart TD subgraph "Organisation A" subgraph "situation software A" db_A[(Database)] subgraph backend_A[Backend] api_A[Specialized API] ogc_A[OGC API] end ui_A(Frontend) subgraph "Docker Container" ogm_A[OpenGeoMesh] end db_A --> backend_A api_A -->|access local maps<br /> with specialized features| ui_A ogc_A <-->|access local maps| ogm_A ui_A -->|control shares| ogm_A ui_A <-->|access shared maps| ogm_A end end subgraph "Organisation B" subgraph "situation software B" db_B[(Database)] subgraph backend_B[Backend] api_B[Specialized API] ogc_B[OGC API] end ui_B(Frontend) ogm_B[OpenGeoMesh] db_B --> backend_B %%api_B -.-> ogc_B api_B -->|access local maps<br /> with specialized features| ui_B subgraph "Docker Container" ogm_B[OpenGeoMesh] end ui_B -->|control shares| ogm_B ui_B <-->|access shared maps| ogm_B ogc_B <-->|access local maps| ogm_B end end subgraph "Organisation C" subgraph "situation software C" db_C[(Database)] subgraph backend_C[Backend] ogc_C[OGC API] end ui_C(Frontend) ogm_C[OpenGeoMesh] db_C --> backend_C subgraph "Docker Container" ogm_C[OpenGeoMesh] end ogc_C <-->|access to local maps| ui_C ui_C -->|control shares| ogm_C ui_C <-->|access shared maps| ogm_C ogc_C <-->|access local maps| ogm_C end end ogm_B <==>|OpenCloudMesh Protocol| ogm_A ogm_B <==>|OpenCloudMesh Protocol| ogm_C ogm_A <==>|OpenCloudMesh Protocol| ogm_C