ตัวอย่างอุตสาหกรรมที่ใช้ ArcPy ใน Python สำหรับการประมวลผลทางภูมิศาสตร์?


12

เมื่อเร็ว ๆ นี้นักเรียนบางคนถูกถามว่าประเภทของการดำเนินการ GIS Analyst / Developer มักจะพยายามทำให้เป็นอัตโนมัติโดยใช้ Python โดยใช้กระบวนการทางภูมิศาสตร์ในแพ็คเกจเว็บไซต์ ArcGIS และ ArcPy ฉันคิดว่ามันอาจมีประโยชน์ที่จะรู้เมื่อค้นหาแบบฝึกหัดบางอย่างเพื่อให้แน่ใจว่าสิ่งที่คุณสร้างขึ้นมีความเกี่ยวข้องกับอุตสาหกรรมและอาจถูกนำมาใช้ซ้ำในภายหลังในที่ทำงาน

คำตอบที่ง่ายที่สุดคือ "อ่านความช่วยเหลือของ Esri และดูตัวอย่าง" แต่ฉันกำลังมองหาสถานการณ์ที่เฉพาะเจาะจงซึ่งเป็นเรื่องธรรมดาที่จะนำไปใช้ ดังนั้นการแบ่งปันเวิร์กโฟลว์จะเกิดขึ้นในฐานะ "เราได้รับไฟล์. zip พร้อมกับ shapefiles เราใช้ Python เพื่อแกะมันออกมาฉายพวกมันทั้งหมดไปยังระบบพิกัด X โหลดลงในฐานข้อมูลทางภูมิศาสตร์ของ ArcSDE ให้สิทธิ์ผู้ใช้เข้าถึงข้อมูลเหล่านี้" โปรดรู้สึกสะดวกสบายที่จะให้คำอธิบายที่กระชับของเวิร์กโฟลว์โดยไม่ต้องมีรายละเอียดมากนัก

คำตอบ:


10

