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

ST_ContainsProperly

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

الاسم

ST_ContainsProperly — تختبر ما إذا كانت كل نقطة من B تقع في داخل A

المختصر

boolean ST_ContainsProperly(geometry geomA, geometry geomB);

الوصف

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

بالصيغة الرياضية: ST_ContainsProperly(A, B) ⇔ Int(A) ⋂ B = B

يحتوي A الشكلَ B احتواءً تامًا إذا طابقت مصفوفة التقاطع DE-9IM للشكلين الهندسيين النمط [T**FF*FF*]

لا يحتوي A نفسه احتواءً تامًا، لكنه يحتوي نفسه.

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

[ملاحظة]

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

[ملاحظة]

ميزة هذا المسند مقارنةً بـ ST_Contains وST_Intersects أنه يمكن حسابه بكفاءة أكبر، دون الحاجة إلى حساب الطوبولوجيا عند النقاط المفردة.

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

متاحة منذ: 1.4.0

[هام]

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

[هام]

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

أمثلة

--a circle within a circle
  SELECT ST_ContainsProperly(smallc, bigc) As smallcontainspropbig,
  ST_ContainsProperly(bigc,smallc) As bigcontainspropsmall,
  ST_ContainsProperly(bigc, ST_Union(smallc, bigc)) as bigcontainspropunion,
  ST_Equals(bigc, ST_Union(smallc, bigc)) as bigisunion,
  ST_Covers(bigc, ST_ExteriorRing(bigc)) As bigcoversexterior,
  ST_ContainsProperly(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
  smallcontainspropbig | bigcontainspropsmall | bigcontainspropunion | bigisunion | bigcoversexterior | bigcontainsexterior
------------------+------------------+------------------+------------+-------------------+---------------------
 f                     | t                    | f                    | 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