Cắt bằng cách lặp qua danh sách bằng ArcPy

Sep 05 2020

Tôi đang gặp sự cố khi tạo một hàm lặp xem qua cơ sở dữ liệu địa lý, cắt từng lớp tính năng thành một đa giác "study_area" và đặt các tệp đã cắt trong một cơ sở dữ liệu địa lý riêng biệt. Tôi tiếp tục nhận được "Không thể cắt các lớp tính năng". Tất cả các tính năng có thể được cắt bớt riêng lẻ nhưng cố gắng chạy vòng lặp này không hoạt động.

Tôi còn thiếu gì ở đây?

Tôi đã cố gắng tìm kiếm những câu hỏi tương tự nhưng chỉ tìm thấy câu trả lời liên quan đến clip raster. Mã bên dưới.

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

Trả lời

3 Aaron Sep 05 2020 at 03:30

Tôi thấy hai vấn đề:

  1. bạn đang xác định TargetWorkspacemặc dù bạn đang gọi targetWorkspace. Python phân biệt chữ hoa chữ thường.

  2. Bạn cần phải nối các chuỗi với nhau một cách hợp lý để tạo đường dẫn. Tôi thực sự khuyên bạn nên làm quen với os.path.join(). Ví dụ

Thay vì:

outClipFeatureClass = targetWorkspace + "//Studyarea_" + fc

Sử dụng:

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)