Es ist möglich, im Rahmen der SQL-Funktionalität eine raumbezogene Suche durchzuführen. Raumbezogene Suchvorgänge können entweder implizit durch die im Dialogfeld SQL ausgewählten Optionen erfolgen oder explizit, indem das Schlüsselwort SPATIAL in einer schriftlichen Abfrage verwendet wird.
Implizite raumbezogene Suchvorgänge werden vollständig im Dialogfeld SQL definiert und können zwischen zwei beliebigen Netzlayern oder zwischen einem Netzlayer und einem GIS-Layer durchgeführt werden, wie unten beschrieben:
Um ein Feld bei der raumbezogenen Layersuche zu berücksichtigen, wählen Sie es unter Feld aus, oder nehmen Sie direkt im Bearbeitungsfeld eine Eingabe vor. Verwenden Sie dabei die unten dargestellte Syntax, wobei der Feldname mithilfe der Syntax gislayer.<field_name> einbezogen wird.
Beispiele für diesen Abfragetyp sind unten aufgeführt und stehen im Hilfethema SQL-Beispiel: Kritische Rohre zur Verfügung.
Wenn in der Abfrage sowohl Auswahloptionen für eine raumbezogene Suche als auch für den Objekttyp definiert sind, wird die raumbezogene Suche zuerst durchgeführt. Die Hauptabfrage mithilfe von Objekttypkriterien wird anschließend anhand der Ergebnisse der raumbezogenen Suche durchgeführt. Beispiel:
diameter > 200
Diese Abfrage führt folgende Schritte durch:
diameter > 200
Verwendet GIS-Daten, um alle Rohre mit einem Durchmesser über 200 innerhalb von 2 Metern von einer Straße zu finden.
z < 100 AND gislayer.area > 150
Wählt alle Knoten mit einer Höhe unter 100 aus, die sich innerhalb eines Polygons mit einer Fläche größer als 150 befinden.
Der Hauptvorteil der Verwendung des Schlüsselworts SPATIAL bei der raumbezogenen Suche besteht darin, dass sich die Zeilen im SQL-Block aus solchen mit und ohne raumbezogener Suche kombinieren lassen.
Das Durchführen einer expliziten raumbezogenen Suche mithilfe des Schlüsselworts SPATIAL erfordert auch die Definition der Objekttabelle, anhand derer die Abfrage die Suche durchführen soll. Dies erfolgt über eine einfache SELECT-Klausel. Die Reihenfolge, in der diese geschrieben werden, lautet:
Die Syntax für die Verwendung der raumbezogenen Suche in Abfragen lautet:
SPATIAL <geometry type> <layer type> <layer name>; SELECT FROM <object type>;
SPATIAL <geometry type> <layer type> <layer name> <distance>; SELECT FROM <object type>;
| SPATIAL-Syntaxfunktion | Syntaxoptionen | Beschreibung | |
|---|---|---|---|
| Geometrietyp | Kreuzen | Sucht nach Netzobjekten, die eine Layerlinie oder Polygonfläche schneiden. | |
| Innen | Sucht nach Netzobjekten innerhalb eines Layerpolygons. | ||
| Enthält | Sucht nach Netzpolygonen mit Layerobjekten innerhalb des Polygons. | ||
| Abstand | Sucht nach Netzobjekten innerhalb des Suchabstands eines Layerpunkts, einer Linie oder einer Polygonfläche. | ||
| Nächster | Sucht innerhalb eines angegebenen Abstands nach dem nächstgelegenen Netzobjekt. Wenn sich innerhalb des angegebenen Abstands mehrere Objekte befinden, wird das zuerst gefundene Objekt als Ergebnis zurückgegeben. | ||
| Layertyp | Netz | Objektlayer im aktuellen Netz | |
| GIS | Im GeoPlan hinter dem Netz angezeigter GIS-Hintergrundlayer | ||
| Layername | Muss für GIS-Layer eine in Anführungszeichen gesetzte Zeichenfolge und für Netzobjekte ein Tabellenname sein (nicht in Anführungszeichen gesetzt; bei einzelnen Wörtern ohne Leerzeichen optional bzw. bei mehreren Wörtern zwingend in [ ] gesetzt). | ||
| Abstand |
Wichtig: Ein Wert für Entfernung ist nur erforderlich/wird nur verwendet, wenn der Geometrietyp Entfernung oder Nächstliegend verwendet wird.
Tipp: Der Eingabewert im Feld Entfernung kann eine numerische Konstante oder eine skalare Variable sein.
|
||
SPATIAL Distance Network Reservoir 30.5; SELECT FROM [All Nodes]
Bei dieser Abfrage werden zunächst alle Knoten ausgewählt, die sich innerhalb eines Netzpolygons befinden, und dann alle Knoten, die sich im Abstand von 30.5 Einheiten von einem Reservoirobjekt befinden.
Mit der folgenden Syntax ist es auch möglich, die raumbezogene Suche aus Abfragesegmenten auszuschließen:
SPATIAL NONE;
Wenn SPATIAL NONE als Block zu einer Abfrage hinzugefügt wird, wird die SPATIAL-Klausel (implizit oder explizit) abgebrochen/aufgehoben, die für den Rest der Abfrage gültig ist, d. h., die SQL-Klausel hat ihre normale Bedeutung und wirkt sich auf die Daten im Netz ohne Bezug auf eine raumbezogene Suche aus. Nach einem SPATIAL NONE-Block können einer Abfrage zusätzliche SPATIAL-Klauseln hinzugefügt werden, um bei Bedarf neue Klauseln für die raumbezogene Suche einzuführen.
Dies ermöglicht eine Mischung aus Zeilen in einem SQL-Block, von denen einige die raumbezogene Suche verwenden und andere nicht, wodurch eine größere Flexibilität ermöglicht wird.
Die folgende Tabelle zeigt die kompatiblen Kombinationen aus Geometrien für jeden Suchtyp.
|
Raumbezogener Suchtyp |
Beschreibung des Suchtyps |
Kompatible Geometriekombinationen |
||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
Kreuzen |
Sucht nach Netzobjekten, die eine Layerlinie oder Polygonfläche schneiden. |
|
||||||||
|
Innen |
Sucht nach Netzobjekten innerhalb eines Layerpolygons. |
|
||||||||
|
Enthält |
Sucht nach Netzpolygonen mit Layerobjekten innerhalb des Polygons. |
|
||||||||
|
Abstand |
Sucht nach Netzobjekten innerhalb des Suchabstands eines Layerpunkts, einer Linie oder einer Polygonfläche. |
|
||||||||
|
Nächster |
Sucht innerhalb eines angegebenen Abstands nach dem nächstgelegenen Netzobjekt. Wenn sich innerhalb des angegebenen Abstands mehrere Objekte befinden, wird das zuerst gefundene Objekt als Ergebnis zurückgegeben. |
|