선택한 기능 도구에서 레이어 작성 : 기능 목록은 어떻게 저장됩니까?


12

ArcGIS Desktop에는 선택한 피처에서 레이어 생성 이라는 도구가 있습니다. 이 도구를 사용하여 ArcMap에서 선택 물을 레이어로 변환 할 수 있습니다.

지도에 표시 할 기능을 분리하는 어딘가에 레이어에 포함 된 '기능 목록'이 있다고 생각합니다.

"기능 목록"이 where정의 쿼리 의 절에 목록 으로 저장되어 있다고 생각했을 것 입니다 objectids. 예를 들면 다음과 같습니다 where objectid in(123,456,789,...).. 그러나 그렇지 않습니다.

레이어에 WHERE절 또는 정의 쿼리 가없는 경우 기능 목록은 어떻게 저장됩니까?


2
메뉴 항목과 지오 프로세싱 도구에는 큰 차이가 있습니다. 당신이 말하는 것은 전입니다. fidset에 저장된 데이터를 사용하여 레이어를 만들 수 있습니다.
FelixIP

2
선택 레이어를 만들 때 WHERE 절이 저장되어 있지 않으며 한 번 만들면 원래 선택 영역을 찾을 수 없습니다. 최근에 아주 오래된 선택 레이어를 다루고 있었고 그것을 만드는 데 사용 된 기능의 원래 선택을 찾는 것이 도움이 되었기 때문에 대답의 형태로 잘못 입증 되었기를 바랍니다.
Dan C

1
Fidset은 레이어의 속성입니다. 그것은 ; 선택 FID를 저장하기 위해 분리 된 문자열.
FelixIP

선택한 피처에서 레이어 만들기 DYNAMIC 레이어를 만들지 않습니다. 결과 레이어는 전혀 동적이지 않습니다. FIDset을 기반으로합니다. 소스 데이터를 변경하면 FID가 변경되고 선택 레이어가 손상됩니다. 이것은 where 절을 저장하는 Query 레이어와는
다르다

답변:


14

선택한 피처에서 레이어 만들기 DYNAMIC 레이어를 만들지 않습니다 . 결과 레이어는 전혀 동적이지 않습니다. FIDset을 기반으로합니다.

소스 데이터를 변경하면 FID가 변경되고 선택 레이어가 손상됩니다.

선택 레이어에는 where 절이 없습니다. FIDset ( '선택한 기능에서 레이어 작성'을 사용할 때 선택한 FID)을 기반으로합니다.

소스 데이터에서 레코드를 추가하거나 제거하면 FID가 변경되고 선택 레이어에 잘못된 레코드가 표시됩니다.

선택 레이어를 where 절을 저장하고 동적 인 쿼리 레이어와 혼동하고 있습니다.

편집 : 선택 레이어의 기능 목록이 메모리에 저장됩니다. 선택 레이어가 끊어지면 원래 선택을 복구 할 방법이 없으므로 임시 작업 이외의 선택 레이어를 사용하는 것은 좋지 않습니다.

선택 레이어에서 기능 목록을 찾으려면 SearchCursor를 비롯한 여러 가지 방법을 사용하여 ID 목록을 작성할 수 있습니다.

이 같은:

OIDlist = []
with arcpy.da.SearchCursor(layer, 'OBJECTID') as scur:
    for row in scur:
        OIDlist.append(row[0])

crmackey의 코멘트에서 :

FIDSet을 얻기위한 describe가 내장되어 있습니다. 이것은 문자열이지만 목록으로 쉽게 변환 할 수 있습니다.

OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))

1
또한를 얻기 위해 describe가 내장되어 FIDSet있습니다. 이것은 문자열이지만 목록으로 쉽게 변환 할 수 있습니다. OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
crmackey


11

내가 이해 한 가장 좋은 방법은 내가 Create Layer from Selected Features참조 한이 참조가 기능을 선택하기 위해 임시 레이어 만들기라는 것입니다.

임시 계층을 만들면 원본 데이터 원본에 영향을주지 않고 선택 등의 작업을 수행 할 수 있습니다. 이 계층은 메모리 내에서 작성되며 디스크에 저장된 데이터를 단순히 참조하기 때문에 ArcCatalog 컨텐츠에 나타나지 않습니다. 이 레이어는 작업 세션 내 다른 지오 프로세싱 도구에 대한 입력으로 사용할 수 있습니다. 응용 프로그램을 종료하면 메모리 내 계층이 제거됩니다.

피처 레이어 만들기 도구는 데이터 관리 도구 도구 상자 내의 레이어 및 테이블 뷰 도구 세트에 있습니다. 피처 레이어 작성 도구를 마우스 오른쪽 버튼으로 클릭하고 열기를 클릭하거나 도구를 두 번 클릭하여 엽니 다.

해당 디스크 공간을 읽을 수있는 메커니즘은 "결과 집합"에 액세스하는 방법입니다.

또한 앞에서 언급 한대로 Esri에서 다루고 있습니다 .

이 예에서 선택한 피처로 생성 된 레이어는 임시 작업 데이터 세트로만 유용합니다 (예 : 지오 프로세싱 모델에 입력으로 사용). 새 계층은 선택한 기능의 FID (FeatureID) 또는 OID (ObjectID) 목록을 작성 하며 원래 데이터 소스가 업데이트되거나 변경 될 때 유효하지 않게됩니다 .

또한 다음은 작업 공간 과 관련된 일반적인 읽기 인 메모리 작업 공간 사용에 대한 자세한 설명 in_memory입니다. 관심이있는 경우 추가 정보를 제공하기위한 것입니다.


2

내 생각에, 레이어 는 논리 또는 관련 조건없이 선택 세트를 만들 수 있기 때문에 절 또는 논리 조건을 Create Layer From Selected Features기반으로하지 않습니다 WHERE.

예를 들어, 이전 속성 / 위치 별 선택 중 하나에서 상자를 끌어와 같이 기본 메뉴사용하여 선택 세트에서 기능을 수동으로 추가 / 삭제할 수 있습니다.

선택 세트 ( IFeatureSelection)는 결과 세트를 정의하는 규칙이 아니라 광범위한 결과 세트 (원본 레이어의 ID 사본 포함) 일뿐입니다. 따라서 링크 된 문서에서 원본 레이어의 ID가 변경되면 ID가 유효하지 않을 수 있다는 경고가 표시됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.