QV-Vektorkarten

Download Viewer/Compiler 21-feb-2016

Sammelseite für alle Infos zum neuen QV-Vektorkarten-Format.

Das neue Vektorkarten-Format für QV und QVM trägt die Endung „*.qmv“. Es ist eine SQLite-Datenbank mit diversen Tabellen für Linien und Punkte. Das Format der Tabellen ist auf die Bedürfnisse von QV/QVM ausgelegt und folgt keinem vorhandenen Format. Es kann also nur von QV und QVM gelesen und geschrieben werden. Es ist nicht verschlüsselt, man kann sich die Struktur also in einem SQLite-Editor ansehen.

Zum schnellen Zugriff auf Daten wird ein R-Tree benutzt, ein mehrdimensionaler Index.

Das Format ist grundsätzlich nicht beschränkt, außer durch die Limits der SQLite. Es ist für Kartendarstellung und Textsuche gedacht, nicht für Routing. Zu jedem Element in der Datenbank wird ein Zoomlevel gespeichert, ab dem dieses angezeigt werden soll. Bestimmte Elemente, wie z.B. Autobahnen liegen in unterschiedlichen Auflösungen vor. Einmal in geringer Auflösung für Zoomlevel <12 und in voller Auflösung ab Zoomlevel 12. Die Zoomlevel orientieren sich am üblichen Webtile-Standard.

Der Compiler

QV-Vektorkarten werden mit dem QmvCompiler erzeugt. Als Ausgangsdateien dienen OSM-PBF-Dateien, die man von verschiedenen Quellen runterladen kann. Z.B von hier:

Es können auch SHP-Dateien verarbeitet werden, aber das muss noch vernünftig dokumentiert werden. Zurzeit wird das nur intern genutzt, um die Tracks4Africa zu kompilieren.

Um also eine OSM für QV und QVM zu kompilieren:

  • QmvCompiler.exe starten
  • mit + eine tag-mapping-Datei hinzufügen
  • mit + eine (oder mehrere) render-styles-Datei hinzufügen
  • mit + eine (oder mehrere *.PBF) hinzufügen
  • um eine PBF zu entfernen, einfach die Liste mit der Tastatur editieren
  • Name und optional Info eintragen
  • Unter Source OpenStreetMap auswählen
  • als Projekt speichern
  • Start klicken
  • Kaffee trinken, zum Essen gehen oder Schlafen gehen, je nach Größe der PBF…

Projekte werden als *.qmvprj gespeichert. Das sind simple XML-Dateien, die auch in einem Editor bearbeitet werden können. Wenn files ohne vollständigem Pfad angeben werden im string-tag, werden die relativ zur qmvprj gesucht:


?xml version="1.0"?>
<Project xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Name>Namibia OSM, Land</Name>
  <Info>from Namibia_20151212.pbf, Svens XMLs and land-polygons</Info>
  <Source>https://www.openstreetmap.org</Source>
  <MaxLevel>18</MaxLevel>
  <Files>
    <string>Tag-mapping_osm_land_sven_desktop.xml</string>
    <string>OsmaRender_land_sven.xml</string>
    <string>Namibia_20151212.pbf</string>
    <string>..\land-polygons-split-4326\land_polygons.shp</string>
  </Files>
  <Routable>true</Routable>
</Project>

RAM-Bedarf: die PBFs sind so aufgebaut, dass man zuerst alle nodes lesen und cachen muss, bevor man die ways liest, weil dort die nodes gebraucht werden. Auf meinen Rechner mit 8GB kriege ich maximal ca. 1GB-PBFs verarbeitet. Die Germany.PBF ist z.Z. 2.6GB groß. Hierzu braucht man sicher 16GB RAM. Der Compiler ist eine 64-bit app, je mehr RAM vorhanden ist, umso besser.

Tag-Mapping

Das tag-mapping bestimmt, welche Elemente aus dem PBF übernommen werden und ab welchem Zoom-Level sie sichtbar werden in der Karte. Mit einer XML-Datei kann man hierauf Einfluss nehmen. QV benutzt hierfür den Mapsforge-Standard.

Im Ordner SampleXml\Tag-mapping sind zwei Beispiele:

tag-mapping_qvm.xml: das Standard-tag-mapping, nahezu alle Elemente werden verwendet

tag-mapping_roads.xml: nur Straßen werden verwendet.

