คุณสมบัติการหมุนใน ArcGIS สำหรับเดสก์ท็อปโดยใช้ ArcPy? [ปิด]


10

ฉันมีชุดรูปหลายเหลี่ยมที่ฉันต้องการหมุน

รูปหลายเหลี่ยมแต่ละอันจะมีมุมการหมุนและจุดยึด (พิกัด xy) ที่เก็บเป็นค่าฟิลด์

เมื่อเกิดขึ้นจุดยึดทั้งหมดจะอยู่บนจุดยอดของรูปหลายเหลี่ยม

วิธีที่ดีที่สุดในการทำเช่นนี้คือใช้ ArcGIS for Desktop และ ArcPy

ฉันรู้ว่าเราสามารถหมุนได้เมื่ออยู่ในโหมดแก้ไข แต่ฉันไม่ต้องการทำเองทั้งหมดเนื่องจากมันแตกต่างกันทั้งหมด

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


นี่ไม่ใช่สิ่งที่ฉันได้ทำไป แต่ดูเหมือนว่าคุณกำลังเผชิญปัญหาคล้ายกับที่กล่าวไว้ในgis.stackexchange.com/questions/13383/…
PolyGeo

คุณสามารถทำได้ด้วย ArcObjects การแก้ปัญหาเชิงโปรแกรมจะยอมรับได้หรือไม่?
Jakub Sisak GeoGraphics

คุณสมบัติของคุณอยู่ในพิกัดทางภูมิศาสตร์หรือที่ฉายหรือไม่?
blah238

จาคุบ - ใช่แล้วเป็นวิธีแก้ปัญหาเชิงโปรแกรมที่ต้องการ Blah238 - พิกัดที่คาดการณ์ (NAD 83 UTM Zone 10)
dklassen

1
ในสคริปต์ Python การคำนวณพิกัด Y ที่หมุนจำเป็นต้องมีเครื่องหมายบวก (เพิ่มเติม) แทนเครื่องหมายลบ (การลบ): y_transprime = Sin (t) * x_trans + Cos (t) * y_trans

คำตอบ:


10

สมมติว่าคุณกำลังใช้ระบบพิกัดที่คาดการณ์ไว้ ... (ทำให้ซับซ้อนยิ่งขึ้นถ้าคุณไม่ได้)

จุดหมุนที่กำหนด (X, Y) และมุมการหมุน t คุณต้องหมุนแต่ละจุดในรูปหลายเหลี่ยมตามลำดับ สมมติว่ารูปหลายเหลี่ยมถูกสร้างขึ้นจากจุดในชุดเช่น set = [(x0, y0), (x1, y1), (x2, y2) ... ]

คุณต้องหมุนแต่ละจุดในชุดตามลำดับเพื่อสร้างชุด '= [(x0', y0 '), (x1', y1 '), (x2', y2 ') ... ]

ในการหมุนก่อนอื่นคุณต้องเปลี่ยนระบบพิกัดให้เป็นจุดกำเนิดโดยเลื่อนจุดหมุนเป็น (0,0) (x, y) คือจุดที่จะหมุน

x_trans = x - X
y_trans = y - Y
x_transprime = Cos(t) * x_trans - Sin(t) * y_trans
y_transprime = Sin(t) * x_trans + Cos(t) * y_trans
x_prime = x_transprime + X
y_prime = y_transprime + Y

สิ่งนี้ควรตรงไปตรงมาเพื่อแปลเป็นสคริปต์ไพ ธ อน


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

ขอบคุณ @ user23492 สำหรับการสังเกตเครื่องหมายที่ไม่ถูกต้อง เปลี่ยนได้ (สองปีต่อมา)
blord-castillo

1

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

ข่าวดีก็คือมันสามารถทำได้ใน Python โดยไม่ต้องเรียก ArcObjects และคุณควรใช้ SearchCursor เพื่อจับมุมการหมุนและจุดยึดของคุณจากตารางคุณลักษณะ

อย่างไรก็ตามเป็นเพียงทางเลือกที่เป็นไปได้

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