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

ST_SymDifference

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

الاسم

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

المختصر

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

الوصف

تُعيد شكلاً هندسياً يمثّل أجزاء الشكلين A وB التي لا تتقاطع. وهذا يكافئ ST_Union(A,B) - ST_Intersection(A,B). ويُسمّى فرقاً متماثلاً لأن ST_SymDifference(A,B) = ST_SymDifference(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.21

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

أمثلة

الخطّان الأصليان معروضين معاً

الفرق المتماثل للخطين

--Safe for 2d - symmetric difference of 2 linestrings
SELECT ST_AsText(
    ST_SymDifference(
        ST_GeomFromText('LINESTRING(50 100, 50 200)'),
        ST_GeomFromText('LINESTRING(50 50, 50 150)')
    )
);

st_astext
---------
MULTILINESTRING((50 150,50 200),(50 50,50 100))
--When used in 3d doesn't quite do the right thing
SELECT ST_AsEWKT(ST_SymDifference(ST_GeomFromEWKT('LINESTRING(1 2 1, 1 4 2)'),
    ST_GeomFromEWKT('LINESTRING(1 1 3, 1 3 4)')))

st_astext
------------
MULTILINESTRING((1 3 2.75,1 4 2),(1 1 3,1 2 2.25))