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

ST_Crosses

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

الاسم

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 فُعّل دعم GEOMETRYCOLLECTION

تطبّق هذه الدالة مواصفة OGC Simple Features Implementation Specification for SQL 1.1. s2.1.13.3

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

أمثلة

تُعيد جميع الحالات التالية true.

MULTIPOINT / LINESTRING

MULTIPOINT / POLYGON

LINESTRING / POLYGON

LINESTRING / LINESTRING

لنفترض حالة يكون فيها لدى المستخدم جدولان: جدول للطرق وجدول للطرق السريعة.

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);

انظر أيضًا

ST_Contains, ST_Overlaps