GISarabia.org
PostGIS › الدليل الرسمي › 7. مرجع PostGIS › 7.11.1. العلاقات الطوبولوجية
PostGIS 3.6 · Official Manual · ترجمة عربية

ST_Contains

الصفحة الأصلية بالإنجليزية postgis.net ↗

الاسم

ST_Contains — تختبر ما إذا كانت كل نقطة من B تقع في A، وما إذا كان لداخليهما نقطة مشتركة

المختصر

boolean ST_Contains(geometry geomA, geometry geomB);

الوصف

تُعيد TRUE إذا كان الشكل الهندسي A يحتوي الشكل الهندسي B. يحتوي A الشكلَ B إذا وفقط إذا وقعت جميع نقاط B داخل A (أي في داخله أو على حدوده) (أو بصورة مكافئة، لم تقع أي نقطة من B خارج A)، وكان لداخلي A وB نقطة مشتركة واحدة على الأقل.

بالصيغة الرياضية: ST_Contains(A, B) ⇔ (A ⋂ B = B) ∧ (Int(A) ⋂ Int(B) ≠ ∅)

علاقة الاحتواء انعكاسية: كل شكل هندسي يحتوي نفسه. (وفي المقابل، في المسند ST_ContainsProperly لا يحتوي الشكل الهندسي نفسه احتواءً تامًا البتة.) والعلاقة تخالفية (antisymmetric): إذا كان ST_Contains(A,B) = true وST_Contains(B,A) = true، فيجب أن يكون الشكلان الهندسيان متساويين طوبولوجيًا (ST_Equals(A,B) = true).

ST_Contains هي عكس ST_Within. لذا فإن ST_Contains(A,B) = ST_Within(B,A).

[ملاحظة]

لأن الداخليين يجب أن يشتركا في نقطة، فمن دقائق هذا التعريف أن المضلعات والخطوط لا تحتوي الخطوط والنقاط الواقعة كليًا على حدودها. لمزيد من التفاصيل راجع دقائق Covers وContains وWithin في OGC. يوفر المسند ST_Covers علاقة أكثر شمولًا.

[ملاحظة]

تتضمن هذه الدالة تلقائيًا مقارنةً للمستطيل المحيط تستفيد من أي فهارس مكانية متاحة على الأشكال الهندسية. لتجنب استخدام الفهرس، استخدم الدالة _ST_Contains.

تُنفَّذ بواسطة وحدة GEOS

حُسّنت في: 2.3.0 وُسّع تحسين الاختصار في اختبار نقطة داخل مضلع (PIP) ليدعم MultiPoints ذات النقاط القليلة. كانت الإصدارات السابقة تدعم فقط نقطة داخل مضلع.

[هام]

حُسّنت في: 3.0.0 فُعّل دعم GEOMETRYCOLLECTION

[هام]

لا تستخدم هذه الدالة مع أشكال هندسية غير صالحة. ستحصل على نتائج غير متوقعة.

ملاحظة: هذا هو الإصدار «المسموح به» الذي يُعيد قيمة منطقية (boolean)، وليس عددًا صحيحًا.

تطبّق هذه الدالة مواصفة OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.2 // s2.1.13.3 - مثل within(geometry B, geometry A)

تطبّق هذه الدالة مواصفة SQL/MM. SQL-MM 3: 5.1.31

أمثلة

تُعيد ST_Contains القيمة TRUE في الحالات التالية:

LINESTRING / MULTIPOINT

POLYGON / POINT

POLYGON / LINESTRING

POLYGON / POLYGON

تُعيد ST_Contains القيمة FALSE في الحالات التالية:

POLYGON / MULTIPOINT

POLYGON / LINESTRING

بسبب شرط تقاطع الداخل، تُعيد ST_Contains القيمة FALSE في الحالات التالية (في حين تُعيد ST_Covers القيمة TRUE):

LINESTRING / POINT

POLYGON / LINESTRING

-- A circle within a circle
SELECT ST_Contains(smallc, bigc) As smallcontainsbig,
     ST_Contains(bigc,smallc) As bigcontainssmall,
     ST_Contains(bigc, ST_Union(smallc, bigc)) as bigcontainsunion,
     ST_Equals(bigc, ST_Union(smallc, bigc)) as bigisunion,
     ST_Covers(bigc, ST_ExteriorRing(bigc)) As bigcoversexterior,
     ST_Contains(bigc, ST_ExteriorRing(bigc)) As bigcontainsexterior
FROM (SELECT ST_Buffer(ST_GeomFromText('POINT(1 2)'), 10) As smallc,
       ST_Buffer(ST_GeomFromText('POINT(1 2)'), 20) As bigc) As foo;

-- Result
  smallcontainsbig | bigcontainssmall | bigcontainsunion | bigisunion | bigcoversexterior | bigcontainsexterior
------------------+------------------+------------------+------------+-------------------+---------------------
 f                | t                | t                | t          | t        | f

-- Example demonstrating difference between contains and contains properly
SELECT ST_GeometryType(geomA) As geomtype, ST_Contains(geomA,geomA) AS acontainsa, ST_ContainsProperly(geomA, geomA) AS acontainspropa,
   ST_Contains(geomA, ST_Boundary(geomA)) As acontainsba, ST_ContainsProperly(geomA, ST_Boundary(geomA)) As acontainspropba
FROM (VALUES ( ST_Buffer(ST_Point(1,1), 5,1) ),
       ( ST_MakeLine(ST_Point(1,1), ST_Point(-1,-1) ) ),
       ( ST_Point(1,1) )
    ) As foo(geomA);

  geomtype    | acontainsa | acontainspropa | acontainsba | acontainspropba
--------------+------------+----------------+-------------+-----------------
ST_Polygon    | t          | f              | f           | f
ST_LineString | t          | f              | f           | f
ST_Point      | t          | t              | f           | f