Namn

ST_Covers — Testar om varje punkt i B ligger i A

Synopsis

boolean ST_Covers(geometry geomA, geometry geomB);

boolean ST_Covers(geography geogpolyA, geography geogpointB);

Beskrivning

Returnerar true om varje punkt i Geometry/Geography B ligger inuti (dvs. skär insidan eller gränsen av) Geometry/Geography A. Testar på motsvarande sätt att ingen punkt i B ligger utanför (i utsidan av) A.

I matematiska termer: ST_Covers(A, B) ⇔ A ⋂ B = B

ST_Covers är det omvända av ST_CoveredBy. Alltså, ST_Covers (A,B) = ST_CoveredBy(B,A)..

Generellt bör denna funktion användas istället för ST_Contains, eftersom den har en enklare definition som inte har den egenheten att "geometrier inte innehåller sin gräns".

[Notera]

&index_aware; För att undvika indexanvändning, använd funktionen _ST_Covers.

Förbättrad: 3.0.0 aktiverade stöd för GEOMETRYCOLLECTION

[Viktigt]

Använd inte denna funktion med ogiltiga geometrier. Du kommer att få oväntade resultat.

Utförs av GEOS-modulen

Förbättrad: 2.4.0 Stöd för polygon i polygon och linje i polygon har lagts till för geograftyp

Förbättrad: 2.3.0 Förbättring av PIP-kortslutning för geometri utökad för att stödja MultiPoints med få punkter. Tidigare versioner stödde endast punkt i polygon.

Tillgänglighet: 1.5 - stöd för geografi infördes.

Tillgänglighet: 1.2.2

OBS: detta är den "tillåtna" versionen som returnerar ett boolean, inte ett heltal.

Inte en OGC-standard, men Oracle har den också.

Exempel

Exempel på geometri

This example tests a circle covering another circle.

Code
WITH circles AS (
  SELECT ST_Buffer(center, 10) AS smallc,
         ST_Buffer(center, 20) AS bigc
  FROM (SELECT 'POINT(1 2)'::geometry AS center) AS p
)
SELECT
  ST_Covers(smallc, smallc) AS smallinsmall,
  ST_Covers(smallc, bigc) AS smallcoversbig,
  ST_Covers(bigc, ST_ExteriorRing(bigc)) AS bigcoversexterior,
  ST_Contains(bigc, ST_ExteriorRing(bigc)) AS bigcontainsexterior
FROM circles;
Rasterutdata
smallinsmall | smallcoversbig | bigcoversexterior | bigcontainsexterior
--------------+----------------+-------------------+---------------------
 t            | f              | t                 | f
(1 row) 
Figure
Geometry figure for visual-st-covers-01

Geography example

This example compares a point with a 300-meter buffer against a point and against a 10-meter buffer around that point.

Code
SELECT ST_Covers(geog_poly, geog_pt) As poly_covers_pt,
  ST_Covers(ST_Buffer(geog_pt, 10), geog_pt) As buff_10m_covers_cent
  FROM (SELECT ST_Buffer('SRID=4326;POINT(-99.327 31.4821)'::geography, 300) As geog_poly,
        'SRID=4326;POINT(-99.33 31.483)'::geography As geog_pt ) As foo;
Rasterutdata
poly_covers_pt | buff_10m_covers_cent
----------------+------------------
 f              | t