Allgemeines
Mittels der Definition von Themen können Datenmengen eingeschränkt, sowie weitere Angaben zu Daten gemacht werden.
Mittels einer Themendefinition:
- können Daten durch einen Filter eingeschränkt werden
- kann festgelegt werden welche Attribute durchsucht werden
- kann definiert werden, in welcher Form mit welchen Inhalten der Tooltip in der Oberfläche präsentiert wird
- können Attribute mit Formattierungen versehen werden (z.B. Ausgabe eines Feldinhaltes in Großbuchstaben).
Aufbau einer Themendefinition
Themendefinition erfolgen in XML. Es empfiehlt sich folgende Deklaration:
<?xml version="1.0" encoding="UTF-8"?> <Theme xmlns="http://www.geograt.de/namespaces/gisx3/themedefinition/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> ... </Theme>
Themendefinition werden im Unterverzeichnis "themes" des jeweiligen Datastores abgelegt und müssen die Dateiendung ".xml" besitzen. Es gelten die allgemeinen Hinweise zur Benamung.
Überblick
Attribut | Beschreibung | Datentyp | Optional |
---|---|---|---|
visibleName | Sichtbarer Name des Themas | Text | Ja |
description | Kurze Beschreibung des Themas | Text | Ja |
ignore | Gibt an, ob das Thema ignoriert werden soll. Ignorierte Themen können nicht in Layerdefinitionen verwendet werden. Typischerweise werden abstrakte Themen (Blaupausen) ignoriert | true | false | Ja (Standard false) |
dataSource | Name der Datenquelle, auf die ein Thema aufbaut. Details unten. Themendefinitionen können sich entweder auf direkte Themen (Tabelle in Datenbank, SHAPE Datei) beziehen oder andere Themendefinitionen im selben Datastore erweitern. | Text | Nein |
defaultCRS | Koordinatenreferenzsystem des Themas | Text | Ja. Falls leer wird Definition des Datastores verwendet. |
filter | Filter für angezeigte Daten. Die Syntax für einen Filter hängt vom jeweiligen Datastore ab. Bei Themendefinitionen die andere Themendefinitionen erweitern, erfolgt automatisch eine Erweiterung der Filterdefinition. Für die einzelnen Attribute sind die internen Namen zu verwenden. | Text | Ja |
attributeDefinition | Detaildefinition zu einzelnen Attributen und Formattern für bestimmte Attribute | Unterelement | Ja |
ignoreAttributes | Zu ignorierende Attribute (Wird zurzeit noch nicht verwendet) | Liste mit Attributnamen. | Ja |
searchAttributes | Namen der Attribute, die zu durchsuchen sind. Hierbei handelt es sich um die JSON Attributnamen (im Falle von SHAPE Dateien, Attributnamen in der .dbf Datei, im Falle von GISX 2.x die JSON-Attribute). Falls interne Attributnamen verwendet werden, werden diese automatisch umgewandelt. | Suchattribute | Ja |
tooltip | Definition des Tooltips für ein Thema. | Tooltipdefinition | Ja |
options | Weitere Optionen / Parameter. | Optionen / Parameter. | Ja |
cache | Gibt an ob das Thema gecacht werden soll. | true | false | Ja (Standardwert ist false) |
searchOutput | Die Ausgabe der Suchergebnisse. | TemplateText | Ja |
searchable | Gibt an, ob ein Thema durchsucht werden kann. | true | false | Ja (Standardwert ist false) |
favoriteOutput | Steuert, was in der Favoritenliste für ein Feature angezeigt werden soll. Ist diese Angabe nicht vorhanden, wird der Inhalt von "searchOutput" verwendet. Ist diese Angabe ebenfalls leer, wird die Überschrift im Tooltip verwendet. | TemplateText | Ja |
authorization | Steuert, welchen Benutzergruppen (und damit Benutzern) Daten des Themas zur Verfügung gestellt werden (nur Ansicht)
| Berechtigungen | Ja. Standardmässig ist ein Thema für alle Benutzer freigegeben. |
editable | Steuert, welche Benutzergruppen (und damit Benutzer) Daten des Themas bearbeiten können. | Berechtigungen | Ja. Standardmässig ist die Bearbeitung nur für die Administratorengruppe freigegeben. |
defaultDialog | Id des Standarddialogs, der für dieses Thema verwendet werden soll. | Dialogdefinition | Ja |
overviewDialog | Id des Übersichtsdialogs, der für dieses Thema verwendet werden soll. | Dialogdefinition | Ja |
Datenquelle
Die Angabe <dataSource> referenziert eine Datenquelle (ein Thema eines Datastores). Die möglichen Angaben hängen vom verwendeten "Datastore" ab:
Shape
Es wird der Pfad und Name zu einer unter <GISX3HOME>\datastores\Shape abgelegten Shapedatei angegeben:
Beispiel: "verkehr.BUSL" bezieht sich auf die Shapedatei <GISX3HOME>\datastores\Shape\data\verkehr\BUSL.shp.
GISX2
Es muss eines der (durch GEOGRAT definierten) Themen der GISX2-Datenbank angegeben werde, ggf. mit einem Prefix, falls Texte oder Attributblöcke gezeichnet werden sollen. Verfügbare Prefixes sind:
- <keiner> - Hauptthema (Symbole, Linien, Flächen)
- :texts - Einzeltexte (Beschriftung)
- :textures - Attributblöcke (Beschriftung) (Tip: Siehe hierzu die Dokumentation zu Attributblöcken in GISX3.)
Beispiel 1: "SurveyLine" bezieht sich auf das Thema Vermessungslinien und zeichnet diese.
Beispiel 2: "SewerEdge:textures" bezieht sich auf das Thema Kanal-Hauptnetz und zeichnet davon die Attributblöcke.
Folgende Themen werden derzeit unterstützt:
Netzthema | Punktobjekte | Linienobjekte | Flächenobjekte | HA-Knoten | HA-Leitungen | Sonstige Unterthemen |
---|---|---|---|---|---|---|
Kanal (E01.) | SewerNode | SewerEdge | ||||
Kanal-Ausgestaltung (E01A.) | SewerRepresentationPoint | SewerRepresentationLine | SewerRepresentationArea | - | - | |
Wasser (E02..) | WaterNode | WaterEdge | ||||
Gas (E03..) | GasNode | GasEdge | ||||
Elektro (E04..) | ElectricityNode | ElectricityEdge | - | - | Knoten im Schemaplan E2401: ElectricityCableNode Leitung im Schemaplan E2402: ElectricityCableEdge | |
Fernwärme (E05..) | HeatingNode | HeatingEdge | ||||
Flächen allg. (E1000) | - | - | CommonPolygon | |||
Vermessung (E50..) | SurveyPoint | SurveyLine | - | POI: abstract-survey-point | ||
Fachthema | ||||||
Baumkataster (E0B..) | TreeObject | |||||
ALK-Thema | ||||||
Flurstück (EGF..) | BoundaryPoints (Grenzpunkte) | BoundaryLines (Grenzlinien) | Parcel | - | - | |
Gebäude (EGG..) | BuildingNode | BuildingEdge | Building | - | - | |
Nutzung (EGN..) | ActualUsageNode | ActualUsageEdge | ActualUsage | - | - | |
Gebietseinheiten (EGP..) | AreaUnitNode | AreaUnitEdge | AreaUnit | - | - | |
Topographie (EGT..) | TopographyNode | TopographyEdge | Topography | - | - | |
Öffentl. Festlegung (EGZ..) | OeffentlicheFestlegungNode | OeffentlicheFestlegungEdge | OeffentlicheFestlegung | - | - |
Tooltip
Jede Tooltipdefinition definiert eine Überschrift "title" und beliebig viele Attribute. Attribute gliedern sich hierbei in "title" (Linke Spalte in der Anzeige) und "content" (Rechte Spalte in der Anzeige).
Zusätzlich kann zu jedem Tooltipattribut noch extra Inhalt definiert werden.
Sämtliche Angabe können mittels TemplateText gemacht werden.
Beispiel für einen Tooltip:
... <tooltip> <title>Ein Titel</title> <attribute> <title>Bezeichnung</title> <content>Inhalt von ${attribut}</content> </attribute> <attribute> <title>Verbindung</title> <content>${verbindung}</content> </attribute> <attribute> <title>Weitere Informationen</title> <content>Weitere Informationen abrufen</content> <extraContent> <link> <href>${LINK}</href> </link> </extraContent> </attribute> <attribute> <title>Geheim</title> <content>${secretData}</content> <authorization> <restrictToRoles> <roleName>ROLE_Geheim</roleName> </restrictToRoles> </authorization> </attribute> </tooltip> ...
Die einzelnen Attribute des Tooltips:
Eigenschaft | Beschreibung | Optional | Datentyp |
---|---|---|---|
title | Der Titel des Tooltips | Ja | Text (Template) |
menu | Das Menü des Tooltips | Ja | Menü |
attribute | Die einzelnen Attribute des Tooltips | Ja (Es können mehrere angegeben werden) | TooltipAttribut |
Menue
Ein Tooltip kann ein Menü mit Einträgen definieren:
<tooltip> ... <menu> <dashboard> <label>Zeige in Dialog 1</label> <dialogId>dialog1</dialogId> </dashboard> <dashboard> <label>Zeige in Dialog 2</label> <themeId>shape:exampleTooltip</themeId> <idAttributeName>C37</idAttributeName> </dashboard> <dashboard> <label>Zeige Geheimes</label> <authorization> <restrictToRoles> <roleName>ROLE_TestRole</roleName> </restrictToRoles> </authorization> <useTheme>false</useTheme> <useId>false</useId> </dashboard> </menu> ... </tooltip>
Unter menu
können hierbei beliebig viele Einträge vom Typ dashboard
oder workflow
(andere Typen sind geplant) hinzugefügt werden.
Der Typ dashboard
wird genutzt, um einen Link zu einer Übersichtsseite (dashboard) oder der Detailseite des Objekts zu definieren. Er besitzt folgende Eigenschaften:
Eigenschaft | Beschreibung | Optional | Datentyp |
---|---|---|---|
label | Der Text des Menüeintrags | Nein | Text |
icon | Icon des Menüeintrags. Eine Liste verfügbarer Icons befindet sich an dieser Stelle. | Ja | Text |
authorization | Einschränkung der Sichtbarkeit auf bestimmte Benutzergruppen. | Ja | Berechtigungen |
useTheme | Festlegung, ob bei Aufruf des Dashboards das Thema mit übergeben werden soll. Standardwert ist true . | Ja | true | false |
themeId | Wird nur verwendet wenn Die ID des Themas (dataStore + ":" + Themen-ID), von dem Daten angezeigt werden sollen. Ist dieser Parameter nicht vorhanden und | Ja | Text |
useId | Festlegung, ob bei Aufruf des Dashboards die ID mit übergeben werden soll. Standardwert ist true . | Ja | true | false |
idAttributeName | Wird nur verwendet wenn Ist dieser Parameter nicht vorhanden und sind | Ja | Text |
dialogId | Optionale ID des Dialogs, der angezeigt werden soll. | Ja | Text |
Die Reihenfolge der Eigenschaften ist zwingend einzuhalten.
Der Type workflow
wird genutzt, um einen Workflow aus einem Tooltip zu starten. Er besitzt folgende Eigenschaften:
Eigenschaft | Beschreibung | Optional | Datentyp |
---|---|---|---|
label | Der Text des Menüeintrags | Nein | Text |
icon | Icon des Menüeintrags. Eine Liste verfügbarer Icons befindet sich an dieser Stelle. | Ja | Text |
authorization | Einschränkung der Sichtbarkeit auf bestimmte Benutzergruppen. | Ja | Berechtigungen |
workflowId | Beschreibung der ID des Workflows der gestartet werden soll | Nein | Text |
Die Reihenfolge der Eigenschaften ist zwingend einzuhalten.
TooltipAttribut
Ein Attribut im Tooltip hat folgende Eigenschaften
Eigenschaft | Beschreibung | Optional | Datentyp |
---|---|---|---|
title | Der Titel des Attributes | Ja | Text (Template) |
content | Der Inhalt des Attributes | Ja | Text (Template) |
extraContent | Besonderer Inhalt. Unter <extraContent> steht zurzeit nur der Typ <link> zur Verfügung.Link definiert ein Unterelement vom Typ <href> welches die Zieladresse eines Links enthält (im Beispiel der Inhalt des Attributs "LINK", definiert durch "${LINK}". | Ja | - |
authorization | Einschränkung der Sichtbarkeit auf bestimmte Benutzergruppen. | Ja | Berechtigungen |
Suchattribute
Unter Suchattribute können die Attribute definiert werden, die durchsucht werden sollen. Die einzelnen Attribute sind mittels <name> anzugeben. Als Attributname muss der JSON Attributname der jeweiligen Datasource verwendet werden.
... <searchAttributes> <name>town</name> <name>road</name> </searchAttributes> ...
Im Beispiel werden die Attribute "town" und "road" durchsucht.
An dieser Stelle können Sie auch interne Attributnamen angeben.
Template Text
In vielen Bereichen der Definition kann Template Text verwendet werden. GISX 3.x verwendet hierzu FreeMarker. Die einzelnen Attribute eines Features stehen hierbei mit ihren JSON Attributnamen zur Verfügung.
Berechtigungen
Sichtbarkeit
Sowohl vollständige Themen als auch einzelne Attribute im Tooltip können nur bestimmten Benutzergruppen zur Verfügung gestellt werden. In den Dialogdefinitionen können neben den Attributen auch die Gruppen verrechtet werden.
Beispiel in einer Themendefinition:
<?xml version="1.0" encoding="UTF-8"?> <Theme xmlns="http://www.geograt.de/namespaces/gisx3/themedefinition/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> ... <authorization> <restrictToRoles> <roleName>ROLE_TestRole</roleName> </restrictToRoles> </authorization> ... </Theme>
Das betreffende Thema ist nur für Benutzer verfügbar, welche die Rolle "TestRole" besitzen. Dies schließt ein:
- Darstellung in der Karte
- Anzeige von Tooltips
- Suche nach Inhalten
- Anzeige in Dialogen
Editierbarkeit
Sie können die Bearbeitung von Themen auf bestimmte Benutzergruppen einschränken:
<?xml version="1.0" encoding="UTF-8"?> <Theme xmlns="http://www.geograt.de/namespaces/gisx3/themedefinition/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> ... <editable> <restrictToRoles> <roleName>TestRole</roleName> </restrictToRoles> </editable> ... </Theme>
Das betreffende Thema ist nur für Benutzer bearbeitbar, welche die Rolle "TestRole" besitzen.
Allgemeines
Natürlich können Sie auch Berechtigungen auf Layerebene vergeben, diese würden um die hier verfügbaren Berechtigungen ergänzt werden.
Weitere Informationen zur Benutzer- und Rechteverwaltung finden Sie an dieser Stelle.
Optionen/Parameter
Mit Hilfe von Optionen können spezielle Konfigurationseinstellungen für Themen festgelegt werden.
Die einzelnen Optionen sind hierbei immer vom jeweiligen Datastore abhängig.
Es können pro Thema mehrere Optionen gesetzt werden, die Angabe erfolgt im Unterelement "<options>". Pro Option/Parameter ist ein eigenes Unterelement "<parameter>" zu verwenden:
<?xml version="1.0" encoding="UTF-8"?> <Theme xmlns="http://www.geograt.de/namespaces/gisx3/themedefinition/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> ... <options> <parameter> <key>USE_CADDATA</key> </parameter> </options> ... </Theme>
Jeder Parameter muss ein Element "<key>" enthalten in dem der Optionsname aufgeführt ist.
Mögliche Optionen sind im jeweiligen Datastore beschrieben.
ID einer Themendefinition
Zur Verwendung in Layerdefinitionen erhält jede Themendefinition innerhalb eines Datastores eine eindeutige ID.
Diese ID wird aus dem Dateinamen und den Namen der Unterverzeichnisse gebildet in der die Themendefinition abgelegt ist. Als Trennzeichen zwischen Verzeichnissen wird hierbei "." verwendet. Als Startverzeichnis gilt das themes Verzeichnis des jeweiligen Datastores.
Eine Themendefinition in <GISX3HOME>/datastores/gisx2/themes/polygon/gewaesser.xml erhält die ID "polygon.gewaesser". In einer Layerdefinition kann sie durch Angabe des Datastores ("gisx2") und der LayerID eingebunden werden.
In Themendefinition kann ferner auf Themendefinitionen des gleichen Datastores verwiesen werden. Dies dient dazu vorhandene Themendefinitionen zu erweitern.
Beispiel:
<?xml version="1.0" encoding="UTF-8"?> <Theme xmlns="http://www.geograt.de/namespaces/gisx3/themedefinition/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <visibleName>Some value</visibleName> <dataSource>test_shape</dataSource> <filter>ATTRIBUTE1 = 'VALUE_1'</filter> </Theme>
Dieses Beispiel definiert ein Thema mit der ID "testA" im SHAPE Datastore. Datenquelle hierfür ist eine SHAPE Datei mit dem Namen "test_shape.shp". Es werden nur Datensätze verwendet, die die Eigenschaft ATTRIBUTE1 = 'VALUE_1' haben.
<?xml version="1.0" encoding="UTF-8"?> <Theme xmlns="http://www.geograt.de/namespaces/gisx3/themedefinition/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <visibleName>Some value</visibleName> <dataSource>testA</dataSource> <filter>ATTRIBUTE2 = 'TEST'</filter> </Theme>
Durch obige Definition entsteht ein neues Thema mit der ID "testAextended", dass sich auf "testA" bezieht. Die Filterdefinition für das neue Thema ist in diesem Fall "ATTRIBUTE1 = 'VALUE_1' and ATTRIBUTE2 = 'TEST'".
Interne Attributnamen vs. JSON Attributnamen
GISX 3.x unterscheidet an vielen Stellen in der Definition zwischen Internen Attributnamen und JSON Attributnamen.
Unter internen Attributnamen sind immer die direkt verwendeten Namen einer Datenquelle zu verstehen. Im Falle von Datenbankdaten sind dies die Attributnamen in der jeweiligen JAVA Klasse, auf die eine Tabelle gemappt wurde. So wird aus dem Feld "C10" in einer GISX 2.x Datenbank, das Feld "location.town", aus "C07" wird "usage".
Leider können nicht alle Attributnamen direkt nach JSON konvertiert werden (Probleme mit Caching wegen Syntax, Flachgezogene Struktur in JSON etc.). Aus diesem Grund werden in JSON an vielen Stellen andere Namen verwendet.
Auch in der Definition müssen an verschiedenen Stellen andere Namen verwendet werden.
Grundsätzlich gilt: Die internen Attributnamen finden Verwendung in Filterdefinitionen in Themen. In allen anderen Bereichen werden die JSON Attributnamen verwendet.
Bei der Verwendung von SHAPE Dateien sind beide Attributenamen identisch.