ArcMap में एक ही ज्यामिति के साथ डुप्लिकेट सुविधाओं को हटाना?


15

क्या एक फ़ीचर परत में प्रत्येक ज्यामिति को विशिष्ट रूप से पहचानना संभव है?

अनिवार्य रूप से मेरे पास एक बहुभुज सुविधा की परत है जिसमें समान ज्यामिति द्वारा दर्शाए गए डेटा की कई पंक्तियाँ हैं। मुझे प्रत्येक अद्वितीय ज्यामिति के लिए 1 पंक्ति चाहिए। इसलिए मैं ज्यामिति के आकार के आधार पर विशेषताओं को संयोजित करने के लिए कुछ आउट-ऑफ-बॉक्स पद्धति की तलाश कर रहा हूं।

मैं एक Postgres दुनिया से आता हूं और वहां इस समस्या को हल कर सकता हूं, लेकिन मुझे नहीं पता कि यह कैसे करना है (या यदि यह संभव है) तो इसे ESRI टूल के साथ गैर-प्रोग्रामेटिक रूप से करना है।


तो आप कह रहे हैं कि समान ज्यामिति के कई रिकॉर्ड हैं और आप उन्हें जोड़ना चाहते हैं जो समान हैं? अगर ऐसा है तो ... क्या आप सिर्फ क्षेत्र या उस तरह के आधार पर भंग कर सकते हैं? शायद मुझे यहाँ आपका सवाल याद आ रहा है।
क्लिकिनावे

यह सही है, वे समान ज्यामिति हैं जहां केवल साझा प्राकृतिक विशेषता ही ज्यामिति है। क्षेत्र काम कर सकता है , लेकिन इस बात की कोई गारंटी नहीं है कि दो अलग-अलग ज्यामिति में एक ही क्षेत्र नहीं है।
डायलन हेटिंगर

मेरी पोस्ट देखें आप कई क्षेत्रों पर भंग कर सकते हैं।
पॉल

@Paul .... मुझे लगता है कि आपने अपने इनपुट को प्रतिबिंबित करने के लिए आपकी प्रतिक्रिया संपादित की है। मुझे उम्मीद है कि इससे मदद मिली।
क्लिकिनावे जूल

जवाबों:


22

यदि आपके पास एक उन्नत लाइसेंस है, तो आप Find Identical या Delete Identical का उपयोग कर सकते हैं ।

दोनों का उपयोग उन विशेषताओं को खोजने / हटाने के लिए किया जा सकता है जिनमें समान गुण हैं, या, यदि आकृति फ़ील्ड निर्दिष्ट है, समान ज्यामिति।

यदि आपके पास उन्नत लाइसेंस नहीं है, तो यह पोस्ट उपयोगी होगी।

संक्षेप में, आप अपनी विशेषता तालिका में X, Y के लिए दो फ़ील्ड जोड़ते हैं और उक्त फ़ील्ड्स पर एक Dissolve चलाते हैं।

यदि आपके पास बहुभुज हैं जो समान सेंट्रोइड साझा करते हैं, लेकिन ज्यामितीय रूप से समान नहीं हैं, तो आप दो अन्य फ़ील्ड (परिधि और क्षेत्र) जोड़ सकते हैं। लगभग सभी सामान्य मामलों के लिए समान ज्यामिति की पहचान करने के लिए पर्याप्त होना चाहिए। नीचे देखें @ व्हिबर की टिप्पणियां।


यह अनुमान डेटा सही है? मैंने पहले सेंट्रोइड बनाने के सुझाव के बारे में सोचा था। वह अभी भी कह रहा है कि एक ही ज्यामिति की कई पंक्तियाँ हैं ... यह लगभग एक वर्ग / श्रेणी के आधार पर वर्गीकृत करने जैसा लगता है? लेकिन इसे ज्यामिति का आकार भी कहते हैं ... यही कारण है कि मैं क्षेत्र या परिधि (या एक अनुपात प्राप्त करने के लिए उन दोनों के संयोजन) के आधार पर भंग करने की ओर झुक रहा था।
क्लिकिनावे जूल

1
दरअसल, मैं जिस पोस्ट से जुड़ा था वह पॉलीगॉन के लिए था। आप क्षेत्र और केन्द्रक पर भंग कर सकते हैं, इस अवसर पर कि आपके पास एक ही केन्द्रक के साथ दो गैर-समान बहुभुज हैं।
पॉल

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

@whuber सभी वर्टीकल के निर्देशांक की तुलना करना समान ज्यामिति निर्धारित करने का एकमात्र अचूक तरीका होगा? ज्यामिति में मेरी पृष्ठभूमि बहुत कमजोर है, इसलिए मुझे यह सब बहुत आकर्षक लगता है।
पॉल

आपके प्रश्न का उत्तर इस बात पर निर्भर करता है कि "समरूप" से आपका क्या अर्थ है: उदाहरण के लिए, यदि आप बहुभुज के किनारे पर एक नया शीर्ष डालते हैं, तो यह "समान" बहुभुज है या नहीं? संभवतः यह दुनिया में एक ही विशेषता का प्रतिनिधित्व करने के अर्थ में है, भले ही कोने अलग-अलग हों। इस बात के बारे में एकमात्र सुनिश्चित परीक्षण के बारे में कि क्या दो बहुभुजों का अंतर (सेट थ्योरिटिक) खाली है या नहीं। लेकिन अगर आप कड़े विचार रखते हैं कि पहचान का अर्थ एक शीर्ष-से-शीर्ष मिलान है, तो यह अभी भी मुश्किल है, क्योंकि एक बहुभुज एक अलग बिंदु पर अपनी शीर्ष सूची शुरू कर सकता है।
व्हिबर

1

