Benutzer- und Referenzhandbuch

ST_Contains

ST_Contains verwendet zwei Geometrieobjekte und gibt 1 (TRUE) zurück, wenn das erste Objekt das zweite vollständig beinhaltet, andernfalls wird 0 (FALSE) zurückgegeben.

Syntax

db2gse.ST_Contains(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)

Rückgabetyp

Integer

Beispiele

Im nachfolgenden Beispiel werden zwei Tabellen erstellt. Eine Tabelle enthält die Gebäudegrundflächen ("footprints") der Stadt, die andere Tabelle die Grundstücke ("lots"). Der Stadtplaner möchte sicherstellen, daß alle Gebäudegrundflächen vollständig auf dem jeweiligen Grundstück liegen.

In beiden Tabellen speichert der Datentyp Multipolygon die Geometrie der Gebäudegrundflächen und der Grundstücke. Der Datenbank-Designer hat für beide Funktionen Multipolygone ausgewählt. Der Designer hat festgestellt, daß die Grundstücke durch natürliche Merkmale wie beispielsweise Flüsse unterbrochen sein können und daß die Gebäudegrundflächen häufig mehrere Gebäude umfassen.

CREATE TABLE BUILDINGFOOTPRINTS (building_id integer,
                                 lot_id      integer,
                                 footprint   db2gse.ST_MultiPolygon);
 
CREATE TABLE LOTS (  lot_id integer, lot db2gse.ST_MultiPolygon );

Der Stadtplaner wählt zunächst die Gebäude aus, die sich nicht vollständig auf einem Grundstück befinden.

SELECT building_id
FROM BUILDINGFOOTPRINTS, LOTS
WHERE db2gse.ST_Contains(lot,footprint) = 0;

Der Stadtplaner stellt fest, daß die erste Abfrage eine Liste aller Gebäude-IDs zurückgibt, deren Gebäudegrundfläche außerhalb eines Grundstückspolygons liegt. Er weiß aber auch, daß diese Information kein Hinweis darauf ist, ob den anderen Gebäuden die richtige Grundstücks-ID zugeordnet ist. Diese zweite Abfrage führt eine Datenintegritätsprüfung mit der Spalte lot_id der Tabelle BUILDINGFOOTPRINTS aus.

SELECT bf.building_id "building id", bf.lot_id "buildings lot_id",
       LOTS.lot_id "LOTS lot_id"
FROM BUILDINGFOOTPRINTS bf, LOTS
WHERE db2gse.ST_Contains(lot,footprint) = 1 AND LOTS.lot_id <> bf.lot_id;

In Abbildung 30 liegen die mit ihren Gebäude-IDs gekennzeichneten Gebäudegrundflächen innerhalb der jeweiligen Grundstücke. Die Grundstückslinien sind als gepunktete Linien dargestellt. Dies ist zwar in der Abbildung nicht dargestellt; diese Linien reichen jedoch bis zur Mitte der Straße und umfassen die Grundstücke und die darauf enthaltenen Gebäudegrundflächen vollständig.

Abbildung 30. Mit ST_Contains sicherstellen, daß alle Gebäude vollständig auf dem jeweiligen Grundstück liegen

top


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]