Maps Widget - Hinweise und Einschränkungen

Hinweise

Offline Warning Plugin

Um dem Benutzer anzuzeigen, dass momentan keine online Daten zur Verfügung stehen wird das OfflineWarning Plugin in der rechten oberen Ecke des Maps Widgets angezeigt.

Das Plugin ist standardmäßig aktiviert und kann über die Funktion setPluginData() (plugin = "offlinewarning") angepasst oder deaktiviert werden.

Folgende für dieses Plugin spezifische Einstellungen stehen zur Verfügung und können angepasst werden:

  • "textSize" - Default:14
  • "textColor" - Default: "#00ffff"
  • "offlineText" - Default: "OFFLINE"

Beispiel

Um das Plugin zu deaktivieren kann folgender Befehl verwendet werden:

MyMapsWidget.setPluginData("offlinewarning", "enabled", FALSE);
Anmerkung:

Der angezeigte Text des Plugins ist nicht lokalisiert. Um den Text an die im Projekt verwendete Sprache anzupassen muss die offlineText Einstellung des Plugins entsprechend manuell in Control angepasst werden.

Cache Ladereihenfolge - Projekt / Produkt

Die grundlegende Ladereihenfolge für das Map Widget ist gleich wie die Reihenfolge innerhalb des Produkts. Das Widget versucht die erforderlichen Dateien aus dem Projektverzeichnis zu laden und wenn diese dort nicht zur Verfügung stehen werden die Daten aus dem Ordner der Produktinstallation geladen.

Anders als bei der Standard Ladereihenfolge unterscheiden sich die durchsuchten Ordnerstrukturen im zwischen Projekt und Produkt. Während innerhalb des Produkts die Struktur <Produkt>/data/marble/maps/earth verwendet wird muss innerhalb des Projektes die Struktur <Projekt>/data/maps/maps/earth verwendet werden.

Wenn das Projektverzeichnis für das Laden der gecachten Inhalte eines existierenden MapThemes (z.B. OpenStreetMap) benutzt wird ist es ausreichend nur neue Inhalte innerhalb des Projektes abzulegen. Die bestehenden Daten des Produkts (z.B. dgml Datei oder der Level 0 Cache) werden automatisch aus dem Produkt herangezogen, solange der gleiche Verzeichnisname verwendet wird, z.B.:

<product>
-data
--marble
---maps
----earth
-----openstreetmap
------0
-------0
------openstreetmap.dgml
<project>
-data
--maps
---maps
----earth
-----openstreetmap
------1
-------0
-------1
-----2
------0
------1
------2
------3
-----...

Wenn ein Map Tile mehrfach vorhanden ist erhält der benutzerspezifische Cache die höchste Priorität, gefolgt vom Projektverzeichnis und an letzter Stelle dem Produkt Verzeichnis.

Der benutzerspezifische Cache befindet sich unter:

  • Windows: C:\Users\<user>\AppData\Local\.marble\data\maps\earth
  • Linux: /home/<user>/.local/share/marble/maps

Unabhängig wo sich das Tile befindet wird es, sollte es älter als das Ablauf Intervall des MapThemes sein, neu heruntergeladen wenn die Verbindung online ist. Das aktuellste Tile wird in den benutzerspezifischen Cache abgelegt (und erhält dadurch die höchste Priorität). Wenn das Tile noch nicht abgelaufen ist, wird kein Download durchgeführt.

Cache Limits

Das Ändern des Cache Limits (volatileTileCacheLimit oder persistentTileCacheLimit) wird erst nach dem Neustart des UIs wirksam. Ebenfalls gelten diese Limits nur für den momentan Betriebssystem Benutzer.

Für den persistenten Tile Cache werden die primären Layer (1-3) innerhalb einer Karte nie gelöscht. Diese gelten auch nicht für die Berechnung der Cache Limits.

Verzeichnisse innerhalb des Caches werden nie gelöscht.

Map Widget Eigenschaften innerhalb von .dgml Dateien

Bitte beachten Sie, dass das Laden einer neuen mapThemeId Änderungen an bereits durchgeführten Einstellungen innerhalb des GEDIs oder Control überschreiben könnte, da Kartenspezifische Einstellungen und Anzeigeparameter innerhalb des Themes hinterlegt sein können. Das Anpassen der Eigenschaften nach dem Laden der .dgml Datei oder das Anpassen der .dgml Datei selbst ermöglicht das Umgehen dieser unerwarteten Änderungen.

Lesen von DGML Dateien

Eine kompakte CTRL Bibliothek zum Lesen von .dgml Dateien innerhalb von Control finden Sie innerhalb des Maps Widget Demonstrations Panel Ordners.

Lokalisierung von Koordinaten

Die Funktionen die mit Koordinaten umgehen können erlauben sowohl den Einsatz von float als auch string Eingaben. Für string Koordinaten muss darauf geachtet werden, dass diese lokalisiert werden. Aus diesem Grund müssen die Angaben mit den jeweligen Equivalent zu (N)ord, (S)üd, (Ost) und (W)est angegeben werden.

