चयनित फ़ीचर टूल से परत बनाएँ: सुविधाओं की सूची कैसे संग्रहीत की जाती है?


12

ArcGIS डेस्कटॉप में, चयनित सुविधाओं से Create Layer नामक एक उपकरण है । इस उपकरण का उपयोग करके, मैं एक चयन को आर्कपेज़ में एक परत में बदल सकता हूं।

यह मेरा अनुमान है कि एक "सुविधाओं की सूची" है जो कि परत में अंतर्निहित है जो कि नक्शे में दिखाने के लिए कौन सी विशेषताओं को अलग करती है।

मैंने सोचा होगा कि "सुविधाओं की सूची" को whereएक परिभाषा के रूप में परिभाषा क्वेरी में एक खंड में संग्रहीत किया गया होगा objectids। उदाहरण के लिए where objectid in(123,456,789,...):। बहरहाल, मामला यह नहीं।

यदि परत में एक WHEREखंड या परिभाषा क्वेरी नहीं है, तो संग्रहीत सुविधाओं की सूची कैसे है?


2
मेनू आइटम और जियोप्रोसेसिंग टूल के बीच एक बड़ा अंतर है। आप जो बात कर रहे हैं वह पूर्व है। आप अपनी परतों को बनाने के लिए फ़िडसेट में संग्रहीत डेटा का उपयोग कर सकते हैं।
फेलिक्सिप

2
मुझे पूरा यकीन है कि सिलेक्शन लेयर बनाते समय कोई भी ऐसा क्लॉज संग्रहीत नहीं है और जब एक बार यह बन जाता है, तो आप इसे बनाने के लिए उपयोग किए गए मूल चयन का पता नहीं लगा सकते हैं। मुझे उम्मीद है कि मैं एक उत्तर के रूप में गलत साबित हो सकता हूं क्योंकि मैं हाल ही में एक बहुत पुरानी चयन परत के साथ काम कर रहा था और इसे बनाने के लिए इस्तेमाल की जाने वाली सुविधाओं के मूल चयन का पता लगाना आसान था।
डैन सी

1
Fidset परत की संपत्ति है। यह है ; चयन FID को संग्रहीत करने के लिए अलग स्ट्रिंग।
फेलिक्सिप

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

जवाबों:


14

चयनित सुविधाओं से परत बनाएं एक डायनामिक परत नहीं बनाते हैं । परिणामी परत बिल्कुल भी गतिशील नहीं है। यह एक फिडसेट पर आधारित है।

यदि आप स्रोत डेटा बदलते हैं, तो FID बदल जाएगा और आपकी चयन परत टूट जाएगी।

चयन परत में कोई खंड नहीं है। यह FIDset पर आधारित है (FIDs जो तब चुने गए थे जब आपने 'चयनित सुविधाओं से परत बनाएँ' का उपयोग किया था)।

कृपया ध्यान दें कि यदि आप स्रोत डेटा से रिकॉर्ड जोड़ते या हटाते हैं, तो FID बदल जाएगा, और आपकी चयन परत गलत रिकॉर्ड दिखाएगी।

आप चयन परत को एक क्वेरी लेयर के साथ भ्रमित कर रहे हैं, जो एक क्लॉज को स्टोर करता है और गतिशील है।

EDIT: चयन परत के लिए सुविधाओं की सूची मेमोरी में संग्रहीत की जाती है। अस्थायी कार्य के अलावा अन्य चयन परतों का उपयोग करना बुरा है क्योंकि चयन परत के टूटने के बाद मूल चयन को पुनर्प्राप्त करने का कोई तरीका नहीं है।

चयन परत में सुविधाओं की सूची खोजने के लिए, आप आईडी की सूची बनाने के लिए SearchCursor सहित कई अलग-अलग तरीकों का उपयोग कर सकते हैं।

कुछ इस तरह:

OIDlist = []
with arcpy.da.SearchCursor(layer, 'OBJECTID') as scur:
    for row in scur:
        OIDlist.append(row[0])

Crmackey की टिप्पणी से :

FIDSet प्राप्त करने के लिए वर्णन के साथ एक अंतर्निहित तरीका भी है। यह एक स्ट्रिंग है, लेकिन सूची में बदलना आसान है:

OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))

1
वहाँ भी एक तरीका है जिसमें वर्णन मिलता है FIDSet। यह एक स्ट्रिंग है, लेकिन एक सूची में बदलना आसान है: OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
crmackey


11

सबसे अच्छा तरीका मैं समझ गया Create Layer from Selected Featuresहूं कि यह संदर्भ कैसे है कि मैं सुविधाओं का चयन करने के लिए एक अस्थायी परत बनाता हूं

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

मेक फ़ीचर लेयर टूल डेटा प्रबंधन उपकरण टूलबॉक्स के भीतर परत और तालिका दृश्य टूलसेट में है। फ़ीचर लेयर टूल को राइट-क्लिक करें और ओपन पर क्लिक करें, या टूल को खोलने के लिए इसे डबल-क्लिक करें।

तंत्र जो उस डिस्क स्थान में पढ़ सकता है वह होगा "परिणामों के सेट" का उपयोग कैसे करें

इसके अलावा, जैसा कि पहले बताया गया है और एसेरी ने इसे चयनित सुविधाओं के साथ काम करते हुए कवर किया है ,

इस उदाहरण में, चयनित सुविधाओं से बनाई गई परत केवल एक अस्थायी कामकाजी डेटासेट के रूप में उपयोगी है (उदाहरण के लिए, एक जियोप्रोसेसिंग मॉडल में इनपुट के रूप में उपयोग के लिए)। नई परत चयनित सुविधाओं के फ़ीचरआईडी (FIDs) या ऑब्जेक्ट (OID) की एक सूची बनाती है और मूल डेटा स्रोत के अपडेट या परिवर्तित होने पर अमान्य हो जाएगी

साथ ही, कार्यक्षेत्र से संबंधित इन-मेमोरी वर्कस्पेस का उपयोग करते हुए , सामान्य रीडिंग के रूप में अधिक चर्चा है in_memory। यदि आप रुचि रखते हैं तो यह केवल अतिरिक्त जानकारी के लिए है।


2

मेरा अनुमान है कि, यह परत Create Layer From Selected Featuresएक WHEREखंड या तार्किक स्थिति पर आधारित नहीं है , क्योंकि चयन सेट को तर्क को शामिल किए बिना बनाया जा सकता है।

उदाहरण के लिए, आप मैन्युअल रूप से मुख्य मेनू का उपयोग करके सेट सेट से किसी भी सुविधाओं को जोड़ सकते हैं / हटा सकते हैं, जैसे कि एक बॉक्स को खींचकर, जो कि गुण / स्थान द्वारा पिछले चयन में से एक हो सकता है।

मेरा अनुमान है कि चयन सेट ( IFeatureSelection) परिणाम का एक व्यापक सेट (मूल परत की आईडी की प्रतियां युक्त) है, बजाय परिणाम सेट को परिभाषित करने वाले नियमों के। इसलिए लिंक किए गए डॉक्यूमेंट में चेतावनी दी गई है कि अगर ओरिजिनल लेयर की आईडी बदल जाती है तो आईडी अमान्य हो सकती है।

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