STGUnion का उपयोग करके डेस्कटॉप के लिए ArcGIS से भंग करने के बराबर कैसे प्राप्त करें?


11

मैं PostGIS से ST_Union का उपयोग करके डेस्कटॉप के लिए ArcGIS से डिसॉल्व टूल के बराबर प्राप्त करने की कोशिश कर रहा हूं लेकिन ऐसा लगता है कि मुझे अपेक्षित परिणाम नहीं मिल रहा है।

मेरे पास एक टेबल है जिसमें बहुभुज ज्यामिति के साथ कुछ विशेषताएं हैं। (जैसे एफआईडी, लोकेटैट, लॉस्केंट, शेप)

यहाँ मेरी क्वेरी है:

SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;

1
क्या आप बता सकते हैं कि आपको क्या परिणाम मिल रहे हैं और आप क्या कर रहे हैं? रनिंग: Select AsText (ST_Union ...) FROM ... त्रुटि खोजने में मदद कर सकता है।
मीका

तालिका में मेरे पास ६ table४२ रिकॉर्ड हैं, आर्कजीआईएस परिणामों के अनुसार मुझे १६42३ रिकॉर्ड प्राप्त करने चाहिए जहां क्वेरी के रूप में मैं ६ .४२ रिकॉर्ड प्राप्त कर रहा हूं। मैंने ST_Aggr_Union की भी कोशिश की, जो मुझे कई अशक्त ज्यामिति के साथ 742 रिकॉर्ड्स दे रहा है।
धम्स १

जवाबों:


14

आपकी समस्या इस कारण से है कि आपने समूह द्वारा क्षेत्र में क्या शामिल किया है।

ST_UNION एक समग्र कार्य है, जिसका अर्थ है कि यह GROUPपैरामीटर के रूप में आपके द्वारा निर्दिष्ट के आधार पर भंग हो रहा है ।

यहाँ आपने जो दर्ज किया है:

SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;

इसके अनुसार, आप अपने द्वारा समूहीकरण कर रहे हैं fid, जो संभवतः एक अद्वितीय पहचानकर्ता है, और इसके द्वारा भी boundaryshape, जो कि ज्यामिति है। इसके साथ समस्या यह है कि यह बहुत कम संभावना है कि एक अद्वितीय आईडी साझा करने वाली सुविधाओं में समान ज्यामिति होने वाली हैं। इसलिए, ST_Unionशायद निम्नलिखित जैसे कुछ के साथ समाप्त होने जा रहा है:

Input:   
fid     boundaryshape  
1         11  
1         12  
1         11  
1         13  
2         12  
2         13  
2         12  
3          5  
3          2  
3          4  

Output:  
fid     boundaryshape  
1        (11 + 11)  
1        12  
1        13  
2        (12 + 12)  
2        13  
3        2  
3        4  
3        5

इस मामले में, आपको केवल अपने विशिष्ट पहचानकर्ता के आधार पर विघटित होना चाहिए, जब तक कि आपके पास वास्तव में उसी के साथ कई डुप्लिकेट ज्यामिति न हों fid, जिससे आप छुटकारा पाने की कोशिश कर रहे हैं। हालांकि उस स्थिति में भी, आपको केवल समूह पर आधारित होना चाहिए fid, और संघ ज्यामिति दोहराव का ध्यान रखेगा।

मैं निम्नलिखित कोशिश करूँगा:

SELECT c.fid, ST_Union(c.boundaryshape) FROM c GROUP BY c.fid;

आपको सामान्य विशेषता के आधार पर सभी सुविधाओं को भंग करने का वांछित परिणाम देना चाहिए fid

यहाँ PostGIS साइट पर सहायता दस्तावेज है: ST_Union

नीचे सूचीबद्ध पहला उदाहरण देखें और ध्यान दें कि इसमें समूह में ज्यामिति को अनुभाग द्वारा शामिल नहीं किया गया है।


1
कुछ मामलों में, यूनियन करने से पहले ज्यामिति को स्नैप करना बेहतर होता है: Select ST_Union (ST_SnapToGrid (geom, 0.0001)) Level_identifier द्वारा geo_area समूह से;
मैक्सिम एलिसेव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.