ArcGIS ModelBuilder có thể mở tệp Excel để chỉnh sửa thủ công, sau đó đưa các chỉnh sửa đó trở lại mô hình không?


10

Tôi đã được giao nhiệm vụ tạo một mô hình bằng ArcGIS ModelBuilder, ban đầu chạy một số nhiệm vụ xử lý địa lý, trước khi tham gia một bảng Excel cho kết quả của các công cụ địa lý đó. Tuy nhiên, mô hình cần thực sự mở tệp Excel trước, để người dùng chỉnh sửa thủ công, trước khi người dùng lưu các chỉnh sửa của họ và đóng tệp. Sau đó, người ta hy vọng rằng mô hình sẽ nối tệp Excel này vào bảng thuộc tính của bộ dữ liệu (vẫn là một phần của mô hình) trước khi mô hình tiếp tục với một số tác vụ xử lý địa lý khác.

Tôi bao gồm một phác thảo sơ đồ cấp cao dưới đây để giúp minh họa điểm (Tôi hiểu điều này có thể không có nhiều ý nghĩa để bắt đầu).

Mô hình sẽ tạm dừng trong khi tệp Excel được chỉnh sửa, sau đó tiếp tục lại khi đã lưu và đóng

Vì vậy, mô hình sẽ chạy, hoàn thành một vài nhiệm vụ xử lý địa lý, tạm dừng để mở tệp Excel, đợi người dùng chỉnh sửa, lưu và đóng tệp, trước khi tiếp tục tham gia tệp Excel đó vào bảng thuộc tính và sau đó chạy một số của các nhiệm vụ địa vật lý khác.

Tôi nên tưởng tượng điều này sẽ yêu cầu kết hợp một hoặc hai tập lệnh Python vào mô hình. Hiện tại mặc dù tôi chỉ quan tâm để biết liệu khái niệm này có thực sự khả thi hay không.


1
Tôi khá chắc chắn với các công cụ xây dựng mô hình tiêu chuẩn, bạn sẽ không thể làm điều này vì không có cách nào tạm dừng mô hình, bạn cũng sẽ cần một số loại kích hoạt để kích hoạt để nói rằng người dùng đã đóng Excel để khởi động lại mô hình. Bạn có thể đạt được điều này với một số loại tập lệnh được gửi vào một vòng lặp vô hạn nhìn vào một lá cờ trong một tệp văn bản sau khi nó đã tạo ra một quy trình riêng biệt (Excel)? Tôi chưa bao giờ làm điều đó và không biết những cạm bẫy là gì. Nếu bạn muốn giữ nó trong modelbuilder, trước tiên tôi sẽ thực hiện các chỉnh sửa excel sau đó chạy mô hình.
Hornbydd

Cảm ơn @Hornbydd - Tôi đã có những suy nghĩ tương tự. Chỉnh sửa tệp trước và sau đó chạy mô hình là những gì tôi đã đề xuất, nhưng tôi được cho biết rằng cần phải là một, mô hình tích hợp ...
the_bonze

1
Tôi hình một kịch bản có thể nhìn vào dấu ngày và thời gian của một tệp để biết nếu nó đã được chỉnh sửa, sau đó tiếp tục mô hình từ đó? Tạm dừng nó là vấn đề, tôi nghĩ.
the_bonze

Vâng, trình xây dựng mô hình được thiết kế để tự động hóa quy trình làm việc để tăng tốc độ xử lý không có một số tạm dừng không xác định ở giữa, điều gì xảy ra nếu người dùng đó đi ăn trưa chẳng hạn? :) Giống như tôi bây giờ!
Hornbydd

Câu trả lời:


1

Điều này có vẻ như bạn cần phát triển nhiều công cụ Python tùy chỉnh hơn là một mô hình trong ModelBuilder. xlwthoặc xlutilstại http://www.python-excel.org/ sẽ cho phép bạn ghi vào tệp Excel của mình ( XlsxWritersẽ xử lý các tệp xlsx). Nếu các chỉnh sửa là nhỏ, có lẽ bạn có thể kết hợp điều này trong một công cụ ArcToolbox tiêu chuẩn (với một số sáng tạo). Nếu bạn đang sử dụng 10.1+, thì bạn có thể tạo Hộp bổ trợ Python hoặc Hộp công cụ Python để thực hiện GUI.


Các AddIns Python đã cung cấp các tùy chọn GUI tinh vi trong 10.1+ chưa? Tôi nghĩ chỉ có .NET và Java AddIns cung cấp những ... Python chỉ cung cấp AddIn mà không có bất kỳ GUI (lệnh, công cụ) nào.
Jürgen Zornig

1
@ JürgenZornig Không dễ thaaaat
Chad Cooper

Cảm ơn @ChadCooper. Tôi cần giữ mô hình trong trình xây dựng mô hình, vì vậy các bổ trợ Python vẫn ổn, nhưng mô hình với tư cách là một thực thể cần phải có trong trình xây dựng mô hình chứ không phải là một công cụ Python toàn diện.
the_bonze

@Chad Dù sao cũng cảm ơn vì Hướng dẫn khởi động nhanh ArcPy / Tkinter này ... phải thử cái này!
Jürgen Zornig

1

Tôi đã suy nghĩ về nó và có thể tôi đã tìm thấy một giải pháp mới. Bạn thiết lập tập lệnh python trong hộp công cụ có hai tham số người dùng, trước tiên là vị trí của Excel EXE. Điều này thậm chí có thể được mã hóa thông minh để kiểm tra danh sách các vị trí filepath có khả năng mã hóa cứng (Office12, Office13, v.v.).

Tiếp theo sử dụng hàm sub process.call. Có một số điều thực sự gọn gàng về việc sử dụng phương pháp này:

  1. Nó không yêu cầu bất kỳ thư viện bên ngoài
  2. chức năng gọi không cho phép tiếp tục tập lệnh cho đến khi excel nó bị đóng
  3. Bạn có thể chỉ định tài liệu excel làm đối số thứ hai
  4. Đó là một dòng mã!

    import subprocess subprocess.call(["C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE", "Test.xlsx"]) #Replace args with user inputs (sys.argv[1], sys.argv[2] respectively)

Điều duy nhất là tôi không chắc chắn 100% nếu điều này sẽ hoạt động trong trình tạo mô hình, điều này sẽ cần phải được kiểm tra, tuy nhiên tôi không hiểu tại sao nó lại không nhưng vì tôi chắc chắn rằng bạn biết Arc là một con thú nóng tính.

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.