Batch Clipping ในเดสก์ท็อป ArcGIS โดยใช้ ArcPy?


12

ฉันได้พบคำถามที่คล้ายกันสองสามข้อสำหรับ ArcGIS รุ่นเก่า แต่ไม่พบคำตอบที่เหมาะสมสำหรับ ArcGIS 10

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

ระบุว่ามี 50 คลิปที่จะดำเนินการกระบวนการนี้เป็นตัวเลือกที่ยอดเยี่ยมสำหรับการประมวลผลแบทช์


1
คุณพบสิ่งใดสำหรับ ArcGIS รุ่นเก่ากว่าและอะไรที่ทำให้พวกมันไม่เหมาะกับการใช้กับ ArcGIS 10
nmpeterson

2
@Radar ลองดูคำถามนี้: gis.stackexchange.com/q/8104/1297ครอบคลุมสิ่งที่คุณกำลังมองหา หากคุณต้องการความช่วยเหลือแก้ไขความต้องการของคุณแจ้งให้เราทราบ ฉันตั้งค่าสถานะนี้ว่าซ้ำซ้อนที่สุด
SaultDon

@SaultDon: คุณกำลังบอกว่าโซลูชันที่gis.stackexchange.com/q/8104/1297จะทำงานใน ArcGIS 10 หรือไม่
whuber

@SaultDon - การเปลี่ยนแปลงบางอย่างเกิดขึ้นกับเคอร์เซอร์ใน ArcGIS 10 ที่ทำให้คำตอบนั้นล้าสมัย ฉันหวังว่าจะพบทางออกที่ดีที่สุดสำหรับ Arc10 และไม่ใช่แค่สคริปต์เวอร์ชั่นแฮ็ค 9.3 เท่านั้น
เรดาร์

@whuber ไม่เหมือนเดิมต้องการการเปลี่ยนแปลงที่อาจไม่ชัดเจน Radar - ถูกต้องแล้วพวกมันง่ายกว่า =)
SaultDon

คำตอบ:


17

สคริปต์ต่อไปนี้คลิปรูปหลายเหลี่ยมแหล่งต้นน้ำไปยังเขตแดนรูปหลายเหลี่ยมการตั้งชื่อคุณลักษณะแต่ละคลาสของเอาต์พุตเช่นชื่อ HspWBD_HU12_county ผ่านการทดสอบและใช้งานได้ ตรวจสอบให้แน่ใจว่าค่าของคุณในฟิลด์ NAME ไม่มีอักขระพิเศษหรือช่องว่าง (วิธีการของ Python แบบสตริงอย่างง่ายสามารถล้างข้อมูลนั้นให้คุณได้)

import arcpy

arcpy.env.workspace = r'D:\Projects\GDBs\slowbutter.gdb\IPAS'
rows = arcpy.SearchCursor('HspAOI')
for row in rows:
    feat = row.Shape
    arcpy.Clip_analysis('HspWBD_HU12', feat, 'HspWBD_HU12_' + str(row.getValue('NAME')), '')

เคอร์เซอร์ประเภทคลาสสิกที่สมบูรณ์แบบอย่างแน่นอน !!
SIslam

8

ในขณะที่คุณใช้ ArcGIS 10 ฉันจะใช้ modelbuilder กับเครื่องมือบิวอิน: Iteration Feature Selection เพื่อทำงานนี้ ดูแบบจำลองหลอกในภาพ มันไม่จำเป็นต้องรู้ว่าหลาม scritping เลย แบบจำลองหลอก


สำหรับคำอธิบายที่ลึกซึ้งยิ่งขึ้นของวิธีการนี้ให้ดูที่คลิปพื้นที่ทำงานทั้งหมดสำหรับพื้นที่ศึกษาเฉพาะและแพคเกจเครื่องมือทางภูมิศาสตร์ของคลิปพื้นที่ทำงานที่เกี่ยวข้อง สำรวจด้วยที่นี่ในสแต็ก: gis.stackexchange.com/questions/84989/…
matt wilkie

2

สิ่งนี้ฟังดูคล้ายกับสิ่งที่เครื่องมือแยกจากกล่องเครื่องมือวิเคราะห์ทำ

อย่างไรก็ตามมันต้องมีใบอนุญาต ArcInfo ในการใช้งานดังนั้นผู้ใช้ ArcGIS Desktop ส่วนใหญ่จึงไม่ชอบดังนั้นฉันชอบคำตอบของ Chad ซึ่งจะใช้ได้กับผู้ใช้ ArcGIS 10 Desktop ที่มีใบอนุญาตระดับ ArcView และ ArcEditor ด้วย


-1

คุณสามารถทำได้ในแบบที่คุณต้องการหากคุณเรียกใช้เครื่องมืออื่นในโหมดแบตช์ก่อน: เครื่องมือการแปลง> เป็น Geodatabase> Class Feature เป็น Feature Class ซึ่งจะช่วยให้คุณใช้นิพจน์เพื่อนำชั้นสันปันน้ำของคุณและดึงแต่ละลุ่มน้ำมาออกมาแยกกันและบันทึกเป็นคลาสคุณลักษณะของตัวเองจากนั้นคุณจะมี 50 ชั้นที่คุณสามารถใช้กับเครื่องมือคลิปในโหมดแบทช์


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

-1

Splitเครื่องมือใน ArcGIS ไม่ตรงนี้

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