Es wird empfohlen die string Versionen nur zu verwenden, wenn diese für Eingaben durch den Anwender erforderlich sind.

OpenStreetMap Dateigröße

Export Dateien der OSM Datenbank (.osm) beinhalten alle Daten der gewählten Region, inklusive historischer Informationen (wie Autor, Zeitstemple, Version) wovon für den Einsatz innerhalb des Maps Widgets nur ein Bruchteil benötigt wird.

Das Laden von .osm Dateien in das Maps Widget benötigt eine hohe Anzahl an Speicher (zumindest das fünffache der Dateigröße der .osm Datei) und aus diesem Grund ist es wichtig nicht relevante Informationen aus diesen Dateien vor dem Öffnen im Widget zu entfernen.

Filtern

Osmfilter (https://wiki.openstreetmap.org/wiki/Osmfilter) ist ein Programm, dass genau diese Anforderung erfüllt: Es nimmt die .osm Datei und entfernt Informationen die nicht benötigt werden und schreibt das Ergebnis in eine kleinere .osm Datei. Eine detailierte BEschreibung findet sich online, anbei ein Beispiel:

Der Download für Eisenstadt und der näheren Umgebung ergibt eine .osm Datei mit rund 95 MB.

Abbildung 1. OSM - Eisenstadt

Das nachfolgende Kommando wurde verwendet um diese Datei zu filtern und nur noch die für die Anzeige erforderlichen Informationen zu beinhalten:

SET PROJ_DIR=D:\WinCC_OA_Proj\Lang3\data\maps
osmfilter --parameter-file=.\filter.txt %PROJ_DIR%\eisenstadtKomplett.osm >%PROJ_DIR%\eisenstadtFiltered.osm

Alle Filter Parameter finden sich in der Datei filter.txt:

--drop-version
--keep=
highway=motorway =motorway_link =primary =primary_link=secondary =secondary_link
admin_level
natural=coastline =water =wood
landuse
railway=rail =light_rail
place=city =town =village
waterway=river =stream
marble_land=landmass

Das Ergebnis ist eine .osm Datei mit rund 9 MB. Der Parameter --drop-version entfernt die historischen Informationen wohingegen der parameter --keep festlegt welche Objekte im Ergebnis behalten werden.

Abhängig von der Anwendung muss entscheiden werden welche Filter benötigt werden. Das grundlegende Problem ist hierbei der Umstand, dass um eine gefilterte Datei zu erstellen mit einer (typischerweise) sehr großen, vollständigen Datei begonnen werden muss.

Es steht ebenfalls ein Download Server zur Verfügung der es erlaubt exakt zu spezifizieren welche Teile der OSM Datenbank heruntergeladen werden sollen. Dieser hat jedoch auch eigene Limitierungen. Mehr Informationen finden Sie hier: https://wiki.openstreetmap.org/wiki/Overpass_API.

Kompression

.osm Dateien sind XML Dateien, dadurch sind diese nicht sehr effizient. Aus diesem Grund gibt es auch ein binäres Format für .osm Dateien: .o5m. Ein Konverter zwischen den Formaten steht zur Verfügung und damit kann die Beispiel Datei von oberhalb mittels folgendem Befehl konvertiert werden:

osmconvert64 --out-o5m %PROJ_DIR%\eisenstadtFiltered.osm >%PROJ_DIR%\eisenstadt.o5m

Die Ergebnis Datei ist etwas mehr als 1 MB groß und es muss weiterhin mit einem Ansteig an Speicherbedarfs beim Laden innerhalb des Widgets gerechnet werden (auf rund 50 MB), jedoch kann diese komprimierte Datei schneller heruntergeladen werden und, wenn erforderlich, leichter verteilt werden.

Verbindungsabbruch / Alive Timeout

Sollte es bei der Verwendung des Maps Widgets und großem Kartenmaterial innerhalb eines Desktop UIs oder der Mobile UI Applikation zu Verbindungsverlusten kommen kann mit Hilfe des Config Eintrages [ui] aliveTimeout die verfügbare Zeit für den Download der Projektdaten erhöht werden um einen Timeout des UIs zu verhindern.

Einschränkungen

Folgende Einschränkungen müssen bei der Verwendung des Maps Widgets beachtet werden:

  • Aufgrund Einschränkungen des Betriebssystems wird das Maps Widget nicht für die iOS Version der Mobile UI Applikation unterstützt.
  • Das Maps Widget darf nicht in sicherheitsrelevanten Projekten eingesetzt werden.
  • Die Anzeige von Karteninhalten ist nicht auf Pixel genau und durch interne Renderkalkulationen kann es bei überlagernden Objekten (Flüsse, Städte, etc.) und Beschriftungen bei jedem Aufschalten der Karte zu Abweichungen der Anzeige kommen.
  • Dateien mit Kartenmaterial die größer als 300 MB sind können nicht geladen werden.