क्या टीओसी में एक लेयर फीचर काउंट दिखाने का कोई तरीका है?


10

मैं ArcGIS 10 का उपयोग कर रहा हूं। सामग्री के TOMap तालिका (TOC) में, "परत नाम" को स्वचालित रूप से प्रत्येक परत में कुल विशेषताओं की संख्या दिखाने का एक तरीका है?

मैं सोच रहा था कि टीओसी कुछ इस तरह दिखेगी:

  • सड़कें (27)
  • धाराएँ (100)
  • पार्सल (12)

मुझे यह विकल्प अनोखे मूल्य रेंडरर्स के लिए मिला , लेकिन:

  1. मैं एक ArcObjects लड़का नहीं हूं, और
  2. मैं सिर्फ सिंगल वैल्यू रेंडरर के साथ काम करना चाहता हूं ।

"सूची से चयन" टैब प्रकार में यह क्षमता है, लेकिन केवल तब जब चयनित सुविधाएँ हों।


क्या आप अपने नक्शे में एकल परत के लिए ऐसा करना चाह रहे हैं (जिसका नाम आपके पास है), या डिफ़ॉल्ट रूप से आपके नक्शे पर सभी परतों पर लागू है?
चेंडरसन

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

2
आप शायद एक पायथन एडिन के साथ ऐसा कर सकते हैं जो एक संपादन सत्र के शुरू / अंत के लिए सुनता है।
पॉल

1
मुझे लगता है कि यह आर्कगिस 10.1 और 10.2 (लेकिन 10.0 नहीं) में पायथन ऐड-इन (एक्सटेंशन) का उपयोग करने योग्य हो सकता है, जो प्रत्येक परत पर गेटकाउंट चलाता है और प्रत्येक परत की नाम संपत्ति को उस ताज़ा नंबर पर शामिल करने के लिए अद्यतन करता है। यदि आप एक विकल्प प्राप्त करते हैं / आर्कजीआईएस आइडिया सबमिट करते हैं तो इस विकल्प को आर्कगिस प्रोफेशनल में ओओटीबी मैं वोट करूंगा।
PolyGeo

2
मैंने इसे mxd में एक स्क्रिप्ट का उपयोग करके किया है, इसलिए मैं कोड को अजगर विंडो में पॉप करता हूं और इसे फीचर काउंट के साथ प्रत्येक परत का प्रिंट प्राप्त करने के लिए चलाता हूं। जैसा कि @PolyGeo का कहना है, कि इसे पायथन ऐड-इन में शामिल किया जा सकता है यदि आप चाहते हैं कि यह स्वचालित रूप से हो (10.1 उल्लेखित समय पर)।
सिंडी जयकुमार

जवाबों:


7

जैसा कि @Paul & @PolyGeo ने सुझाव दिया, मुझे लगता है कि इसे पायथन ऐड-इन बनाने की कोशिश सबसे अधिक मायने रखती है, और मैं बाद में उस विचार को आगे बढ़ाऊंगा।

इस बीच, मैंने एक साथ एक कोड रखा जो फ़ीचर काउंट्स के साथ MXD में यूज़र-डिफ़ाइंड लेयर्स के TOC नाम को जोड़ / अपडेट करेगा। अपने उद्देश्यों के लिए, मैंने इसे एक जीपी उपकरण के रूप में बनाया है जो एक बहुस्तरीय इनपुट के माध्यम से व्यक्तिगत परतों को स्वीकार करेगा जो स्क्रिप्ट टूल में "परतें" को स्वीकार करता है। यह मुझे कई परतों को "ऑन-डिमांड" अपडेट करने की अनुमति देता है, बस ब्याज की उन परतों के फीचर काउंट को अपडेट करता है।

मैं यह चलाने के लिए स्वचालित रूप से एक तरीका नहीं आया हूं, हालांकि पुराने MXD के कुछ परीक्षण करने में, यह भी वांछनीय नहीं हो सकता है। यदि आपके पास बहुत सारी विशेषताओं के साथ बहुत सी परतें हैं, तो यह एक धीमी प्रक्रिया हो सकती है।

इनपुट बॉक्स

import arcpy

LayerInput = arcpy.GetParameterAsText(0)

mxd = arcpy.mapping.MapDocument("CURRENT")
for lyr in arcpy.mapping.ListLayers(mxd):

    #Skip over group layers, as they have no values to count
    if lyr.isGroupLayer:
        continue

    #Determine basename of the layer, without the feature count
    name = str(lyr.name)

    #Determine if the layer is in the user-defined list
    if name not in LayerInput:
        continue

    #Determine if the layer name already includes a COUNT
    if "[" in name and "]" in name:
        lpos = name.find("[")
        basename = name[:lpos-1]
    else:
        basename = name
    print "    Updating feature count in TOC name for layer: " + str(basename)
    arcpy.AddMessage("    Updating feature count in TOC name for layer: " + str(basename) )

    # In 10.1, you may be able to use arcpy.da.SearchCursor to increase the speed.
    #http://gis.stackexchange.com/questions/30140/fastest-way-to-count-the-number-of-features-in-a-feature-class
    #fcount = 0
    #cursor = arcpy.SearchCursor(lyr)
    #for row in cursor:
    #    fcount += 1
    #del cursor

    #Get the feature count
    fcount = int(arcpy.GetCount_management(lyr).getOutput(0))

    #Update the lyr.name property
    lyr.name = basename + " [n=" + str(fcount) + "]"
    del fcount

arcpy.RefreshTOC()

#Garbage collection
del mxd

GetCount एक कर्सर से तेज होगा। आपने विपरीत निष्कर्ष क्या निकाला?
blah238 15

छोटे आकार की मेरी प्रारंभिक जांच से पता चला कि यह तेज था। हालाँकि, बड़ी RDBMS परतों पर परीक्षण के बाद, आप सही हैं, GetCount तेज था। मैंने ऊपर कोड अपडेट किया है।
रायनकेडल्टन

अच्छा सा उपकरण, आपको ESRI कोड गैलरी पर साझा करना चाहिए?
हॉर्नबड सेप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.