Recorte percorrendo a lista usando ArcPy

Sep 05 2020

Estou tendo problemas para criar uma função de loop que examina um geodatabase, recorta cada classe de recurso em um polígono "study_area" e coloca os arquivos recortados em um geodatabase separado. Continuo recebendo a mensagem "Não foi possível cortar as classes de recursos". Os recursos podem ser cortados individualmente, mas tentar executar esse loop não funciona.

O que estou perdendo aqui?

Tentei pesquisar perguntas semelhantes, mas só encontrei respostas sobre clipes raster. Código abaixo.

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() 

Respostas

3 Aaron Sep 05 2020 at 03:30

Eu vejo dois problemas:

  1. você está definindo TargetWorkspaceembora esteja chamando targetWorkspace. Python diferencia maiúsculas de minúsculas.

  2. Você precisa unir corretamente as strings para criar caminhos. Eu recomendo altamente se familiarizar com os.path.join(). Por exemplo

Ao invés de:

outClipFeatureClass = targetWorkspace + "//Studyarea_" + fc

Usar:

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)