96 lines
5.1 KiB
Markdown
96 lines
5.1 KiB
Markdown
# Offline-Karten- und Ortungsanwendung
|
||
|
||
Stand: 8. Oktober 2026. Diese Datei dokumentiert den bisherigen Planungsstand. Eine Anwendung wurde noch nicht implementiert.
|
||
|
||
## Ziel und Plattformen
|
||
|
||
Eine offlinefähige Kartenanwendung für **iOS und Android** soll amtliche DTK25-Karten anzeigen und eingegebene Zielkoordinaten darauf markieren. Die Verteilung soll ohne App Store über eine installierbare **Progressive Web App (PWA)** erfolgen.
|
||
|
||
Der Mac dient als Entwicklungsrechner und zur Aufbereitung der Kartendaten. Die ursprünglich erwogene macOS-Desktop-App und deren Python/Qt-Architektur sind verworfen.
|
||
|
||
**Ortung bei geöffneter App reicht aus.** Hintergrundortung und Tracking bei gesperrtem Bildschirm sind nicht erforderlich.
|
||
|
||
## Wichtigste Funktion: MGRS-Zieleingabe
|
||
|
||
Der Nutzer hat die Eingabe von Koordinaten in dieser Form als wichtigste Funktion festgelegt:
|
||
|
||
```text
|
||
32U MA 67030 78109
|
||
```
|
||
|
||
Die eingegebene Position muss auf der passenden Karte sichtbar sein. MGRS ist ein eigenes Koordinatenformat und darf nicht als einfache UTM-Zahlenangabe interpretiert werden.
|
||
|
||
Geplantes Verhalten:
|
||
|
||
- Eingaben mit und ohne Leerzeichen akzeptieren.
|
||
- Zone, Buchstaben, Ziffernanzahl und die Gültigkeit der Kombination prüfen; ungültige Angaben verständlich zurückweisen.
|
||
- MGRS lokal dekodieren und die Position nach EPSG:25832 umrechnen.
|
||
- Passendes bereits heruntergeladenes Kartenmaterial auswählen.
|
||
- Auf das Ziel zentrieren und eine deutliche Zielmarkierung anzeigen.
|
||
- Die eingegebene MGRS-Angabe zur Kontrolle sichtbar lassen.
|
||
- Fehlendes Offline-Kartenmaterial ausdrücklich melden, statt eine leere Ansicht als erfolgreiche Kartenanzeige darzustellen.
|
||
- Als geplante Ergänzung auch kürzere MGRS-Angaben unterstützen und deren größere Bezugsfläche sichtbar darstellen. Die genaue Konvention für Marker und Flächendarstellung ist noch festzulegen.
|
||
|
||
Fünf Ziffern je Achse, wie im Beispiel, beschreiben eine MGRS-Zelle von 1 × 1 Meter. Diese Auflösung ist keine Zusage über die Genauigkeit der zugrunde liegenden Position oder Karte.
|
||
|
||
## Weitere Anforderungen
|
||
|
||
- Karte mit Touch-Gesten verschieben und zoomen.
|
||
- Benötigte Karten automatisch anhand des sichtbaren Ausschnitts beziehungsweise der Zielposition laden.
|
||
- Zusätzlich UTM- und WGS84-Koordinaten als Eingabe anbieten.
|
||
- Eigenen Standort mit Betriebssystem-/Browserfreigabe anzeigen; manuelle Standortangabe als Alternative.
|
||
- Luftlinienentfernung zwischen eigenem Standort und Ziel anzeigen.
|
||
- Auf eigenen Standort oder Ziel zentrieren.
|
||
- Nach vollständigem Download ohne Internet starten und arbeiten, einschließlich Koordinatenumrechnung.
|
||
- Große Kartendaten effizient verarbeiten und den Arbeitsspeicherverbrauch begrenzen.
|
||
|
||
Routenberechnung, Navigation entlang von Wegen und Hintergrundtracking gehören nicht zum bisher vereinbarten Umfang.
|
||
|
||
## Quelldaten
|
||
|
||
Der vorgesehene Kartenordner lautet **`./Karten`**, relativ zum künftigen Projektverzeichnis. Bei der letzten Prüfung war dieser Ordner im aktuellen Arbeitsverzeichnis noch nicht vorhanden. Es wurden noch keine Originaldateien geprüft.
|
||
|
||
Nach Angaben des Nutzers liegen für Hessen deutlich mehr als 1 GB Kartenmaterial vor:
|
||
|
||
- DTK25, Maßstab 1:25.000.
|
||
- TIFF-Bilddateien mit zugehörigen TFW-Dateien.
|
||
- Originalkacheln von 12 × 12 km.
|
||
- Vorgesehenes Koordinatenreferenzsystem: ETRS89 / UTM Zone 32N, **EPSG:25832**.
|
||
- Beispielname: `DTK25_584000_5660000_col.tif` und zugehörige `.tfw`.
|
||
|
||
Beispiel einer TFW-Datei aus der bisherigen Unterhaltung:
|
||
|
||
```text
|
||
1.2500000000
|
||
0.0000000000
|
||
0.0000000000
|
||
-1.2500000000
|
||
584000.6250000000
|
||
5671999.3750000000
|
||
```
|
||
|
||
Die sechs Zeilen enthalten Pixelmaß und affine Georeferenzierung; die letzten beiden Werte bezeichnen den Mittelpunkt des oberen linken Pixels. Die TFW-Datei selbst benennt kein Koordinatenreferenzsystem.
|
||
|
||
Für dieses Beispiel ergeben sich bei 12 km Kantenlänge rechnerisch 9.600 × 9.600 Pixel mit 1,25 m Pixelgröße. Die äußeren Grenzen wären Ostwerte 584000 bis 596000 und Nordwerte 5660000 bis 5672000. Diese Annahmen sind beim Import gegen Bildabmessungen und Metadaten zu prüfen.
|
||
|
||
## Vorgesehene Architektur
|
||
|
||
| Baustein | Festgelegte Richtung |
|
||
| --- | --- |
|
||
| Anwendung | Smartphone-taugliche PWA für iOS und Android |
|
||
| Entwicklung | TypeScript und Vite |
|
||
| Kartenanzeige | OpenLayers |
|
||
| Kartenprojektion | EPSG:25832 zunächst beibehalten |
|
||
| Koordinatenumrechnung | Proj4js plus separate MGRS-Bibliothek |
|
||
| Offline-Programm | Service Worker und Cache Storage für Oberfläche und Programmressourcen |
|
||
| Offline-Kartendaten | Kleine Rasterkacheln in Cache Storage |
|
||
| Katalog und Downloadstatus | IndexedDB |
|
||
| Kartenaufbereitung | Python und GDAL auf dem Mac |
|
||
| Bereitstellung | Statisches HTTPS-Hosting; kein laufender Kartenserver erforderlich |
|
||
|
||
Konkrete Bibliotheksversionen, MGRS-Bibliothek und Hosting-Anbieter sind noch nicht ausgewählt. Alle für den Offlinebetrieb nötigen Bibliotheken, Projektionsdefinitionen und Ressourcen müssen mit der Anwendung verfügbar sein; Laufzeitabhängigkeiten von externen CDNs sind zu vermeiden.
|
||
|
||
```text
|
||
./Karten: TIFF + TFW
|
||
↓ einmalige Aufbereitung auf dem Mac
|
||
Kleine Rasterkacheln in mehreren Auflösungen + Gebietskatalog |