เมื่อใดจึงควรใช้ ModelBuilder เหนือสคริปต์ Python และในทางกลับกัน


71

ฉันใหม่สำหรับการเขียนสคริปต์ Python ใน ArcGIS แต่ไม่ใหม่สำหรับ ModelBuilder

ฉันต้องการทราบถึงประโยชน์ของ Python กับ ModelBuilder

เมื่อใดที่เราควรเขียนสคริปต์ Python สำหรับระบบอัตโนมัติ GIS แทนที่จะใช้ ModelBuilder

ความสามารถอัตโนมัติของ Python ที่เราไม่สามารถหาได้ใน ModelBuilder คืออะไร

คำตอบ:


82

ฉันเชื่อว่าผู้ใช้ควรกำหนดวัตถุประสงค์อย่างชัดเจนก่อนที่จะตัดสินใจว่าจะใช้ชุดเครื่องมือใด ModelBuilder และ Python scripting excel ในงานที่แตกต่างกัน ความคิดเล็กน้อย:

  1. ModelBuilder ไม่มีความสามารถในการทำแผนที่ในขณะที่ arcpy.mappingไม่
  2. งูใหญ่สามารถนำมาใช้เพื่อเพิ่มประสิทธิภาพขั้นตอนการทำงานเช่นเดียวกับ แพคเกจหลายตัวหรือมีการประมวลผลแบบขนาน
  3. Python ช่วยให้วนซ้ำซ้อนกันและเครื่องมือตรรกะซ้ำที่มีประโยชน์อื่น ๆ เพื่อให้ได้ผลลัพธ์ที่คล้ายกันใน ModelBuilder คุณจะต้องสร้างแบบจำลองที่ซับซ้อนและซับซ้อนซ้อนกัน
  4. การจัดการข้อความอย่างง่ายเป็นเรื่องง่ายมากเมื่อใช้ Python และอาจเป็นเรื่องยากมากหรือไม่สามารถทำได้ด้วย ModelBuilder

    เช่นเปลี่ยนชื่อรายชื่อไฟล์จากตัวอย่างเช่น "m_2010_naip_2310345_nw.img" เป็น "2310345nw.img" สามารถทำได้อย่างง่ายดายด้วย Python โดยใช้os.pathโมดูล

ในทางกลับกัน:

  1. ModelBuilder มีประโยชน์อย่างมากสำหรับการรวมเครื่องมือทั่วไปเข้าด้วยกันอย่างรวดเร็วและไม่จำเป็นต้องทำการดีบักสคริปต์

  2. ModelBuilder มี recursive ประโยชน์มากiteratorที่เป็นเรื่องง่ายที่จะใช้ในการสั่งซื้อที่จะห่วงผ่านโฟลเดอร์และโฟลเดอร์ย่อย

  3. ModelBuilder excels ที่สายตาและสังหรณ์ใจภาพวาดเวิร์กโฟลว์สำหรับ งานที่มีความซับซ้อน

  4. ModelBuilder สามารถรวมหลามเครื่องมือสคริปต์


5
อธิบายความแตกต่างระหว่าง Python และ Model Builder ใน ArcGIS อย่างชัดเจน ขอบคุณ
BBG_GIS

24
ฉันจะเพิ่มด้วย: 1. คุณสามารถเรียกใช้สคริปต์ Python ของคุณนอก ArcMap 2. คุณสามารถใช้ ArcObjects ใน Python, 3. อาจมีความแตกต่างของความเร็ว
Tomek


3
+1 ซ้อนซ้อน & arcpy.mapping! ฉันชอบความสามารถในการคำนวณภายในสคริปต์และเพิ่มลงในตารางแอททริบิวต์หรือดีกว่าไปยังเค้าโครงแผนที่ (เช่นพื้นที่ของพื้นที่ชุ่มน้ำแต่ละประเภท)
รอย

