ArcGIS ModelBuilder สามารถเปิดไฟล์ Excel สำหรับการแก้ไขด้วยตนเองได้หรือไม่


10

ฉันได้รับมอบหมายให้สร้างแบบจำลองโดยใช้ ArcGIS ModelBuilder ซึ่งเริ่มทำงานเกี่ยวกับการประมวลผลทางภูมิศาสตร์สองครั้งก่อนแล้วจึงเข้าร่วมตาราง Excel กับผลลัพธ์ของกระบวนการทางภูมิศาสตร์เหล่านั้น อย่างไรก็ตามโมเดลจำเป็นต้องเปิดไฟล์ Excel ก่อนเพื่อให้ผู้ใช้แก้ไขได้ด้วยตนเองก่อนที่ผู้ใช้จะบันทึกการแก้ไขและปิดไฟล์ จากนั้นคาดว่าโมเดลจะรวมไฟล์ Excel นี้เข้ากับตารางแอ็ตทริบิวต์ของชุดข้อมูล (ยังเป็นส่วนหนึ่งของโมเดล) ก่อนที่โมเดลจะดำเนินการต่อโดยมีงานการประมวลผลทางภูมิศาสตร์อื่นจำนวนมาก

ฉันรวมโครงร่างระดับสูงด้านล่างเพื่อช่วยแสดงให้เห็นถึงจุด (ฉันเข้าใจว่านี่อาจไม่สมเหตุสมผลเลยที่จะเริ่มต้นด้วย)

โมเดลจะหยุดชั่วคราวในขณะที่แก้ไขไฟล์ Excel จากนั้นให้บันทึกและปิดอีกครั้ง

ดังนั้นโมเดลจะทำงานเสร็จงานการประมวลผลทางภูมิศาสตร์สองสามอย่างหยุดชั่วคราวเพื่อเปิดไฟล์ Excel รอให้ผู้ใช้แก้ไขบันทึกและปิดก่อนที่จะกลับไปเข้าร่วมไฟล์ Excel นั้นในตารางคุณลักษณะแล้วจึงเรียกใช้ตัวเลข งานการประมวลผลทางภูมิศาสตร์อื่น ๆ

ฉันควรจินตนาการว่าสิ่งนี้จะต้องรวมสคริปต์ Python หรือสองตัวในแบบจำลอง ขณะนี้ฉันสนใจที่จะทราบว่าแนวคิดนี้เป็นไปได้จริงหรือไม่


1
ฉันค่อนข้างมั่นใจกับเครื่องมือสร้างแบบจำลองมาตรฐานที่คุณจะไม่สามารถทำได้เนื่องจากไม่มีวิธีหยุดตัวแบบชั่วคราวคุณจะต้องมีทริกเกอร์เพื่อเริ่มการทำงานเพื่อบอกว่าผู้ใช้ปิด Excel เพื่อเริ่มรุ่นใหม่ คุณอาจจะประสบความสำเร็จในเรื่องนี้ด้วยสคริปต์บางประเภทที่ส่งเข้าสู่วงวนไม่สิ้นสุดโดยดูที่แฟล็กในไฟล์ข้อความหลังจากที่มันได้วางกระบวนการแยกต่างหาก (Excel)? ฉันไม่เคยทำแบบนั้นและไม่รู้ว่าเป็นอะไร หากคุณต้องการเก็บไว้ใน modelbuilder ฉันจะแก้ไข excel ก่อนแล้วจึงเรียกใช้แบบจำลอง
Hornbydd

ขอบคุณ @Hornbydd - ฉันมีความคิดเดียวกัน การแก้ไขไฟล์ก่อนจากนั้นจึงรันโมเดลคือสิ่งที่ฉันแนะนำ แต่ฉันได้รับแจ้งว่าต้องเป็นหนึ่งเดียวโมเดลที่รวม ...
the_bonze

1
ฉันคิดว่าสคริปต์สามารถดูวันที่และเวลาประทับของไฟล์เพื่อทราบว่ามีการแก้ไขหรือไม่ ฉันคิดว่าการหยุดชั่วคราวเป็นปัญหา
the_bonze

