sử dụng đồng thời không gian làm việc in_memory trong arcpy


8

tôi đang sử dụng một tập lệnh python loại bỏ các đa giác nhỏ khỏi một lớp tính năng. tập lệnh này tạo các lớp đối tượng tạm thời với các tên cố định (mã hóa cứng) trong không gian làm việc "in_memory". thí dụ:

arcpy.CopyFeatures_management("in_fc","in_memory/item_a")

đó là một kịch bản khá có thể tái sử dụng, vì vậy tôi sử dụng nó ở nhiều điểm trong chuỗi xử lý địa lý.

Tôi có gặp nguy hiểm không, rằng cùng một tập lệnh được gọi hai lần từ các quy trình khác nhau (cùng một lúc) sẽ có xung đột tại, ví dụ: "in_memory / item_a"? hoặc các không gian làm việc "in_memory" tách biệt cho mỗi quy trình?

tôi đang sử dụng ArcInfo 10.0.

Câu trả lời:


8

Để kiểm tra câu hỏi của bạn, tôi đã viết ra một kịch bản nhanh rằng tôi đã chạy hai bản sao cùng lúc - một bản như một công cụ kịch bản trong ArcMap và một bản trong Pythonwin. Hơi ngạc nhiên, tôi không thể chạy chúng cùng lúc vì không gian làm việc "in_memory" đã được chia sẻ. Có một cách xung quanh điều này, tuy nhiên. Bạn có thể thêm vào kiểm tra đầu ra để xác định xem tệp trong bộ nhớ có tồn tại hay không và đặt tên cho nó là cái gì khác nếu vậy:

i=0
check = 0
while check == 0:
    memoryFeat = "in_memory" + "\\" + "testMemoryFeature" + str(i)
    if arcpy.Exists(memoryFeat):
        i+=1
    else:
        check = 1

Điều này sẽ cố gắng đặt tên của bạn trong tính năng bộ nhớ testMemoryFeature0. Nếu tính năng bộ nhớ đó đã tồn tại, nó sẽ cố gắng đặt tên là testMemoryFeature1, và cứ như vậy cho đến khi tìm thấy một tên sẽ đủ.


7
Bạn cũng có thể sử dụng hàm arcpy.CreateUniqueName .
Alex Markov

Rất tiện dụng! Tôi không biết điều này tồn tại.
bluefoot
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.