Map Server

Aufbau und Schnittstellen des nxMapServers

Umsetzung als Windows-Dienst

Der nxMapServer ist als Windows-Dienst umgesetzt und benötigt so keinen angemeldeten Benutzer, er läuft permanent im Hintergrund und kann nicht versehentlich beendet werden. Zusätzlich können z.B. automatische Updates aktiviert bleiben - bei einem updatebedingten Neustart des Rechners ist der MapServer lediglich für die Neustartzeit nicht erreichbar, da er vom System automatisch wieder gestartet wird.


Kontrollprogramm

Um einen schnellen Überblick des Serverzustands zu ermöglichen und eine bequeme Konfigurationsmöglichkeit zur Verfügung zu stellen, wird ein sog. Kontrollprogramm mit dem Server ausgeliefert. Dieses ermöglicht das Starten und Stoppen des Dienstes, sowie alle nötigen Konfigurationseinstellungen.


nxMapManager

Mit der Installation des Mapservers wird der nxMapManager installiert. Dieser ermöglicht Ihnen einfach und unkompliziert Ihre Navimatix-Karten zu verwalten. Es werden bereits installierte Karten angezeigt, sowie weitere verfügbare. Es stehen ihnen jeder Zeit kostenlose Karten auf Basis von OSM zur Verfügung. Haben Sie Karten von Navimatix gekauft, so haben Sie über ein Login Zugang zu diesen.


Administration per Weboberfläche

Die Verwaltung von Nutzern und Zugriffsrechten erfolgt beim MapServer bequem über eine Weboberfläche. Jede aufrufbare Funktion der Schnittstelle (REST) kann öffentlich freigegeben, oder nur bestimmten Nutzern erlaubt werden. Hier kann ebenso der Status des Servers ermittelt werden, Kartenansichten können vorab betrachtet werden und Geocodings können zum Test ausgeführt werden.


WMS-Fähigkeit

Der nxMapServer unterstützt die beiden WMS Standardkommandos der WMS-Spezifikation und kann damit in allen GIS genutzt werden, welche den WMS-Standard ihrerseits unterstützen. Das sind zum Beispiel Grass, ArcGIS-Komponenten und OpenJump.


Verwendbare Karten

Mit dem nxMapServer sind alle Navimatix-Karten verwendbar. Es können beliebig viele Karten in einer Serverinstanz geladen werden. Eine Navimatix-Karte besteht aus Kartendaten von bestimmten Rohkartendatenanbietern wie NAVTEQ (Nokia), OpenStreetMap oder anderen lokalen Anbietern, im Navimatix Kartenformat. Dieses unterstützt die wichtigen Kartenfunktionen (Rendering, GeoCoding/ReverseGeoCoding, Routenberechnung, Umkreissuche, etc...) besonders effizient.

Systemvoraussetzungen

► CPU: Dual-Core-CPU 2 GHz

► Arbeitsspeicher: 4 GB RAM

► Festplatte: 10 GB freier Speicher

► Betriebssystem: ab Windows XP bis Windows 10, 32bit oder 64bit

Da der nxMapServer als nativer Windows-Dienst (gemanagt im service control panel von Windows) realisiert ist, benötigt er lediglich das Datenbanksystem "Firebird" als Voraussetzung. Je nach verwendetem Systemtyp (x86 oder x64) empfehlen wir die entsprechende Version von http://www.firebirdsql.org/ zu installieren.

Eine Java-VM oder ein .NET-Framework werden nicht benötigt.


Weitere Hinweise

Prinzipiell wirkt sich eine höhere Leistung des Rechners, auf dem der nxMapServer läuft, immer positiv auf die Performance aus. Je mehr CPU-Kerne eine Maschine hat, desto mehr Anfragen können von diesem Server gleichzeitig bearbeitet werden, mehr RAM führt zu weniger Festplattenzugriffen.

Je nach Größe und Anzahl der verwendeten Karten wird die Festplattengeschwindigkeit immer wichtiger, so empfehlen wir die Karten in ein RAM-Drive zu legen oder SSD-Festplatten zu verwenden.

API

Development Kit

Der nxMapServer kann mit Zugriffsklassen für C# und Delphi ausgeliefert werden. Es existiert jeweils ein Control, welches die Kacheln einer Kartenansicht abruft und zu einer Gesamtkarte zusammenfügt. Darüber hinaus existieren Klassen, welche einen einfachen Zugriff auf die GeoCoding-Funktionen ermöglichen. Für Java existieren Zugriffsbibliotheken aus dem Umfeld von OpenStreetMap, diese können ebenso verwendet werden, da der nxMapServer eine OSM-kompatible Schnittstelle bereitstellt. Mit solchen Zugriffsklassen müssen keine HTTP-Abfragen zusammengestellt und deren Rückgaben interpretiert werden, eigene Entwicklungen sind also bequem umsetzbar.

Für andere Sprachen und Umgebungen kann der Zugriff auf den Server mit einfachen HTTP-Abfragen umgesetzt werden. Der nxMapServer arbeitet mit einer REST-Schnittstelle.


Kachelschnittstelle "Slippy Map"