Diese beiden Beispiele können als Ausgangspunkt dienen für eigene Anpassungen. Kopieren, Umbenennen und editieren. Hierzu sind natürlich Kenntnisse der OSM-Tag-Value Struktur erforderlich. Aufpassen mit „zoom-appear“, ein zu kleiner Wert bei häufig vorkommenden Elementen kann die gesamte Performance versauen.

Dann mit + in die Dateiliste aufnehmen, muss als erste Datei in der Liste stehen.

Wenn keine xml zum Projekt hinzugefügt wird, wird eine Fehlermeldung ausgegeben.

Render-Styles

Ein Render-Style bestimmt, wie die Elemente gezeichnet werden, also Farbe, Strichstärken, Symbole etc.

QV benutzt hierzu eine xml-Datei, ebenfalls im Mapsforge-Standard.

Im Ordner SampleXml\Render-styles sind einige Beispiele. Fügen Sie einfach eine oder mehrere dieser xml-Dateien zum Projekt hinzu. Die Render-Styles werden dann zusammen mit den Bitmaps in der Karte gespeichert und - wenn es mehrere sind - kann der Anwender dann unter MapInfo auswählen.

Beim Kompilieren werden die Bitmaps im selben Ordner wie die xml gesucht oder in einem Unterordner. Es werden nur png und jpg unterstützt, keine svg.

Land - Ozean

Leider enthalten die OSM-Daten nur sehr beschränkt Daten zur Darstellung von Land und Ozean, was auf der anderen Seite aber wichtig ist für eine ansprechende Kartendarstellung bei kleinen Maßstäben.

Glücklicherweise haben sich die Jungs von OpenStreetmapData dem Problem angenommen, und einen hervorragenden Datensatz mit Land-Polygonen erzeugt. Diesen Datensatz bitte runterladen und auspacken, dann die darin enthaltene land-polygon.shp und simplified_land_polygons.shp zum Projekt hinzufügen und zwar als letztes.

Im tag-mapping hinzufügen und alle bisherigen Einträge wie „coastline“ oder „ocean“ entfernen:


<osm-tag key="shp" value="land-polygons" zoom-appear="9" />
<osm-tag key="shp" value="simplified-land-polygons" zoom-appear="0" zoom-disappear="9" />

Im render-theme werden dann die Farben bestimmt. Und zwar im header unter map-background die Farbe des Ozeans und dann als erster way der Eintrag für „land-polygons“ mit der gewünschten Farbe:


<rendertheme ... map-background="#b5d6f1">

<rule e="way" k="shp" v="land-polygons|simplified-land-polygons">
    <area fill="#D8C797" />
    <line stroke="#D8C797" stroke-width="1"  />
  </rule>

Routing

Mindestens ein Profil muß ausgewählt sein:

  • Car: schnellster Weg
  • Car (shortest): kürzester Weg
  • Car Overland: hierbei wird nur ein reduziertes Straßennetz kompiliert ohne „residential“, „living_street“ und „unclassified“
  • Bicycle: Fahrrad schnellster Weg
  • Pedestrian: Zu Fuß, schnellster Weg

Car Overland dient ausschließlich, um eine QMR für sehr große Regionen z.b. Europa zu erstellen und darf nicht in Kombination mit anderen genutzt werden.

Alle anderen können auch kombiniert werden. Jede gewählte Option vergrößert natürlich die QMR, aber dafür kann man dann in QVM bequem die unterschiedlichen Fortbewegungsmittel auswählen aus einer Routing-Datei.

