फ़ीचर वर्ग के भीतर समूहों के आधार पर ऑटो वेतन वृद्धि क्षेत्र?


10

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

मुझे लगता है कि यह इस का एक परिवर्तन होगा:

rec=0
def autoIncrement():
 global rec
 pStart = 1 
 pInterval = 1 
 if (rec == 0): 
  rec = pStart 
 else: 
  rec = rec + pInterval 
 return rec

1
आप शायद पायथन ( %)
विंस

जवाबों:


12

पायथन के लिए फील्ड कैलकुलेटर

d={}
def GroupOrder(groupID):
  if groupID in d: d[groupID]+=1
  else: d[groupID]=1
  return d[groupID]

---------------------------

GroupOrder( !locality! )

परिवर्तन! स्थानीयता संबंधित क्षेत्र में।

अद्यतन: अभिव्यक्ति की यह भिन्नता:

d={}
def GroupOrder(groupID):
  N=d.get(groupID,0);N+=1
  d[groupID]=N
  return N

बड़े डेटासेट पर अधिक तेज़ी से काम करना चाहिए।


यदि GroupOrder फ़ंक्शन को स्टैंड-अलोन पायथन स्क्रिप्ट में GroupOrderउपयोग किया जाना था , तो फ़ंक्शन code blockतर्क GroupOrder( !locality! )होगा और 'अभिव्यक्ति' तर्क होगा।
user3467260

स्क्रिप्ट में यह है: ए) डिक्शनरी बी बनाएं) 2 फ़ील्ड समूह पर अपडेट कर्सर और एक को आबाद किया जाए। कोड की 3-5 लाइनें।
फेलिक्सिप

1
मैंने अपनी टिप्पणी में इस बात का उल्लेख करने की उपेक्षा की कि उन तर्कों को आर्कपी गणना क्षेत्र उपकरण में शामिल किया जाएगा: arcpy.CalculateField_management(inTable, fieldName, expression, "PYTHON_9.3", codeblock)यदि एक स्टैंड-अलोन स्क्रिप्ट में उपयोग किया जाता है। एक स्टैंड-अलोन स्क्रिप्ट में अपने कोड का उपयोग करने के लिए एक अलग दृष्टिकोण के चरणों का वर्णन करने के लिए धन्यवाद।
user3467260

सब अच्छा। वैसे भी मैं इस धारणा पर कायम हूं कि दा कर्सर फील्ड कैलकुलेटर की तुलना में बहुत तेज है।
फेलिक्सिप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.