ArcMap के बजाय ArcPy के उपयोग से आर्केप में खुली विशेषता तालिका को ताज़ा करना?


11

मैं ArcMap में आर्कपी से फील्ड फील्ड जीपी उपकरण की गणना कर रहा हूं। जब एक पंक्ति मान अद्यतन किया जाता है, तो यह अनिल नहीं दिखाता है मैं रीलोड कैश टूल (तालिका विकल्प> रीलोड कैश) का उपयोग करता हूं। ArcObjects का उपयोग किए बिना मैं स्वचालित रूप से विशेषता तालिका को कैसे ताज़ा करूं?

मैंने परिभाषा क्वेरी को अपडेट करने की कोशिश की है जैसा कि @ blah238 ने सुझाव दिया है कि अजगर का उपयोग करना, आप एक खोली गई तालिका को "कैश कैसे पुनः लोड करें" करते हैं , लेकिन यह मदद नहीं करता है। डेटा स्रोत को रीसेट करना एक विकल्प नहीं है क्योंकि सुविधा वर्ग संपादन सत्र में हो सकता है और मैं स्रोत डेटा से कनेक्शन नहीं खोना चाहता।


क्या आप आर्कगिस 10.1 का उपयोग कर रहे हैं? यदि आप गणना फ़ील्ड को चलाने के लिए पायथन ऐड-इन या पायथन स्क्रिप्ट टूल का उपयोग कर रहे हैं?
PolyGeo

1
क्या यह वास्तव में मायने रखता है? मैं पायथन ऐड-इन से कैलकुलेट फील्ड जीपी टूल को कॉल कर रहा हूं, लेकिन पायथन विंडो से जीपी टूल को चलाते समय एक ही चीज देखी जाती है।
एलेक्स टेरेशेंकोव

1
मैं हमेशा यह अनुमान लगाता हूं कि अगर मैं किसी समस्या का प्रयास करने और उसे पुन: उत्पन्न करने जा रहा हूं, तो सबसे अधिक संभावना यह है कि मैं देखूंगा कि क्या मैं ठीक वैसा ही कर सकता हूं (जैसा मैं पास कर सकता हूं) उसी विन्यास में उतने ही चरण हैं पहले देखा हुआ।
PolyGeo

जवाबों:


4

आप ArcObjects की अनुपस्थिति में ArcPy की एक सीमा मारते हुए दिखाई देते हैं।

ArcPy.mapping की सीमाओं को मोटे तौर पर यहाँ वर्णित किया गया है :

Arcpy.mapping ArcObjects के लिए एक प्रतिस्थापन नहीं है, बल्कि इसके द्वारा समर्थित विभिन्न परिदृश्यों के लिए एक विकल्प है। ArcObjects अभी भी बारीक-अन्न विकास और अनुप्रयोग अनुकूलन के लिए आवश्यक है, जबकि arcpy.mapping मौजूदा मानचित्र दस्तावेजों और परत फ़ाइलों की सामग्री को स्वचालित करने के लिए है।

अगर @ blah238 का अन्य सुझाव आर्कियो से आर्कोबजेक्ट्स का उपयोग करने का है, तो आपके लिए कोई विकल्प नहीं है, तो आप आर्कजी आइडिया को प्रस्तुत कर सकते हैं ताकि यह कार्यक्षमता आरकेपी के सामने आ सके। अगर आप यहां इस तरह के आर्किज आइडिया का लिंक पोस्ट करते हैं तो मुझे इसके लिए वोट करने में खुशी होगी।


धन्यवाद PolyGeo, दया हमें संपादन सत्र के बाहर क्षेत्र मान की गणना करते समय विशेषता तालिका को ताज़ा करने का एक तरीका नहीं मिल सकता है।
एलेक्स टेरेशेंकोव

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

मैं उपरोक्त दोनों को करने की सलाह देता हूं लेकिन आर्कगिस आइडिया आपको लोकप्रियता और कार्यान्वयन की प्रगति की निगरानी करने में मदद करता है जो यहां स्थानीय समर्थन से बहुत अधिक है।
PolyGeo

1
@ जॉन्स, क्या आप जानते हैं कि आपको इसे ताज़ा करने के लिए विशेषता तालिका को बंद और खोलना नहीं है? ऐसा करने का वर्तमान तरीका तालिका विकल्प बटन> रीलोड कैश पर क्लिक करना है। एक अन्य चीज जो काम करती है वह है एडिटिंग मोड में कैलकुलेट फील्ड ऑपरेशन को रन करना, फिर फीचर टेबल्स में वैल्यूज को तुरंत अपडेट किया जाता है।
एलेक्स टेरेशेंकोव

1
@ एलेक्स, सुझाव के लिए धन्यवाद; इसने मुझे इस मुद्दे की और जाँच करने के लिए वापस कर दिया। मैंने पुनः लोड कैश का उपयोग किया है, लेकिन यह विफल हुआ है / जब मैंने लेआउट सीमा को प्राप्त करने के लिए एक एडिन का उपयोग करके लेआउट दृश्य में संपादन मोड में बहुभुज जोड़ा है। जब डेटा दृश्य में और मैं एक ही एडिन का उपयोग करता हूं, तो पुनः लोड कैश काम करता है। तो यह किसी भी तरह लेआउट दृश्य शामिल करता है।
जॉन्स

3

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

इसलिए मैं अक्सर उपयोग करता हूं

arcpy.SelectLayerByAttribute_management("MY-LAYER","CLEAR_SELECTION")

बेशक, अगर आपके पास वास्तव में कुछ ऐसा है जिसे आप ट्रैक करना चाहते हैं तो यह अच्छा नहीं है। उस स्थिति में आप उस परत से चयन कर सकते हैं जहाँ OID वर्तमान में चयनित सुविधाओं से OID की सूची में है (मूल रूप से जो कुछ भी पहले से चयनित है, उसके लिए चयन को बदलें)। यह व्यावहारिक रूप से लंबा हो सकता है, मैंने इसे वास्तविक जीवन परिदृश्य में कभी नहीं आजमाया है।


1

आपने कोशिश की है:

arcpy.RefreshCatalog(target) # Set the target to your layers data source

या

arcpy.RefreshActiveView() # Refreshes the map

या

arcpy.RefreshTOC() # I highly doubt this will do anything, but you never know

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


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

इनमें से कोई भी विशेषता तालिका को ताज़ा करने के लिए डिज़ाइन नहीं किया गया है।
रडार

1

यह काम:

    import arcpy

    definition_query = layer.definitionQuery
    # Change the Definition Query into something different
    if definition_query == '':
        oid = arcpy.ListFields(dataset = layer, field_type = 'OID')[0]
        layer.definitionQuery = '{} > 0'.format(oid.name)
    else:
        layer.definitionQuery = ''
    arcpy.RefreshActiveView()

    # Restore the Definition Query
    layer.definitionQuery = definition_query
    arcpy.RefreshActiveView()
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.