Zeichenvorgänge abfragebasiert optimieren
Hintergrund
Eine optimale Performance mit einem sehr allgemein gehaltenen System zu erzielen ist nicht sehr trivial. Eine Optimierung die auf Basis einer Datenänderung erfolgt (z.B. Generalisierung), setzt sehr detailierte Kenntnisse über die Ausgangsdaten voraus. Dabei sind verschiedene Aspekte zu betrachten ... ist die Darstellungsgenauigkeit ausreichend für den beabsichtigten Zweck, sind Aggregierungen fachlich korrekt, ist die Aktualität relevant usw.
Solche Aufbereitungen erfolgen daher meist in separaten Prozessen die jeweils maßgeschneidert sind.
Möglichkeiten
Einige datenbankbasierte Datenquellen*1 unterstützen für diesen Zweck die Angabe von alternativen Abfragen, die nur bei Zeichenvorgängen verwendet werden.
Dafür kann in der Ebenendefinition das Argument alternativeRenderSources angegeben werden.
Dies bedeutet, dass für die Datenquelle immer eine primäre Quellangabe vorhanden ist die für alle Datenabfragen zum Einsatz kommt und nur bei Zeichenanforderungen eine der angegebenen alternativen Abfragen verwendet wird (wir gehen davon aus, dass Recherchen, Exporte etc. immer auf Basis des "besten" Datenbestand erfolgen).
Die Definition erfolgt über ein JSON Objekt mit folgendem Aufbau:
{
"alternativeRenderSources": [
{
"title": "von 1000 bis 10000",
"sourceSql": "SELECT * FROM LEVEL1",
"geomColName": "geom",
"scaleRange": {
"minimum": 1000,
"maximum": 10000
}
},{
"title": "ab 10000",
"sourceSql": "SELECT * FROM LEVEL2",
"geomColName": "geom",
"scaleRange": {
"minimum": 10000,
"maximum": 0
}}
]
}
Es kann dabei ein Array oder ein Einzelobjekt definiert werden. Intern wird die Liste in der Reihenfolge der Definition durchgegangen und der erste passende Eintrag wird ausgewählt. Trifft keiner der Einträge zu, wird die primäre Quelle der Ebene verwendet.
Eigenschaften
title (): optionaler titel, für Ausgaben im Trace
sourceSql (primäreQuelle): alternative SQL Abfrage, diese wird in der gleichen Verbindung wie die primäre Quelle vorliegt ausgeführt (Benutzer, Server etc.)
geomColName (primäreGeom): Spaltenname mit der zu rendernden Geometrie
scaleRange: Maßstabsbereich, in dem diese Alternative zum Einsatz kommt (Objekt mit minimum / maximum, nicht optional (maximum 0 = unendlich)
Es muss mindestens sourceSql oder geomColName belegt werden. Es gilt: Für leere Werte wird der entsprechende Wert der primären Quelle verwendet.
Als Filterkriterium ist derzeit nur der Maßstab vorgesehen.
Zu beachten
Die alternativen Abfragen müssen die gleiche EPSG Definition wie die primäre Quelle haben, dies trifft auch auf ggf. weitere datenbankspezifische Geometrieanforderungen zu (z.B. die gespeicherte SRID der Daten).
Bedenken Sie, dass Sie in der alternativen Quelle alle im CSS verwendeten Spalten auch benötigen.
Bedenken Sie bei Verwendung von Platzhalter in Abfragen, dass diese auch im jeweiligen sourceSql mit anzugeben sind (wenn nicht von der primären Quelle geerbt)
*1 Siehe Hinweise der jeweilige Datenquelle
Zuletzt geändert: 20.09.2024 07:22:06 (erstmals erstellt 03.08.2017)