OpenStreetMap definiert eine Nummerierung der einzelnen Kacheln, aus denen eine Slippy Map zusammengesetzt wird. Der nxMapServer arbeitet mit der selben Kachelstruktur. Eine solche Abfrage zum Beispiel http://asode.de/maptilesosm/0/0/0.png liefert, wie bei OSM, die oberste Kachel.

Dem MapServer liegen Vektorkarten zugrunde, ausgeliefert werden aber Rastergrafiken in Form der Kacheln (tiles). Diese Umwandlung, Rendering, führt der Server automatisch bei Bedarf aus. Wurde die entsprechende Kachel bereits gerendert, so wird die bereits abgespeicherte Kachel direkt ausgeliefert. Wenn nicht, wird diese zuerst gerendert, dann gespeichert und dann ausgeliefert. Dieser sog. Kachelcache kann viele GB Festplattenplatz benötigen.

Weitere Informationen unter:
http://wiki.openstreetmap.org/wiki/DE:Slippy_Map und
http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames


REST für GeoCoding

Die Kommandos zum GeoCoding werden ebenfalls über HTTP mit Parametern aufgerufen und liefern ein XML-Dokument zurück. Eine Abfrage der Art: http://asode.de/getaddressdatabyaddress?mapcid=0&country=Deutschland&city=Jena&street=moritz-von-rohr-str liefert eine Rückgabe:

<?xml version="1.0" encoding="UTF-8" ?>
- <namhttpservice mapcid="1">

<address country="Deutschland" countrycode="DE" countrypart="Thüringen" countrydistrict="Jena" city="Jena" citypart="" street="Moritz-von-Rohr-Strasse" house="" zipcode="07745" building="" language="" administrationid="85220" administrationname="Jena" streetid="1562518" streetname="Moritz-von-Rohr-Strasse" roadelementid="9087006" longitude="11.56931019" latitude="50.91606140" />

</namhttpservice>

Bei der Anfrage kann eine gewünschte Zielsprache angegeben werden. Existieren in der Karte entsprechende Orte, Straßen, etc. in dieser Sprache, so wird in der XML-Rückgabe alles in dieser Sprache stehen. Beispiel: Москва́ kann als Moskau ausgegeben werden.

Eine mögliche Abfrage für das Reverse-GeoCoding, also das Ermitteln einer Adresse aus einer gegebenen Position auf der Karte, könnte so beschaffen sein: http://asode.de/getaddressbygeoposition?mapcid=0&longitude=11.56931019&latitude=50.91606140

Auch hier liefert der Server ein XML-Dokument mit Stadt, Land, Straße, PLZ und Hausnummer.

Weitere Funktionen zum Thema GeoCoding liefern zum Beispiel Listen von Adressen, welche einem bestimmten Suchmuster entsprechen.

Zugriff auf den Mapserver per OpenLayers

OpenLayers ist eine JavaScript-Bibliothek zur einfachen Integration von Karten in Webseiten und Webanwendungen. Dabei kennt dieses Framework verschiedene Quellen für Kartendaten unterschiedlicher Art, eine davon ist der Zugriff auf gekachelte OpenStreetMap-Daten.

Der Navimatix MapServer verhält sich beim Ausliefern der Kacheln kompatibel zum OSM-Server und daher kann hier der dafür gedachte Layer in OpenLayers genutzt werden.

http://openlayers.org/

http://de.wikipedia.org/wiki/OpenLayers


HTML-Einbettung

In einer HTML-Seite müssen 2 JavaScript-Dateien eingebunden werden:

OpenLayers in HTML einbinden...

<script src="http://openlayers.org/api/OpenLayers.js"></script>

Initialisierungen der Karte in einer eigenen Scriptdatei, diese einbinden...

<script src="OpenLayersConnector.js"></script>

...und in der HTML-Datei die Funktion aufrufen, in der Karte, Layer, usw. initialisiert werden.

<body onload="initOL()">

OpenLayersConnector.js

var OpenLayersMap;


function initOL() {

// Map erstellen...

OpenLayersMap = new OpenLayers.Map({

div: "map",

allOverlays: true

});

// Layer erstellen...

url = "http://maps.navimatix.net/api/maptilesosm/${z}/${x}/${y}.png";

nammap = new OpenLayers.Layer.OSM("Navimatix Map", url);

OpenLayersMap.addLayers([nammap]);

OpenLayersMap.zoomToMaxExtent();

nammap.setVisibility(true);

}


Online Demo - Mapserver mit OpenLayers

Sie können die Karte ziehen und zoomen...

[osm_map_v3 map_center="50.919,11.571" zoom="17" width="100%" height="300" control="fullscreen,scaleline"]


Downloads

OpenLayersConnector.js

OpenLayersView.html

Ein neues Projekt?

Wir sind gespannt!

Senden Sie uns eine Nachricht und wir informieren Sie näher über unsere individuellen Software-Lösungen!

    Hinweise zum Datenschutz gelesen und akzeptiert.

    Kontaktieren Sie uns
    close slider

      Wir freuen uns auf den Kontakt mit Ihnen

      Hinterlassen Sie eine Nachricht für uns und wir treten schnellst möglich mit Ihnen in Verbindung.