Funktionen für räumliche Beziehungen für "ST_Geometry"
Die Esri und die IBM-Implementierungen von "ST_Geometry" verwenden Eigenschaften, um festzustellen, ob zwischen einem Geometriepaar eine bestimmte Beziehung besteht. Eigenschaften sind Funktionen, die den Wert "1" oder "t" für TRUE zurückgeben, wenn ein Test bestanden wurde, bzw. den Wert "0" oder "f" für FALSE, wenn der Test nicht bestanden wurde.
Wie unter Unterschiede bei der SQL-Implementierung für den Datentyp "ST_Geometry" beschrieben, geben das Modul "IBM Informix Spatial DataBlade" und PostgreSQL für diese Funktionen boolesche Werte zurück ("t" für TRUE, "f" für FALSE). Bei Oracle und IBM DB2 Spatial Extender sind die Rückgabewerte für den "ST_Geometry"-Typ "1" (eins) und "0" (null) für TRUE bzw. FALSE.
Andere Funktionen geben einen Wert für eine räumliche Beziehung zurück. Das Ergebnis, das beispielsweise von der Funktion "ST_Distance" zurückgegeben wird, ist eine Zahl mit doppelter Genauigkeit, die den Raum zwischen zwei Geometrien angibt. Funktionen wie "ST_Intersection" geben beim Kombinieren von zwei Geometrien dagegen eine Geometrie zurück.
In diesem Thema wird beschrieben, wie Sie testen können, welche Art von räumlicher Beziehung vorliegt. Bei den Tests werden dazu die Beziehungen zwischen den folgenden Elementen verglichen:
- Der Außenbereich (Exterior, E) der Geometrien, d. h. der gesamte Raum, der nicht von einer Geometrie in Anspruch genommen wird.
- Der Innenbereich (Interior, I) der Geometrien, d. h. der Raum, der von einer Geometrie in Anspruch genommen wird.
- Die Grenze (Boundary, B) der Geometrien, d. h. die Schnittstelle zwischen dem Innen- und Außenbereich einer Geometrie.
Diese Vergleiche werden mit Eigenschaften durchgeführt.
Eigenschaften testen Beziehungen. Sie geben den Wert "1" oder ein "t" (TRUE) zurück, wenn ein Vergleich die Kriterien der Funktion erfüllt. Andernfalls wird "0" oder "f" (FALSE) zurückgegeben. Eigenschaften, die das Vorhandensein einer räumlichen Beziehung überprüfen, vergleichen zwei Geometrien mit möglicherweise unterschiedlichen Typen und Dimensionen.
Eigenschaften vergleichen die X- und Y-Koordinaten der übermittelten Geometrien. Z-Koordinaten und Messwerte, sofern vorhanden, werden ignoriert. Geometrien, die Z-Koordinaten oder Messwerte aufweisen, können mit Geometrien verglichen werden, die keine Z-Koordinaten oder Messwerte besitzen.
Das von Clementini et al. entwickelte Dimensionally Extended 9 Intersection Model (DE-9IM) erweitert das 9 Intersection Model von Egenhofer und Herring auf Dimensionsebene. DE-9IM ist ein mathematischer Ansatz, der die paarweise räumliche Beziehung zwischen Geometrien mit unterschiedlichen Typen und Dimensionen definiert. Bei diesem Modell werden räumliche Beziehungen zwischen allen Geometrietypen als paarweise Überschneidungen ihres Innen- und Außenbereichs sowie ihrer Grenzen ausgedrückt, wobei bei den daraus resultierenden Überschneidungen die Dimension berücksichtigt wird.
Bei den gegebenen Geometrien a und b entsprechen I(a), B(a) und E(a) dem Innenbereich, der Grenze und dem Außenbereich von a. I(b), B(b) und E(b) stellen den Innenbereich, die Grenze und den Außenbereich von b dar. Die Überschneidungen von I(a), B(a) und E(a) mit I(b), B(b) und E(b) ergeben eine Drei-mal-drei-Matrix. Bei jeder Überschneidung können Geometrien mit unterschiedlichen Dimensionen entstehen. Beispiel: Die Überschneidung der Grenzen von zwei Polygonen könnte aus einem Punkt und einem Linestring bestehen. In diesem Fall gibt die Funktion "dim" (Dimension) "1" als größte Dimension zurück.
Die Funktion "dim" kann die folgenden Werte zurückgeben: -1, 0, 1 oder 2. Der Wert "-1" entspricht dem Nullsatz, der zurückgegeben wird, wenn keine Überschneidung ermittelt wurde oder dim(Ø).
Innenbereich |
Grenzen |
Außenbereich | |
---|---|---|---|
Innenbereich |
dim(I(a) intersects I(b)) |
dim(I(a) intersects B(b)) |
dim(I(a) intersects E(b)) |
Grenzen |
dim(B(a) intersects I(b)) |
dim(B(a) intersects B(b)) |
dim(B(a) intersects E(b)) |
Außenbereich |
dim(E(a) intersects I(b)) |
dim(E(a) intersects B(b)) |
dim(E(a) intersects E(b)) |
Die Ergebnisse der Eigenschaften für die räumliche Beziehung werden verständlich, wenn sie mit einer Mustermatrix verglichen werden, die die für das DE-9IM zulässigen Werte enthält.
Die Mustermatrix enthält die zulässigen Werte für jede Zelle der Überschneidungsmatrix. Die möglichen Musterwerte lauten folgendermaßen:
T – Es muss eine Überschneidung geben; dim = 0, 1 oder 2
F – Es darf keine Überschneidung geben; dim = -1
* – Es spielt keine Rolle, ob eine Überschneidung vorhanden ist; dim = -1, 0, 1 oder 2
0 – Es muss eine Überschneidung geben und ihre größte Dimension muss 0 sein; dim = 0
1 – Es muss eine Überschneidung geben und ihre größte Dimension muss 1 sein; dim = 1
2 – Es muss eine Überschneidung geben und ihre größte Dimension muss 2 sein; dim = 2
Jede Eigenschaft besitzt mindestens eine Mustermatrix, manche benötigen jedoch mehrere Matrizen, um die Beziehungen von verschiedenen kombinierten Geometrietypen zu beschreiben.
Die Mustermatrix der Eigenschaft "ST_Within" für Geometriekombinationen sieht wie folgt aus:
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
T |
* |
F |
|
a |
Grenzen |
* |
* |
F |
Außenbereich |
* |
* |
* |
Einfach ausgedrückt: Die Eigenschaft "ST_Within" gibt TRUE zurück, wenn sich die Innenbereiche beider Geometrien schneiden und der Innenbereich und die Grenze von a nicht den Außenbereich von b schneiden. Alle anderen Bedingungen werden vernachlässigt.
In den folgenden Abschnitten werden die verschiedenen Eigenschaften beschrieben, die für räumliche Beziehungen verwendet werden. In den Diagrammen ist die erste Eingabegeometrie jeweils schwarz und die zweite Eingabegeometrie jeweils orange dargestellt.
ST_Contains
"ST_Contains" gibt "1" oder "t" (TRUE) zurück, wenn die zweite Geometrie vollständig in der ersten Geometrie enthalten ist. Die Eigenschaft "ST_Contains" liefert das entgegengesetzte Ergebnis von "ST_Within".
Aus der Mustermatrix der Eigenschaft "ST_Contains" geht hervor, dass sich die Innenbereiche beider Geometrien schneiden müssen und der Innenbereich sowie die Grenze der zweiten Geometrie (b) nicht den Außenbereich der ersten Geometrie (a) schneiden dürfen.
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
T |
* |
* |
|
a |
Grenzen |
* |
* |
* |
Außenbereich |
F |
F |
* |
Mit "ST_Within" oder "ST_Contains" können nur die Geometrien identifiziert werden, die vollständig in einer anderen Geometrie liegen. Damit können Features aus der Auswahl ausgeschlossen werden, die die Ergebnisse verzerren könnten. Im folgenden Beispiel möchte ein mobiler Eisverkäufer ermitteln, in welcher Nachbarschaft es die meisten Kinder (potenzielle Kunden) gibt, damit er seine Route auf diese Bereiche beschränkt. Er vergleicht Polygone der betreffenden Nachbarschaften mit Zählbezirken, die ein Attribut der Gesamtanzahl von Kindern unter 16 Jahren aufweisen.
Da nicht davon auszugehen ist, dass alle in den Zählbezirken 1 und 3 registrierten Kinder in den Randgebieten leben, die zur Westside gehören, könnte die Anzahl der in der Westside lebenden Kinder verfälscht werden und zu hoch ausfallen, wenn diese beiden Zählbezirke berücksichtigt werden. Wenn nur die Zählbezirke einbezogen werden, die komplett in den Nachbarschaften liegen ("ST_Within" = 1), kann der Eisverkäufer das Risiko minimieren, seine Zeit in diesen Bereichen der Westside zu verschwenden und dadurch Umsatzeinbußen zu erleiden.
Informationen zur Syntax und ein Beispiel zur Verwendung dieser Funktion finden Sie unter ST_Contains.
ST_Crosses
"ST_Crosses" gibt den Wert "1" oder "t" (TRUE) zurück, wenn die Überschneidung eine Geometrie ergibt, deren Dimension der höchsten Dimension der zwei Quellgeometrien weniger eins entspricht und die Schnittmenge in den Innenbereichen beider Quellgeometrien liegt. "ST_Crosses" gibt "1" oder "t" (TRUE) nur für "ST_MultiPoint"/"ST_Polygon"-, "ST_MultiPoint"/"ST_LineString"-, "ST_Linestring"/"ST_LineString"-, "ST_LineString"/"ST_Polygon"- und "ST_LineString"/"ST_MultiPolygon"-Vergleiche zurück.
Diese Mustermatrix der Eigenschaft "ST_Crosses" gilt für "ST_MultiPoint"/"ST_LineString", "ST_MultiPoint"/"ST_MultiLineString", "ST_MultiPoint"/"ST_Polygon", "ST_MultiPoint"/"ST_MultiPolygon", "ST_LineString"/"ST_Polygon" und "ST_LineString"/"ST_MultiPolygon". Aus der Matrix geht hervor, dass sich die Innenbereiche schneiden müssen und mindestens der Innenbereich der ersten Geometrie (a) den Außenbereich der zweiten Geometrie (b) schneiden muss.
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
T |
* |
T |
|
a |
Grenzen |
* |
* |
* |
Außenbereich |
* |
* |
* |
Diese Matrix für die Eigenschaft "ST_Crosses" gilt für "ST_LineString"/"ST_LineString", "ST_LineString"/"ST_MultiLineString" und "ST_MultiLineString"/"ST_MultiLineString". Aus der Matrix geht hervor, dass die Dimension der Überschneidung der Innenbereiche 0 sein muss (Überschneidung an einem Punkt). Wenn die Dimension der Überschneidung 1 wäre (Überschneidung an einem Linestring), würde die Eigenschaft "ST_Crosses" FALSE zurückgeben, die Eigenschaft "ST_Overlaps" würde jedoch TRUE zurückgeben.
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
0 |
* |
* |
|
a |
Grenzen |
* |
* |
* |
Außenbereich |
* |
* |
* |
Informationen zur Syntax und ein Beispiel zur Verwendung dieser Funktion finden Sie unter ST_Crosses.
ST_Disjoint
"ST_Disjoint" gibt den Wert "1" oder "t" (TRUE) zurück, wenn die Schnittmenge der zwei Geometrien leer ist. Mit anderen Worten: Geometrien sind unzusammenhängend, wenn sie sich nicht schneiden.
Die Mustermatrix der Eigenschaft "ST_Disjoint" zeigt, dass sich weder die Innenbereiche noch die Grenzen der Geometrien schneiden.
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
F |
F |
* |
|
a |
Grenzen |
F |
F |
* |
Außenbereich |
* |
* |
* |
Informationen zur Syntax und ein Beispiel zur Verwendung dieser Funktion finden Sie unter ST_Disjoint.
ST_Equals
Die Funktion "ST_Equals" gibt den Wert "1" oder "t" (TRUE) zurück, wenn zwei Geometrien desselben Typs identische XY-Koordinatenwerte besitzen. Das erste und zweite Stockwerk eines Bürogebäudes könnten identische XY-Koordinaten besitzen und deshalb gleich sein. Mit "ST_Equals" kann auch ermittelt werden, ob zwei Features fälschlicherweise aufeinander gelegt wurden.
Die DE-9IM-Mustermatrix für Gleichheit stellt sicher, dass die Innenbereiche sich schneiden und kein Teil des Innenbereichs oder der Grenzen der Geometrie den Außenbereich der anderen Geometrie schneidet.
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
T |
* |
F |
|
a |
Grenzen |
* |
* |
F |
Außenbereich |
F |
F |
* |
Informationen zur Syntax und ein Beispiel zur Verwendung dieser Funktion finden Sie unter ST_Equals.
ST_Intersects
"ST_Intersects" gibt den Wert "1" oder "t" (TRUE) zurück, wenn die Überschneidung keine leere Schnittmenge ergibt. "ST_Intersects" liefert das entgegengesetzte Ergebnis von "ST_Disjoint".
Die Eigenschaft "ST_Intersects" gibt TRUE zurück, wenn die Bedingungen einer der folgenden Mustermatrizes TRUE zurückgeben.
Die Eigenschaft "ST_Intersects" gibt TRUE zurück, wenn sich die Innenbereiche beider Geometrien schneiden.
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
T |
* |
* |
|
a |
Grenzen |
* |
* |
* |
Außenbereich |
* |
* |
* |
Die Eigenschaft "ST_Intersects" gibt TRUE zurück, wenn der Innenbereich der ersten Geometrie die Grenze der zweiten Geometrie schneidet.
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
* |
T |
* |
|
a |
Grenzen |
* |
* |
* |
Außenbereich |
* |
* |
* |
Die Eigenschaft "ST_Intersects" gibt TRUE zurück, wenn die Grenze der ersten Geometrie den Innenbereich der zweiten Geometrie schneidet.
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
* |
* |
* |
|
a |
Grenzen |
T |
* |
* |
Außenbereich |
* |
* |
* |
Die Eigenschaft "ST_Intersects" gibt TRUE zurück, wenn sich die Grenzen der Geometrien schneiden.
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
* |
* |
* |
|
a |
Grenzen |
* |
T |
* |
Außenbereich |
* |
* |
* |
Informationen zur Syntax und ein Beispiel zur Verwendung dieser Funktion finden Sie unter ST_Intersects.
ST_Overlaps
"ST_Overlaps" vergleicht zwei Geometrien mit derselben Dimension und gibt den Wert "1" oder "t" (TRUE) zurück, wenn die Schnittmenge eine Geometrie ergibt, die sich von den beiden Quellgeometrien unterscheidet, jedoch dieselbe Dimension aufweist.
"ST_Overlaps" gibt den Wert "1" oder "t" (TRUE) nur für Geometrien mit identischer Dimension zurück, wenn ihre Schnittmenge eine Geometrie mit derselben Dimension ergibt. Mit anderen Worten: Wenn die Überschneidung von zwei "ST_Polygons" ein "ST_Polygon" ergibt, wird "1" oder "t" (TRUE) zurückgegeben.
Diese Mustermatrix gilt für "ST_Polygon"/"ST_Polygon"-, "ST_MultiPoint"/"ST_MultiPoint"- und "ST_MultiPolygon"/"ST_MultiPolygon"-Überlagerungen. Für diese Kombinationen gibt die Eigenschaft "ST_Overlaps" TRUE zurück, wenn der Innenbereich beider Geometrien den Innen- und Außenbereich der anderen Geometrie schneidet.
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
T |
* |
T |
|
a |
Grenzen |
* |
* |
* |
Außenbereich |
T |
* |
* |
Die folgende Mustermatrix gilt für "ST_LineString"/"ST_LineString"- und "ST_MultiLineString"/"ST_MultiLineString"-Überlagerungen. In diesem Fall muss die Überschneidung der Geometrien eine Geometrie mit der Dimension 1 ergeben (ein anderer "ST_LineString" oder "ST_MultiLineString"). Wenn die Dimension der Überschneidung der Innenbereiche 0 gewesen wäre (ein Punkt), hätte die Funktion "ST_Overlaps" FALSE zurückgegeben. Die Eigenschaft "ST_Crosses" hätte dagegen TRUE zurückgegeben.
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
1 |
* |
T |
|
a |
Grenzen |
* |
* |
* |
Außenbereich |
T |
* |
* |
Informationen zur Syntax und ein Beispiel zur Verwendung dieser Funktion finden Sie unter ST_Overlaps.
ST_Relate
"ST_Relate" gibt den Wert "1" oder "t" (TRUE) zurück, wenn die von der Mustermatrix angegebene räumliche Beziehung gültig ist. Der Wert "1" oder "t" (TRUE) gibt an, dass eine räumliche Beziehung zwischen den Geometrien besteht.
Wenn die Innenbereiche oder die Grenzen der Geometrien a und b in einer Beziehung stehen, ist "ST_Relate" wahr. Ob die Außenbereiche einer Geometrie den Innenbereich oder die Grenze einer anderen schneiden, ist irrelevant.
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
T |
T |
* |
|
a |
Grenzen |
T |
T |
* |
Außenbereich |
* |
* |
* |
Informationen zur Syntax und ein Beispiel zur Verwendung dieser Funktion finden Sie unter ST_Relate.
ST_Touches
"ST_Touches" gibt den Wert "1" oder "t" (TRUE) zurück, wenn keiner der Punkte, die beiden Geometrien gemeinsam sind, den Innenbereich beider Geometrien schneidet. Bei mindestens einer Geometrie muss es sich um einen "ST_LineString", einen "ST_MultiLineString" oder ein "ST_MultiPolygon" handeln.
Die Mustermatrizes zeigen, dass die Eigenschaft "ST_Touches" TRUE zurückgibt, wenn sich die Innenbereiche der Geometrie nicht schneiden und die Grenze einer der Geometrien den Innenbereich oder die Grenze der anderen Geometrie schneidet.
Die Eigenschaft "ST_Touches" gibt TRUE zurück, wenn die Grenze von Geometrie b den Innenbereich von a schneidet, die Innenbereiche sich jedoch nicht schneiden.
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
F |
T |
* |
|
a |
Grenzen |
* |
* |
* |
Außenbereich |
* |
* |
* |
Die Funktion "ST_Touches" gibt TRUE zurück, wenn die Grenze von Geometrie a den Innenbereich von b schneidet, die Innenbereiche sich jedoch nicht schneiden.
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
F |
* |
* |
|
a |
Grenzen |
T |
* |
* |
Außenbereich |
* |
* |
* |
Die Eigenschaft "ST_Touches" gibt TRUE zurück, wenn sich die Grenzen beider Geometrien schneiden, die Innenbereiche sich jedoch nicht schneiden.
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
F |
* |
* |
|
a |
Grenzen |
* |
T |
* |
Außenbereich |
* |
* |
* |
Informationen zur Syntax und ein Beispiel zur Verwendung dieser Funktion finden Sie unter ST_Touches.
ST_Within
"ST_Within" gibt "1" oder "t" (TRUE) zurück, wenn die erste Geometrie vollständig innerhalb der zweiten Geometrie liegt. "ST_Within" testet auf das entgegengesetzte Ergebnis von "ST_Contains".
Aus der Mustermatrix der Eigenschaft "ST_Within" geht hervor, dass sich die Innenbereiche beider Geometrien schneiden müssen und der Innenbereich und die Grenze der ersten Geometrie (a) nicht den Außenbereich der zweiten Geometrie (b) schneiden dürfen.
b |
||||
Innenbereich |
Grenzen |
Außenbereich |
||
Innenbereich |
T |
* |
F |
|
a |
Grenzen |
* |
* |
F |
Außenbereich |
* |
* |
* |
Informationen zur Syntax und ein Beispiel zur Verwendung dieser Funktion finden Sie unter ST_Within.