الاسم
ST_CoveredBy — تختبر ما إذا كانت كل نقطة من A تقع في B
المختصر
boolean ST_CoveredBy(geometry geomA, geometry geomB);
boolean ST_CoveredBy(geography geogA, geography geogB);
الوصف
تُعيد true إذا وقعت كل نقطة في Geometry/Geography A داخل Geometry/Geography B (أي تتقاطع مع داخله أو حدوده). وبصورة مكافئة، تختبر أنه لا توجد نقطة من A تقع خارج B (في خارجه).
بالصيغة الرياضية: ST_CoveredBy(A, B) ⇔ A ⋂ B = A
ST_CoveredBy هي عكس ST_Covers. لذا فإن ST_CoveredBy(A,B) = ST_Covers(B,A).
يُفضَّل عمومًا استخدام هذه الدالة بدلًا من ST_Within، لأن تعريفها أبسط ولا يتضمن الخاصية الغريبة «الحدود لا تقع داخل شكلها الهندسي».
|
|
|
تتضمن هذه الدالة تلقائيًا مقارنةً للمستطيل المحيط تستفيد من أي فهارس مكانية متاحة على الأشكال الهندسية. لتجنب استخدام الفهرس، استخدم الدالة |
|
|
|
حُسّنت في: 3.0.0 فُعّل دعم |
|
|
|
لا تستخدم هذه الدالة مع أشكال هندسية غير صالحة. ستحصل على نتائج غير متوقعة. |
تُنفَّذ بواسطة وحدة GEOS
متاحة منذ: 1.2.2
ملاحظة: هذا هو الإصدار «المسموح به» الذي يُعيد قيمة منطقية (boolean)، وليس عددًا صحيحًا.
ليست معيارًا من OGC، لكنها موجودة في Oracle أيضًا.
أمثلة
--a circle coveredby a circle
SELECT ST_CoveredBy(smallc,smallc) As smallinsmall,
ST_CoveredBy(smallc, bigc) As smallcoveredbybig,
ST_CoveredBy(ST_ExteriorRing(bigc), bigc) As exteriorcoveredbybig,
ST_Within(ST_ExteriorRing(bigc),bigc) As exeriorwithinbig
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
smallinsmall | smallcoveredbybig | exteriorcoveredbybig | exeriorwithinbig
--------------+-------------------+----------------------+------------------
t | t | t | f
(1 row)