จำลองการขยายตัวของคุณสมบัติรูปหลายเหลี่ยม


13

ฉันมีสิ่งที่ฉันหวังว่าจะเป็นคำถามที่น่าสนใจ ฉันกำลังทำงานที่ได้รับมอบหมายสำหรับการแนะนำหลักสูตร GIS ที่ใช้ข้อมูลการรั่วไหลของน้ำมันในอ่าวเพื่อแนะนำวิธีการวิเคราะห์เชิงพื้นที่โดยใช้เวกเตอร์ (บัฟเฟอร์, การซ้อนทับ ฯลฯ ) ฉันมีคลาสรูปหลายเหลี่ยมที่มีขอบเขตของ น้ำมัน Deepwater Horizon เกิดการรั่วไหลในวันหนึ่งและฉันจำลองการขยายตัวของมันด้วยบัฟเฟอร์

มันทำงานเพื่อแสดงแนวคิด แต่ก็ไม่ได้ให้ผลลัพธ์ที่สมจริง ฉันคิดว่าวิธีนี้สามารถทำได้ในแบบที่ให้ผลลัพธ์ที่เหมือนกันน้อยกว่าการเลียนแบบ / แกล้งผลของกระแสที่ควบคุมน้ำมันในทิศทางต่าง ๆ เมื่อมันขยายออก

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

  • สร้างคุณลักษณะรูปหลายเหลี่ยมใหม่ที่ใหญ่กว่าต้นฉบับตามพื้นที่ที่ระบุ (เช่น 10 ตารางกิโลเมตร) หรืออาจเป็นปัจจัยที่ระบุ (เช่น 5%)
  • คุณลักษณะรูปหลายเหลี่ยมใหม่จะมีรูปร่างตามอำเภอใจโดยมีข้อแม้ที่ ...
  • คุณลักษณะรูปหลายเหลี่ยมใหม่จะมีคุณลักษณะรูปหลายเหลี่ยมเดิม (จุดนี้ไม่ใช่ตัวแบ่งดีล แต่จะดีถ้ามี)

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

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


2
มีวิธีแก้ปัญหาที่น่าสนใจและเป็นนวัตกรรม แต่ฉันกังวลเกี่ยวกับหลักฐานโดยนัยว่าการออกกำลังกายดังกล่าวจะมีส่วนเกี่ยวข้องกับการรั่วไหลของน้ำมัน จำนวนข้อมูลทางวิทยาศาสตร์ที่เกี่ยวข้องนั้นไม่เกินที่นักปรัชญาจ้องมองที่สะดือของเขา แน่นอนว่ามันสนุกที่จะแพร่กระจายรูปหลายเหลี่ยมไปรอบ ๆ - ฉันจำได้ว่าเคยได้ยินตัวแทน ESRI ที่อธิบายถึงการทำเช่นนี้สำหรับการจำลองสถานการณ์ด้วย ArcView 2 ย้อนกลับไปในปี 96 - แต่คุณจะแสดงให้เห็นว่ากระบวนการนี้เป็นอย่างไร
whuber

1
@whuber - ฉันไม่ได้อ้างว่าผลลัพธ์จะเป็นอะไร แต่โดยพลการ การมีผลลัพธ์ตามอำเภอใจนั้นเป็นสิ่งที่ฉันต้องการค้นหาในคำถาม คุณพูดถูกว่าผลลัพธ์จะไม่มีความคล้ายคลึงกับโลกแห่งความเป็นจริง นั่นเป็นส่วนหนึ่งของเหตุผลที่ฉันตั้งชื่อคำถามเหมือนที่ฉันทำ (ตรงข้ามกับ "การจำลองการขยายตัวของการรั่วไหลของน้ำมัน") ฉันสนใจด้านการคำนวณทางเรขาคณิต / GIS ไม่ใช่การประยุกต์ใช้ในโดเมนเฉพาะใด ๆ ส่วนการรั่วไหลของน้ำมันเป็นเพียงแรงกระตุ้นให้คิดเกี่ยวกับปัญหาเชิงพื้นที่ที่น่าสนใจ ฉันจะพยายามอธิบายให้ชัดเจนในคำถามนี้
James M

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

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

คำตอบ:


7

สวัสดี

