파이썬으로 속성별로 아크 맵 선택


9

다음은 그리드와 교차하는 "프로젝트"레이어를 선택 (강조 표시) 한 다음 선택한 "그리드"에서 레코드를 가져옵니다. 레이어를 저장할 필요가 없습니다.

참고 : Python 콘솔 창의 ArcMap에서 스크립트를 실행하십시오.

import arcpy

# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("project","project_lyr")

# Then add a selection to the layer based on location to features in another feature class 
arcpy.SelectLayerByLocation_management("project_lyr","INTERSECT","Grid")

이 코드는 실행되며 오류가 발생하지 않지만 기능을 선택 (강조 표시)하지 않습니다. 왜 그런지 알아? 또한 정말 느리게 실행됩니다.

결과

기본적으로 나는 이것을하려고합니다.

여기에 이미지 설명을 입력하십시오

이것은 거의 즉각적으로 빠르게 실행되지만 파이썬을 사용하여 동일한 작업을 수행하려고합니다. 선택한 피처의 테이블에서 값이 필요하고 레이어 사본이 필요하지 않습니다.

솔루션의 일부는 사용할 수 있습니다 메모리 작업 공간 입니다

메모리 내 작업 공간에 데이터를 쓰는 것이 종종 다른 형식으로 쓰는 것보다 훨씬 빠릅니다.

메모리 내 작업 공간을 구현하는 방법을 잘 모르겠습니다.


ArcMap 내에서 (예 : Python 콘솔에서)이 스크립트를 실행하고 있습니까? 아니면 ArcMap 외부 (즉, IDLE 또는 다른 Python 편집기 내)에서? ArcMap이 "특징을 선택 (강조)"하는 유일한 방법은 ArcMap 내에서입니다. import arcpy명령을 실행하는 데 시간이 걸리기 때문에 ArcMap 외부에서 스크립트를 실행하고 있다고 생각 합니다.
dmahr

Python Console 창의 ArcMap에서 스크립트를 실행하고 있습니다.
트리스탄 포워드

ArcMap 내에서 실행하는 경우 이미 레이어 arcpy.MakeFeatureLayer()이므로 선이 필요하지 않습니다 project. 그냥하세요 arcpy.SelectLayerByLocation_management("project","INTERSECT","Grid").
dmahr

좋은 질문 형식!
브래드

감사합니다 @ dmahr, 여전히 기본 제공 Select by Attribute보다 느리게 실행되지만 작동합니다.
트리스탄 포워드

답변:


2

좋은 질문!

Dmahr이 맞습니다. 피처 레이어를 만드는 대신 레이어를 선택하는 것이 더 빠릅니다. 또한 변수는 선택 사항이지만 나머지 변수를 추가합니다.

arcpy.SelectLayerByLocation_management ("project_lyr", "INTERSECT", "Grid", "#", "NEW_SELECTION")

내가 찾은 또 다른 것은 ArcMap의 python 창에서 실행하는 것이 항상 느리다는 것입니다. 코드를 .py 파일에 작성하고 도구 상자에 스크립트로 추가 한 다음 실행하면 처리 속도가 빨라집니다.

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