피처 클래스 내의 그룹을 기반으로 자동 증분 필드?


10

피처 클래스 내의 그룹을 기반으로 필드를 자동 증가시켜야합니다. 주어진 다각형 내에 8 개의 플롯이 있으며 각 다각형 내의 각 플롯 세트에 대해 1-8의 ID를 할당해야합니다. 다각형에는 플롯을 그룹화하는 데 사용되는 고유 한 ID 번호가 있습니다.

나는 이것이 이것의 변경이라고 가정한다.

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

1
파이썬의 모듈러스 연산자 ( %)
Vince

답변:


12

Python 용 필드 계산기

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 함수를 독립형 Python 스크립트에서 사용하는 경우 GroupOrder함수는 code block인수가되고 GroupOrder( !locality! )'표현식'인수가됩니다.
user3467260

스크립트에서 : a) 사전 작성 b) 2 개의 필드 그룹과 채워질 하나에 커서 업데이트. 3-5 줄의 코드.
FelixIP

1
필자의 의견으로는 이러한 인수가 arcpy 계산 필드 도구에 포함될 것이라고 언급하지 않았습니다 arcpy.CalculateField_management(inTable, fieldName, expression, "PYTHON_9.3", codeblock). 독립형 스크립트에서 사용되는 경우. 독립형 스크립트에서 코드를 사용하는 다른 방법의 단계를 설명해 주셔서 감사합니다.
user3467260

문제 없다. 어쨌든 나는 da 커서가 필드 계산기보다 훨씬 빠르다는 인상을 받고 있습니다.
FelixIP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.