2017-03-19 4 views
0

多くのフィールドを含む郡のシェイプファイルがあります。そのうちの1つはPop_Descrpです。フィールドの下に"Highly Increased"属性を持つ郡を選択してエクスポートする必要があります。私はクエリのための正しい表現をすることができていない。アトリビュートで選択したレイヤーを使用して特定のシェイプファイルを選択する

誰もがこれを手伝ってくれますか?

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]、その他(シェープファイルを含む)を必要と二重引用符"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") 
関連する問題