यह एक दो चरण की प्रक्रिया है, और परिणामस्वरूप, फ़ील्ड कैलकुलेटर इसके अनुकूल नहीं है। इसे स्टैंडअलोन स्क्रिप्ट में चलाना बेहतर है। हालांकि, यह क्षेत्र कैलकुलेटर में किया जा सकता है, बशर्ते आप एक चाल का उपयोग करें। आपको किसी सॉर्ट की गई सूची से सभी मानों को वैश्विक शब्दकोश में लोड करने के लिए एक कर्सर का उपयोग करने की आवश्यकता है, लेकिन केवल पहले रिकॉर्ड की गणना के दौरान। अन्य सभी अभिलेखों के लिए आपको प्रत्येक पंक्ति के लिए पूरी तालिका को लगातार पुन: व्यवस्थित करने से बचने के लिए शब्दकोश निर्माण को छोड़ना होगा।
तीन क्षेत्र मूल्यों को एक कुंजी के रूप में कार्य करने के लिए एक टपल में रखा जाना चाहिए जो ठीक से सॉर्ट करेगा। मैं मान लूंगा कि सभी 3-फील्ड संयोजन मूल्य सैंपलपॉइंट टेबल में अद्वितीय हैं, लेकिन मैंने यह सुनिश्चित करने के लिए ऑब्जेक्ट को जोड़ा कि यह अद्वितीय है। आपको लाइन 8 में पथ और आकार का नाम प्रदान करना होगा (या मैं उस तकनीक का उपयोग कर सकता हूं जो फेलिक्सिप वर्तमान मानचित्र में पहली परत का उपयोग करता है)। यदि आप एक कुंजी के लिए विभिन्न क्षेत्रों का उपयोग करना चाहते हैं, तो आपको पंक्ति 10 में फ़ील्ड सूची को बदलना होगा और उन्हें पंक्ति 3 और पंक्ति 15 में इनपुट फ़ील्ड के साथ मेल खाना चाहिए।
#Pre-logic Script Code:
relateDict = {}
def autoIncrement(myYear, myMonth, myDay, OID):
global relateDict
# only populate the dictionary if it has no keys
if len(relateDict) == 0:
# Provide the path to the relate feature class/table
relateFC = r"C:\Users\OWNER\Documents\ArcGIS\SamplePoints.shp"
# create a field list with the relate fields in sort order
relateFieldsList = ["Year", "Month", "Day", "OID@"]
# process a da search cursor to transfer the data to the dictionary
relateList = sorted([(r[0:]) for r in arcpy.da.SearchCursor(relateFC, relateFieldsList)])
for relateSort in range(0, len(relateList)):
relateDict[relateList[relateSort]] = relateSort + 1
return relateDict[(myYear,myMonth,myDay,OID)]
#Expression:
autoIncrement(!Year!, !Month!, !Day!, !OBJECTID!)
मैं वर्ष, माह और दिन के क्षेत्र के नाम का उपयोग करने की भी सिफारिश नहीं करूंगा, क्योंकि वे केवल आकार-प्रकार में काम करते हैं और जियोडैट डेटाबेस में अनुमति नहीं है। यदि आप तालिका के गुणों में फ़ील्ड सूची में उन्हें जोड़ने का प्रयास करते हैं तो एक जियोडैटेबेस नाम को वर्ष_1, महीना 1, दिन 1 में बदल देगा।
यदि इस तालिका का उद्देश्य इसे किसी अन्य फ़ील्ड / कुंजी वर्ग से संबंधित किसी अन्य फ़ील्ड / कुंजी वर्ग से संबंधित करना है, तो मैंने अपने ब्लॉग में बनाए गए टूल का उपयोग करके मल्टीपल फ़ील्ड कुंजी को सिंगल फ़ील्ड कुंजी टूल नाम दिया है - संबंधित दो परतें एक से अधिक के आधार पर खेत