Datentypen ---------- PlexMap kann sowohl strukturierte als auch unstrukturierte (Schema-lose) Daten verwalten. Dennoch setzt PlexMap großen Wert auf die explizite Typisierung der Daten. Das bedeutet, dass sowohl der Anwender -- als auch PlexMap -- im Magazine und im Switchboard zu jeder Zeit wissen, mit welcher Art von Daten gearbeitet wird. Ein Vorteil einer solchen Typisierung ist, dass Fehler durch falsche, ungewollte Verknüpfungen oder Importe früh abgefangen werden, ohne später gravierende Auswirkungen zu haben. Es gibt für jeden Datentypen zur einfachen Wiedererkennung ein Symbol. Diese Symbole werden in PlexMap durchgängig verwendet, wie etwa im Magazine und im Switchboard. .. _type-anything: Anything ======== Der Typ **Anything** ist der Obertyp für jegliche Datentypen. Wenn eine Funktion diesen Typ als Eingabe hat, werden also alle Datentypen akzeptiert. Als Beispiel sei hier die Funktion *Teilmenge nehmen* genannt, bei der es egal ist, welche Art von Daten übergeben werden. Es wird immer ein Teil dieses Datensatzen zurückgegeben. Weitere, sogenannte *generische* Funktionen finden Sie im :ref:`library-gen`. .. _type-bbox: BBOX ==== .. image:: type_icons/bbox.* :width: 50 px :align: left Der Typ **BBOX** steht für eine geografische Bounding Box, also einen rechteckigen Bereich, der über vier Werte (West, Süd, Ost, Nord bzw. Min-X, Min-Y, Max-X, Max-Y) definiert werden kann. PlexMap geht davon aus, dass sich die Bounding Box im Standardkoordinatensystem der Installation befindet, es gibt aber auch Funktionen zum Reprojizieren einer Bounding Box. .. _type-bbox3d: BBOX3D ====== .. image:: type_icons/bbox.* :width: 50 px :align: left Der Typ **BBOX3D** ist vergleichbar mit :ref:`type-bbox`, nur dass dieser für eine 3D-Bounding Box steht. BBOX3D ist über sechs Werte (Min-X, Min-Y, Min-Z, Max-X, Max-Y, Max-Z) definiert. .. _type-bool: Bool ==== .. image:: type_icons/boolean.* :width: 50 px :align: left Objekte vom Typ **Bool** sind die einfachsten Datentypen in PlexMap. Sie können entweder *wahr* oder *falsch* sein. Objekte dieses Typs werden meistens in Parametern von Switchboard-Funktionen verwendet, um das Verhalten der Funktionen zu verändern. .. _type-cityobject: Cityobject ========== .. image:: type_icons/cityobject.* :width: 50 px :align: left Objekte vom Typ **cityobject** sind Stadtobjekte im Sinne des CityGML-Standards (Klasse *CityObject*). So sind beispielweise alle Gebäude aus einem CityGML-Stadtmodell Ausprägungen von diesem Typ. Konzeptionell bildet der Typ *cityobject* die gesamte CityGML-Semantik eines Objektes ab. .. _type-color: Color ===== .. image:: type_icons/color.* :width: 50 px :align: left Objekte vom Typ **color** repräsentieren Farben. Intern verwaltet PlexMap 4-Tupel mit Rot-, Grün-, Blau- und Tranzparenzwert. Viele Switchboard-Funktionen nehmen Farben entgegen, wie z.B. die Funktion *Wand-Dach-Einfärben*. Farben können innerhalb von PlexMap einerseits mit dem Farbeditor erschaffen und verändert werden. Andererseits können Farben auch von Switchboard-Funktionen erschaffen (um z.B. einen Farbverlauf nach einem Attributwert zu erstellen) und verändert (z.B. um Farben aufzuhellen oder zu saturieren) werden (:ref:`library-color`). .. _type-feature: Feature ======= .. image:: type_icons/feature.* :width: 50 px :align: left Der Typ **Feature** steht für die Klasse aller 2D-Features, d.h. Objekte, die eine 2D-Geometrie (Punkte, Linie, Polygon, Multi-Punkt, ...) und Attribute besitzen. Der Datentyp *Feature* gibt dabei nicht vor, dass der Geometrietyp innerhalb einer Datenmenge gleich sein muss. PlexMap unterstützt folgende Formate für *Feature*: * ESRI Shapefile (SHP) (Import und Export) * GML (Import und Export) * GeoJSON (Import und Export) * OpenStreetMap (:ref:`library-osm`) * CSV (Import und Export) * QML (Import) * NAS (Import und Export) * GeoPackage (Import und Export) * MapInfo TAB (Import und Export) * MapInfo Workspace (WOR) (Import) * WFS (Import und Export) * ArcGIS Feature Service (Import) .. _type-file: File ==== .. image:: type_icons/file.* :width: 50 px :align: left Der Typ **File** bezeichnet Dateien. Intern speichert PlexMap neben dem Dateipfad (z.B. ``export.zip``) und dem Dateityp (z.B. ZIP-Datei) auch den Dateiinhalt. Der Typ *File* findet bei PlexMap hauptsächlich an den Schnittstellen zur Außenwelt Anwendung, also bei Importen (z.B. durch Download) und Exporten (z.B. durch E-Mail-Versand). .. _type-grid: Grid ==== .. image:: type_icons/grid.* :width: 50 px :align: left Der Typ **Grid** (engl. für Raster) bezeichnet alle georefenzierten Rasterdaten. Die Datenquellen für diesen Typ können beispielweise GeoTIFF oder auch einfache Bilddateien mit Georeferenz (z.B. Worldfile) sein. Bzgl. der Anzahl und der Semantik der verwendeten Kanäle ist PlexMap agnostisch, d.h. der Typ *Grid* gibt keine Einschränkungen vor. .. _type-mesh: Mesh ==== .. image:: type_icons/mesh.* :width: 50 px :align: left Der Typ **Mesh** (engl. für Drahtgittermodell) steht für einfache 3D-Modelle, die aus einer 3D-Geometrie und Attributen bestehen. Die 3D-Geometrie kann Materialien wie Farben oder Texturen besitzen. Ein Objekt vom Typ *Mesh* kann eine beliebige, aus Polygonen bestehende Geometrie haben, solange alle Polygone aus mindestens drei verschiedenen Punkten bestehen und jedes Polygon *coplanar* ist. Das Objekt muss nicht zwangsläufig ein Volumenkörper (engl. *solid*) sein. PlexMap unterstützt folgende Formate für *Mesh*: * CityGML (Import und Export) * Collada (DAE) (Import und Export) * KMZ (Import und Export) * OBJ (Import und Export) * 3D-Shapefile (Import und Export) * STL (Import und Export) * 3D-PDF (Import und Export) * X3D (Import und Export) * glTF (Import und Export) .. note:: CityGML-Dateien können wahlweise als *Mesh* oder als :ref:`type-cityobject` eingelesen werden. .. _type-property-holder: Property-holder =============== .. image:: type_icons/property-holder.* :width: 50 px :align: left Der Typ **Property-holder** bezeichnet alle Objekte, die Attribute (engl. *properties*) besitzen. Attribute sind in PlexMap definiert als Schlüssel-Wert-Zuordnungen, bei denen der Schlüssel vom Typ :ref:`type-string` ist, der Wert aber einen beliebigen Typen haben kann. Viele Datentypen in PlexMap sind Untertypen von *Property-holder*, d.h. alle Funktionen, die für *Property-holder* definiert sind, sind auch auf diese Untertypen anwendbar. Beispiele sind :ref:`type-feature`, :ref:`type-mesh` und :ref:`type-cityobject`. Alle Funktionen, die auf diese Datentypen anwendbar sind, finden Sie unter :ref:`library-properties`. .. _type-pointcloud: Pointcloud ========== .. image:: type_icons/pointcloud.* :width: 50 px :align: left Objekte vom Typ **Pointcloud** sind Punktwolken, d.h. eine Menge von 3D-Punkten -- gegebenenfalls mit weiteren Informationen je Punkt. Punktwolken können mit anderen Daten verschnitten und angereichert werden. PlexMap unterstützt * LAS, * LAZ * und ASCII-Punktwolken. .. _type-string: String ====== .. image:: type_icons/string.* :width: 50 px :align: left Der Typ **String** bezeichnet Zeichenketten (Texte). Als Datentyp für ein Depot wird *String* dem PlexMap-Nutzer selten begegnen -- in erster Linie wird *String* als Parametereingabetyp im Switchboard verwendet. Als Beispiele seien hier die Betreffszeile bei der *E-Mail senden*-Funktion oder der Attributname bei der Funktion *Attributwert* genannt. .. _type-style: Style ===== .. image:: type_icons/style.* :width: 50 px :align: left Objekte vom Typ **Style** entsprechen einer Stildefinition. Eine Stildefinition beschreibt die Darstellung eines Datensatzes und kann durch einfache Symbole (z.B. Füllfarbe, Linienfarbe) oder komplexe Regeln (z.B. Attribut-basiert) definiert werden. .. _type-service: Service ======= .. image:: type_icons/service.* :width: 50 px :align: left Der Typ **Service** bezeichnet (Web-)Dienste und ist nur ein Obertyp für konkretere Typen. Für gewöhnlich enthalten diese Typen die URL von dem Dienst und gegebenenfalls eine Bounding Box und eine Auswahl von Ebenen. In PlexMap werden ausschließlich die folgenden konkreten Typen verwendet. .. _type-wms: WMS ... WMS-Dienst .. _type-wmts: WMTS .... WMS-Dienst .. _type-wfs: WFS ... WFS-Dienst .. _type-arcgis-map-service: Arcgis-Map-Service .................. ArcGIS Map Service .. _type-arcgis-feature-service: Arcgis-Feature-Service ...................... ArcGIS Feature Service .. _type-number: Number ====== .. image:: type_icons/number.* :width: 50 px :align: left Der Typ **Number** repräsentiert eine Zahl. Für bestimmte Funktionen gibt es noch die Untertypen **Int** (Ganzzahl) und **Float** (Dezimalzahl). .. _type-float: Float ..... Der Typ **Float** repräsentiert eine Dezimalzahl. .. _type-int: Int ... Der Typ **Int** repräsentiert eine Ganzzahl. .. _type-row: PlexMap-Objekte =============== .. _type-depot: Depot ..... Der Typ **Depot** repräsentiert ein Depot über einen Depotpfad. .. _type-layer: Layer ..... Der Typ **Layer** repräsentiert einen Layer über eine Layer-ID. .. _type-switchboard: Switchboard ........... Der Typ **Switchboard** repräsentiert ein Switchboard über eine Switchboard-ID. .. _type-view: View .... Der Typ **View** repräsentiert eine View über eine View-ID. .. _type-datetime: DateTime ======== Der Typ **DateTime** repräsentiert einen bestimmte Zeitpunkt. Row === Der Typ **Row** repräsentiert eine Tabellenzeile.