Erweiterte Ressourceninformationen (exri)
Erweiterte Ressourceninformationen, Extended Ressource Informations (kurz: exri), sind eine in Terratwin exklusive eingebaut Funktionalität, um Portalinhalte (Layer, WebMaps, ...) aus dem primären Portal um weitere Funktionen und Eigenschaften zu erweitertern. Exri sind nach dem JSON-Standard aufgebaut und haben den gleichen Dateinamen, wie das Element, das erweitert wird.
Exris stehen seit der Version 1.4.2 zur Verfügung
Layer exri
Portalelemente vom Typ Layer (z.B. FeatureLayer) können um verschiedene Funktionen erweitert werden. Diese Funktionen werden aktiv, sobald der entsprechende Layer zur Karte hinzugefügt wird oder eine Karte geöffnet wird, die den Layer enthält.
Allgemeine Layer-Eigenschaften
Ein Layer-exri kann um allgemeine Eigenschaften layerProps
erweitert werden, die unabhängig von der Art des Layers sind. Verwenden Sie dazu die einfachen Eigenschaften aus der SDK zu
FeatureLayer (opens in a new tab),
MapImageLayer (opens in a new tab),
ImageryLayer (opens in a new tab) oder anderen Layern, je nach Typ des Layers.
Unter Angabe von sublayer
können die Eigenschaften auf einen bestimmten Unterlayer angewendet werden.
Folgende Eigenschaften bieten sich beispielsweise für einen Featurelayer an:
Parameter | Beschreibung |
---|---|
title | Der Titel des Layers, der zur Identifikation in Widgets wie der LayerList verwendet wird. |
listMode | Gibt an, wie der Layer in der LayerList angezeigt werden soll. |
opacity | Die Deckkraft des Layers. |
apiKey | Eine Autorisierungszeichenfolge zum Zugriff auf eine Ressource oder einen Dienst. |
blendMode | Mischmodi werden verwendet, um Layer zusammenzuführen und interessante Effekte oder neue Layer zu erzeugen. |
customParameters | Eine Liste benutzerdefinierter Parameter, die an die URL aller vom Layer abgerufenen Ressourcen angehängt werden. |
definitionExpression | Die SQL-Where-Klausel, die verwendet wird, um Features auf der Client-Seite zu filtern. |
displayField | Der Name des primären Anzeigefelds des Layers. |
elevationInfo | Legt fest, wie Features auf der vertikalen Achse (z) platziert werden. |
labelsVisible | Gibt an, ob Beschriftungen für diesen Layer angezeigt werden sollen. |
legendEnabled | Gibt an, ob der Layer in der Legende enthalten sein wird. |
maxScale | Der maximale Maßstab (stärkste Vergrößerung), bei dem der Layer in der Ansicht sichtbar ist. |
minScale | Der minimale Maßstab (stärkste Verkleinerung), bei dem der Layer in der Ansicht sichtbar ist. |
outFields | Ein Array von Feldnamen aus dem Dienst, die mit jedem Feature einbezogen werden. |
popupEnabled | Gibt an, ob Popups angezeigt werden, wenn Features im Layer angeklickt werden. |
visible | Gibt an, ob der Layer in der Ansicht sichtbar ist. |
In der Version 2.0.1 wurde außerdem das Schlüsselwort nosnap
in den allgemeinen Eigenschaften eingeführt, um zu verhindern,
dass der Layer beim Zeichnen von Geometrien als Fanglayer verwendet werden kann.
{
"layerProps": [
{
"sublayer": 1,
"opacity": 0.7,
"listMode": "hide-children",
"popupEnabled": false,
"nosnap": true
}
]
}
Viele der
layerProps
können bereits im Dienst bzw. im Portalelement festgelegt werden und werden automatisch übernommen. Die Konfiguration im Layer-exri überschreibt die Einstellungen im Dienst.
Dynamische Suchfunktion
Der Layer kann als Quelle für das Suchen-Werkzeug dienen. Es können mehrere Suchquellen für denselben Layer oder für unterschiedliche Sublayer konfiguriert werden.
Suchquellen müssen entsprechend der API für LayerSearchSource (opens in a new tab)
aufgebaut werden und können noch um den Parameter sublayer
ergänzt werden, um auf einen Unterlayer eines MapServers oder FeatureServers zu verweisen.
{
"searchSources": [
{
"searchFields": ["bezeichnung"],
"suggestionTemplate": "{bezeichnung} ({code})",
"exactMatch": false,
"outFields": ["bezeichnung", "code"],
"name": "Radrouten",
"placeholder": "Radroute suchen z.B. Buckelestour",
"minSuggestCharacters": 3,
"popupEnabled": true
}
]
}

