Konfiguration gView.Server¶
Der gView.Server kann über die Datei _config/mapserver.json
konfiguriert werden:
{
// Folder, where gView Server stores Services, Logins, etc
"services-folder": "{repository-path}/server/configuration",
// Path, where gView Server stores Map Request Images
"output-path": "{repository-path}/server/web/output",
// Url to the Path, where gView Server stores Map Request Images
"output-url": "{server-url}/output",
// Path, where gView Server stores Tiles
"tilecache-root": "{repository-path}/server/web/tile-caches",
// The Task Queue
"task-queue": {
// Indicates how many requests can be processed at the same time
"max-parallel-tasks": 50,
// The maximum length of the queue
"max-queue-length": 1000
},
// default value for mapserver and services
"mapserver-defaults": {
// maximum width in pixel of an map image
"maxImageWidth": 4096,
// maximum height in pixel of an map image
"maxImageHeight": 4096,
// maximum records that will be returned from a query
"maxRecordCount": 1000
},
// Whether clients are allowed to log in through the web interface
"allowFormsLogin": true,
// It can be assumed that all calls are made over HTTPS
"force-https": false,
// optional: graphic engines. gdiplus only works on windows systems
"graphics": {
"rendering": "skia", // engine for rendering: skia|gdiplus
"encoding": "skia" // engine for encoding images (jpg|png): skia|gdiplus
},
// optional: projection engine
"proj-engine": {
"engine": "ManageProj4Parallel" // ManagedProj4, NativeProj4
},
// Optional Settings
"Facilities": {
"MessageQueue": {
"Type": "messagequeue-net",
"ConnectionString": "http://localhost:9091",
"Namespace": "development"
}
}
}
Im ersten Abschnitt werden Pfade und URLs definiert. Diese werden im ersten Schritt über das gview.deploy
Tool angelegt und können hier noch einfach angepasst werden.
Unter task-queue
kann angegeben werden, wie viele Requests gleichzeitig abgearbeitet werden können.
Wenn ausreichend RAM zur Verfügung steht, kann dieser Wert beliebig erhöht werden. Man muss jedoch bedenken,
dass der Server Kartenbilder (Bitmaps) erzeugt, die einiges an RAM benötigen können. Ist man mit der
RAM-Auslastung immer wieder am Limit (aufgrund vieler Anfragen), kann der Wert auch niedriger angesetzt werden.
Sind alle Tasks belegt, kommt ein Request in die Warteschleife. Die Länge der Warteschleife kann hier ebenfalls
angepasst werden.
Im Abschnitt mapserver-defaults
können Default-Werte für Kartendienste angegeben werden.
Werden für einen Dienst diese Werte nicht explizit gesetzt, wird der hier eingestellte
Default-Wert verwendet. Dabei geht es um die maximale Größe eines Kartenbildes in Pixel,
das von einem Client abgeholt werden kann. Ebenfalls kann hier angegeben werden, wie viele
Geo-Objekte bei einer Abfrage maximal abgeholt werden dürfen. Wird der Abschnitt oder einzelne
Werte nicht angeführt, gelten die oben angeführten Werte.
Bemerkung
Die hier angegebenen Werte sind Default-Werte und können für jedes Service über die Map Service Einstellung in gView.Carto überschrieben werden. Es können dort für einzelne Dienste auch Werte angeführt werden, die höher sind als die Default-Werte. Die Werte in dieser Konfiguration sind keine globalen Maximalwerte.
Bemerkung
Ein Client kann ein Kartenbild anfordern, das größer ist als die Maximalwerte. Der Kartenserver liefert dann keinen Fehler, sondern ein verkleinertes Bild, das den Maximalwerten entspricht. Das Seitenverhältnis und der geografische Ausschnitt bleiben erhalten. Allerdings wird dann automatisch die Auflösung des Bildes (DPI-Wert) angepasst, damit der Maßstab dem ursprünglich bestellten Kartenbild entspricht.
Ein Client kann überprüfen, ob das Bild skaliert wurde, indem die Größe des Ergebnisbildes geprüft wird. Die Werte stehen beim GeoServices Response auch im Ergebnis-JSON.
Im Abschnitt graphics
kann die Graphic Engine angegeben werden. Diese kann entweder skia
oder
gdiplus
(auf Windows-Plattformen) sein. gdiplus
ist allerdings ein Auslaufmodell und
funktioniert nur, wenn die Anwendung auf einem Windows-System ausgeführt wird.
Der Abschnitt proj-engine
ist optional. Hier kann angegeben werden, ob die Proj4 Engine
ManageProj4Parallel
: Verwendet die Proj4-Portierung in C#, wobei bei Objekten mit vielen Vertices (>100) die Transformation parallelisiert wird (höhere Performance).ManagedProj4
: Verwendet die Proj4-Portierung in C#.NativeProj4
: Verwendet die native C++ Proj4-Bibliothek.
Empfohlen wird eine der Managed-Versionen, da diese plattformunabhängig sind und mittlerweile keine Performance-Einbußen mehr haben. Auf die native Version kann zurückgegriffen werden, wenn die Managed-Version nicht die richtigen Ergebnisse liefert.
Unter Facilities
können weitere optionale Einstellungen vorgenommen werden.
Eine Option ist beispielsweise MessageQueue
. Dort kann bisher nur eine MessageQueue vom
Typ messagequeue-net
angegeben werden (https://github.com/jugstalt/messagequeuenet).
Eine MessageQueue ist sinnvoll, wenn der gView.Server in mehreren Instanzen gleichzeitig ausgeführt wird,
beispielsweise wenn gView.Server in Kubernetes mit mehreren Replicas läuft.
Über die MessageQueue können die einzelnen Komponenten miteinander kommunizieren, wenn beispielsweise
ein Kartendienst geändert oder gelöscht wird. So bleiben alle Instanzen auf dem aktuellen Stand.
Mit Namespace
kann hier ein Namensraum angegeben werden, der definiert, welche Instanzen zusammengehören.
Da beispielsweise sowohl Instanzen aus Staging
als auch Production
auf dieselbe
MessageQueue-API zugreifen können, kann über den Namensraum unterschieden werden, welche Instanzen wirklich
zusammengehören.