AppConf
Eigenschaften
Attribut | Zweck | Datentyp | Beispiel |
---|---|---|---|
title | Titel des Portals, wird im Browser in der Tableiste angezeigt | string | "title": "MapEdit Portal" |
responsibility | string | ||
responsibility.name | string | ||
responsibility.street | string | ||
responsibility.postcode | string | ||
responsibility.city | string | ||
responsibility.descr | string | ||
baseColor | rgb / rgba / color name (string) | "baseColor": "#F2B90F" | |
baseColorAccent | rgb / rgba / color name (string) | "baseColorAccent": "#F2B90F" | |
searchColorOff | rgb / rgba / color name (string) | "searchColorOff": "#F2B90F" | |
searchColorOn | rgb / rgba / color name (string) | "searchColorOn": "#64FAE2" | |
iconColor | rgb / rgba / color name (string) | "iconColor": "black" | |
backgroundColor | rgb / rgba / color name (string) | "backgroundColor": "white" | |
mapZoom | number | "mapZoom": 12 | |
mapCenter | coordinate (number[2]) | "mapCenter": [9.179053651748948,48.77780838625128] | |
maxZoom | number | "maxZoom": 16 | |
minZoom | number | "minZoom": 11 | |
boundaries | ordinate (number) | "boundaries": { } | |
boundaries.north | ordinate (number) | "north": 49.01647207539458 | |
boundaries.east | ordinate (number) | "east": 9.470039341540087 | |
boundaries.south | ordinate (number) | "south": 48.53963064238704 | |
boundaries.west | ordinate (number) | "west": 8.805646346739763 | |
logo | path (string) | "logo": "mum.png" | |
showSplash | boolean | "showSplash": false | |
splashTime | number | "splashTime": 3000 | |
demoMode | boolean | ||
demoText | siehe nächste Zeilen | ||
demoText[n].title | string | ||
demoText[n].content | string | ||
showLanguageSelection | boolean | ||
showNorth | boolean | ||
floorSelector | boolean | ||
show3dOption | boolean | ||
showPrintOption | boolean | ||
showLegend | boolean | ||
printOptions | siehe nächste Zeilen | PrintOptions | |
printOptions.paperSizes | Auswahl aus | string[] | |
printOptions.scales | Auswahl 1,2,3,4 | number[] | |
lunrServerUrl | rel. URL (string) | ||
dataDirectoryPath | rel. URL (string) | ||
information | siehe nächste Zeilen | AppInformation | |
information.mapData | kann auf [] stehen bleiben | string[] | |
information.technologies | kann auf [] stehen bleiben | string[] | |
bookmarkSelector | boolean | ||
bookmarks | wird weiter unten erläutert | Bookmarks[] | |
mapLayers | wird weiter unten erläutert | MapLayer[] | |
overlays | siehe nächste Zeilen | Liste aus Overlay-Einträgen | Overlays[] | |
overlays[n].id | Hier wird die Layer-ID eingetragen | string | |
overlays[n].name | Hier wird der Name des Layers zur Darstellung in der Ebenen-Steuerung eingetragen | string | |
categories | siehe nächste Zeilen | Liste aus Category-Einträgen | Category[] | |
categories[n].id | string | ||
categories[n].mdiIcon | string | ||
categories[n].searchable | boolean | ||
categories[n].contact? | Contact | ||
categories[n].contact?.name | string | ||
categories[n].contact?.department | string | ||
categories[n].contact?.phone | string | ||
categories[n].contact?.email | string | ||
categories[n].toggleLayer? | layerId (string) |
Bookmarks
MapLayer
In das Geoportal können Layer verschiedener Typen hinzugefügt werden. Der grundsätzliche Aufbau der Konfiguration ist hierbei bei allen Typen gleich, jedoch weicht besonders die Konfiguration der GeoJSON-Layer ab, da hier eine eigene Stilisierung notiert werden kann.
Attribut | Beschreibung | Datentyp | Beispiel |
---|---|---|---|
type | Auswahl des Layertyps | Auswahl aus: "GeoJSON" | "WMS" | "XYZ" | "type": "GeoJSON" |
lid | Eindeutige ID für den Layer, frei wählbar. | string | "lid": "ebike" |
name | Eindeutiger Name für den Layer, frei wählbar. | string | "name": "ebike" |
source | Definiton der Datenquelle für den Layer, unterscheidet sich von Typ zu Typ | object | |
layout | Technisch notwendig, sollte nicht abgeändert werden | object | "layout": { "visibility": "none" } |
layerType | Handelt es sich um eine Hintergrundkarte oder einen zuschaltbaren Inhalt? | Auswahl aus: "base" | "overlay" | "layerType": "base" |
displayInLayerList | [nur bei layerType="base" zutreffend] Soll der Layer in der Layerauswahl angezeigt werden? | boolean | "displayInLayerList": true |
displayInVectorLayerList | [nur bei layerType="overlay" zutreffend] Soll der Layer in der Layerauswahl angezeigt werden? | boolean | "displayInVectorLayerList": true |
isDefaultBaseLayer | [nur bei layerType="base" zutreffend] Sollte bei allen auf false gesetzt werden, außer bei dem Layer, der die Standardauswahl sein soll | boolean | "isDefaultBaseLayer": false |
previewImage | [nur bei layerType="base" zutreffend] Pfad zum Vorschaubild | string | previewImage: "rest/config/previewImages?image=sentinel.png" |
attributionText | Attribution / Copyright des Kartenmaterials in Textform | string | "attributionText": "Kartendaten: © OpenStreetMap-Mitwirkende" |
attributionHTML | Attribution / Copyright des Kartenmaterials in HTML, mit Links | string | "attributionHTML": "Kartendaten: © \<a href='https://openstreetmap.orgcopyright'>OpenStreetMap\</a>" |
GeoJSON
Zum Einbinden eines GeoJSON-Vektor-Layers muss vorab eine Konfiguration für diesen Layer im jeweiligen Mandanten unter '/cat' abgelegt werden. Anschließend können die Daten durch das Geoportal-Backend ausgegeben werden.
Wird ein GeoJSON-Layer genutzt, so können die Daten frei stilisiert werden.
Attribut | Beschreibung | Datentyp | Beispiel |
---|---|---|---|
type | Bei einem GeoJSON-Layer muss hier "GeoJSON" eingetragen werden. Mehr unter MapLayer | "GeoJSON" | "type": "GeoJSON" |
lid | Definiert unter MapLayer | ||
name | Definiert unter MapLayer | ||
layout | Definiert unter MapLayer | ||
layerType | Definiert unter MapLayer | ||
displayInLayerList | Definiert unter MapLayer | ||
displayInVectorLayerList | Definiert unter MapLayer | ||
isDefaultBaseLayer | Definiert unter MapLayer | ||
previewImage | Definiert unter MapLayer | ||
attributionText | Definiert unter MapLayer | ||
attributionHTML | Definiert unter MapLayer | ||
source | Quellenangabe des Layers | object | "source": { } |
source.data | relativer Pfad zur Backendausgabe des Layers | string | "data": "rest/data/geojson/ebike" |
source.cluster? [nur bei Punktlayern] | Soll geclustert werden? Mehr unter Cluster | boolean | "cluster": true |
source.clusterMaxZoom? [nur bei Punktlayern] | Bis zu welcher maximalen Zoomstufe soll geclustert werden? | number | "clusterMaxZoom": 14 |
source.clusterRadius? [nur bei Punktlayern] | Wie weit [in px] sollen Punkte maximale auseinander liegen, sodass sie noch zum selben Cluster gehören? | number | "clusterRadius": 50 |
style | Definiert unter Stilisierung | LayerStyle | "style": { } |
Stilisierung
GeoJSON
Die Stilisierung eines GeoJSON-Layers ist aufgeteilt in die verschiedenen Layer-Typen: "circle", "line", "fill" und "symbol".
- Circle: Kreis aus Punktgeometrien
- Line: Linien aus LineString-Geometrien und Umrandungen von Polygonen
- Fill: Füllung eines Polygons
- Symbol: Icons und Texte
Attribut | Beschreibung | Datentyp | Beispiel |
---|---|---|---|
circle | object | "circle": { } | |
circle.circle-radius | number/MapboxExpression | "circle-radius": 8 | |
circle.circle-color | number/MapboxExpression | "circle-color": "rgba(135,255,66,.75)" | |
circle.circle-stroke-width | number/MapboxExpression | "circle-stroke-width": 1 | |
circle.circle-stroke-color | number/MapboxExpression | "circle-stroke-color": "rgba(135,255,66,1)" | |
circle.circle-opacity | number/MapboxExpression | "circle-opacity": 0.5 | |
line | "line": { } | ||
line.line-color | number/MapboxExpression | "line-color": "rgba(0,200,250, 1)" | |
line.line-width | number/MapboxExpression | "line-width": 2 | |
line.line-opacity | number/MapboxExpression | "line-opacity": 0.5 | |
fill | "fill": { } | ||
fill.fill-color | number/MapboxExpression | "fill-color": "rgba(0,0,0,0)" | |
fill.fill-opacity | number/MapboxExpression | "fill-opacity": 0.5 | |
fill.fill-opacity | number/MapboxExpression | "fill-opacity": 0.5 | |
symbol.text-color | "text-color": "rgba(0, 0, 0, 1)" |
MapboxExpressions
Sofern bei einem Paramter laut obiger Tabelle möglich ist auch eine MapboxExpression einzufügen, kann das Feld durch Attribute des dargestellten Objekts beeinflusst werden.
Interpolate-Expression: Hierbei Ändert sich eine Eigenschaft entlang der aktuellen Zoomstufe. Der Wert wird hierbei in Paaren definiert, bei denen abwechselnd Zoomstufe und Wert notiert werden. Im nachfolgenden Beispiel beträgt die Opacity von den Zoomstufen 0 bis 7 1 und ab Zoomstufe 18 0.75. Zwischen Zoomstufe 7 und 18 wird der Wert linear interpoliert.
"fill-opacity": [
"interpolate",
["linear"],
["zoom"],
7,
1,
18,
0.75
]
Case-Expression: Bei einer Case-Expression kann auf verschiedene Werte, die eine Eigenschaft haben kann, eingegangen werden. Hierbei werden in polnischer Notation Bedingungen aufgestellt, auf die der Wert folgt. Am Ende muss sich ein Default-Wert befinden. Im nachfolgenden Beispiel würden beispielsweise alle Eichen blau, alle Fichten green und alle restlichen Bäume rot dargestellt werden. Alle Bäume, die niedriger sind als 10 werden als kleine Punkte dargestellt, alle restlichen werden größer dargestellt.
"circle-color": [
"case",
["==", ["get", "baumart"], "Eiche"],
"blue",
["==", ["get", "baumart"], "Fichte"],
"green",
"red"
],
"circle-radius": [
"case",
["<", ["get", "height"], 10],
8,
16
],
Cluster
Unter einem Cluster versteht man das Zusammenfügen von Punktgeometrien zu einem größeren Punkt, der dann die Anzahl der zugehörigen Punkte angibt. Zoomt man näher in das Gebiet der Clusters, so werden die einzelnen Punkte einzeln angezeigt, sofern diese sich dann weit genug auseinander befinden.
Cluster können nur auf Punktlayer angewandt werden.
Vollständiges Beispiel:
{
"type": "GeoJSON",
"lid": "ebike",
"name": "ebike",
"source": {
"data": "rest/data/geojson/ebike",
"cluster": true,
"clusterMaxZoom": 14,
"clusterRadius": 50
},
"layout": {
"visibility": "none"
},
"style": {
"circle": {
"circle-radius": 8,
"circle-color": "rgba(135,255,66,.75)",
"circle-stroke-width": 1,
"circle-stroke-color": "rgba(135,255,66,1)"
}
},
"clusterOptions": {
"style": {
"circle": {
"circle-color": [
"step",
["get", "point_count"],
"rgba(195,255,161,1)",
5,
"rgba(163,255,110,1)",
10,
"rgba(130,245,64,1)"
],
"circle-radius": [
"step",
["get", "point_count"],
20,
2,
30,
5,
40
]
},
"symbol": {
"text-color": "rgba(0, 0, 0, 1)"
}
},
"layout": {
"visibility": "none"
},
"symbolLayout": {
"visibility": "none",
"text-field": "{point_count_abbreviated}",
"symbol-placement": "point",
"text-font": ["Roboto Light"],
"text-allow-overlap": true
}
},
"layerType": "overlay",
"displayInVectorLayerList": true,
"selectable": true,
"attributionText": "Kartendaten: © OpenStreetMap-Mitwirkende, SRTM | Kartendarstellung: © OpenTopoMap (CC-BY-SA)",
"attributionHTML": "Kartendaten: © <a href='https://openstreetmap.org/copyright'>OpenStreetMap</a>-Mitwirkende, SRTM",
"addToLegend": true
}
WMS
{
"type": "WMS",
"lid": "sentinel",
"name": "Sentinel",
"source": {
"tiles": ["https://sgx.geodatenzentrum.de/wms_sentinel2_de?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=sentinel2-de%3Argb&WIDTH=256&HEIGHT=256&CRS=EPSG%3A3857&STYLES=&BBOX={bbox-epsg-3857}"],
"tilesize": 256
},
"layout": {
"visibility": "none"
},
"displayInLayerList": true,
"layerType": "base",
"isDefaultBaseLayer": false,
"previewImage": "rest/config/previewImages?image=sentinel.png",
"attributionText": "Quellenvermerk: © Bundesamt für Kartographie und Geodäsie 2020, Datenquellen: Enthält geänderte Copernicus Sentinel Daten ab 2018",
"attributionHTML": "Quellenvermerk: © Bundesamt für Kartographie und Geodäsie 2020, Datenquellen: Enthält geänderte Copernicus Sentinel Daten ab 2018"
}
XYZ
{
"type": "XYZ",
"lid": "osm-topo",
"name": "OSM Topo",
"source": {
"tiles": ["https://gisdemo2.mum.de/TileServer/TileServlet?gettile&map=OpenTopoMap&zoomlevel={z}&x={x}&y={y}"],
"tilesize": 256
},
"layout": {
"visibility": "none"
},
"layerType": "base",
"isDefaultBaseLayer": false,
"previewImage": "rest/config/previewImages?image=osmTopo.png",
"attributionText": "Kartendaten: © OpenStreetMap-Mitwirkende, SRTM | Kartendarstellung: © OpenTopoMap (CC-BY-SA)",
"attributionHTML": "Kartendaten: © <a href='https://openstreetmap.org/copyright'>OpenStreetMap</a>-Mitwirkende, SRTM | Kartendarstellung: © <a href='http://opentopomap.org'>OpenTopoMap</a> (<a href='https://creativecommons.org/licenses/by-sa/3.0/'>CC-BY-SA</a>)"
}
TileServer
{
"type": "XYZ",
"lid": "osm",
"name": "OSM",
"source": {
"tiles": ["https://gisdemo2.mum.de/TileServer/TileServlet?gettile&map=OSM&zoomlevel={z}&x={x}&y={y}"],
"tilesize": 256
},
"layout": {
"visibility": "none"
},
"displayInLayerList": true,
"layerType": "base",
"isDefaultBaseLayer": true,
"previewImage": "rest/config/previewImages?image=osm.png",
"attributionText": "Map Data © OpenStreetMap contributors.",
"attributionHTML": "Map Data © <a href='https://www.openstreetmap.org/copyright'>OpenStreetMap contributors</a>."
}