ที่นี่ฉันคิดว่าเป็นวิธีที่สนุกเล็กน้อยในการทำมันใน PostGIS สิ่งนี้ฉันคิดว่าสามารถขยายได้ดังนั้นการขยายตัวจะตามไปด้วยการเปล่งแสงแทนกระแสปัจจุบัน แต่ตอนนี้มันขยายไปในทิศทางเดียว

มันวนซ้ำ 50 ครั้งและสำหรับการวนซ้ำแต่ละครั้งจะใช้รูปหลายเหลี่ยมจากการทำซ้ำครั้งล่าสุดย้ายมันบัฟเฟอร์ (ทำให้มันง่ายขึ้นเพื่อทำให้สิ่งต่าง ๆ ทำงานช้าลง) และรวมกับ convexhull ฉันคิดว่า convexhull ให้ผลลัพธ์ที่ดีกว่าการรวมกัน

ผลลัพธ์คือ 50 รูปหลายเหลี่ยมที่ใหญ่ขึ้นเรื่อย ๆ รูปหลายเหลี่ยมที่ใหญ่กว่าทุกรูปซ้อนกันรูปหลายเหลี่ยมที่เล็กกว่าทั้งหมด

หากต้องการดูผลลัพธ์คุณสามารถลองได้ที่http://postgisonline.org/map.php

เพียงแค่คัดลอก sql-code ด้านล่างแล้วคลิก "map1"

