2017-03-19 3 views
0

많은 필드가 포함 된 카운티에 대한 shapefile이 있는데 그 중 Pop_Descrp이 필드 중 하나입니다. 필드 아래에서 "Highly Increased" 속성을 가진 카운티를 선택하고 내보내야합니다. 쿼리에 대해 올바른 식을 만들 수 없습니다.속성별로 선택 레이어를 사용하여 특정 shapefile 선택

아무도 도와 줄 수 있습니까?

import arcpy 
from arcpy import env 
env.workspace=r"Z:\Ash Tree Project\Shapefiles_Arkansas" 
env.OverwriteOutput=True 

arcpy.MakeFeatureLayer_management("County_AR.shp","County_layer") 

arcpy.SelectLayerByAttribute_management("County_layer", "NEW_SELECTION", "[Pop_Descrp]='Highly Increased'") 

arcpy.CopyFeatures_management("County_layer", "HighPopR_counties.shp") 
+1

[gis.se] Stack Exchange에서 더 잘 조사되거나 질문 될 것이라고 생각합니다. – PolyGeo

답변

0

당신은 당신의 데이터 유형에 대한 잘못된 필드 구분 기호를 사용하고 있습니다. 모양 파일의 경우 대괄호 대신 이중 인용 부호를 사용해야합니다 :

arcpy.SelectLayerByAttribute_management("County_Layer", "NEW_SELECTION", """"Pop_Descrp" = 'Highly Increased'""") 

다른 공간 파일 형식이 다른 필드 구분 기호를 필요로한다. 일부는 일부는 구분 기호를 사용하는 추측 - 작업을 저장하려면 대괄호 [Pop_Descrp], 기타 (shape 파일 포함)이 필요합니다 따옴표 "Pop_Descrp"

을 필요로 분리 문자 Pop_Descrp이 없다, 이들을 처리하는 가장 좋은 방법은 arcpy 기능을 사용하는 것입니다 SQL 식에 사용 Add Field Delimitersarcpy.AddFieldDelimiters()

구분자 필드는 질의 데이터 형식에 따라 다르다. 예를 들어 파일 지오 데이터베이스 및 모양 파일은 큰 따옴표 ("")를 사용하고, 개인 지오 데이터베이스는 대괄호 ([])를 사용하고 엔터프라이즈 지오 데이터베이스는 필드 구분 기호를 사용하지 않습니다. 이 함수는 추측 작업을 수행하여 SQL 표현식에 사용 된 필드 구분 기호가 올바른 인지 확인합니다.

> # Shapefile: 
> x = "{0} = 'Highly Increased'".format(arcpy.AddFieldDelimiters("County_AR.shp", "Pop_Descrp")) 
> print x 
"Pop_Descrp" = 'Highly Increased' 

> # Personal Geodatabase: 
> y = "{0} = 'Highly Increased'".format(arcpy.AddFieldDelimiters(r"myPGDB.mdb\County_AR", "Pop_Descrp")) 
> print y 
[Pop_Descrp] = 'Highly Increased' 

> # Enterprise (SDE) Geodatabase: 
> z = "{0} = 'Highly Increased'".format(arcpy.AddFieldDelimiters(r"EntGdb.sde\geodatabase.dbo.County_AR", "Pop_Descrp")) 
> print z 
Pop_Descrp = 'Highly Increased' 

그래서, 당신의 선택 작업을 추가 필드 구분 기호가 당신의 분야에 대한 올바른 구분 기호를 삽입하는 기능을 사용할 수 있습니다.

import arcpy 
arcpy.env.workspace = r"Z:\Ash Tree Project\Shapefiles_Arkansas" 

arcpy.MakeFeatureLayer_management("County_AR.shp", "County_layer") 

arcpy.SelectLayerByAttribute_management("County_layer", "NEW_SELECTION", "{0} = 'Highly Increased'".format(arcpy.AddFieldDelimiters("County_layer", "Pop_Descrp"))) 

arcpy.CopyFeatures_management("County_layer", "HighPopR_counties.shp")