การหมุนแผนที่อัตโนมัติในผู้แต่งแผนที่ QGIS


10

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

เช่นที่ตั้งแผนที่หนึ่งที่เฉพาะเจาะจงในโครงการ:

ป้อนคำอธิบายรูปภาพที่นี่

การฉายภาพนั้น

ป้อนคำอธิบายรูปภาพที่นี่

ในขอบเขตของแผนที่ผู้แต่งแผนที่ดูเหมือนว่า

ป้อนคำอธิบายรูปภาพที่นี่

และด้วยมุมการหมุนที่เลือกสำหรับแผนที่พร้อมพารามิเตอร์การฉายภาพ:

ป้อนคำอธิบายรูปภาพที่นี่

มุมการหมุนแผนที่จะแตกต่างกันสำหรับทุกแผนที่ขึ้นอยู่กับตำแหน่งและพารามิเตอร์การฉาย

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


1
คุณต้องการหมุนคุณสมบัติเพื่อให้ขนานกับขอบของกรอบแผนที่หรือไม่? คุณสามารถคำนวณมุมราบของด้านใดด้านหนึ่งของคุณลักษณะแล้วใช้มันเพื่อหมุนได้หรือไม่? ถ้ามันเป็นเส้นบางอย่างเช่นการหมุน = องศา (atan (abs ((y1-y2) / (x1-x2)))) จะให้มุมเป็นองศา จากนั้น 90 - การหมุนจะจัดแนวกับกรอบแผนที่
มิกซ์เบรดดี

2
คุณใช้แอตลาสหรือไม่? หากคุณสร้างเลเยอร์การครอบคลุมโดยใช้เครื่องมือ "กล่องขอบเขตขั้นต่ำที่มุ่งเน้น" เลเยอร์นั้นจะมีแอตทริบิวต์การหมุนซึ่งสามารถผูกกับการหมุนไอเท็มแผนที่โดยใช้คุณสมบัติที่กำหนดไว้ของข้อมูล
ndawson

@mixedbredie, ใช่ฉันต้องการหมุนแผนที่เพื่อให้ขอบเขตของแผนที่ขนานกับกรอบแผนที่ในพื้นที่วาดแผนที่ ฉันพยายามคำนวณ azimuth แต่ปัญหาคือเลเยอร์ของฉันที่มีแผนที่เป็น poligonal และไม่มีการบอกว่าจุดแรกคือจุดยอดซ้ายหรือจุดสุดยอดอื่น ๆ (ขวาล่าง ฯลฯ ) ดังนั้นมุมเกือบทุกครั้งไม่พอใจ
Jane

วิธีการแก้ปัญหาที่แนะนำโดย @ndawson ทำงานได้ดี ใช้เลเยอร์กล่องขอบเขตใหม่เป็นเลเยอร์พื้นที่ซ่อนเร้นและทุกอย่างจะถูกจัดตำแหน่ง
mixbredie

1
เปิดกล่องเครื่องมือการประมวลผล (Ctrl + Alt + T) และค้นหา "oriented" - คุณจะเห็นเครื่องมือภายใต้วิธีการทางภูมิศาสตร์ของ QGIS> เครื่องมือทั่วไปเวกเตอร์
mixbredie

คำตอบ:


3

ด้านล่างโซลูชันพบโดย @ndawson ในความคิดเห็นของคำถาม โปรดแสดงความคิดเห็นและปรับปรุงคำตอบนี้

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

เครื่องมือกล่องขอบเขตเชิง

มันจะสร้างเลเยอร์ที่ควรจะค่อนข้างเหมือนกับเลเยอร์ดั้งเดิมของคุณ คุณจะพบว่าในฟิลด์แอตทริบิวต์ของตาราง ANGLE

ฟิลด์ OBB

ตอนนี้คุณควรจะสามารถใช้ฟิลด์ ANGLE นี้ในผู้แต่งเพื่อเติมข้อมูลในฟิลด์ที่กำหนดไว้สำหรับการหมุน:

มุมข้อมูลที่กำหนด

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

(สีแดงเป็นรูปหลายเหลี่ยมดั้งเดิมเป็นสีดำในรูปหลายเหลี่ยมเครื่องมือ OMBB) ฉันดิจิทัลสำหรับรูปหลายเหลี่ยมที่คล้ายกันมากเป็นสองวิธีที่แตกต่างกัน (ไปทางซ้ายหรือขวา)

ตัวอย่าง OMBB

ในการกลับค่ามุมไปยังเลเยอร์ดั้งเดิมของคุณคุณสามารถใช้การดำเนินการเชื่อมโยงตำแหน่งเชิงพื้นที่


ขอบคุณมาก! ฉันให้คำตอบโดยละเอียดกับคุณแล้ว! แต่ปัญหาดูเหมือนจะซับซ้อนมากขึ้น ฉันมีเลเยอร์พร้อมแผนที่ทั้งหมดและการคาดการณ์ของพวกเขาในตารางแอตทริบิวต์สำหรับทุกแผนที่ เลเยอร์เริ่มต้นด้วยชุดของแผนที่ใน WGS84 แต่เมื่อเตรียมแผนที่ฉันตั้งค่าการฉายในผืนผ้าใบแผนที่นำมาจากตารางแอตทริบิวต์ (ที่แตกต่างกันสำหรับทุกแผนที่) และฉันต้องการค่าการหมุนแผนที่ใน PROJECTION นี้ ดังนั้นฉันต้องบันทึกทุกแผนที่ใหม่ในการฉายภาพของตนเองแล้วเรียกใช้ OMBB สำหรับรูปหลายเหลี่ยม ฉันทดสอบบางแผนที่แล้ว แต่ค่ามุมการหมุนไม่แน่นอนแตกต่างจากการคำนวณผ่าน OMBB
Jane

มันจะดีในการคำนวณค่ามุมการหมุนในผู้แต่งแผนที่ตามสูตรการฉายในตารางคุณลักษณะ
Jane

ไม่ใช่เรื่องง่าย ! ฉันไม่เห็นวิธีที่คุณสามารถทำได้อย่างง่าย ๆ โดยเฉพาะอย่างยิ่งสำหรับมุมการหมุน มีวิธีการฉายข้อมูลด้วยฟังก์ชั่น "แปลง" แต่ฉันสงสัยว่ามันจะทำงานกับสิ่งอื่นแล้วพิกัด (ผลตอบแทนเรขาคณิตเปลี่ยนจาก CRS ต้นทางไปยัง CRS ปลายทางไวยากรณ์: เปลี่ยน (Geom, source_auth_id, dest_auth_id) - ตัวอย่าง:. geom_to_wkt (เปลี่ยน ($ เรขาคณิต 'EPSG 2154', 'EPSG: 4326'))
gisnside
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.