Verzweiflung an komplexer mobiler-offline-Kartenlösung

Hallo zusammen,
vorab: Ich habe versucht mich einzulesen, bin jemand der versucht Informationen zu sammeln und zu verwerten und als Entwickler auch auf Stackoverflow & Co unterwegs… allerdings verzweifel ich gerade an der Komplexität und der Vielzahl an Open Source und kommerziellen Angeboten rund um Maps.
Daher hoffe ich auf ein paar Anstupser in die richtige Richtung, wie ich mein Vorhaben am besten umsetzen kann.

Mein Ziel ist eine App für Hobbypiloten wie mich, welche über drei Eigenschaften verfügen soll

  1. Tracking des Flugweges und Möglichkeit sich diesen Online anschauen und teilen zu können
  2. Mobile Mapping-Lösung/In-Air-Navigation inkl. eigener Map-Grafiken
  3. Möglichkeit diese Map-Grafiken über einen eigenen Editor online zu ändern um Flugplatzbetreibern die Chance zu geben Ihre Platzdaten selber anpassen zu können.

Zur App: Bevor hier “kommerziell!” geschrien wird, die App soll zum Selbstkostenpreis in die Stores, welcher Entwicklungskosten, Server und Store-Gebühren deckt… Businessplan & Co gibt es dafür bisher nicht :slight_smile:

Zu 1)
Die App (Android/iOS, geschrieben in AngularJS, Cordova+Ionic) speichert die Geodaten und sendet diese bei der Landung an meine Server, im Web wird der Flugweg über die Leaflet Bibliothek auf OSM Basis ausgegeben: https://picload.org/image/wdgagdi/online.png

Zu 2)
Eine ähnliche App zur Flugnavigation gibt es bereits, ich strebe ein ähnliches, aber detaillierteres Map-Bild an, die Software “VFRnav”:
https://www.google.de/search?q=vfrnav&hl=de&biw=1680&bih=806&source=lnms&tbm=isch&sa=X&ved=0ahUKEwiLirH1u6TKAhUGmg4KHTuPABwQ_AUIDSgA

Problem (a): Wie bekomme ich eine eigene Geodaten-Map mit eigenem Overlay zustande, welche ich später über meine Server zum Download über die App anbieten kann.
Problem (b): Gibt es eine Bibliothek o.ä. (wie Leaflet für Web) welche ich in der hybriden App einsetzen kann um auf die Map zu malen? Zum Beispiel ein kleines Flugzeug auf den aktuellen Standort?

Mapbox habe ich mir z.B. bereits angeschaut, da die App aber Geld kostet um die Kosten zu decken bin ich “kommerziell” - und 500 € im Monat für die Map würde ich mir nicht mal erträumen, da der Anwenderkreis doch sehr beschränkt ist…

Zu 3)
Gibt es einen Open Source Editor, welchen ich selber auf meine Domains/Server ziehen und eine Rechte-Struktur drumherum bauen kann, damit Flugplätze die Platzdaten bearbeiten können?
Platzdaten würden zum Beispiel so aussehen: http://sfcl.co.at/images/jeppesen_600x917.jpg

Und noch eine letzte Frage: Wie kann ich der Community als Dankeschön was zurückgeben? Soll ich regelmäßig was spenden wenn die App live geht und ein Überhang entsteht?! Bei mir in der Gegend ist alles Up-to-Date was die Karte angeht…

Ich danke euch vielmals und viele Grüße,
Tim

Hi Tim,

erstmal herzlich willkommen im Forum!

Ich bin mir fast sicher, dass viele deiner Fragen von uns nicht beantwortet werden können, da das doch ziemlich weit weg von OSM ist. Da wird Software erwähnt, von der ich noch nie was vernommen habe - und ich kenne einiges. Aber eventuell hast du ja Glück.

Ja, wieso denn diese Scheu? Wir haben viele kommerzielle Anwender weltweit und die Nutzung “unserer” Daten macht uns mächtig stolz. Wenn dieser die “Spielregeln” einhält ist das absolut in Ordnung.

