आकार परिभाषा से ArcPy परत पर परिभाषा क्वेरी सेट करना?


11

मैं आर्कपी का उपयोग करके एक परत परिभाषा क्वेरी सेट करने के लिए विकल्पों को निर्धारित करने की कोशिश कर रहा हूं।

मुझे पता है कि यह संभव है जब आर्कपीएम टैपिंग का उपयोग किया जाए। लिस्टलियर्स ()।

हालाँकि, इस परिदृश्य में मैं आकृति में लोड कर रहा हूँ, और आर्करी में arcpy.MakeFeatureLayer_management () का उपयोग कर रहा हूं।

मैं उस परत पर एक परिभाषा क्वेरी सेट करना चाहता हूं जिसे मैं इस जियोप्रोसेसर का उपयोग करके बनाता हूं।

क्या यह संभव है?

जवाबों:


15

नीचे दिया गया कोड एक आकार-प्रकार से, test_A.lyr नामक एक लेयर फाइल बनाएगा, जिसमें "testField" की परिभाषा क्वेरी = = 'A' को इसमें सहेजा गया है।

import arcpy

arcpy.MakeFeatureLayer_management(r"C:\temp\testLines.shp","test_lyr")
lyr = arcpy.mapping.Layer("test_lyr")
lyr.name = "test"
lyr.definitionQuery = '"testField" = ' + "'A'"
lyr.saveACopy(r"C:\temp\test_A.lyr")

del lyr

यदि आवश्यक हो, तो आप इस लेयर फ़ाइल, या लेयर ऑब्जेक्ट (लियर) को पहले से जोड़ सकते हैं, इसे लेयर फाइल के रूप में सहेजा जा रहा है, अपने मैप में arcpy.mapping.AddLayer के माध्यम से।

यह देखने के लिए कि MakeFeatureLayer पर एक where_clause एक परिभाषा क्वेरी के रूप में पारित हो जाता है, जो मुझे लगता है कि यह अनिर्दिष्ट व्यवहार है, मैंने @John के उत्तर को सत्यापित करने के लिए नीचे एक दूसरा परीक्षण किया, और वह काफी सही है।

arcpy.MakeFeatureLayer_management(r"C:\temp\testLines.shp","test_lyr2",'"testField" = ' + "'A'")
lyr2 = arcpy.mapping.Layer("test_lyr2")
lyr2.name = "test2"
lyr2.saveACopy(r"C:\temp\test_2.lyr")

del lyr2

ArcGIS प्रो और उसकी लाइब्रेरी के लिए अद्यतन करने के लिए , arcpy.mapping.layer()के साथ प्रतिस्थापित किया गया हैarcpy.mp.LayerFile()
आदीन

5

हां, आपके लिए यह निश्चित रूप से संभव होना चाहिए कि वैकल्पिक "where_clause" पैरामीटर क्या है - विवरणों और उदाहरणों के लिए इसके दस्तावेज़ीकरण देखें, लेकिन मूल रूप से आपको परिभाषा क्वेरी को where_clause param के रूप में शामिल करने की आवश्यकता है और इसे काम करना चाहिए। केवल ध्यान दें, यदि आप एक ऐसी परत का उपयोग कर रहे हैं जिसमें ऑब्जेक्ट / FID फ़ील्ड नहीं है, तो ArcGIS के पास SQL ​​अभिव्यक्तियाँ चलाने के मुद्दे हैं, लेकिन कोई भी नियमित ArcGIS परत होगी।


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