สำหรับฉันตามที่คำถามของคุณแนะนำฉันใช้ Python เป็นจำนวนมากสำหรับการประมวลผลแบบแบตช์โดยอัตโนมัติ แต่ยังสำหรับการสร้างการคำนวณแบบผู้เชี่ยวชาญซ้ำ วันนี้ฉันไม่ได้ใช้ ArcPy เพราะฉันไม่สามารถจ่ายใบอนุญาต ESRI ในฐานะที่ปรึกษา GIS อิสระ ฉันใช้ GDAL / OGR, Shapely, PostGIS, Numpy และ SciPy มาก แต่ทุกอย่างในรายการของฉันสามารถทำได้ด้วย ArcPy (และบางส่วนก็เป็น) ตัวอย่างรวมถึง:

  1. การหาค่า Zonal Statistics สำหรับทั้งสหราชอาณาจักรที่ต้องใช้กระเบื้องโมเสคแรสเตอร์ 20 กม. ของสองชนิดข้อมูลที่แตกต่างกันดำเนินการ "mapematics" บางอย่างบน rasters เหล่านั้นรวมพื้นที่รูปหลายเหลี่ยมเวกเตอร์รูปหลายเหลี่ยม 10km การคำนวณสถิติของผล raster mapematics และเข้าร่วมตารางสถิติกับข้อมูลเวกเตอร์ดั้งเดิมก่อนที่จะส่งออกไปยังรูปร่างไฟล์ในโครงสร้างไดเรกทอรีเชิงตรรกะและเบิร์นลงซีดีสำหรับลูกค้า
  2. ทำการคำนวณการมองเห็นตามลำดับทุก ๆ 100m ตามถนนหรือแทร็กจากนั้นกำหนดผลลัพธ์ของการคำนวณให้เป็นค่า M ในข้อมูลเส้นทาง
  3. กระบวนการอัตโนมัติในการสร้างแบบจำลองภูมิทัศน์ 3 มิติโดยการทำโมเสก / ผสานรวมข้อมูลแรสเตอร์และเวกเตอร์ตัดไปยังพื้นที่ที่ต้องการจากนั้นแปลงเป็นรูปแบบ 3 มิติที่เป็นกรรมสิทธิ์ (ไม่ใช่ GIS) ฉันใช้ห้องสมุด Python เล็ก ๆ ที่ฉันพัฒนาขึ้นมาเพื่องานอิสระมากมาย
  4. โครงการขนาดใหญ่หนึ่งที่ฉันทำงานในทีมใช้ ArcPy เพื่อสร้างกระบวนการแบทช์เพื่อแปลงหรือรับข้อมูลใหม่จากข้อมูล GIS ให้เป็นรูปแบบที่มีคุณสมบัติที่สามารถใช้งานได้โดยเครื่องกำเนิดสินทรัพย์เกมคอมพิวเตอร์ สคริปต์การประมวลผลทางภูมิศาสตร์ถูกเรียกโดยชุดประมวลผล 'โปรแกรมควบคุมทาส' ที่เขียนใน Python และทำงานผ่าน Django
  5. Python มีประโยชน์มากแม้กับงานเล็ก ๆ น้อย ๆ โดยเฉพาะอย่างยิ่งเมื่อมีการทำซ้ำ (เช่นฟีเจอร์โดยการประมวลผลฟีเจอร์) ตัวสร้างแบบจำลองของ ArcGIS ได้รับการปรับปรุงด้วยการควบคุมการไหลที่มาในเวอร์ชั่น 10 แต่ถึงกระนั้นก็ยังไม่สามารถให้การควบคุมที่จำเป็นและ / หรือรวดเร็วและง่ายกว่าเพียงแค่เขียนกระบวนการใน ArcPy มากกว่าพยายาม coerce Model Builder
  6. ฉันได้สร้างเครื่องมือใน Python เพื่อทำการวิเคราะห์เส้นทางแบบ swept-path (เพื่อคำนวณว่ายานพาหนะที่ยาวมากสามารถติดตามเส้นทางที่กำหนดหรือไม่และรถพ่วงจะมีแนวโน้มที่จะได้รับการหมุนอย่างแน่นหนาระหว่างอาคารหรือไม่ คลังแสง
  7. กำลังสร้างเอาต์พุตจาก Mapnik
  8. ก่อนที่ ArcGIS จะกลายเป็นมัลติเธรดฉันใช้ Python เพื่ออนุญาตให้ฉันวางไข่ subprocesses ซึ่งบางครั้งอาจเร่งความเร็วการคำนวณที่ช้าและช้าโดยไม่ต้องใช้โอเวอร์เฮดของ ArcMap ที่ทำให้หน่วยความจำแน่นเกินไป

Python ในการประมวลผลเชิงภูมิศาสตร์เชิงพาณิชย์นั้นยอดเยี่ยมเพราะคุณมีความเร็วและความกะทัดรัดของการเขียนสคริปต์ที่ Python ให้ไว้และความเร็วในการประมวลผลโค้ด C-style ที่คอมไพล์มีให้เพราะในขณะที่ Python ตีความว่าส่วนใหญ่เรียกรหัส C-style ที่คอมไพล์ Python นำเสนอกาวที่สามารถเก็บงานทางภูมิศาสตร์ตามลำดับจำนวนมากไว้ด้วยกันและรายการด้านบนเป็นเพียงภาพรวมเล็ก ๆ ของบางสิ่งที่ฉันใช้เป็นของตัวเอง ใน 'Good Old Days' เราจะตั้งค่าไฟล์ Watch และมี ArcInfo บันทึกอินพุตบรรทัดคำสั่งของเราจากนั้นล้าง AML (ที่จำ Arc Macro Language!) เพื่อทำการประมวลผลการโทรซ้ำทางภูมิศาสตร์ที่ติดกาวร่วมกับ AML มันไม่ได้แตกต่างกันมากนักยกเว้นเราใช้ Python หรือ C # เป็นกาว


1
สนุกพอฉันเพิ่งตอบคำถามนี้ ( gis.stackexchange.com/questions/52478/ … ) - ซึ่งเป็นอีกตัวอย่างของการใช้ Python เป็นวิธีการตีหน่วยความจำ ArcGIS รั่ว!
MappaGnosis

+1, ฉันอยากเห็นหัวข้อบล็อก GIS.SEใน # 4 เป็นพิเศษ
blah238

1
แม้ว่าตอนนี้ บริษัท จะเลิกและฉันก็ออกไปซักพักแล้ว แต่อีก บริษัท หนึ่งซื้อ IP ดังนั้นฉันก็เลยไม่รู้ว่าฉันจะเป็นอย่างไร อย่างไรก็ตามคุณสามารถรับเบาะแสบางอย่างเกี่ยวกับการประมวลผลหลายด้านจากคำตอบของฉันในลิงค์ในความคิดเห็นของฉันข้างต้น ฉันคิดว่าฉันยังสามารถเพิ่มได้ว่าฟาร์มระบบประมวลผลของเรามีเครื่อง 16-core, เซิร์ฟเวอร์ 8-core สองเครื่องและพีซีแบบ dual-core 'เกษียณ' ประมาณสิบโหลที่ดำเนินการโดยไดรเวอร์ทาส ESRI ยังส่งคนมาและดูสิ่งที่เราทำเพราะเราไม่ได้ใช้ ArcServer สำหรับเรื่องนี้ เราวิ่งเครื่องจักรอย่างหนักจนทั้งสองถูกไฟไหม้!
MappaGnosis

7

จะเริ่มต้นที่ไหน ... ฉันเป็นผู้สนับสนุนใหญ่ของ Python ในองค์กรแม้ว่าตอนนี้ฉันจะทำงานในรัฐบาล ed / รัฐที่สูงขึ้น นี่คือตัวอย่างของงานที่ฉันใช้ Python สำหรับ:

  1. ย้ายข้อมูลไปรอบ ๆ งานง่าย ๆ เช่นการย้ายข้อมูลไปรอบ ๆ เป็นเรื่องง่ายโดยอัตโนมัติด้วย Python โดยเฉพาะอย่างยิ่งเมื่อมีshutilโมดูลอยู่นอกกรอบ
  2. การส่งออกฟีเจอร์คลาสออกจากฐานข้อมูล ArcSDEและเข้าสู่รูปร่างไฟล์เพื่อการบริโภคโดยแพ็คเกจซอฟต์แวร์อื่น ๆ ArcSDE (หรือฐานข้อมูลเชิงสัมพันธ์อื่น ๆ ) มักจะเป็นข้อมูลหลักในองค์กร แต่ไม่ใช่ทุกแพคเกจซอฟต์แวร์ที่สามารถเชื่อมโยงกับฐานข้อมูล แพคเกจจำนวนมากยังคงใช้ไฟล์รูปร่างดีและใช้arcpyมันไม่ลำบากเลยที่จะส่งออกทุกคืนเพื่อให้ผู้ใช้ของคุณมีข้อมูลที่ทันสมัย
  3. การสร้างชุดข้อมูลเชิงพื้นที่จากชุดข้อมูลที่แตกต่างกัน ทุกคนในองค์กรใช้ Excel (และมักใช้ในทางที่ผิด) เพื่อเก็บข้อมูล ด้วยarcpy(หรือวิธีการ Pythonic อื่น ๆ ) มันง่ายที่จะใช้ข้อมูลตารางที่มีส่วนประกอบเชิงพื้นที่และสร้างชุดข้อมูลเชิงพื้นที่จากมันได้อย่างรวดเร็ว กันไปสำหรับไฟล์ข้อความ ฉันเพิ่งสร้างเครื่องมือ ArcToolbox สำหรับไคลเอนต์ที่อ่านไฟล์ข้อความในรูปแบบ XYZ ที่เป็นกรรมสิทธิ์และสร้าง polylines ที่เปิดใช้งาน ZM (ไม่สามารถแบ่งปันมากกว่านั้นในนั้น)
  4. การแปลข้อมูล GISเพื่อให้สามารถป้อนลงในซอฟต์แวร์ที่ไม่มีความคิดว่า "อวกาศ" เป็นเช่นไร ตอนนี้ฉันกำลังเขียนเครื่องมือที่ใช้ชุดข้อมูล GIS (แรสเตอร์เวกเตอร์) และดันข้อมูลลงในโปรแกรมสร้างแบบจำลอง 3 มิติผ่าน Python API แพ็คเกจ 3 มิตินี้ไม่สามารถทำงานกับรูปแบบข้อมูลเชิงพื้นที่ได้ทั้งหมด แต่สามารถทำงานกับค่าข้อความและแอตทริบิวต์ที่อยู่ด้านหลังข้อมูลเชิงพื้นที่ได้ สำหรับสิ่งนี้ฉันกำลังใช้arcpyดึงข้อมูลออกจากฐานข้อมูลทางภูมิศาสตร์และผลักดันไปยังไฟล์ข้อความหรือไปยังไฟล์การกำหนดค่า XML
  5. กำลังดึงข้อมูล มีเว็บไซต์ที่มีสารบัญที่คุณต้องการหรือไม่? ใช้beautifulsoupในการสกัด มีไซต์ FTP ที่มีไฟล์หลายร้อยหรือหลายพันไฟล์ที่คุณต้องการดึงข้อมูลหรือไม่ ใช้urllib2หรือftplibดาวน์โหลดได้อย่างง่ายดาย

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


6

ฉันทำงานให้กับเทศบาลและแก๊ง GIS ให้การสนับสนุนหน่วยงานต่าง ๆ ของเรา (วิศวกรรม, การตรวจสอบอาคาร, Bylaw, สวนสาธารณะ, ไฟ, ฯลฯ )

  1. การอัพเดตข้อมูลพัสดุและที่อยู่ของพลเมือง เรามีสคริปต์ที่ค่อนข้างยาวซึ่งจัดการทั้งข้อมูลเชิงพื้นที่และแอตทริบิวต์ซึ่งเกี่ยวข้องกับการใช้เครื่องมือการประมวลผลเชิงภูมิศาสตร์ต่าง ๆ เพื่อดำเนินการเชิงพื้นที่รวมถึงเชื่อมต่อกับฐานข้อมูลเชิงสัมพันธ์เพื่อจับข้อมูลที่เข้าร่วมกับข้อมูลเชิงพื้นที่ของเรา
  2. เครื่องมือที่กำหนดเอง เราได้สร้างเครื่องมือที่กำหนดเองโดยใช้Python Add-in Wizard ใหม่สำหรับพนักงานที่ไม่ใช่ GIS ของเรา พนักงานของเราบางคนจำเป็นต้องอ่านข้อมูลเชิงพื้นที่รวมถึงดำเนินการจัดการขั้นพื้นฐานบางอย่าง เราได้ออกแบบแถบเครื่องมือที่ช่วยให้พวกเขาทำสิ่งที่พวกเขาต้องทำโดยไม่ต้องเข้าไปในความกล้าหาญของสภาพแวดล้อม ArcGIS

ดังที่คนอื่น ๆ กล่าวไว้นี่เป็นเพียงตัวอย่างเล็ก ๆ น้อย ๆ

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