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

ST_Difference

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

الاسم

ST_Difference — تحسب شكلًا هندسيًا يمثّل جزء الشكل الهندسي A الذي لا يتقاطع مع الشكل الهندسي B.

المختصر

geometry ST_Difference(geometry geomA, geometry geomB, float8 gridSize = -1);

الوصف

تُعيد شكلًا هندسيًا يمثّل جزء الشكل الهندسي A الذي لا يتقاطع مع الشكل الهندسي B. وهذا يكافئ A - ST_Intersection(A,B). إذا كان A محتوًى بالكامل في B فيُعاد شكل هندسي ذري فارغ من النوع المناسب.

[ملاحظة]

هذه دالة التراكب الوحيدة التي يهم فيها ترتيب المدخلات. تُعيد ST_Difference(A, B) دائمًا جزءًا من A.

إذا أُعطي المعامل الاختياري gridSize (يتطلب GEOS-3.9.0 أو أحدث)، فمن المضمون أن تقع جميع رؤوس النتيجة على شبكة بالحجم المحدد. ولكي تعطي العملية نتائج متوقعة يجب أن تقع جميع رؤوس المدخلات مسبقًا على الشبكة المحددة، انظر ST_ReducePrecision.

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

حُسّنت في: 3.1.0 قبول المعامل gridSize.

يتطلب GEOS >= 3.9.0 لاستخدام المعامل gridSize.

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

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

تدعم هذه الدالة الأبعاد الثلاثية ولا تُسقط قيمة Z. غير أن النتيجة تُحسب باستخدام XY فقط. وتُنسخ قيم Z في النتيجة أو يُحسب متوسطها أو تُستوفى.

أمثلة

الخطوط المُدخلة

فرق الخطين

فرق خطوط ثنائية الأبعاد.

SELECT ST_AsText(
    ST_Difference(
            'LINESTRING(50 100, 50 200)'::geometry,
            'LINESTRING(50 50, 50 150)'::geometry
        )
    );

st_astext
---------
LINESTRING(50 150,50 200)

فرق نقاط ثلاثية الأبعاد.

SELECT ST_AsEWKT( ST_Difference(
                   'MULTIPOINT(-118.58 38.38 5,-118.60 38.329 6,-118.614 38.281 7)' :: geometry,
                   'POINT(-118.614 38.281 5)' :: geometry
                  ) );

st_asewkt
---------
MULTIPOINT(-118.6 38.329 6,-118.58 38.38 5)