Ausschneiden durch Durchlaufen der Liste mit ArcPy

Sep 05 2020

Ich habe Probleme beim Erstellen einer Schleifenfunktion, die eine Geodatabase durchsucht, jede Feature-Class in ein "study_area" -Polygon schneidet und die abgeschnittenen Dateien in einer separaten Geodatabase ablegt. Ich erhalte immer wieder "Feature-Klassen konnten nicht abgeschnitten werden". Die Funktionen können alle einzeln abgeschnitten werden, aber der Versuch, diese Schleife auszuführen, funktioniert nicht.

Was fehlt mir hier?

Ich habe versucht, nach ähnlichen Fragen zu suchen, aber nur Antworten zu Rasterclips gefunden. Code unten.

from arcpy import env


# setting my source and target geodatabase 
SourceWorkspace = r"E:\UFD Commercial Corridor\Roosevelt.gdb"
TargetWorkspace = r"E:\UFD Commercial Corridor\Clipped.gdb"

#setting my clip feature (which is a polygon)
clipfeature = r"E:\UFD Commercial Corridor\Clip area.gdb\study_area"

env.workspace = SourceWorkspace

try:
    fclist = arcpy.ListFeatureClasses()

    for fc in fcList:
        outClipFeatureClass = targetWorkspace + "//Studyarea_" + fc

        arcpy.Clip_analysis(fc,clipfeature,outClipFeatureClass)

except: 
    arcpy.AddError("Could not clip feature classes")
    print ("could not clip feature classes")
    print arcpy.GetMessages() 

Antworten

3 Aaron Sep 05 2020 at 03:30

Ich sehe zwei Probleme:

  1. Sie definieren, TargetWorkspaceobwohl Sie anrufen targetWorkspace. Python unterscheidet zwischen Groß- und Kleinschreibung.

  2. Sie müssen Zeichenfolgen ordnungsgemäß zusammenfügen, um Pfade zu erstellen. Ich empfehle dringend, sich mit vertraut zu machen os.path.join(). Zum Beispiel

Anstatt von:

outClipFeatureClass = targetWorkspace + "//Studyarea_" + fc

Verwenden:

outClipFeatureClass = os.path.join(TargetWorkspace, "Studyarea_" + fc)

import arcpy
import os

# setting my source and target geodatabase 
SourceWorkspace = r"E:\UFD Commercial Corridor\Roosevelt.gdb"
TargetWorkspace = r"E:\UFD Commercial Corridor\Clipped.gdb"

#setting my clip feature (which is a polygon)
clipfeature = r"E:\UFD Commercial Corridor\Clip area.gdb\study_area"

env.workspace = SourceWorkspace

fclist = arcpy.ListFeatureClasses()

for fc in fcList:
    outClipFeatureClass = os.path.join(TargetWorkspace, "Studyarea_" + fc)
    arcpy.Clip_analysis(fc,clipfeature,outClipFeatureClass)