shapefile에서 ArcPy 레이어에 정의 쿼리를 설정 하시겠습니까?


11

ArcPy를 사용하여 레이어 정의 쿼리를 설정하는 옵션을 결정하려고합니다.

arcpy.mapping.ListLayers ()를 사용할 때 가능하다는 것을 알고 있습니다.

그러나이 시나리오에서는 shapefile을로드하고 ArcPy에서 arcpy.MakeFeatureLayer_management ()를 사용하고 있습니다.

이 지오 프로세서를 사용하여 생성 한 레이어에 정의 쿼리를 설정하고 싶습니다.

이게 가능해?

답변:


15

아래 코드는 shapefile에서 "testField"= 'A'정의 정의가 저장된 test_A.lyr이라는 레이어 파일을 만듭니다.

import arcpy

arcpy.MakeFeatureLayer_management(r"C:\temp\testLines.shp","test_lyr")
lyr = arcpy.mapping.Layer("test_lyr")
lyr.name = "test"
lyr.definitionQuery = '"testField" = ' + "'A'"
lyr.saveACopy(r"C:\temp\test_A.lyr")

del lyr

필요한 경우이 레이어 파일 또는 레이어 객체 (lyr)를 레이어 파일로 저장하기 전에 arcpy.mapping.AddLayer를 통해 맵에 추가 할 수도 있습니다.

MakeFeatureLayer의 where_clause가 정의 쿼리로 전달되는지 여부를 확인하기 위해 문서화되지 않은 동작이라고 생각하기 위해 아래에서 두 번째 테스트를 수행하여 @John의 답변을 확인했으며 그는 정확합니다.

arcpy.MakeFeatureLayer_management(r"C:\temp\testLines.shp","test_lyr2",'"testField" = ' + "'A'")
lyr2 = arcpy.mapping.Layer("test_lyr2")
lyr2.name = "test2"
lyr2.saveACopy(r"C:\temp\test_2.lyr")

del lyr2

프로는 ArcGIS와 라이브러리에 대한 업데이트하려면 , arcpy.mapping.layer()로 대체되었습니다arcpy.mp.LayerFile()
ADIN

5

예, 선택적 "where_clause"매개 변수가 무엇인지에 따라 가능할 것 입니다. 자세한 내용과 예제 는 설명서 를 참조하십시오 . 그러나 기본적으로 정의 쿼리를 where_clause 매개 변수로 포함하면됩니다. 참고로 ObjectID / FID 필드가없는 레이어를 사용하는 경우 ArcGIS는 이에 대해 SQL 표현식을 실행하는 데 문제가 있지만 일반 ArcGIS 레이어는 문제가됩니다.


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