ใช่ตัวสร้างแบบจำลองได้รับการออกแบบมาเพื่อให้เวิร์กโฟลว์อัตโนมัติเพื่อเพิ่มความเร็วในการประมวลผลโดยไม่มีการหยุดชั่วคราวที่ไม่แน่นอนในช่วงกลางเกิดอะไรขึ้นถ้าผู้ใช้คนนั้นออกไปทานอาหารกลางวันเป็นตัวอย่าง? :) เช่นเดียวกับฉันตอนนี้!
Hornbydd

คำตอบ:


1

ดูเหมือนคุณจะต้องพัฒนาเครื่องมือ Python ที่กำหนดเองมากกว่าแบบจำลองใน ModelBuilder xlwtหรือxlutilsที่http://www.python-excel.org/จะช่วยให้คุณเขียนไฟล์ Excel ของคุณ ( XlsxWriterจะจัดการกับไฟล์ xlsx) หากการแก้ไขเล็กน้อยคุณอาจรวมสิ่งนี้ไว้ในเครื่องมือ ArcToolbox มาตรฐาน (ด้วยความคิดสร้างสรรค์บางอย่าง) หากคุณใช้ 10.1+ คุณสามารถสร้าง Python Add-In หรือ Python Toolbox เพื่อให้ GUI ทำงานได้เช่นกัน


Python AddIns มีตัวเลือก GUI ที่ซับซ้อนอยู่แล้วใน 10.1+ หรือไม่ ฉันคิดว่า. NET และ Java AddIn เท่านั้นที่ให้สิ่งเหล่านี้ ... Python นำเสนอ AddIns โดยไม่มี GUI (คำสั่งเครื่องมือ)
Jürgen Zornig

1
@ JürgenZornigมันไม่ได้ง่าย thaaaat: anothergisblog.blogspot.com/2013/07/...
ชาดคูเปอร์

ขอบคุณ @ChadCooper ฉันต้องการให้แบบจำลองอยู่ในตัวสร้างแบบจำลองดังนั้น Python Add-in นั้นใช้ได้ แต่โมเดลที่เป็นเอนทิตีต้องอยู่ในตัวสร้างแบบจำลองแทนที่จะเป็นเครื่องมือ Python แบบเต็มเป่า
the_bonze

@Chad ขอบคุณต่อไปสำหรับการสอนด่วน ArcPy / Tkinter Quickstart นี้ ... ต้องลอง!
Jürgen Zornig

1

ฉันเคยคิดเกี่ยวกับมันและเป็นไปได้ที่ฉันได้พบวิธีแก้ปัญหาใหม่ คุณตั้งค่าสคริปต์ python ในกล่องเครื่องมือที่มีพารามิเตอร์ผู้ใช้สองพารามิเตอร์อันดับแรกของ Excel EXE สิ่งนี้อาจถูกเข้ารหัสอย่างชาญฉลาดเพื่อตรวจสอบรายการของตำแหน่งไฟล์พา ธ ของ hardcode (Office12, Office13 ฯลฯ )

ถัดไปใช้ฟังก์ชัน subprocess.call มีบางสิ่งที่เรียบร้อยจริงๆเกี่ยวกับการใช้วิธีนี้:

  1. ไม่ต้องใช้ไลบรารีภายนอก
  2. ฟังก์ชั่นการโทรไม่อนุญาตให้มีความต่อเนื่องของสคริปต์จนกว่า excel จะถูกปิด
  3. คุณสามารถระบุเอกสาร excel เป็นอาร์กิวเมนต์ที่สอง
  4. มันเป็นหนึ่งบรรทัดของรหัส!

    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)

สิ่งเดียวคือฉันไม่แน่ใจ 100% ว่าจะใช้ตัวสร้างแบบจำลองได้หรือไม่ แต่ฉันไม่เห็นว่าทำไมถึงไม่ได้ แต่เนื่องจากฉันแน่ใจว่าคุณรู้ว่าอาร์คเป็น สัตว์เจ้าอารมณ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.