OBJECTID 이름을 얻는 가장 좋은 방법은 무엇입니까?


13

기능 클래스의 OBJECTID 이름을 얻는 가장 좋은 방법은 무엇입니까?

커서에서 "OID @"를 사용하여 필드를 가져올 수 있지만 그 이름을 얻을 수 있습니까?

스크립트를 작성 중이며 쿼리에 사용될 OBJECTID_2, OBJECTID_12, FID 등과 같은 다양한 OBJECTID 이름을 고려해야합니다.

Describe를 사용하여 이름을 얻는 유일한 방법입니까?

예를 들면 다음과 같습니다.

oid_field = [field.name for field in arcpy.ListFields("FC") if field.type == "OID"]

다른 방법이 있는지 궁금합니다.

감사.

답변:


23

describe를 사용하는 것이 가장 좋다고 말할 것입니다.

oid_fieldname = arcpy.Describe(fc).OIDFieldName

매우 간단합니다. 그렇지 않으면 listFields를 사용할 때 직접 필터링 할 수 있으므로 시도해 볼 수 있습니다

oid_fieldname = arcpy.ListFields(fc,"","OID")[0].name

그러나 oidField가 없으면 오류가 발생합니다 (그렇지 않지만 ...)


1
나는 그것이 매우 간단하다는 데 동의합니다. 방금 Describe가 약간 느릴 수 있음을 알았습니다. 감사.
ianbroad

목록 필드가 설명보다 빠릅니까?
학습자

내 경험상, 아니요, 둘 다 상대적으로 느립니다 ... 나는 두 가지 다른 중간 크기의 gdb에서 테스트했으며 결과는 설명에 ~ 6.4, 목록 필드에 대해 ~ 7.4입니다 (처음부터). fc가 이미 메모리에 있으면 시간은 각각 ~ 1.6과 2.5입니다.
radouxju
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.