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


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.