2
ฉันอ่าน python scripting สำหรับหนังสือ ArcGIS ฉันยังเพิ่มความสามารถเพิ่มเติม: เคอร์เซอร์สคริปต์ 1- ตัวช่วยให้คุณวนรอบระเบียนในตารางอ่านแถวที่มีอยู่และแทรกแถวใหม่ 2- สคริปต์สามารถนำมาใช้เพื่อห่อซอฟต์แวร์อื่น ๆ - นั่นคือเพื่อกาวแอพลิเคชันด้วยกัน ตัวอย่างเช่น python สามารถใช้เพื่อเข้าถึงฟังก์ชั่นใน Microsoft Excel หรือใน Package R 3 ทางสถิติสคริปต์สามารถเรียกใช้เป็นสคริปต์แบบสแตนด์อะโลนบนดิสก์นอก ArcGIS คุณไม่จำเป็นต้องเรียกใช้ ArcMap หรือ ArcCatalog สำหรับสคริปต์เพื่อ งาน. (Python Scripting สำหรับ ArcGIS, ตอนที่ 2, หน้า 39)
BBG_GIS

24

หากคุณกำลังทำงาน แต่เพียงผู้เดียวภายในขอบเขตของ ArcGIS มีข้อควรพิจารณาบางประการที่ฉันจะพิจารณาเมื่อพยายามกำหนดแนวทางที่จะใช้

  • คุณพยายามทำอะไร
  • ทักษะชุดปัจจุบันของคุณคืออะไร
  • คุณจะแบ่งปันงานของคุณกับผู้อื่นเพื่อใช้เรียนรู้จากหรือจัดการและ
  • ใครคือกลุ่มเป้าหมายของคุณ

รับข้อพิจารณาเหล่านั้น:

  1. บ่อยครั้งที่การสร้างกระบวนการใน ModelBuilder รวดเร็วและง่ายกว่าใน Python ยกเว้นว่าส่วนหนึ่งของกระบวนการของคุณไม่สามารถจำลองแบบได้ใน ModelBuilder
  2. หากคุณไม่รู้จัก Python และไม่ต้องการเรียนรู้ ModelBuilder เป็นตัวเลือกที่ยอดเยี่ยม
  3. หากคุณไม่รู้จัก Python และต้องการเรียนรู้ที่จะรวมมันไว้ในชุดทักษะของคุณ ModelBuilder เป็นวิธีที่ยอดเยี่ยมในการเริ่มต้นด้วยการสร้างแบบจำลองที่เรียบง่ายจากนั้นส่งออกไปยัง Python เพื่อให้คุณมีโครงกระดูกของกระบวนการขั้นสุดท้าย . วิธีนี้มีค่าใช้จ่ายเนื่องจากมีข้อมูลและตัวแปรที่ไม่เกี่ยวข้องมากมายที่มักถูกสร้างขึ้นในระหว่างกระบวนการแปลง แต่ก็ยังเป็นวิธีที่ดีในการเริ่มต้นเรียนรู้
  4. หากคุณกำลังสร้างเครื่องมือสำหรับการใช้งานส่วนตัวการใช้วิธีใดก็ตามที่คุณรู้สึกว่าสะดวกสบายที่สุดคือเส้นทางที่จะไป ส่วนตัวฉันใช้ทั้งสองขึ้นอยู่กับความต้องการของฉัน
  5. หากคุณวางแผนที่จะแบ่งปันการวิเคราะห์ของคุณกับผู้อื่นและต้องการแบ่งปันแบบจำลอง / สคริปต์ของคุณกับผู้อื่นเป็นส่วนหนึ่งของเอกสารกระบวนการของคุณโดยทั่วไปแล้วแบบจำลองนั้นง่ายต่อการติดตามและทำความเข้าใจกับคนที่ไม่ใช่ด้านเทคนิค

