สร้าง“ กล่องขอบเฉียง” ที่มีอัตราส่วนความกว้าง / ความสูงสูงสุดหรือไม่


13

ฉันต้องการสร้างสี่เหลี่ยมผืนผ้าล้อมรอบด้วยอัตราส่วนความกว้าง / ความสูงสูงสุด ("กล่องมุมเอียง") จากชุดของคุณลักษณะอินพุตตามที่แสดงในภาพด้านล่าง:

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

เช่นฟังก์ชั่น PostGIS ST_EnvelopeและST_Box2Dเช่นเดียวกับหม้อแปลง FME BoundingBoxReplacerและBoundingBoxAccumulatorสร้างกล่องขอบเขตคู่ขนานของแกน

ข้อเสนอแนะใด ๆ ที่ใช้วิธีการกับ PostGIS, QGIS หรือ FME ยินดีอย่างมาก!


ไม่ใช่คำซ้ำที่ซ้ำซ้อนเพราะผู้ชายไม่ได้ขอวิธีแก้ไขที่ใช้ใน FME หรือ PostGIS อย่างไรก็ตามสคริปต์ python ที่อ้างถึงในคำตอบของคำถามที่กล่าวถึงข้างต้นนั้นค่อนข้างมีประโยชน์ที่จะใส่ไว้ในตัวแปลง FME PythonCaller หากฉันมีพื้นที่ทำงานทำงานอยู่ฉันจะโพสต์โซลูชันด้วยสคริปต์ที่ปรับเปลี่ยนเล็กน้อย
Jochen Schwarze

ไม่เพียง แต่เป็นคำถามที่ไม่ซ้ำกัน แต่คำถามที่อ้างอิงยังไม่ได้รับการยอมรับและมีคำถามที่ยังไม่ได้ตอบว่าใช้อัลกอริทึมใดและไม่ว่าจะถูกต้องหรือไม่
John Powell

ดูคำตอบของฉันด้านล่าง คุณควรทำสิ่งนี้ใน FME คุณใช้เวอร์ชั่นอะไร
Fezter

คำตอบ:


9

นี่อาจเป็น overkill ที่ด้านหน้าการประมวลผลและมีแนวโน้มที่จะเป็นวิธีการแก้ปัญหาทางคณิตศาสตร์ที่ดีกว่า แต่เป็นตัวอย่างของวิธีที่มันสามารถทำได้ค่อนข้างง่ายเป็นแบบสอบถาม

SELECT 
   id, rotated_by, oblique_bound
  FROM 
     (
     SELECT 
        m.id,
        r rotated_by, 
        ST_Rotate(ST_Envelope(ST_Rotate(m.geom, r)),-r) oblique_bound,
        row_number OVER (PARTITION BY id) 
                   ORDER BY ST_Area(ST_Rotate(ST_Envelope(ST_Rotate(m.geom, r)),-r))) N
       FROM 
          generate_series(0, 90, 0.1) N(r), my_table m
    ) s
WHERE N = 1;

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


ที่จริงฉันคิดว่านี่เป็นทางออกที่ดี การแก้ปัญหาที่แน่นอนมีราคาแพงมาก คุณสามารถขยายมันใน plpgsql เพื่อบันทึกกล่อง x ที่ดีที่สุดได้อย่างง่ายดายและหากสองกล่องอยู่ใกล้มากคุณสามารถซูมเข้าและหมุนภาพขนาดเล็กลงเพื่อเข้าใกล้โซลูชันที่แน่นอนยิ่งขึ้น จะมีกรณีขอบ แต่วิธีการที่ดี
John Powell

และเพื่อประโยชน์เพิ่มเติมมันจะรักษามุมการหมุน :-)
Jochen Schwarze

6

QGIS มีอัลกอริทึม "ขั้นต่ำที่มุ่งเน้นขอบเขตกล่อง" ซึ่งทำสิ่งนี้


มันถูกเรียกว่า "กล่องขอบเขตขั้นต่ำที่มุ่งเน้น" คุณสามารถเรียกมันได้จากกล่องเครื่องมือการประมวลผล> วิธีทางภูมิศาสตร์ของ QGIS> เครื่องมือทั่วไปของเวกเตอร์
สเตฟาน

ฉันคิดว่ามันเกิน QGIS 2.14 เพราะฉันหาไม่พบใน 2.14.15LTR ที่เรายังใช้อยู่ที่นี่
Jochen Schwarze

@JochenSchwarze มีอยู่ใน QGIS 2.14.19 คุณต้องค้นหาในกล่องเครื่องมือการประมวลผล โดยตรงคุณสามารถค้นหาได้ภายใต้Processing toolbox -> QGIS geoalgorithms -> Vector General tools -> Oriented minimum bounding box
ahmadhanb

4

ทดแทนกรอบหม้อแปลงซึ่งคุณกล่าวถึงควรจะสามารถทำเช่นนี้ ตามเอกสารนั้น

แทนที่รูปทรงเรขาคณิตของคุณสมบัติด้วยกล่องขอบสองมิติหรือกล่องเส้นขอบสองมิติขั้นต่ำ

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

เห็นได้ชัดว่ามีการปรับปรุงที่แนะนำให้รวมมุมของด้านอีกต่อไปของกล่องขอบเขตที่มุ่งเน้น นี่คือหมายเลขที่ปลอดภัย PR # 53924

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