Mehr

Verwenden der for-Schleife zum Ausführen einer Abfrage in ArcPy?

Verwenden der for-Schleife zum Ausführen einer Abfrage in ArcPy?


Ich versuche, die Aufschlüsselung der Branderkennung für einen Bereich durch Sortieren von Konfidenzniveaus bereitzustellen. Der Datensatz enthält 12 Dateien (eine für jeden Monat im Jahr) mit Feueraufzeichnungen, die alle eine Spalte namens "Konfidenz" mit einem Wert zwischen 0 und 100 haben. Ich muss eine for-Schleife verwenden, um die Dateien nach 3 verschiedenen Konfidenzniveaus abzufragen . Gruppe 1: >85 % Konfidenz Gruppe 2: 60-85 % Konfidenz Gruppe 3: <60 % Konfidenz

ICH MUSS A VERWENDENProSchleife, um dies auszuführen. Irgendwelche Ideen? Ich begann mit dem Anhängen aller Dateien in eine Liste. Mir wurde gesagt, dass ich Listen verwenden könnte, um untere und obere Bereiche festzulegen undSelectLayerByAttribute_management, und verwenden Sie das in einer Schleife, wissen aber nicht, wie das geht.

Dies ist mein endgültiger Code, der funktioniert. Ich beschloss, die Dateien zu einer großen Datei zusammenzuführen.

arcpy.env.workspace = "***********/data/" list1 = []; für Monat im Bereich(1,13): inf = "2007" + str(Monat).zfill(2)+ "_rfe" arcpy.DefineProjection_management(newpath + inf + ".shp", 4326) list1.append(newpath + inf + ".shp") out1 = "big2007" + "_rfe" + ".shp" layer1 = "layer1" + ".shp" arcpy.Merge_management(list1,out1) arcpy.MakeFeatureLayer_management(out1, layer1) lower = [ 0, 60, 86] Upper = [60, 86, 101] für i in range(len(lower)): arcpy.SelectLayerByAttribute_management(layer1, "NEW_SELECTION", """ "CONF" >= {} und "CONF" < {}""".format(lower[i],upper[i])) result = arcpy.GetCount_management(layer1).getOutput(0) result = int(round(result))

Ich gehe davon aus, dass sich Ihre Dateien im selben Verzeichnis befinden. Ich weiß nicht, warum Sie eine for-Schleife verwenden müssen, da dies unnötige Komplexität erhöht, aber hier ist ein Beispiel, in dem Sie zwei Listen erstellen können (eine mit den unteren Bereichen und die zweite mit den oberen Bereichen), die Sie einfügen die where-Klausel beim Erstellen des Layers (Sie können auch einen einzelnen Layer ohne where-Klausel erstellen und dieselbe where-Klausel verwenden, um innerhalb dieses Layers nach Attribut auszuwählen)

minvals = [85, 60 , -1 ] maxvals = [100, 85, 60] fcs = arcpy.ListFeatureClasses() für fc in fcs: für i in range(len(minvals)): arcpy.MakeFeatureLayer(fc, fc[ :-4]+str(i+1), """ "confidence_field_name" > {} Und "confidence_field_name" <= {}""".format(minvals[i],maxvals[i]) )