আমি যখন কোনও ফিচার ক্লাস মুছার চেষ্টা করি, তখন আরকিস ইঞ্জিন অ্যাপ্লিকেশন ব্যবহার করার পরে বা সেই সময়ে যা একই বৈশিষ্ট্য শ্রেণীর ব্যবহার করে আমি লক সম্পর্কিত একটি ত্রুটি পেয়েছি, সুতরাং আমি কম্পিউটারটি পুনরায় চালু না করা পর্যন্ত আমি এই লকটি চালাতে পারি না।
আমি আরকিপি বা আরকোবজিক্টগুলি 10.1 ব্যবহার করে লকগুলি অপসারণের একটি উপায় জানতে চাই, এটি সঠিক হবে যদি আমি জিওডাটাবেসকে লক করে দেওয়া আর্সেনগাইন অ্যাপের অভ্যন্তরে লকটি চালাতে পারি তবে আমি লকের বিষয়ে এসইতে বিভিন্ন পোস্ট দেখেছি তবে কেউই নেই এর মধ্যে আরকোবজেক্টস ব্যবহার করে ফ্রি লকগুলির সমাধান দেয়।
কিছুক্ষণ আগে আমার একই রকম প্রশ্ন ছিল ( gis.stackexchange.com/q/28977/8104 )। আমি লকগুলি সম্পর্কে কোনও উত্তর খুঁজে পাইনি, যদিও মেমরির জিনিসগুলিতে মুছে ফেলার বিষয়ে ভাল তথ্য ছিল।
আপনি যদি আরকি স্ক্রিপ্টিং ব্যবহার করেন তবে ডেটা লক সমস্যাগুলি 10.1 এর সাথে আরও বেশি সমস্যাযুক্ত হয়ে উঠেছে ।
যদি আপনার কোড দ্বারা লকগুলি তৈরি করা হচ্ছে, তবে আপনি নিজের পরে পরিষ্কার করছেন না। বৈশিষ্ট্য শ্রেণি, কর্মক্ষেত্র, কার্সার ইত্যাদির সমস্ত রেফারেন্স প্রকাশ করুন the
ঠিক আছে, এইভাবে কাজ করা উচিত, তবে এটি খুব কমই করে। সাধারণত একটি কোড মাঝে মধ্যে কাজ করবে তবে প্রায়শই বিভিন্ন জায়গায় অনভিজ্ঞভাবে ক্র্যাশ হয়ে যায়।
সমস্যাটি মনে হচ্ছে যে লকগুলি কেবল সেখানে বসে আছে a কিছুক্ষণের জন্য, তবে কোডটি যে গতিতে লকগুলি সরিয়ে ফেলা হয়েছে তার চেয়ে অনেক বেশি দ্রুত চলে। যাইহোক, কিছু ইনবিল্ট আর্কের সরঞ্জামগুলি দাবি অনুযায়ী লকগুলি সাফ করতে বাধ্য করেছে (যেমন লকগুলি সমস্ত জিডিবিতে একবারে প্রয়োগ করা হয়, একটি লক আপনাকে যে কোনও বৈশিষ্ট্যযুক্ত ক্লাসগুলির সাথে কাজ করা থেকে বিরত রাখবে)। এই সরঞ্জামগুলি হ'ল আরকি.কম্প্যাক্ট_ম্যানেজমেন্ট () এবং আরকিপি.এক্সজিস্ট ()।
এখানে আমি একটি ছোট ফাংশন যা আমি আমার কোডের মধ্যে ব্যবহার করি যা নাটকীয়ভাবে নির্ভরযোগ্যতা বৃদ্ধি করেছে (এমন স্ক্রিপ্টের জন্য যা তাদের মধ্যে একাধিক জিডিবি এবং বৈশিষ্ট্য শ্রেণি তৈরি করে এবং সম্পাদনা করে):
def clearWSLocks(inputWS):'''Attempts to clear locks on a workspace, returns stupid message.'''if all([arcpy.Exists(inputWS), arcpy.Compact_management(inputWS), arcpy.Exists(inputWS)]):return'Workspace (%s) clear to continue...'% inputWS
else:return'!!!!!!!! ERROR WITH WORKSPACE %s !!!!!!!!'% inputWS
এটি কেবল কার্যক্ষেত্রে কর্মক্ষেত্র (জিডিবি) পাথর ব্যবহার করে ব্যবহৃত হয় এবং ওয়ার্কস্পেসের (অর্থাৎ জিডিবি তৈরি) বা ওয়ার্কস্পেসের মধ্যে ফিচার ক্লাসে প্রতিটি ক্রিয়াকলাপের পরে সম্পন্ন করা উচিত (অর্থাত্ কার্সার, ক্ষেত্রগুলি, গণনা ইত্যাদি)) । উদাহরণস্বরূপ (শীর্ষে ফাংশনটি সহ এখানে একটি স্ট্যান্ডলোন স্ক্রিপ্ট হিসাবে দেখানো হয়েছে; ফাংশনটি ব্যবহার করতে, এটি অনুলিপি করুন এবং এটিকে আমদানি এবং প্রকৃত প্রোগ্রামের মধ্যে আটকান, যেমন এখানে দেখানো হয়েছে):
import arcpy
def clearWSLocks(inputWS):'''Attempts to clear locks on a workspace, returns stupid message.'''if all([arcpy.Exists(inputWS), arcpy.Compact_management(inputWS), arcpy.Exists(inputWS)]):return'Workspace (%s) clear to continue...'% inputWS
else:return'!!!!!!!! ERROR WITH WORKSPACE %s !!!!!!!!'% inputWS
GDBpath='C:/Temp/'GDBname='Test.gdb'
tableName ='SweetFC'
arcpy.CreateFileGDB_management(GDBpath,GDBname)print(clearWSLocks(GDBpath+GDBname))
arcpy.CreateTable_management(GDBpath+GDBname, tableName)print(clearWSLocks(GDBpath+GDBname))# etc....
লক থাকলে কমপ্যাক্ট কাজ করে না। আপনি কোনও এফজিডিবি-র প্রচুর অপারেশন পরিচালনা করার সময়, তবে এটির নিজস্ব রানটাইম ব্যয় করে এটি কার্যত কর্মক্ষমতা বাড়িয়ে তুলবে।
যদি আপনার কোড দ্বারা লকগুলি তৈরি করা হচ্ছে, তবে আপনি নিজের পরে পরিষ্কার করছেন না। বৈশিষ্ট্য শ্রেণি, কর্মক্ষেত্র, কার্সার ইত্যাদির সমস্ত রেফারেন্স প্রকাশ করুন the
আমি জানি যে এই থ্রেডটি বেশ পুরানো, তবে আরকেপির মধ্যে কোনও এফজিডিবি মুছতে সক্ষম হওয়ায় আমার একটি সমস্যা রয়েছে। "ফিচার ক্লাস, ওয়ার্কস্পেস, কার্সার ইত্যাদির সমস্ত রেফারেন্স প্রকাশ করুন" এর দ্বারা আপনি ঠিক কী বোঝাতে চান? আমি কীভাবে উল্লিখিত তথ্যগুলি প্রকাশ করতে যাব?