Wo ist da das Problem? Alles sauber.

der Link zum Bild funzt net. da kommt Google Bildersuch.

Bei Apps muss ich passen, es gibt aber sicher Lösungen dafür.
Auch ist mir noch unklar, wo die App laufen soll (beim Flug?) und welcher Kartenbereich abgedeckt werden soll. Da geht es u.A. um online- oder offline-Tiles.

Es gibt mehrere Open Source Editoren, die das alles leisten können.

Frage: Welche Platzdaten und wo sollen die gespeichert werden?

Da wird dir schon was einfallen: http://wiki.openstreetmap.org/wiki/Donations

Gruss
walter

Für iOS oder Android? Bei Android würde ich spontan “Mapsforge” sagen. Das unterstützt auch Offline-Karten. Diese Karten kannst du nach deinen Wünschen aus den OSM-Daten generieren und einen eigenen Kartenstil entwickeln. Die Bibliothek unterstützt auch das Hinzufügen von grafischen Objekten.

Natürlich könntest du dir etwas wie Potlatch oder iD anpassen. Damit aber nicht alles mögliche an den Daten geändert wird, müsstest du da schon äußerst viel dran anpassen. Einfacher dürfte es sein, einen separaten Datensatz zu pflegen und einen eigenen JavaScript-basierten Editor zu entwickeln. Geht ja nur um das Zeichnen einiger Linien und Punkte.

Eventuell müsstest du uns die Daten, welche du bzw. die Nutzer erfassen, zur Verfügung stellen. Nämlich dann, wenn sie mit OSM-Daten vermischt werden. Flugplätze sind ja bereits in OSM enthalten, wenn du die Daten ergänzt, wäre das eine Vermischung. Nicht sicher bin ich mir, wenn du OSM als Hintergrund nutzt und die Leute daraus die Koordinaten für ihre Ergänzungen ableiten.

PS: Auf jeden Fall mutig, eine günstige Lösung zu entwickeln. Fast alle Piloten, die ich kenne, nutzen iPhone bzw. iPad, für die es richtig geniale Software mit massig Features gibt.

Das war auch so geplant, da man dort mehrere Ansichten der existierenden Map des genannten Anbieters sieht :slight_smile:

Die Map läuft im Flug. Quasi wie bei der Straßen-Lösung das Navi mitläuft und zeigt wo man ist, läuft das Navi im Flug ebenfalls mit. Greift da allerdings nur auf GPS-Standortdaten der Geräte zurück. Die Tiles müssen (per One-Click-Installation o.ä.) auf das Gerät geladen und von dort aus genutzt werden, da eine flächendeckende Internetanbindung im Himmel nicht garantiert werden kann.

Die “Platzdaten” sind zum Beispiel die Lage der Platzrunde auf der Map - spricht das Routing des An- und Abflugervfahrens. Wenn ich auf einem Platz lande muss ich grob gesagt in einem bestimmten Muster auf den Platz zufliegen, in welchem der Verkehr am Platz geleitet wird. Diese Platzrunde ist in der Grundstruktur gleich - ändert sich aber in Größe und Aufbau von Platz zu Platz je nach lokalen Gegebenheiten.

Für beides… die App ist in AngularJS geschrieben - nicht in xCode (iOS) oder für Android direkt - sondern wird hinterher in einen Container gepresst und läuft quasi als “Web-App im App-Container”.

Ich habe mich bereits mit dem Gedanken abgefunden, einen “eigenen” Datensatz zu pflegen, da ich denke viele Daten haben im OSM Kartensatz an sich nichts zu suchen - Lufträume (in der Höhe und Breite über Grund) oder Zeichnungen von Platzrunden & Anflugverfahren zum Beispiel. Ein schlanker Open-Source Editor verbunden mit einem eigenen Datensatz wo unten drunter eine Map inkl. Geodaten ist - auf der ich im Flug die aktuelle Position anzeigen kann ist ja das was ich suche und mir zusammenbauen will :slight_smile:

