Mong ArcPy ghi đè lên tệp trong tệp cơ sở dữ liệu địa lý?


13

Tôi đang viết một kịch bản python, tôi đã có một mxd và không gian làm việc của nó là một tệp cơ sở dữ liệu địa lý với tất cả các tệp tôi cần. Vấn đề tôi gặp phải khi kiểm tra và viết mã là, bất chấp lệnh:

arcpy.env.overwriteOutput=True

tất cả các tệp có trong cơ sở dữ liệu địa lý không thể ghi đè. Có cách nào để khắc phục điều này?


Trong ArcMap, bạn đã kiểm tra "Ghi đè đầu ra của các hoạt động xử lý địa lý" trong Công cụ địa lý> Tùy chọn địa lý?
Baltok

vâng, tôi đã làm Nhưng đã không làm việc.
Annalisa Minelli

3
Bạn có biết về bất kỳ khóa lược đồ nào trên dữ liệu của bạn không? Điều đó có thể ngăn chặn ghi đè là tốt. Cơ sở dữ liệu địa lý tệp và cá nhân đặc biệt nhạy cảm với điều này, bởi vì nếu một lớp tính năng có khóa, nó sẽ khóa toàn bộ cơ sở dữ liệu địa lý.
Baltok

2
Khi bạn nói rằng "tất cả các tệp trong cơ sở dữ liệu địa lý không ghi đè lên", bạn có nghĩa là tập lệnh thất bại hoặc nó hoàn thành nhưng chỉ không ghi đè lên các featureclass mà nó nên?
Chad Cooper

hãy thử chạy mã của bạn từ một IDE python như PyScripter, sau đó đóng ArcMap.
geogeek

Câu trả lời:


16

Nếu tôi nhớ lại một cách chính xác, có một số tình huống mà overwriteOutput sẽ không hoạt động. Trong trường hợp đó, sử dụng mã sau đây trước khi viết ra các tệp mới:

if arcpy.Exists(fileInQuestion):
    arcpy.Delete_management(fileInQuestion)

1

Hãy chắc chắn rằng tập tin geodatabase không được nén, tức là chỉ đọc.


0

Tôi cũng gặp vấn đề này và nhận xét về các khóa lược đồ thực sự hữu ích. Nếu bạn có một mxd với lớp tính năng đó trên nó, nó sẽ khóa lớp tính năng đó để nó không thể bị xóa. Nếu bạn chỉ thoát mxd có chứa lớp tính năng đó và chạy cùng mã ghi đè, thì nó dường như hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.