Datenquellen in Iwan7

Iwan kann auf verschiedene Datenquellen zugreifen. Dabei wird intern grob in die Kategorien

unterschieden. Je nach Typ sind bestimmte Operationen möglich. Jeder Ebenentyp kann zumindest in der Karte dargestellt werden. Abfragen per GeoSQL sind auf alle Vector Layer und einige andere möglich.

Die Ebenen werden beim ersten Zugriff "geladen". D.H. es werden einige Metadaten aus der Quelle ermittelt. Der Datenzugriff erfolgt i.d.R. immer direkt auf den angebundenen Datenspeicher, d.h. es erfolgt kein Import. Ein Cacheing wird nur bei bestimmten Datentypen durchgeführt. Der Server überwacht dann Änderungen an der Datenquelle und aktualisiert den Cache automatisch.

Die Beschreibung der Datenquelle erfolgt per Json-Notation. Die Argumente sind dabei abhängig vom Quelltyp. Zur Identifikation der Ebenen wird ein sog. LayerName vergeben. Ebenen können zudem in Projekten organisiert werden.

Generelle Features

Die in Iwan angebundenen Datenquellen sind recht flexibel ausgelegt.

Grundsätzlich gilt:

  • Geometrietypen pro Quelle können gemischt vorkommen, d.h. es ist zulässig das bspw. eine Tabelle Punkt-, Flächen- und Liniengeometrien enthält. Für diese Mischung von Geometrien liegen keine Einschränkungen vor, weder bei der Darstellung noch bei Abfragen.
  • techn. Metadaten an Quellen sind optional, d.h., wir bestehen nicht auf Registrierungen der Quellen (im jeweiligen System). Z.B. ist bei Datenbanken alles als Datenquelle möglich, was per SELECT * FROM ... abfragbar ist.
  • Mehrere Geometriespalten werden problemlos verarbeitet, lediglich für die Kartendarstellung ist eine "Hauptgeometrie" zu definieren.
  • Gleichbehandlung der Quellen ist garantiert. Vor allem im Bereich der Abfragen steht mit GeoSQL ein universelles Mittel zur Verfügung. Der Grundsatz bei der Implementierung ist: "Mach was geht in der originären Quelle, den Rest dann halt selber".

JSON Definition

Jede Datenquellenbeschreibung erfolgt in Form eines Json Objektes. Der Objektname wird dabei intern zum Ebenennamen. Obligatorisch für alle Definitionen ist die Angabe type. Die weiteren Argumente sind abhängig vom Quelltyp.

Sofern die Ebene Darstellungen per CSS unterstützt, kann immer cssFile oder style definiert werden.

Bsp.: Legt eine Ebene mit dem internen Bezeichner "STR" an, die auf eine Shape-Datei verweist.

{
"STR": {
    "type": "Shapefile",
    "filename": "..\\strasse.shp",
    "cssfile": "D:\\CSS\\str.css",
    "loadErrorBehavior":"Strict"
   }
}

Welchem Projekt die Ebene zugewiesen wird, ist vom Aufrufer abhängig und nicht in der Ebenenbeschreibung enthalten.

Hinweis: Der integrierte JSON Parser unterstützt eine erweiterte Syntax. Es können Kommentare angegeben werden und Zeichenfolgen können Umbrüche enthalten. Kommentare sind // (Single-Line) oder als Block durch /* und */ begrenzt möglich.

Der Ebenenname ist pro Projekt eindeutig. Wenn eine Ebene bereits vorhanden ist, kann optional das Attribut "onexist" angegeben werden.

Dabei kann einer der Werte verwendet werden: 1)

  • ThrowIfExistsWithSameName : (Standard), Fehler melden, wenn bereits vorhanden

  • UseExisting : alle Argumente ignorieren und ohne Fehler die Beschreibung der vorhandenen Ebene zurückgeben

  • UseExistingIfLoadedBefore : Neuladen, wenn der Zeitpunkt des letzten Ladevorganges dieser Ebene vor dem mittels IfLoadedBefore übergebenem Zeitpunkt liegt.

    • IfLoadedBefore muss in diesem Zusammenhang angegeben werden, der Zeitwert ist in der in ISO8601 beschriebenen Form anzugeben (Bsp.: "2016-02-25T18:23:27.9690000Z")
  • ReplaceExisting : neue Ebene bereitstellen, vorhandene Ebene entladen und die Beschreibung der neuen Ebene zurückgeben (in dieser Reihenfolge)

1) diese Angaben sind von der Implementierung des Layermanagers abhängig, konkret beschreibt dies die Implementierung in Iwan7

Ebenennamen dürfen keines der Zeichen ' " : . < > - enthalten und eine Länge von 255 nicht überschreiten.

Einige Ebenen werten zudem das Flag für die Fehlertoleranz aus. Dieses wird über das Attribut "loadErrorBehavior" gesteuert. Standardwert ist "Strict". Einige Fehler können über die Angabe von "Lax" ignoriert werden. Ein Hinweise auf die Auswertung ist bei der Dokumentation zum Ebenentyp angegeben.

Aber der Version 7.0.4 steht für Optimierungen von Zeichenoperationen noch alternativeRenderSources zur Verfügung. Auch hier ist der Hinweis auf die Nutzungsmöglichkeit in der Dokumentation zum Ebenentyp angegeben.

Übersicht der aktuell verfügbaren Datenquellen

Alle unten aufgeführten Datenquellen sind bereits vollständig implementiert. Ist noch kein Link zur Beschreibung vorhanden, ist lediglich die Dokumenation noch nicht vollständig.

Vektor

PostgreSQL/Postgis

OGC Web Feature Server

OGC GeoPackage (Feature)

Virtuelle Layer

ORACLE (Spatial/Locator)

Microsoft SQL Server

ESRI© Shapefile

GML Dateien

Text-Dateien (csv)

Verortete Dateien (z.B. EXIF)

Bilddaten

Tiff

RasterLite2

OGC GeoPackage (Tile)

OGC Webmap Tile Service (WMTS)

OpenStreetMap (XYZ)

Windows(©) Metafiles (EMF)

CAD

DXF Dateien

GRID

NetCDF


Zuletzt geändert: 16.05.2018 19:46:07 (erstmals erstellt 12.03.2017)