Ich selber bin mit Android unterwegs, aber kenne auch viele, ja :slight_smile: Mich nerven da allerdings immer die hohen Kosten der Map-Updates jedes Jahr… vielleicht fliegen deine Bekannten ja auch bald mit meiner Lösung :wink:

Den Teil könntest du vllt. von OsmAnd übernehmen.

Vielleicht wäre das sowieso eine Idee - OsmAnd nehmen und aufbohren.

Vielleicht könntest für solche Zusatzdaten auch umap.openstreetmap.fr als Editor benutzen?
http://umap.openstreetmap.fr/de/map/unbenannte-karte_66520#14/47.1405/13.7009 wäre dann eine Karte, an die Daten kommst du per Teilen-Menü (links “Teilen”, dann rechts “Rohdaten herunterladen”).

Hast du die Karte angelegt und die Linien reingezeichnet? Die Platzrunde und das Kästchen mit dem Nicht-Überfliegen des Ortes sieht nämlich schon ganz gut aus :slight_smile: Oh Gott, ich fühle mich gerade wie der größte Anfänger… aber wie kann ich so eine eigene Karte anlegen? Und zweitens: Diese Karte - inklusive An- & Abflug sowie Sperrlinien kann ich ja wie du sagst exportieren. Diese exportierte Map-Datei könnte ich dann auf dem eigenen Server zum Download In-App anbieten, oder? Dann müsste ich nur (“nur”…höhö…) einen weiteren Layer oben drüber legen können, in welchem ich Marker setzen kann…

Danke dir! :slight_smile:

Oh, ich kann meinen Post leider nicht editieren: umap schaue ich mir mal an - wenn das Exportieren / downloaden der Map geht.

Könnte man diese Karte dann auch über einen externen JS-Editor anpassen lassen, einen solchen wie ich dann den Flugplätzen zur Verfügung stellen könnte? Wenn ja, kennt jemand einen Namen/Webseite für solch einen recht “leichten” Editor? Dann versuche ich mich mal an einer Kombi und dokumentier das Ganze… vlt bekomme ich ja ein Tutorial für solche Szenarien hin :slight_smile:

Ja, ich hab das nach deiner verlinkten Karte reingemalt.

Eine eigene Karte anlegen ist auf der Startseite umap.openstreetmap.fr erklärt.

Meine Idee wäre gewesen: du lässt die Flugplätze jeweils den Editor auf umap.openstreetmap.fr benutzen um eine eigene Karte pro Flugplatz zu erstellen, lädst dann die eingemalten Kartenobjekte von da runter, speicherst sie als Datei auf deinem Server und zeigst sie auf deiner Webseite nurnoch an.

Ansonsten gibt es für leaflet (die Javascript-Kartenbibliothek) ein draw-Plugin, mit dem man einen eigenen Editor bauen kann: https://github.com/Leaflet/Leaflet.draw

Könntest du bitte auch den 2. Teil der Frage beantworten? Besonders weil der mMn wichtiger ist.

Gruss
walter

Oh Entschuldigung! :slight_smile:
Online zum Download ruhig auf einem eigenen Server. Vorerst eventuell über die API der App-Erreichbar im Webspace (nein, kein kleines 1&1 Paket) und danach ggf. über eine Subdomain auf einem Amazon Bucket/Amazon Cloudspace.

In der App selber sollen die Dateien & Updates via klick heruntergeladen werden, als Offline-Tiles, da man “oben” öfters mal kein Netz hat, gerade in ländlichen Gebieten.

uMap ist komplett Open Source, da könnte man auch das Backend mit DB auf einem eigenen Server hosten und ggf. den Editor anpassen:
https://github.com/umap-project/umap