- wird kein
sublayer
angegeben, wird standardmäßig der erste Unterlayer (Index=0) verwendet - alle Felder die in
searchFields
und insuggestionTemplate
aufgeführt sind, müssen auch inoutFields
gelistet werden - wenn
popupEnabled
aktiviert ist, öffnet sich das für den Layer konfigurierte Popup, andernfalls wird eine Markierung gesetzt - mit
prefix: "%"
können Sie eine Suche konfigurieren, die auch nach Teilinhalten im Suchfeld sucht (Enthält-Suche)
Popup Aktionen
Das im Portalelement konfigurierte Popup kann über das Layer-exri um zusätzliche Aktionsschaltflächen erweitert werden. Standardmäßig steht nur die Aktion Zoomen auf
im Popup zur Verfügung. Es können mehrere Aktionen pro Layer definiert werden. Eine Aktion muss wie folgt aufgebaut werden:
Parameter | Beschreibung |
---|---|
sublayer | Id des Unterlayer. Default: 0 |
id | Name der auszuführenden Funktion, z.B. toggleRaster |
title | angezeigter Text auf der Aktionsschaltfläche |
icon | Name des Calcite Icons (opens in a new tab) |
params | Parameter, die der auszuführenden Funktion übergeben werden sollen |
Aktion toggleRaster
Mit toggleRaster
können Bilddaten eines Mosaik-Datasets gefiltert und zur Anzeige gebracht werden. Diese Funktion ist nützlich, wenn gescannte Pläne oder
einzelne Orthofotos zu Features angezeigt werden sollen (z.B. bei Bebauungsplänen oder UAV-Befliegungen). In params
müssen ein Imageservice referenziert
werden und die Verbindungsfelder definiert werden.
Parameter | Beschreibung |
---|---|
rasterLayer | Referenz auf eine Imageservice. Siehe Referenzieren von Portalelementen |
primaryKey | Feldname im Layer, auf den sich das exri bezieht |
foreignKey | Feldname im Mosaik-Dataset, das zum Filtern genutzt wird |
{
"popupActions": [
{
"sublayer": 0,
"id": "toggleRaster",
"title": "Rasterplan anzeigen",
"icon": "image-segmentation",
"params": {
"rasterLayer": {
"portalUrl": "https://arcgis.com",
"queryParams": {
"filter": "id:2fb1bab4122f44f4bb443c17f5732f30"
}
},
"primaryKey": "nummer",
"foreignKey": "nummer_in_fc"
}
}
]
}

Popup Inhalte
Mithilfe eines Layer-exri können auch weitere benutzerdefinierte Inhalte zum Popup hinzugefügt werden, die sich nicht über die eingebaute Möglichkeiten zur
Konfiguration von Popups (opens in a new tab) realisieren lassen. Auch hier können mehrere Inhalte
dynamisch für denselben Layer oder für unterschiedliche sublayer
definiert werden.
Parameter | Beschreibung |
---|---|
sublayer | Id des Unterlayer. Default: 0 |
creator | Name der auszuführenden Funktion, z.B. _getXPlanungAttachments |
outFields | Felder, die von der auszuführenden Funktion verwendet werden |
params | Parameter, die der auszuführenden Funktion übergeben werden soll |
Inhalt getXPlanungAttachments
Die benutzerdefinierte Funktion getXPlanungAttachments
ruft über den Terratwin API Service xplanung_docs
sämtliche
externe Referenzen (opens in a new tab), die in einem XPlanung-GML hinterlegt sind. Geben Sie über
params
folgende Parameter an:
Parameter | Beschreibung |
---|---|
primaryKey | Eindeutiger Schlüssel im XPlanung-Layer. Feldinhalt muss mit Datei- und Verzeichnisnamen der GML-Datei übereinstimmen. |
{
"popupContents": [
{
"sublayer": 0,
"outFields": ["nummer"],
"creator": "getXPlanungAttachments",
"params": {
"primaryKey": "nummer"
}
}
]
}

Inhalt getOwner
Mit der benutzerdefinierten Funktion getOwner
werden die Eigentümerinformationen eines Flurstücks abgefragt. Geben Sie über params
folgende Parameter an:
Parameter | Typ | Beschreibung |
---|---|---|
portalItems | Object | Referenz auf Eigentümertabellen |
ownerKeyField | String | Name des Schlüsselfelds in der Eigentümertabelle, über das die Verbindung erfolgt |
parcelKeyField | String | Name des Schlüsselfelds im Flurstückslayer, über das die Verbindung erfolgt |
outFields | Array<String> | Namen der Felder, die ausgegeben werden sollen |
orderByFields | Array<String> | Felder für die Sortierung |
{
"popupContents": [
{
"sublayer": 0,
"outFields": ["fsk"],
"creator": "getOwners",
"params": {
"portalItems": {
"portalUrl": "https://arcgis.com",
"queryParams": {
"filter": "typekeywords:service AND group:326b00756efb4455bd7cc005a2c90c45"
}
},
"ownerKeyField": "fsk",
"parcelKeyField": "fsk",
"outFields": [
"blattart",
"buchungsblatt",
"lfdnr",
"buchungsart",
"anteil",
"name",
"anteilsverhaeltnis",
"geburtsdatum",
"anschrift",
"artderrechtsgemeischaft"
],
"orderByFields": ["buchungsblatt", "lfdnr"]
}
}
]
}