2016-04-13 8 views
0

ソースレイヤーがレイヤーで出力レイヤーが出力されます。このスクリプトは、出力レイヤーとともに、新しいフィールドとタリーを使用してソースレイヤーを更新しています。私は最後にレイヤーからフィールドを削除しようとしました。 fcを別の出力として設定し、最後にfcを出力にコピーしてから、その後にfc/layerからフィールドを削除します。バットの右のソースレイヤーをコピーします(概念的には、これは私にとって最も理にかなっています...多分私はそれを間違えました)...ダイスはありません。ソースレイヤーが出力レイヤーと共に更新されます

ソースレイヤーをそのまま保存しますが、このスクリプトを実行して出力を集計するアイデアはありますか?任意の入力をありがとう!

#workspace 
arcpy.env.workspace = wspace = arcpy.GetParameterAsText(0) 

#buildings 
layer = arcpy.GetParameterAsText(1) 

#trees 
trees = arcpy.GetParameterAsText(2) 

#buffer building to search 
buffer = arcpy.GetParameterAsText(3) 

#tree field interested in - tree condition, tree location, or tree pit 
tf = arcpy.GetParameterAsText(4) 

#output file 
output = arcpy.GetParameterAsText(5) 

#make feature layers to reference 
treelayer = arcpy.MakeFeatureLayer_management(trees, trees + ".shp") 
fc = arcpy.MakeFeatureLayer_management(layer, output) 

pit = ["Sidewalk", "Continuous", "Lawn"] 


if tf == "Tree Pit": 
for a in pit: 
    arcpy.AddField_management(fc, a, "SHORT") 

with arcpy.da.SearchCursor(fc, ["OBJECTID"]) as fcrows: 
    for a in fcrows: 

     arcpy.SelectLayerByAttribute_management(fc, "NEW_SELECTION", "OBJECTID={}".format(a[0])) 
     arcpy.SelectLayerByLocation_management(treelayer, "WITHIN_A_DISTANCE", fc, buffer, "NEW_SELECTION") 

     tlrows = arcpy.da.SearchCursor(treelayer, "SITE") 
     list1 = [] 
     for tlrow in tlrows: 

      list1.append(int(tlrow[0]))  

     fcrows1 = arcpy.da.UpdateCursor(fc, pit) 
     for fcrow1 in fcrows1: 
      if list1.count(1) > 0: 
       fcrow1[0] = list1.count(1) 
      else: 
       fcrow1[0] = 0 
      if list1.count(2) > 0: 
       fcrow1[1] = list1.count(2) 
      else: 
       fcrow1[1] = 0 
      if list1.count(3) > 0: 
       fcrow1[2] = list1.count(3) 
      else: 
       fcrow1[2] = 0 
      fcrows1.updateRow(fcrow1) 

答えて

0

変数を関数と同じにする必要はありません。機能層を作成するだけです。

arcpy.MakeFeatureLayer_management(layer, output) 

そして、その後の工程のみoutput層に影響を及ぼし、ソースlayer、例えば:

for a in pit: 
    arcpy.AddField_management(output, a, "SHORT") 

with arcpy.da.SearchCursor(output, ["OBJECTID"]) as fcrows: 
を無視すべきです
関連する問題