uMap verwendet Leaflet.Editable, das sich evtl. einfacher verwenden und anpassen lässt (siehe auch: http://leafletjs.com/plugins.html#edit-geometries).

Edit: Link ohne Klammer

Klasse! :slight_smile:
Vielen lieben Dank!

Da ich mit Leaflet schon meine Web-Karte drin habe und es für AngularJS auch ein Modul gibt, welches ich dann versuchweise in die App einbinde habe ich mir mal folgendes notiert:

  1. Map-Dateien für Deutschland mit Leaflet in der App anzeigen lassen, welche ich über einen spezifischen Tiles-Server vorher auf das mobile Device laden muss.
  2. Mittels uMap ein paar Marker & Platzrunden via uMap-Karte einmalen und diese widerrum via geoJson exportieren.
  3. Dieses geoJSon-File via Download in die App laden lassen und automatisch im Leaflet-Container einbinden.
  4. Dieses geoJson über die App-Settings ein/ausblenden lassen können (zum Beispiel verschiedene Json-Dateien für verschiedene Fluginformationen).
  5. Eine Update-Funktion welche sich anhand eines Versions-Files auf dem Server abstimmt ob neue Tiles oder geoJsons vorhanden sind.
  6. Leaflet.Editable oder uMap aufsetzen und versuchen die eigene Map zu ändern.

Und wenn ich das richtig verstanden habe, kann ich das alles mit der nun schon angelegten Map hier: https://umap.openstreetmap.fr/de/map/flugdeckcom_66781#10/51.4463/7.1164 machen. Oder eben auf einem eigenen Tiles-Server mit eigener uMap-Instanz…
Oh je, ich seh schon die Monate in’s Land gehen… dabei wollte ich das im April fertig haben :slight_smile:

Wenn jemanden noch was einfällt, was das Ganze abkürzt - oder bereits eine ähnliche Lösung hat, gerne posten.

Versuch das Ganze mal halbwegs gescheit zu dokumentieren :slight_smile:

Da bin ich jetzt beruhigt. Wir hatten auch Entwickler, die wollten solche Daten - hier die Flugbereiche/Zonen - wohl direkt in OSM ablegen. Das hätte ich nicht so toll gefunden. Die Text-Daten der Flughäfen könnten aber ihren Weg nach OSM finden.

Gruss
walter

Ja, mit Leaflet könntest Du das exportierte GeoJSON als Vector Layer laden (3) und mit der Layers Control ein-/ausblenden (4), siehe Tutorials.

Bei vielen Elementen kann das allerdings auch recht schnell träge werden.

Demnach hast Du eh schon vor, einen eigenen Rendering Server für png-Tiles aufzusetzen?

Sonst würde ich noch auf die Tile usage policy hinweisen wollen, da Massen-Downloads von Tiles Probleme machen und nicht erwünscht sind.

Je nach gewünschtem maximalen Zoomlevel und Gebiet kann so ein Download aber auch recht groß werden, siehe Tile Calculator. Für Offline-Karten sind eigentlich eher native Apps üblich, die vorverarbeitete Vektordaten zum Download anbieten und auf dem Gerät live rendern, Mapsforge und OsmAnd wurden ja schon genannt (hier Mapsforge Dateien zum Größen-Vergleich). Diese Apps können dann auch z.B. die Karte in Fahrt-/Flugrichtung rotieren, was mit Leaflet nicht geht.

Ein alternativer Editor wäre evtl. noch geojson.io, der kann z.B. auch GeoJSON Dateien auf GitHub (z.B. je Flughafen?) speichern und öffnen.

Eine komplexere Lösung wäre die OpenStreetMap Infrastruktur für die Platzdaten selbst aufzusetzen, hier eine Übersicht:
http://wiki.openstreetmap.org/wiki/Develop#How_the_pieces_fit_together
http://wiki.openstreetmap.org/wiki/Component_overview

Es gibt auch Ansätze, das mit einem alternativen OSM Stack zu vereinfachen (recht neu): Roll your own OSM with Macrocosm
Also iD Editor (Presets könnte man austauschen) + Macrocosm + PostgreSQL DB.