आर्कम पाइथन के साथ विशेषता द्वारा चयन करें


9

मैं "प्रोजेक्ट" परत का चयन करने (हाइलाइट) करने के लिए निम्नलिखित चाहूंगा जो ग्रिड को इंटरसेप्ट करता है, और फिर चयनित "ग्रिड" से एक रिकॉर्ड खींचता है। मुझे परत को बचाने की आवश्यकता नहीं है।

नोट: पायथन कंसोल विंडो में ArcMap के भीतर से स्क्रिप्ट चलाना।

import arcpy

# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("project","project_lyr")

# Then add a selection to the layer based on location to features in another feature class 
arcpy.SelectLayerByLocation_management("project_lyr","INTERSECT","Grid")

यह कोड चलता है और कोई त्रुटि नहीं दी जाती है, फिर भी यह किसी भी विशेषता का चयन (हाइलाइट) नहीं करता है। कोई आइडिया क्यों? साथ ही वास्तव में धीमी गति से चलता है।

परिणाम

मूल रूप से मैं यह करने की कोशिश कर रहा हूं:

यहां छवि विवरण दर्ज करें

यह वास्तव में तेजी से लगभग तुरंत चलता है, लेकिन मैं अजगर का उपयोग करके ऐसा ही करना चाहता हूं। मुझे केवल चयनित सुविधा तालिका से एक मान की आवश्यकता है, मुझे परत की एक प्रति की आवश्यकता नहीं है।

समाधान का हिस्सा इन-मेमोरी कार्यक्षेत्र का उपयोग करने के लिए हो सकता है जो है

इन-मेमोरी कार्यक्षेत्र में डेटा लिखना अक्सर अन्य प्रारूपों के लेखन की तुलना में काफी तेज होता है ...

बस यह सुनिश्चित नहीं है कि इन-मेमोरी वर्कस्पेस कैसे लागू किया जाए


क्या आप इस स्क्रिप्ट को ArcMap (पायथन कंसोल में) के भीतर से चला रहे हैं? या बाहर से आर्केस्टा (यानी IDLE या किसी अन्य पायथन संपादक के भीतर)? ArcMap के भीतर से एकमात्र तरीका "किसी भी सुविधाओं का चयन (हाइलाइट)" होगा। मुझे संदेह है कि आप ArcMap के बाहर से स्क्रिप्ट चला रहे हैं, क्योंकि import arcpyकमांड को चलाने में कुछ समय लगता है।
dmahr

मैं पायथन कंसोल विंडो में ArcMap के भीतर से स्क्रिप्ट चला रहा हूं।
ट्रिस्टन फॉरवर्ड

यदि आप इसे ArcMap के भीतर से चला रहे हैं, तो आपको arcpy.MakeFeatureLayer()लाइन की आवश्यकता नहीं है , क्योंकि projectपहले से ही एक परत है। बस करो arcpy.SelectLayerByLocation_management("project","INTERSECT","Grid")
dmahr

महान प्रश्न प्रारूप!
ब्रैड नेसोम

धन्यवाद @dmahr, अभी भी बिल्ट-इन सेलेक्ट बाय अट्रैक्शन लेकिन काम की तुलना में धीमी गति से चलता है।
ट्रिस्टन फॉरवर्ड

जवाबों:


2

अच्छा प्रश्न!

Dmahr सही है, यह केवल एक फीचर लेयर बनाने के बजाय केवल लेयर का चयन करने के लिए जल्दी है। मैं बाकी चर भी जोड़ूंगा, भले ही वे वैकल्पिक हों।

arcpy.SelectLayerByLocation_management ("project_lyr", "INTERSECT", "Grid", "#", "NEW_SELECTION")

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

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