मेरे पास सर्वेक्षण डेटा पर आधारित डेटासेट है। मेरी समस्या यह है कि नए सर्वेक्षण शॉट्स आयात करने से पहले पुरानी सुविधाओं को हमेशा हटाया नहीं जाता है। इसलिए हमारे पास अलग-अलग ज्यामिति के साथ 'डुप्लिकेट' हैं: IE सर्वेक्षण शॉट्स एक दूसरे से 1/4 फीट अलग हो सकते हैं। 12000 फ़ीचर डेटासेट पर प्रत्येक को ज़ूम इन करना और उन्हें पहचानना मुश्किल है। आर्केप बेसिक 10.2 का उपयोग करना: यहाँ एक हैकी मॉडल है जिसके साथ मैं आया था।

  1. बफर (w / इनपुट त्रिज्या) मूल परत में प्रत्येक सुविधा (चयनित या नहीं)
  2. बफर लेयर में प्रत्येक फीचर पर Iterate करें
  3. संबंध के आधार पर मूल परत से चुनें (Centroid w / in फ़ीचर)
  4. "पंक्ति गणना" चयनित विशेषताएं
  5. बफ़र परत के लिए फ़ील्ड गणना पंक्ति गणना मूल्य = मूल सुविधाओं के दायरे में कितनी विशेषताएं हैं

मैंने पहिये का फिर से आविष्कार किया। इसके अलावा, मैं मॉडल बिल्डर से निराश हो गया और मूल रूप से पूरी बात को बुलडॉग कर दिया। अधिक सुरुचिपूर्ण समाधान होना चाहिए। मैं समीक्षकों और सुझावों को सहर्ष स्वीकार करूंगा।

इसके अलावा, यह केवल मॉडल बिल्डर के भीतर से सही ढंग से चलने के लिए लगता है, मैं एक टूलबॉक्स से चलाता हूं और यह बफर परत को नहीं बचाता है।

डुप्लीकेट करतब खोजने वाले


1

मैं कुछ समय के लिए एक ही सवाल के जवाब की तलाश कर रहा हूं ताकि ओवरलैपिंग बफर पॉलीगन्स के मुद्दे को समतल कर दूं और सोचूं कि इसका एक मजबूत समाधान मिल गया। वास्तव में @ व्हीबर की टिप्पणी,

सिद्धांत रूप में, केन्द्रक, परिधि और क्षेत्र अभी भी विशिष्ट रूप से बहुभुज की पहचान नहीं कर सकते हैं, लेकिन प्रतिरूप थोड़ा विपरीत हैं।

@ पॉल का जवाब मेरे लिए मुख्य ड्राइव था कोशिश करते रहना। यह स्थानिक जुड़ाव उपकरण के are_IDENTICAL_TO ऑपरेटर का उपयोग करता है क्योंकि यह अन्य समान डिटेक्टरों में सबसे अधिक कुशल है। यहाँ कदम हैं:

  • सेल्फ यूनियन अपने इनपुट को सभी आकृतियों को एक दूसरे से अलग रखने के लिए;
  • मूल OBJECTID's (यानी, OID फ़ील्ड प्रकार) को पंक्तियों की प्रतिलिपि रखने / कॉपी करने के लिए एक डमी फ़ील्ड बनाएं, EXOOID कहें ;
    • स्थानिक भागो को उस फीचर वर्ग में शामिल करें जिसे लक्ष्य के रूप में संसाधित किया जाना है और फीचर पैरामीटर में शामिल होना चाहते हैं। सुनिश्चित करें कि पहले बनाए गए डमी फील्ड (एस) के फ़ील्ड मैपिंग (दो बार दिखाई देते हैं) में पहले FIRST का मर्ज नियम है (जो डिफ़ॉल्ट है या LAST को चुनें, अन्य वांछित आउटपुट नहीं दे सकते क्योंकि वे ओवरलैप के सारांश का उपयोग करते हैं)। यह कदम सभी ओवरलैपिंग (यानी, FIRST) के शीर्ष पर बैठे आम आकार OBJECTID को उठाता है;

निम्नलिखित चरणों को दो तरीकों से किया जा सकता है, पायथन के बिना या बिना:

PYTHON के साथ

  • अद्वितीय आईडी निकालने के लिए नीचे दिए गए कोड का उपयोग करें जिसे हम खोजना चाहते हैं:

print tuple(set([row.getValue("EX_OID_1") for row in arcpy.SearchCursor("Output_of_the_Spatial_Join_Operation")]))

ध्यान रखें कि मैं डमी ओआईडी क्षेत्र की दूसरी प्रति का उपयोग कर रहा हूं, जो मेरे मामले में EX_OID_1 है;

  • इस कोड के आउटपुट को कॉपी करें और इस रूप में संसाधित किए गए मूल फीचर वर्ग की परिभाषा क्वेरी में पेस्ट करें OBJECTID IN (<PASTE_COPIED_VALUES_HERE>)। परिणाम आपको अतिव्यापी भागों की एकीकृत विशेषताओं को दिखाएगा। यहाँ एक आकार सीमा है, हालांकि, 30,000 वर्ण हैं। इस समस्या को दूर करने के लिए, आपको "पायथन के बिना" चरणों का पालन करने की आवश्यकता है।

PYTHON के बिना

  • डमी OID फ़ील्ड की दूसरी प्रति में अनन्य मानों को सूचीबद्ध करने के लिए फ़्रीक्वेंसी टूल का उपयोग करें, जो मेरे मामले में EX_OID_1 है;

  • फ़्रीक्वेंसी टूल के आउटपुट के साथ मूल फीचर वर्ग के OBJECTID फ़ील्ड में अंतिम रूप से शामिल हों EX_OID_1 "केवल मिलान रिकॉर्ड रखें" विकल्पों का चयन करके।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.