Der Compiler kann nur eine PBF in eine QMR umwandeln. Wenn Sie eine routingfähige Karte mit mehreren, angrenzenden Ländern erstellen wollen, müssen alle Länder in einer PBF enthalten sein (z.B. von http://extract.bbbike.org/).

Um diese QMR mit QVM 3 zu nutzen, einfach in den Ordner QVM_Data\Routing kopieren und beim Routing als Profil „local routing file“ auswählen.

Um diese mit QV8 zu nutzen, ein neues Routingprofil erstellen und diese Datei auswählen.

Der Viewer

Der Viewer dient zur Kontrolle und zum „spielen“ mit verschiedenen Parametern, um Layout und Performance zu beeinflussen.

Theme

Hier kann das aktuelle Rendertheme ausgewählt werden aus der Liste, die beim kompilieren definiert wurde.

Mit dem Schalter Edit style xml kann das aktuelle Rendertheme bearbeiten. Wenn der Haken gesetzt ist, wird das Rendertheme als XML exportiert in den Ordner, in dem die Karte liegt.

Man kann diese XML dann in einem Editor eigener Wahl öffnen und bearbeiten. Mit Reload wird im Editor gespeicherte Version wieder eingelesen und man sieht sofort die Änderungen in der Karte.

Suchen

Die QMV enthält zu jedem Weg oder Fläche ein Label, nach dem auch gesucht werden kann. Bei POIs wird zusätzlich zum Label der komplette Datensatz im Feld Info gespeichert, nach dem auch gesucht werden kann.

Performance

Die gefühlte Performance der QMV wird von der Menge an sichtbaren Elementen im aktuellen Zoomlevel bestimmt. Mit Zoom offset kann man diesen verschieben. Ein Offset kleiner 0 erhöht die Performance, weil mit einem niedrigeren Zoomlevel gearbeitet wird. Man muss also weiter reinzoomen, um Details zu sehen. Ein Offset größer 0 verringert die Performance, weil bereits Objekte eines höheren Zoomlevels geladen werden. Dies ist hilfreich in dünn-besiedelten Gegenden, wie Namibia z.B. um auch bei kleinem Zoomlevel viele Details zu sehen.

Diese Option wird auch in QV-Mobile enthalten sein.

Linewidth factor nur zum Testen, dient zum Einstellen der Straßenbreite.

Max. elements/style nur zum Testen, wenn man auf Counts klickt, bekommt man eine Liste, wie viele Elemente von jedem Typ aktuell geladen sind. Objekte, die häufiger vorkommen als dieser Wert, werden nicht gerendert.

Routing

Routingdateien haben die Endung *.qmr und werden vom Compiler erstellt, wenn der Schalter Routable gesetzt ist.

Die Routing-Funktionen im Viewer sind z.Z. noch sehr rudimentär:

  • qmr laden
  • Schalter „Routing“ EIN
  • Punkte in die Karte klicken
  • Route wird berechnet, eingezeichnet und Statistik angezeigt

Zum Beenden Schalter „Routing“ AUS

Pakete

24.11.2015 QVM3

Pakete sind zip-Dateien mit der Endung *.QMP, welche Datenbanken (*.qvmdb), Karten (*.qmz, *.qmv) und Routingfiles (*.qmr) enthalten können.

Das Paket muss die Dateien in der gleichen Ordner-Struktur enthalten, wie in QVM_Data. Also Karten im Ordner Maps, Datenbanken in DBs und Routing-Dateien in Routing. Beim Installieren des Paketes werden alle Dateien an die entsprechende Position im Device kopiert. Zusätzlich muss eine *.xml (Name beliebig) im root enthalten sein mit folgendem Aufbau:


<?xml version="1.0"?>
<PackageInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Info>This is a package for QuoVadis Mobile.
It contains routing file "Namibia.mv.cf", map "Namibia OSM" and a database "Namibia Package Test.qvmdb"</Info>
  <CloseAllMaps>true</CloseAllMaps>
  <UnloadAllMarks>true</UnloadAllMarks>
  <MapCenterLat>-22.5</MapCenterLat>
  <MapCenterLon>17.4</MapCenterLon>
  <MapZoomLevel>10</MapZoomLevel>
</PackageInfo>

Mit den Tags kann man das Verhalten von QVM beim Installieren des Paketes steuern:

Info Dieser Text wird beim Installieren angezeigt, der User kann dann noch Abbrechen
CloseAllMaps True oder False, steuert, ob evtl. vorhandene Karten alle ausgeblendet werden sollen, damit die Karte(n) aus dem Paket sichtbar sind.
UnloadAllMarks True oder False, steuert, ob evtl. vorhandene Markierungen alle ausgeblendet werden sollen, damit die Markierungen aus dem Paket sichtbar sind.
MapCenterLat 0 oder Breitengrad der Kartenmitte beim ersten Öffnen der Karte
MapCenterLon 0 oder Längengrad der Kartenmitte beim ersten Öffnen der Karte
MapZoomLevel 0 oder Zoomlevel der Karte beim ersten Öffnen

In der App auf der Start-Seite werden sie mit Paket installieren vom ***-Menu installiert. Dies muss unmittelbar nach Start der App gemacht werden. Nachdem man eine der sechs Hauptseiten aufgerufen hat, steht der Befehl nicht mehr zur Verfügung.