ST_intersect
सापेक्ष टोपोलॉजी के आधार पर कई ज्यामिति प्रकार लौटाता है।
उदाहरण के लिए, ST_intersect
चल रहा है दो आसन्न बहुभुजों पर साझा सीमा का सामान्य भाग लौटाता है।
हालांकि यह एक एकल तालिका (जैसा कि आप pgadmin में सत्यापित कर सकते हैं, उदाहरण के लिए), QGIS के ब्राउज़र स्वैच में इसे विभिन्न ज्यामिति प्रकारों की कई तालिकाओं के रूप में दिखाया जाएगा (उदाहरण के लिए:POLYGON, MULTIPOLY, LINE और POINT) लेकिन ( कुछ हद तक भ्रमित करने वाला) इसी नाम से।
नेत्रहीन, आप बाईं ओर दिए गए आइकनों को देखकर उन्हें अलग बता सकते हैं:
हालांकि आप चुन सकते हैं कि आप किस प्रकार की ज्यामिति चाहते हैं, उदाहरण के लिए ST_Dimension
के साथ WHERE फ़िल्टर जोड़कर :
SELECT a.*,
b.*,
st_intersection(a.geom, b.geom) as geom
FROM a,b
WHERE st_intersects(a.geom, b.geom)
AND ST_Dimension(st_intersects(a.geom, b.geom)) = 2;
या, प्रदर्शन के लिए, इसे इसी तरह फिर से लिखें:
SELECT clipped.*
FROM (
SELECT a.id, b."fieldName",
(ST_Dump(ST_Intersection(a.geom, b.geom))).geom AS geom
FROM "public"."table_A_name" AS a INNER JOIN "public"."table_B_name" AS b
ON ST_Intersects(a.geom, b.geom)
) AS clipped
WHERE ST_Dimension("clipped"."geom") = 2;
बाद वाला समाधान एक अनाम अस्थायी तालिका बनाता है, जो ST_Intersection
. की अनुमति देता है केवल एक बार चलाने के लिए।
आपने देखा होगा कि ट्रिक ST_Dimension("clipped"."geom") = 2
में है। ।
ST_Dimensions
जो ST_Intersection
. से आउटपुट को फ़िल्टर करता है ताकि केवल पॉलीगॉन (जिनका टोपोलॉजिकल डाइमेंशन 2 है) रखा जा सके।