ด้วย RECURSIVE t (the_geom, n) AS (เลือก 'POLYGON ((10 10,8 13, 10 15, 12 14, 15 15, 16 12, 15 10, 10 10))' :: เรขาคณิตเป็น the_geom, 1 เป็น n ยูเนี่ยนทั้งหมดเลือก ST_Convexhull (ST_Collect (ST_Simplify (ST_Buffer (ST_Transscale (the_geom, 1.3, 2.7,1,1), 1), 0.1), the_geom), n + 1 เป็น n จากที่ WHERE n <50) เลือก the_geom จาก ST ;

หากคุณต้องการเห็นรูปหลายเหลี่ยมจากการวนซ้ำ 30: คุณสามารถเพิ่ม
ขีด จำกัด 1 ชดเชย 30
ระหว่าง t และอัฒภาคในท้ายที่สุด

การสร้างรูปหลายเหลี่ยม 50 รูปเหล่านั้นใช้เวลาประมาณ 50 มิลลิวินาทีดังนั้นจึงควรขยายโมเดลโดยไม่ต้องรอมากเกินไป

ขอแสดงความนับถือ Nicklas

อันนี้ดีกว่าฉันคิดว่า:

ด้วย RECURSIVE t (the_geom, n) AS (เลือก 'POLYGON ((10 10,8 13, 10 15, 12 14, 15 15, 16 12, 15 10, 10 10))' :: เรขาคณิตเป็น the_geom, 1 เป็น n ยูเนี่ยนทั้งหมดเลือก st_convexhull (ST_collect (ST_Simplify (ST_Buffer (ST_Transscale (the_geom, 1.1 * n, 15,1,1), 0.2 * n), 0.1), the_geom), n + 1 เป็น n จากที่ WHERE n <50) เลือก the_geom จาก t

การจำลองการเลี้ยวขวา


นั่นเป็นทางออกที่เรียบร้อยและยังเตือนอีกอย่างว่าฉันต้องหาเวลาเพื่อเริ่มเรียนรู้เกี่ยวกับ GIS ในบริบทฐานข้อมูลเชิงพื้นที่ มันเป็นตัวอย่างที่ดีว่าทำไมเว็บไซต์เช่นนี้จึงใช้งานได้ ไม่เพียง แต่ฉันจะพบทางออกที่แตกต่างจากที่ฉันมีอยู่ในใจอย่างสมบูรณ์ แต่ฉันพบว่ามีทรัพยากรใหม่เป็นโบนัส
James M

ใช่มี posibilites มากมายพร้อม spatial sql แบบสอบถามด้านบนนั้นอ่านยากกว่าปกติเล็กน้อยเนื่องจากส่วนที่เรียกซ้ำ มีแหล่งข้อมูลที่ดีมากมายที่นั่นเพื่อช่วยในการเริ่มต้น
Nicklas Avén

3

ข้อแม้ของ Whuber นั้นมีความสำคัญและตราบใดที่คุณกำลังทำสิ่งนี้เพื่อจุดประสงค์ในการอธิบายเท่านั้นและไม่ต้องการที่จะดึงพลังพลศาสตร์ของไหลซึ่งเป็นไปได้ แต่ทำให้ปัญหายุ่งยาก

ที่กล่าวว่าฉันคิดว่ามันเป็นคำถามที่น่าสนใจและอาจสนุกสำหรับนักเรียน อีกวิธีในการดูปัญหาคือคิดว่ามันเป็นปรากฏการณ์เชิงภาพแรสเตอร์โดยมีความหนาแน่นของน้ำมันที่วัดได้ภายในแต่ละเซลล์ จากตรงนั้นคุณสามารถใช้แบบจำลองที่คำนึงถึงการ ansiotropy เช่นr.spread( เอกสารประกอบ ) เพื่อสร้างแบบจำลองอัตราการเติบโตซึ่งอาจรวมถึงกระแส faux เพื่อ 'ควบคุม' การแพร่กระจาย คุณสามารถทำบางสิ่งบางอย่างด้วยการโฟกัสแบบต่างๆภายใน ArcGIS โดยใช้รูปร่างที่ผิดปกติเพื่อแก้ไขปัญหาการบัฟเฟอร์เชิงเส้น


2

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

ฉันเห็นด้วยกับ Andy W ว่าการวางขอบเขตลงในคะแนนอาจเป็นข้อกำหนดเบื้องต้น คุณอาจต้องลดจำนวนคะแนนเพื่อให้ได้ผลลัพธ์ที่ถูกต้อง

ไม่แน่ใจว่าคุณบิดเบี้ยวอย่างไรในโลกของ ESRI ฉันกลัว ฉันรู้ว่าส่วนขยายของ Data Interop จะทำเช่นนั้น แต่ฉันคิดว่าต้องมีวิธีการในตัวหรือส่วนขยายเฉพาะสำหรับสิ่งนี้


1

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

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

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

ดูเหมือนจะเป็นโปรเจคที่ยอดเยี่ยมจริงๆและโพสต์รูปภาพเมื่อคุณทำเสร็จแล้ว


0

เพียงเพื่อแสดงให้เห็นถึงความหลากหลายของผลลัพธ์ที่คำถามเช่นนี้สามารถสร้างขึ้นได้ฉันจะแก้ไขปัญหาที่ฉันระดมสมองเมื่อฉันโพสต์คำถาม ฉันหวังว่าจะมีโอกาสนำไปใช้ในอีกสองสามวันข้างหน้าและจะโพสต์เมื่อฉันทำ

  1. จัดรูปหลายเหลี่ยมซ้ำให้เป็นแรสเตอร์ไบนารี
  2. สร้างแรสเตอร์ที่ใหญ่กว่าผลลัพธ์ของ 1 ด้วยค่า 0 และ 1 ที่วางแบบสุ่ม การกระจายของค่า 0 และ 1 จะตรงกับจำนวนที่รูปหลายเหลี่ยมต้องการขยาย ดังนั้นหากรูปหลายเหลี่ยมต้องการขยาย 5 ตารางกิโลเมตร เพื่อให้บรรลุเป้าหมายจะมี 5 ตารางกิโลเมตร มูลค่า 1 เซลล์
  3. ผลรวมของ (1) และ (2)
  4. ลบเซลล์ทั้งหมดออกจากผลลัพธ์ของ (3) ที่ไม่ได้อยู่ติดกับรูปหลายเหลี่ยมแบบแรสเตอร์ดั้งเดิม
  5. ป้อนผลลัพธ์ของ (4) ลงใน (2) แทนที่รูปหลายเหลี่ยมแบบแรสเตอร์ดั้งเดิมและทำซ้ำจนกระทั่งจำนวน (1) เซลล์ตรงกับพื้นที่เป้าหมาย

อาจไม่ใช่วิธีที่มีประสิทธิภาพที่สุดในการดำเนินการ แต่ควรใช้งานได้ ความคิดนั้นมาจากแบบฝึกหัดการสร้างแบบจำลองการเจริญเติบโตของเมืองที่ชนชั้นสูงทำ แรสเตอร์แบบสุ่มของพวกเขาถูกสร้างขึ้นตามความเหมาะสมสำหรับการเติบโตและพวกเขาไม่มีข้อ จำกัด ด้านพื้นที่ แต่ส่วนการเติบโตแบบสุ่มนั้นเหมือนกัน

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