Cài đặt trong không gian làm việc của bộ nhớ trong ArcPy?


11

Có thể thiết lập env.workspace = "in_memory"trong ArcPy bằng cả kiến ​​trúc ArcGIS Pro và ArcGIS 10.2.2 (hoặc 10.3) không?

Những gì tôi đang cố gắng làm là lấy đầu ra của một thao tác điểm đổ nhanh được ghi vào bộ nhớ thay vì đĩa.

Tôi nhận ra rằng tôi có thể ghi vào đĩa sau đó đưa nó vào bộ nhớ nhưng điều này sẽ không giúp ích gì. Tôi đang cố gắng tối ưu hóa một loạt các tác vụ giảm thiểu việc sử dụng ghi vào phương tiện vật lý đầu ra của một quy trình chỉ được yêu cầu làm đầu vào cho quy trình tiếp theo.

Câu trả lời:


15

Tôi sẽ đưa ra câu trả lời ở đây vì cả hai câu trả lời đều không đúng 100%.

Có 2 mục có thể thay đổi từ công cụ này sang công cụ khác.

  1. nếu nó tôn vinh môi trường không gian làm việc (mục này luôn được ghi lại trên trang trợ giúp của công cụ)
  2. nếu nó có thể sử dụng in_memorykhông gian làm việc (mục này có thể không được ghi lại rõ ràng. Bạn có nhiều khả năng nhìn thấy một ghi chú nếu nó KHÔNG hỗ trợ in_memory)

Để trả lời đơn giản "bạn có thể đặt không gian làm việc môi trường thành in_memory". Câu trả lời là CÓ.

>>> import arcpy
>>> arcpy.env.workspace = r"in_memory"
>>> arcpy.CopyFeatures_management(r"c:\temp\foo.shp", "myinmemoutput")
<Result 'in_memory\\myinmemoutput'>
>>> arcpy.Exists("myinmemoutput")
True

Snap Pour Point tôn vinh môi trường không gian làm việc theo tài liệu của nó và giải thích các mẫu Python. Và một thử nghiệm cho thấy bạn có thể viết đầu ra in_memoryvà làm việc với tham chiếu biến đó ... để đưa vào một công cụ khác hoặc lưu kết quả

>>> import arcpy
>>> arcpy.env.workspace = r"in_memory"
>>> arcpy.CheckOutExtension("SPATIAL")
u'CheckedOut'
>>> snapOut = arcpy.sa.SnapPourPoint("e:/gpservices101/hydro/US30m/test.gdb/sourcepoint", "e:/gpservices101/hydro/US30m/Region08a/Input/elev_cm", 1,"PourPtID")
>>> snapOut
in_memory\SnapPou_sour1
>>> arcpy.Exists(snapOut)
True
>>> snapOut.save(r"c:\temp\todisk.tif")
>>> arcpy.Exists(r"c:\temp\todisk.tif")
True

-1

Thật không may, tôi không nghĩ rằng việc đặt không gian làm việc thành vị trí in_memory như trong câu hỏi của bạn là có thể; Theo cách đó, các công cụ xử lý địa lý sẽ mặc định các vị trí đầu ra của chúng thành không gian làm việc in_memory.

Bây giờ tôi chỉ cố gắng thiết lập không gian làm việc cho riêng '\\in_memory'mình và thử nghiệm nó với một CopyFeatures_management()công cụ đơn giản . Đại diện chuỗi arcpy.env.workspacethực sự được đặt thành '\\in_memory', nhưng tôi nghĩ CopyFeatures_management()công cụ này không tôn trọng cài đặt môi trường không gian làm việc trong trường hợp này.

Mặc dù vậy, sẽ thật tuyệt vời nếu chúng ta có thể đặt in_memorylàm không gian làm việc mặc định ở cấp tài liệu bản đồ. Có lẽ bạn có thể nêu lên điều này như một ý tưởng ArcGIS?

May mắn nhất.

BIÊN TẬP:

Này, tôi cũng đã suy nghĩ vì bạn đang sử dụng Công cụ Snap Pour Point , chúng ta có thể cần phải tiếp cận điều này theo một cách khác. Snap Pour Point dường như hoạt động trực tiếp trên lớp tính năng đổ điểm và không tạo ra lớp tính năng đầu ra như một phần của kết quả công cụ. Chúng ta có thể tạo một bản sao tạm thời, in_memory của các điểm đổ và làm việc từ đó không?

EDIT để EDIT:

Ồ đúng rồi, bạn đã đề cập đến việc bạn đã nhận ra điều này rồi - xin lỗi.


Tôi có thể làm điều đó (ý tưởng ArcGIS). Tôi tự hỏi tại sao mọi người sẽ bỏ phiếu xuống câu hỏi này? Tôi đồng ý với bạn Jim nó sẽ là tuyệt vời.
Nếu bạn không biết - chỉ cần GIS

Ah tôi nhận được câu hỏi ngay bây giờ. Có Jim là chính xác, thiết lập không gian làm việc như thế không có gì. Bạn phải chỉ định in_memory cho các quy trình riêng lẻ của bạn. Bạn không thể làm cho nó mặc định với hành vi đó.
Thomas

1
Việc bỏ phiếu xuống có thể đến từ độ dài câu hỏi của bạn. Tôi hiểu ý của bạn là gì - có thể chỉnh sửa câu hỏi của bạn một chút với một số bối cảnh khác và những người khác sẽ bỏ phiếu sao lưu?
Jim

Ok, đó là một câu hỏi trực tiếp mà tôi không thấy cần phải lật nó lên. Tôi sẽ làm như bạn nói.
Nếu bạn không biết - chỉ cần GIS

câu hỏi được đặt lại để xem nếu có cách khác tồn tại.
Nếu bạn không biết - chỉ cần GIS
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.