Räumliche Operationen
Räumliche Operationen verwenden Geometriefunktionen, um räumliche Daten als Eingabe zu verwenden, die Daten zu analysieren und dann die Ausgabedaten zu erzeugen, bei denen es sich um eine Ableitung der Analyse handelt, die für die Eingabedaten durchgeführt wurde.
Zu den abgeleiteten Daten, die Sie bei einer räumlichen Operation abrufen können, gehört Folgendes:
- Polygon, das als Puffer um ein Eingabe-Feature dient
Einzelnes Feature als Ergebnis der Analyse, die für eine Sammlung von Geometrien durchgeführt wird
- Einzelnes Feature als Ergebnis eines Vergleichs, um den Teil eines Features zu bestimmen, der nicht den gleichen physischen Raum wie ein anderes Feature einnimmt
- Einzelnes Feature als Ergebnis eines Vergleichs, um die Teile eines Features zu bestimmen, die den physischen Raum eines anderen Features einnehmen
- Multipart-Feature, das aus den Teilen beider Eingabe-Features besteht, die nicht den gleichen physischen Raum einnehmen
- Feature als Vereinigung von zwei Geometrien
Bei der für die Eingabedaten durchgeführten Analyse werden die Koordinaten oder das Textformat der sich ergebenden Geometrien zurückgegeben. Sie können diese Informationen als Teil einer größeren Abfrage verwenden, um eine weiter gehende Analyse durchzuführen, oder Sie können die Ergebnisse als Eingabe für eine andere Tabelle verwenden.
Sie können z. B. einen Puffervorgang in die WHERE-Klausel einer Überschneidungsabfrage einbinden, um zu ermitteln, ob die angegebene Geometrie einen angegebenen Bereich einer anderen Geometrie schneidet.
In den folgenden Beispielen werden "ST_Geometry"-Funktionen verwendet. Informationen zu den speziellen Geometriefunktionen und zur Syntax, die für eine andere Datenbank und einen anderen räumlichen Datentyp verwendet werden, finden Sie in der Dokumentation zur jeweiligen Datenbank und zum Datentyp.
In diesem Beispiel müssen Benachrichtigungen an alle Eigentümer innerhalb eines Umkreises von 1.000 Fuß um eine gesperrte Straße herum gesendet werden. Die WHERE-Klausel erzeugt einen 1.000-Fuß-Puffer um die Straße, die gesperrt wird. Dieser Puffer wird dann mit den Grundstücken in dem Bereich verglichen, um zu ermitteln, welche vom Puffer geschnitten werden.
SELECT p.owner,p.address,s.stname FROM parcels p, streets s WHERE s.stname = 'Main' AND sde.st_intersects (p.shape, sde.st_buffer (s.shape, 1000)) = 't';
In diesem Beispiel wird eine bestimmte Straße (Main Street) in der WHERE-Klausel ausgewählt, und anschließend wird ein Puffer um die Straße erstellt und mit den Features in der Tabelle "parcels" verglichen, um zu bestimmen, ob sie sich überschneiden.* Für alle Flurstücke, die vom Puffer der Main Street geschnitten werden, wird der Name des Flurstückbesitzers mit der Adresse zurückgegeben.
* Die Reihenfolge, in der die Teile der WHERE-Klausel ausgeführt werden, hängt vom Datenbank-Optimizer ab.
Im nächsten Beispiel werden die Ergebnisse einer räumlichen Operation (Vereinigen (Union)) für Tabellen mit Nachbarschafts- und Schulbezirksflächen verwendet und die sich ergebenden Features in eine andere Tabelle eingefügt:
INSERT INTO combo c (shape) VALUES ( (SELECT sde.st_union (n.shape,d.shape) FROM neighborhoods n, school_districts d),5);
Weitere Informationen zur Verwendung von räumlichen Operatoren mit "ST_Geometry" finden Sie unter Funktionen für räumliche Operationen für "ST_Geometry". Informationen zur Verwendung von räumlichen Operatoren mit den räumlichen Typen IBM DB2, IBM Informix, Oracle Spatial, PostGIS oder Microsoft SQL Server finden Sie in der Dokumentation für diese Datenbankmanagementsysteme.