Quellschicht ist Schicht, Ausgabeschicht wird ausgegeben. Das Skript aktualisiert die Quellschicht mit den neuen Feldern und deren Tally zusammen mit der Ausgabeschicht. Ich habe versucht, am Ende Felder aus der Ebene zu löschen. Setzen von fc als eine andere Ausgabe, Kopieren von fc zum Ausgeben am Ende und danach Löschen der Felder von fc/layer; und kopiere die Quellschicht rechts von der Fledermaus (konzeptionell macht das für mich am meisten Sinn ... vielleicht habe ich es falsch gemacht) ... keine Würfel.Quellschicht wird zusammen mit der Ausgabeschicht aktualisiert
Irgendwelche Ideen, die die Quellschicht erhalten würden, wie es ist, aber dieses Skript dazu bringen, auf der Ausgabe zu laufen und zu zählen? Danke für jede Eingabe !!
#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)