Utility Modelle
Wozu dienen Utility Modelle
Um Netzwerke in Versorgungseinrichtungen wie Wasser, Gas und Strom zu verwalten, wird häufig ein Utility-Modell in Verbindung mit einer Topologie verwendet um Netzwerkverfolgungen ausführen zu können.
Beispiel:
Sie verwalten ein Wasser Netzwerk welches 4 Punkt Objekte (Knoten) enthält:
- Absperrarmatur
- Behälter
- Brunnen
- Pumpen
Und zwei Linien Objekte (Kanten):
- Wasser Hauptleitungen (Grossse Rohre)
- Wasser Verteilungsleitungen (Kleine Rohre)
All diese Objekte sind topologisch miteinander verbunden und bilden ein Topologisches Netzwerk aus Knoten (Punkten) und Kanten (Linien) D.h. ein Brunnen weiß mit welchen Hauptleitungen er verbunden ist etc.
Damit eine topologische Suche schnell und effizient ausgeführt werden kann, trennt man bei einem Utility Model die Sachdaten von den Geometrie Daten und speichert alle Geometriedaten in einer gemeinsamen Tabelle.
D.h. die Sachdaten werden in dem Beispiel also in 6 Tabellen gespeichert. Je eine Tabelle für Absperrarmatur, Behälter, Brunnen, Pumpen, Wasser Hauptleitungen, Wasser Verteilungsleitungen
Alle Punkt Geometrie Daten der Absperrarmatur, Behälter, Brunnen, Pumpen werden in einer gemeinsamen Punkt Tabelle WA_POINT (Knoten) gespeichert.
Alle Linien Geometrie Daten der Hauptleitungen und Verteilungsleitungen werden in einer gemeinsamen Linien Tabelle WA_LINE (Kanten) gespeichert.
Bei jedem Geometrie Datensatz wird hierbei gespeichert zu welchem Attribut Datensatz diese Geometrie gehört. D.h. die Tabelle WA_POINT und WA_LINE haben je ein Feld FID_ATTR und ein Feld TABLE_NAME_ATTR (bzw. F_CLASS_ID_ATTR beim Map/Topobase Modell)
- Im Feld FID_ATTR steht die FID des Sachdaten Datensatzes.
- Im Feld TABLE_NAME_ATTR steht der Name der Sachdaten Tabelle (Bei Map/Topobase Modellen steht dies im Feld F_CLASS_ID_ATTR
In der Benutzeroberfläche des Endanwenders, z.B. in einem generischen Formular oder eine Zeichenebene wird dabei so getan als sei diese Trennung nicht vorhanden. D.h wenn ein Anwender ein neues Objekte mit Geometrie erfasst, dann speichert das Programm im Hintergrund die Sachdaten in einer Tabelle und die Geometriedaten in einer anderen Tabelle (WA_POINT) und bildet im Hintergrund automatisch die entsprechenden Verknüpfungen.
Beispiel einer Utility Punkt Tabelle:
Beispiel eines Wasser Utility Modells:
Erstellen eines Utility Modells
Im AppBuilder können Utility Modelle nur für MapEdit Datenmodelle erstellt/geändert werden. Bei Map/Topobase Datenmodellen verwenden Sie bitte den Map Administrator.
- Öffnen Sie die Datenstruktur Ansicht ihrer Datenbank (Unter "Datenbanken-->Verbindungen")
- Erstellen Sie für alle Objekte die jeweiligen Tabellen als Attribut Tabellen (Nicht als Geometrie Tabellen!!)
- Erzeugen Sie dann eine Punkt und eine Linien Tabelle. z.B. WA_POINT und WA_LINE.
- Klicken Sie im Register "Mehr" den Knopf "Utility Modelle"
- Klicken Sie auf "Hinzufügen"
- Vergeben Sie einen beliebigen Namen für das Modell. In diesem Beispiel WA für Wasser.
- Wählen Sie welche Topologie verwendet werden soll. Diese muss dazu vorab angelegt werden.
- Wählen Sie die Punkt und Linien Tabelle (WA_POINT und WA_LINE)
Drücken Sie auf den linken "hinzufügen" Knopf und fügen Sie alle im vorigen Schritt angelegten Sachdatentabellen der "Punktförmigen Daten" hinzu.
Drücken Sie auf den rechten "hinzufügen" Knopf und fügen Sie alle im vorigen Schritt angelegten Sachdatentabellen der "Linienförmigen Daten" hinzu. (Dieser Schritt ist optional wenn Sie keine solchen haben)
Drücken Sie dann OK
Beim drücken von OK werden zu einem bei den Utility Geometrie Tabellen automatisch die Spalten FID_ATTR und TABLE_NAME_ATTR hinzugefügt, zum anderen werden für alle Sachdaten Tabellen "Utility" Views angelegt und im System registriert.
Diese Views beginnen mit "VU_" (View Utility).
Diese Views kombinieren jeweils die Sachdaten mit den Geometrie Daten und können verwendet werden um die Daten im Darstellungsmodell bzw. MapServer anzeigen zu können. Es werden in den Views jeweils nur die FID und die Geometrie zurückgegeben. Wenn Sie mehr Attribute benötigen müssen Sie die Views bearbeiten und die benötigten Felder hinzufügen.
Wir raten dazu in diesen Utility Views nur die Spalten der Sachdatentabelle anzugeben die Sie auch für die Darstellung benötigen. Unnötige Spalten verlangsamen den Bildaufbau und den TileUpdater.
Erzeugen eigener Utility Views
Beispiel SQL für einen Utility View wenn Sie diesen selbst anlegen wollen.
select g.fid, g.geom from BUS_STOP_ATTR f,BUS_STOP_POINT g where g.fid_attr=f.fid
Verwenden Sie immer die Aliasnamen f und g in dieser Form "g.fid_attr=f.fid"
Wenn Sie weitere Attribute für die Grafik benötigen fügen Sie diese dem SQL mit dem alias "a." hinzu.
Wichtig:
- Wählen Sie bei Type "Utility"
- Wählen Sie bei Content ob die Geometrie vom Typ Punkt oder Linie ist
- Wählen Sie bei Attribute Table die Utility Sachdatentabelle
- Wählen Sie bei Geometry Table die Utility Geometrietabelle
Wenn Sie diese Schritte nicht beachten und nicht richtig Ausfüllen werden Sie in Probleme laufen bzw das Programm wird sich nicht korrekt verhalten.
Soft- und Hard-Split
Das Konzept der Trennung von Geometrie- und Attributspeicherung ermöglicht ausserdem zwei verschiedene Methoden zur Linienaufteilung: Soft- und Hard-Split. Diese Methoden bestimmen, wie das System mit den Attributdaten der beiden resultierenden Objekte umgeht.
- Soft-Split: Die Linie wird in zwei separate Objekte aufgeteilt. Jedes hat seine eigene Geometrie, verwendet aber dieselben Attributdaten.
- Hard-Split: Die Linie wird in zwei separate Objekte aufgeteilt. Beide haben ihre eigene Geometrie und eigene Attributdaten.