อาจไม่มีคำตอบสำหรับ "ซึ่งดีกว่า" สำหรับการใช้งานส่วนตัว แต่หากคุณกำลังมองหาโอกาสในการจ้างงานระยะยาวโดยการเรียนรู้ Python คุณจะแยกตัวเองออกจากผู้ที่รู้วิธีใช้เครื่องมือที่ตั้งโปรแกรมไว้ล่วงหน้าหรือ เพิ่งรู้วิธีใช้ ModelBuilder คุณยังให้ความสามารถในการออกนอกขอบเขตของ Python สำหรับ ArcGIS (ArcPy) และเริ่มทำงานอัตโนมัติและโครงการให้มากขึ้นโดยใช้ไลบรารี GIS ที่เป็นกรรมสิทธิ์และโอเพ่นซอร์สอื่น ๆ รวมถึงไลบรารีที่ไม่ใช่ GIS (เช่นฐานข้อมูล) การจัดการรูปภาพสถิติ ฯลฯ )


20

Model Builder เป็นภาษาการเขียนโปรแกรมที่ยอดเยี่ยมและง่ายต่อการเรียนรู้และเป็นทางเข้าที่ดีในการเขียนโปรแกรม GIS โดยทั่วไป แต่ในบางสิ่งหลามสามารถทำได้มากกว่านี้

ตัวอย่างหนึ่งคือการรวมกันของห้องสมุดที่ไม่ใช่ ESRI GIS GIS โอเพนซอร์ซเกือบทุกตัวสามารถใช้กับงูหลามได้เช่นกัน (เช่นGRASS , Sextante , QGIS , SAGA ) สิ่งนี้ช่วยฉันได้มากเพราะฉันมีสิทธิ์ใช้งาน ArcView เท่านั้น ดังนั้นทุกครั้งที่ฉันไม่สามารถใช้เครื่องมือประมวลผลทางภูมิศาสตร์บางอย่างใน ArcGIS ฉันจะดูว่ามีตัวเลือกอื่น ๆ อะไรบ้างใน Open Source GIS จากนั้นฉันก็ใช้เครื่องมือ OpenSource เหล่านี้และรวมเข้ากับเครื่องมือ ArcGIS ในสคริปต์หลามที่ใหญ่กว่าหรือรวมไว้ใน ModelBuilder ผ่านสคริปต์งูหลามที่มีขนาดเล็กลง

ฉันแน่ใจว่าสมาชิกคนอื่นสามารถตั้งชื่อข้อดีเพิ่มเติม


9

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

นอกเหนือจากฟังก์ชั่นการทำงานใด ๆ ที่ ModelBuilder อาจพลาดไปแล้วยังมีการสนทนาขั้นพื้นฐานเพิ่มเติม โดยทั่วไปสคริปต์เหมาะสมกว่าในการสร้างเวิร์กโฟลว์ที่ซับซ้อน รหัสจะถูกประมวลผลจากบนลงล่างและงานที่ซับซ้อนสามารถแบ่งย่อยเป็นงานย่อยที่เล็กกว่าโดยใช้ฟังก์ชั่นเช่น หรือวัตถุ เครื่องมือกราฟิกเช่นตัวสร้างแบบจำลองมีแนวโน้มที่จะกลายเป็นสปาเก็ตตี้ขนาดใหญ่


7

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

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

และในขณะที่ @Aaron กล่าวถึงคุณสามารถตั้งค่าการวนซ้ำในสคริปต์ Python ได้อย่างง่ายดาย

หากคุณเพิ่งเริ่มต้นด้วยการเขียนสคริปต์ Python คุณอาจต้องการสร้างแบบจำลองด้วย Model Builder และส่งออกเป็นสคริปต์ Python ฉันทำเช่นนี้บางครั้งถ้าฉันมีปัญหาในการทำความเข้าใจวิธีการใช้เครื่องมือต่าง ๆ ในสคริปต์ มันสามารถช่วยให้คุณเข้าใจวิธีการรวมสคริปต์เข้าด้วยกัน


5

ฉันได้พบว่าฉันดูเหมือนจะติดอยู่กับการแก้ปัญหาด้วยการสร้างแบบจำลองมากกว่ากับสคริปต์หลาม ธรรมชาติ 'กล่องดำ' ของผู้สร้างแบบจำลองสำหรับฉันทำให้การค้นหาปัญหาเกิดขึ้นได้ยากขึ้น

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

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