الاسم
ST_Crosses — تختبر ما إذا كان لشكلين هندسيين بعض النقاط الداخلية المشتركة، لا كلها
المختصر
boolean ST_Crosses(geometry g1, geometry g2);
الوصف
تقارن بين كائنين هندسيين وتُعيد true إذا كان تقاطعهما «يعبر مكانيًا»؛ أي أن للشكلين الهندسيين بعض النقاط الداخلية المشتركة لا كلها. يجب أن يكون تقاطع داخلي الشكلين غير فارغ وأن يكون بُعده أقل من البعد الأقصى للشكلين المُدخلين، ويجب ألا يساوي تقاطع الشكلين أيًّا منهما. وإلا فإنها تُعيد false. علاقة العبور متماثلة وغير انعكاسية.
بالصيغة الرياضية: ST_Crosses(A, B) ⇔ (dim( Int(A) ⋂ Int(B) ) < max( dim( Int(A) ), dim( Int(B) ) )) ∧ (A ⋂ B ≠ A) ∧ (A ⋂ B ≠ B)
يعبر الشكلان الهندسيان أحدهما الآخر إذا طابقت مصفوفة التقاطع DE-9IM الخاصة بهما:
-
T*T******في حالات نقطة/خط، ونقطة/مساحة، وخط/مساحة -
T*****T**في حالات خط/نقطة، ومساحة/نقطة، ومساحة/خط -
0********في حالات خط/خط -
تكون النتيجة
falseفي حالتي نقطة/نقطة ومساحة/مساحة
|
|
|
تعرّف مواصفة OpenGIS Simple Features هذا المسند فقط لحالات نقطة/خط، ونقطة/مساحة، وخط/خط، وخط/مساحة. ويوسّع JTS / GEOS التعريف ليشمل أيضًا حالات خط/نقطة، ومساحة/نقطة، ومساحة/خط. وهذا يجعل العلاقة متماثلة. |
|
|
|
تتضمن هذه الدالة تلقائيًا مقارنةً للمستطيل المحيط تستفيد من أي فهارس مكانية متاحة على الأشكال الهندسية. |
|
|
|
حُسّنت في: 3.0.0 فُعّل دعم |
تطبّق هذه الدالة مواصفة OGC Simple Features Implementation Specification for SQL 1.1. s2.1.13.3
تطبّق هذه الدالة مواصفة SQL/MM. SQL-MM 3: 5.1.29
أمثلة
تُعيد جميع الحالات التالية true.
|
|
|
|
لنفترض حالة يكون فيها لدى المستخدم جدولان: جدول للطرق وجدول للطرق السريعة.
|
CREATE TABLE roads ( id serial NOT NULL, geom geometry, CONSTRAINT roads_pkey PRIMARY KEY (road_id) );
|
CREATE TABLE highways ( id serial NOT NULL, the_gem geometry, CONSTRAINT roads_pkey PRIMARY KEY (road_id) );
|
لتحديد قائمة الطرق التي تعبر طريقًا سريعًا، استخدم استعلامًا مشابهًا لما يلي:
SELECT roads.id FROM roads, highways WHERE ST_Crosses(roads.geom, highways.geom);