जियोडेटाबेस फ़ाइल में फ़ाइलों को अधिलेखित करने के लिए आर्कपी की अपेक्षा?


13

मैं एक पाइथन स्क्रिप्ट लिख रहा हूं, मुझे एक mxd मिला है और इसका कार्यक्षेत्र एक जियोडैटैबस फाइल है जिसमें सभी फाइलों की जरूरत होती है। परीक्षण और लेखन कोड में मुझे जो समस्या आ रही है, वह यह है कि कमांड के बावजूद:

arcpy.env.overwriteOutput=True

जियोडेटाबेस में निहित सभी फाइलें ओवरराइट करने में विफल हैं। इस के आसपास काम करने का एक तरीका है?


ArcMap में, क्या आपने Geoprocessing> Geoprocessing Options में "जियोप्रोसेसिंग ऑपरेशन के आउटपुट को अधिलेखित" किया है?
बाल्टोक ऑक्ट

हाँ, मैंने किया। लेकिन काम नहीं किया।
Annalisa Minelli

3
क्या आप अपने डेटा पर किसी भी स्कीमा लॉक के बारे में जानते हैं? साथ ही ओवर राइटिंग को रोका जा सकता है। फ़ाइल और पर्सनल जियोडैट डेटाबेस इसके लिए विशेष रूप से संवेदनशील हैं, क्योंकि यदि एक फीचर क्लास में लॉक है, तो यह पूरे जियोडैटबेस को लॉक कर देता है।
बालटोक

2
जब आप कहते हैं कि "जियोडैटेबेस में मौजूद सभी फाइलें अधिलेखित करने में विफल रहती हैं", तो क्या आपका मतलब है कि स्क्रिप्ट विफल हो गई है या यह पूरी हो गई है लेकिन यह केवल उन फीचरक्लास को अधिलेखित नहीं करता है जो इसे चाहिए?
चाड कूपर

अपने कोड को PyScripter की तरह एक अजगर IDE से चलाने की कोशिश करें, फिर ArcMap को बंद करें।
जियोगेक्ट

जवाबों:


16

अगर मैं सही ढंग से याद करूँ तो कुछ विशेष परिस्थितियाँ हैं, जिनके लिए ओवरराइट करेंट्यूट काम नहीं करेगा। उस स्थिति में नई फ़ाइलों को लिखने से पहले निम्नलिखित कोड का उपयोग करें:

if arcpy.Exists(fileInQuestion):
    arcpy.Delete_management(fileInQuestion)

1

सुनिश्चित करें कि फ़ाइल जियोडेटबेस संपीड़ित नहीं है अर्थात, केवल पढ़ें।


0

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

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