PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

st_intersection गैर-बहुभुज क्यों लौटाता है?

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 है) रखा जा सके।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डीबी कनेक्शन पर उपलब्ध पंक्ति के आधार पर गतिशील रूप से डीएजी बनाना

  2. Postgresql में सरणी को पंक्तियों में कैसे विभाजित करें?

  3. अजवाइन कार्यकर्ता डेटाबेस कनेक्शन पूलिंग

  4. पायथन / psycopg2 का उपयोग करके एक बड़ी PostgreSQL तालिका में एक कॉलम को कुशलतापूर्वक कैसे अपडेट करें?

  5. pgAdmin विकल्प - PostgreSQL डेटाबेस प्रबंधन GUI ClusterControl