PostGIS: แบ่งรูปหลายเหลี่ยมในอัตราส่วนที่กำหนด


11

มีวิธีที่สะดวกในการแบ่งรูปหลายเหลี่ยมออกเป็นnชิ้นส่วนขนาดเท่ากันใน PostGIS มากกว่าหรือน้อยกว่า?


พื้นที่เท่ากันหรือขนาดเท่ากัน (เช่นความกว้างและความสูงที่ใกล้เคียงกัน)?
Anthony -GISCOE-

พื้นที่โดยไม่คำนึงถึงสัดส่วน
Adam Matan

1
โพสต์ที่เกี่ยวข้องgis.stackexchange.com/questions/5300/…
Kirk Kuykendall

ฉันประหลาดใจที่ไม่มีวิธีแก้ปัญหาสำหรับเรื่องนี้ในอวกาศ
แบรด Nesom

คำตอบ:


8

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

WITH RECURSIVE
ref(the_geom, env) AS (
SELECT the_geom,
ST_Envelope(the_geom) As env,
ST_Area(The_geom)/2 As targ_area,
1000 As nit
FROM us.states
WHERE state = 'Idaho'
),

T(n,overlap) AS (
VALUES (CAST(0 As Float),CAST(0 As Float))
UNION ALL
SELECT n + nit, ST_Area(ST_Intersection(the_geom, ST_Translate(env, n+nit, 0)))
FROM T CROSS JOIN ref
WHERE ST_Area(ST_Intersection(the_geom, ST_Translate(env, n+nit, 0)))> ref.targ_area
) ,  

bi(n) AS
(SELECT n
FROM T
ORDER BY n DESC LIMIT 1)  

SELECT bi.n,
ST_Difference(the_geom, ST_Translate(ref.env, n,0)) As geom_part1,
ST_Intersection(the_geom, ST_Translate(ref.env, n,0)) As geom_part2
FROM bi CROSS JOIN ref;

2

วิธีการหนึ่งอาจจะแบ่งรูปหลายเหลี่ยมออกเป็นรูปสามเหลี่ยมอย่างสมบูรณ์ซึ่งแต่ละอันมีพื้นที่ที่กำหนด จากนั้นมันจะเป็นเรื่องของการพยายามจัดกลุ่มสามเหลี่ยมเหล่านั้น (ติดกัน) กลับเข้าไปในรูปหลายเหลี่ยมของพื้นที่ขนาด (มากหรือน้อย) / n นี่จะเป็นปัญหาของ "ผลรวมย่อย" หรือ "เป้" ที่กำหนดเอง (และฉันก็ไม่รู้ว่าจะเริ่มต้นอย่างไรกับ PostGIS)


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