দ্রষ্টব্য: যদিও এই প্রশ্নের উত্তর রয়েছে, কার্সার প্রক্রিয়াটিকে অনুকূল করার জন্য আরও কোনও টিপস প্রশংসিত হবে। আমি কোনও আপডেটের জন্য পর্যবেক্ষণ করব।
বর্তমানে, আমার বস (যিনি এভিনিউতে কাজ করেন) এবং আমি (পাইথনে কর্মরত) দুজনেই একই সমস্যা সমাধানের চেষ্টা করছি। বরং আমরা উভয়ই এর সমাধান করেছি, তবে আমাদের সমাধানগুলি যে গতিতে চালিত হয় তা হ'ল ... হতাশ, কমপক্ষে বলতে গেলে। 2 ঘন্টার মধ্যে তাঁর স্ক্রিপ্টটি কীভাবে প্রক্রিয়া করতে পারে তা 6 টা পর্যন্ত নিতে পারে log বাক্সের বিটম্যাপস এবং 10.x এর কার্সার থেকে যুক্তিবিদ্যার বাক্য গঠন এবং প্রয়োগের একমাত্র আসল পার্থক্য আসে। আমরা উভয়:
1) সারণি 1 থেকে মান সংরক্ষণ
করুন । 2) সারণি 2-এ একটি সারি জিজ্ঞাসা করার জন্য এই মানগুলি ব্যবহার করুন
3) সারণি 2 থেকে নতুন সারি হিসাবে সারণির জন্য সারণি 2 থেকে মানগুলি সঞ্চয় করুন।
উভয় স্ক্রিপ্টে, এই প্রক্রিয়াগুলি দুটি নেস্টেড লুপগুলিতে সম্পন্ন হয়। কোড অপ্টিমাইজেশনের দুর্দান্ত জগতে আমি খনন শুরু করার আগে, পাইথনের সাথে অ্যাভিনিউ স্ক্রিপ্টের পারফরম্যান্সের তুলনা করার সময় এটি কি প্রত্যাশিত ঘটনা? অপারেশন সময়ের ক্ষেত্রে তার স্ক্রিপ্টগুলি আমার পক্ষে প্রথম ছাড়িয়ে যায়নি, তাই আমি হরিড স্ক্রিপ্টিংয়ের জন্য নিজেকে ক্রুশে দেবার আগে আমার কিছু জানা উচিত ছিল কিনা তা জানতে চাই।
এখানে আমার স্ক্রিপ্টটি বহিরাগত বিটগুলি সান করেছে:
import arcpy
import time
import sys
import os
def recordfindcopy(inFile,query,outFile):
findRecord = arcpy.SearchCursor(inFile,query)
for record in findRecord:
copyRecord = arcpy.InsertCursor(outData) # <--- D'oh! (See answer)
field = record.FIELD
copy = copyRecord.newRow()
copy.FIELD = field
copyRecord.insertRow(copy)
StreetsFileList = [r"Path",
r"Path"]
for sfile in StreetsFileList:
inStreets = sfile
inTable = r"Path"
outData = r"Path"
fsaEntry = arcpy.SearchCursor(inTable)
for row in fsaEntry:
id = row.ID
sQuery = "ID = %s " % (str(id))
recordfindcopy(inStreets,sQuery,outData)
সম্পাদনা : এ পর্যন্ত কিছু মন্তব্য দেওয়া, আমি আশ্চর্য হয়েছি যে এর সাথে যোগ দেওয়ার মাধ্যমে আরও ভাল উপায় হতে পারে, যদিও আমি টেবিলগুলির ব্রোবডিংনাগিয়ান (দিনের শব্দ!) আকারের কারণে সন্দেহজনক। প্রসেসিংয়ের হৃদয়টি হ'ল এক টেবিল থেকে দ্বিতীয় সারণীতে যেকোন ম্যাচের রেকর্ডে তথ্য সংযোজন করা এবং কেবলমাত্র গুরুত্বপূর্ণ ক্ষেত্র যুক্ত একটি তৃতীয় টেবিল তৈরি করা। আমি এসডিই ব্যবহার করে এটি চেষ্টা করতে চেয়েছিলাম, তবে এটি কোনও উপলভ্য বিকল্প নয় বলে মনে হয়। থটস? যদি আমার প্রশ্নগুলি সর্বদা এতটা জড়িত থাকে তবে আমি ক্ষমাপ্রার্থী , তবে আমি দীর্ঘস্থায়ী বিরক্তির নীচে যাওয়ার চেষ্টা করছি।
উত্তর : জাকুবের সহজ পরামর্শটি একাই প্রসেসিংয়ের সময়কে 500 রেকর্ডের প্রতি 30 সেকেন্ড থেকে 500 রেকর্ডে 3 সেকেন্ডে হ্রাস করেছে । প্রতিটি sertোকাতে সন্নিবেশ কর্সার পুনরায় আরম্ভ করা জিনিসগুলিকে যথেষ্ট (ধীরে ধীরে) কমিয়ে দেয়। আরকভিউ ৩.০ এর গতির বিপরীতে যখন এই প্রক্রিয়াটির জন্য কেউ করতে পারে তবে এটি সবচেয়ে বেশি অপ্টিমাইজেশন নাও হতে পারে, তবে আমার উদ্দেশ্যগুলির পক্ষে এটি যথেষ্ট। আরও পরামর্শ খুব স্বাগত!