Tôi có một vài chục lớp tính năng, một trong số đó chứa trường tôi đang tìm kiếm. Chúng được lưu trữ trong một số cơ sở dữ liệu địa lý tập tin khác nhau.
Có cách nào nhanh chóng tìm kiếm từng lớp tính năng để tìm lớp có trường của tôi không? Hay tôi phải kiểm tra bảng thuộc tính của mỗi người trong Danh mục? Một số tệp có cùng tên nhưng được lưu trữ ở các vị trí riêng biệt.
Tôi muốn có thể thực hiện điều này bên trong một Calculate Value
công cụ trong ModelBuilder, để mỗi lần tôi cần, tôi có thể chạy mô hình trên một tệp gdb duy nhất và nó sẽ tìm kiếm trong tất cả các lớp tính năng trong gdb đó và tìm trường .
Cho đến nay, tôi có một trình lặp lớp tính năng lặp lại trên tất cả các lớp tính năng trong tệp gdb theo cách đệ quy. Bên trong Calculate Value
tôi có đoạn mã sau:
findField(r"%Feature%", "%Search Field%")
def findField(fc, fi):
lst = arcpy.ListFields(fc)
for f in lst:
if f.name == fi:
return fc
else:
return "not found"
Các giá trị trả về được thu thập Output Values
dưới dạng chuỗi. Đầu ra cho tất cả các lớp đối tượng đã "không tìm thấy", mặc dù trường tồn tại ít nhất 4 trong số chúng.
Calculate Value
để tìm kiếm trường và để trả về đường dẫn của lớp đối tượng dưới dạng chuỗi nếu nó tìm thấy trường - xem câu trả lời của tôi dưới đây.