Name

ST_Overlaps — Prüft, ob zwei Geometrien die gleiche Abmessung haben und sich schneiden, aber jede mindestens einen Punkt hat, der nicht in der anderen liegt

Übersicht

boolean ST_Overlaps(geometry A, geometry B);

Beschreibung

Gibt TRUE zurück, wenn sich Geometrie A und B "räumlich überschneiden". Zwei Geometrien überlappen sich, wenn sie dieselbe Dimension haben, ihre Innenräume sich in dieser Dimension schneiden und jede Geometrie mindestens einen Punkt im Inneren der anderen hat (oder äquivalent dazu, keine der beiden Geometrien die andere überdeckt). Die Überlappungsbeziehung ist symmetrisch und irreflexiv.

Mathematisch ausgedrückt: ST_Overlaps(A, B) ⇔ ( dim(A) = dim(B) = dim( Int(A) ⋂ Int(B) )) ∧ (A ⋂ B ≠ A) ∧ (A ⋂ B ≠ B)

[Anmerkung]

Diese Funktion beinhaltet automatisch einen Bounding-Box-Vergleich, der alle räumlichen Indizes verwendet, die für die Geometrien verfügbar sind. Um die Verwendung des Index zu vermeiden, verwenden Sie die Funktion _ST_Overlaps.

Wird durch das GEOS Modul ausgeführt

Verbessert: 3.0.0 ermöglicht die Unterstützung von GEOMETRYCOLLECTION

HINWEIS: Dies ist die "zulässige" Version, die einen booleschen Wert und keine ganze Zahl zurückgibt.

Diese Methode implementiert die OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.2 // s2.1.13.3

Diese Methode setzt die SQL/MM-Spezifikation um. SQL-MM 3: 5.1.32

Beispiele

ST_Overlaps gibt TRUE in den folgenden Situationen zurück:

Two MultiPoints overlap when they share some, but not all, points.

Code
SELECT ST_Overlaps(a, b)
FROM (SELECT
  'MULTIPOINT ((20 20),(40 90),(80 130),(140 100),(110 40),(120 170),(150 70))'::geometry AS a,
  'MULTIPOINT ((180 10),(40 90),(80 130),(160 150),(110 40),(50 50),(50 160))'::geometry AS b
) AS example;
Ausgabe von Rastern
t
Figure
Geometry figure for visual-st-overlaps-01

Two LineStrings overlap along part of their paths.

Code
SELECT ST_Overlaps(a, b)
FROM (SELECT
  'LINESTRING (10 10,40 90,70 110,140 110,170 130,190 190)'::geometry AS a,
  'LINESTRING (10 190,50 130,90 110,130 110,160 70,180 10)'::geometry AS b
) AS example;
Ausgabe von Rastern
t
Figure
Geometry figure for visual-st-overlaps-02

Two Polygons overlap where their interiors intersect and neither contains the other.

Code
SELECT ST_Overlaps(a, b)
FROM (SELECT
  'POLYGON ((140 140,140 122,135 105,126 100,118 99,110 94,100 86,97 73,102 59,98 49,87 38,70 30,55 29,40 30,28 38,20 50,14 66,10 84,6 100,4 119,4 143,6 166,10 180,18 191,28 195,40 190,55 189,67 186,86 179,112 165,124 158,133 148,140 140),(48 177,40 177,30 174,24 166,22 159,25 155,30 153,40 154,45 157,52 162,53 169,51 174,48 177))'::geometry AS a,
  'POLYGON ((75 63,79 50,87 38,95 31,108 25,124 22,140 18,154 11,166 6,176 10,184 21,188 35,190 58,190 82,193 104,190 121,185 139,178 154,166 163,154 171,139 172,124 171,112 165,96 152,92 142,92 126,86 116,79 110,75 104,72 94,73 86,75 76,75 63))'::geometry AS b
) AS example;
Ausgabe von Rastern
t
Figure
Geometry figure for visual-st-overlaps-03

Ein Punkt auf einem LineString ist enthalten, aber da er eine geringere Dimension hat, überschneidet oder kreuzt er sich nicht.

Code
SELECT ST_Overlaps(a, b) AS overlaps, ST_Crosses(a, b) AS crosses,
       ST_Intersects(a, b) AS intersects, ST_Contains(b, a) AS b_contains_a
FROM (SELECT 'POINT (100 100)'::geometry As a,
             'LINESTRING (30 50,40 160,160 40,180 160)'::geometry  AS b) AS t
Ausgabe von Rastern
overlaps | crosses | intersects | b_contains_a
---------+----------------------+--------------
f        | f       | t          | t
Figure
Geometry figure for visual-st-overlaps-04

Ein LineString, der ein Polygon teilweise abdeckt, schneidet und kreuzt sich, überschneidet sich aber nicht, da er unterschiedliche Abmessungen hat.

Code
SELECT ST_Overlaps(a, b) AS overlaps, ST_Crosses(a, b) AS crosses,
       ST_Intersects(a, b) AS intersects, ST_Contains(a, b) AS contains
FROM (SELECT 'POLYGON ((40 170,90 30,180 100,40 170))'::geometry AS a,
             'LINESTRING(10 10,190 190)'::geometry AS b) AS t;
Ausgabe von Rastern
overlap | crosses | intersects | contains
---------+---------+------------+--------------
 f       | t       | t          | f
Figure
Geometry figure for visual-st-overlaps-05

Zwei Polygone, die sich schneiden, ohne dass das eine vom anderen enthalten ist, überschneiden sich, aber nicht, weil ihr Schnittpunkt die gleiche Dimension hat.

Code
SELECT ST_Overlaps(a, b) AS overlaps, ST_Crosses(a, b) AS crosses,
       ST_Intersects(a, b) AS intersects, ST_Contains(b, a) AS b_contains_a,
       ST_Dimension(a) AS dim_a, ST_Dimension(b) AS dim_b,
       ST_Dimension(ST_Intersection(a, b)) AS dim_int
FROM (SELECT 'POLYGON ((40 170,90 30,180 100,40 170))'::geometry AS a,
             'POLYGON ((110 180,20 60,130 90,110 180))'::geometry AS b) As t;
Ausgabe von Rastern
overlaps | crosses | intersects | b_contains_a | dim_a | dim_b | dim_int
----------+---------+------------+--------------+-------+-------+-----------
 t        | f       | t          | f            |     2 |     2 |       2
Figure
Geometry figure for visual-st-overlaps-06