الاسم
ST_Intersects — تختبر ما إذا كان شكلان هندسيان يتقاطعان (لهما نقطة مشتركة واحدة على الأقل)
المختصر
boolean ST_Intersects( geometry geomA , geometry geomB );
boolean ST_Intersects( geography geogA , geography geogB );
الوصف
تُعيد true إذا كان الشكلان الهندسيان يتقاطعان. يتقاطع الشكلان إذا كانت بينهما أي نقطة مشتركة.
بالنسبة لـ geography، يُستخدم تسامح مسافة قدره 0.00001 متر (فتُعدّ النقاط القريبة جدًا متقاطعة).
بالصيغة الرياضية: ST_Intersects(A, B) ⇔ A ⋂ B ≠ ∅
يتقاطع الشكلان الهندسيان إذا طابقت مصفوفة التقاطع DE-9IM الخاصة بهما أحد الأنماط التالية:
-
T******** -
*T******* -
***T***** -
****T****
يستلزم التقاطعَ المكاني جميعُ اختبارات العلاقات المكانية الأخرى، باستثناء ST_Disjoint التي تختبر أن الأشكال الهندسية لا تتقاطع.
|
|
|
تتضمن هذه الدالة تلقائيًا مقارنةً للمستطيل المحيط تستفيد من أي فهارس مكانية متاحة على الأشكال الهندسية. |
تغيّرت في: 3.0.0 أُزيل إصدار SFCGAL وأُضيف دعم أصلي لـ TINS ثنائية الأبعاد.
حُسّنت في: 2.5.0 تدعم GEOMETRYCOLLECTION.
حُسّنت في: 2.3.0 وُسّع تحسين الاختصار في اختبار نقطة داخل مضلع (PIP) ليدعم MultiPoints ذات النقاط القليلة. كانت الإصدارات السابقة تدعم فقط نقطة داخل مضلع.
تُنفَّذ بواسطة وحدة GEOS (لنوع geometry)، أما geography فدعمها أصلي
متاحة منذ: 1.5 أُضيف دعم geography.
|
|
|
بالنسبة لـ geography، لهذه الدالة تسامح مسافة يقارب 0.00001 متر، وتستخدم الحساب على الكرة بدلًا من الشكل الإهليلجي (spheroid). |
|
|
|
ملاحظة: هذا هو الإصدار «المسموح به» الذي يُعيد قيمة منطقية (boolean)، وليس عددًا صحيحًا. |
تطبّق هذه الدالة مواصفة OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.2 //s2.1.13.3 - ST_Intersects(g1, g2 ) --> Not (ST_Disjoint(g1, g2 ))
تطبّق هذه الدالة مواصفة SQL/MM. SQL-MM 3: 5.1.27
تدعم هذه الدالة الأقواس الدائرية (Circular Strings) والمنحنيات.
تدعم هذه الدالة المثلثات وأسطح الشبكات المثلثية غير المنتظمة (TIN).
أمثلة geometry
SELECT ST_Intersects('POINT(0 0)'::geometry, 'LINESTRING ( 2 0, 0 2 )'::geometry);
st_intersects
---------------
f
(1 row)
SELECT ST_Intersects('POINT(0 0)'::geometry, 'LINESTRING ( 0 0, 0 2 )'::geometry);
st_intersects
---------------
t
(1 row)
-- Look up in table. Make sure table has a GiST index on geometry column for faster lookup.
SELECT id, name FROM cities WHERE ST_Intersects(geom, 'SRID=4326;POLYGON((28 53,27.707 52.293,27 52,26.293 52.293,26 53,26.293 53.707,27 54,27.707 53.707,28 53))');
id | name
----+-------
2 | Minsk
(1 row)
أمثلة geography
SELECT ST_Intersects(
'SRID=4326;LINESTRING(-43.23456 72.4567,-43.23456 72.4568)'::geography,
'SRID=4326;POINT(-43.23456 72.4567772)'::geography
);
st_intersects
---------------
t