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


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.