다음은 그리드와 교차하는 "프로젝트"레이어를 선택 (강조 표시) 한 다음 선택한 "그리드"에서 레코드를 가져옵니다. 레이어를 저장할 필요가 없습니다.
참고 : 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")
이 코드는 실행되며 오류가 발생하지 않지만 기능을 선택 (강조 표시)하지 않습니다. 왜 그런지 알아? 또한 정말 느리게 실행됩니다.
기본적으로 나는 이것을하려고합니다.
이것은 거의 즉각적으로 빠르게 실행되지만 파이썬을 사용하여 동일한 작업을 수행하려고합니다. 선택한 피처의 테이블에서 값이 필요하고 레이어 사본이 필요하지 않습니다.
솔루션의 일부는 사용할 수 있습니다 메모리 작업 공간 입니다
메모리 내 작업 공간에 데이터를 쓰는 것이 종종 다른 형식으로 쓰는 것보다 훨씬 빠릅니다.
메모리 내 작업 공간을 구현하는 방법을 잘 모르겠습니다.
Python Console 창의 ArcMap에서 스크립트를 실행하고 있습니다.
—
트리스탄 포워드
ArcMap 내에서 실행하는 경우 이미 레이어
—
dmahr
arcpy.MakeFeatureLayer()
이므로 선이 필요하지 않습니다 project
. 그냥하세요 arcpy.SelectLayerByLocation_management("project","INTERSECT","Grid")
.
좋은 질문 형식!
—
브래드
감사합니다 @ dmahr, 여전히 기본 제공 Select by Attribute보다 느리게 실행되지만 작동합니다.
—
트리스탄 포워드
import arcpy
명령을 실행하는 데 시간이 걸리기 때문에 ArcMap 외부에서 스크립트를 실행하고 있다고 생각 합니다.