จะวัดระยะทางระหว่างจุดต่าง ๆ ตามระดับความสูงได้อย่างไร?


10

ฉันต้องสามารถวัดระยะทางระหว่างจุดต่าง ๆ ได้ แต่ต้องคำนวณระยะทางในการสัมพันธ์กับระดับความสูง จุดต่างๆเป็นบ้านของนักเล่าเรื่องตั้งแต่ศตวรรษที่ 19 และสถานที่ที่กล่าวถึงในเรื่องราวของพวกเขา ระยะทางจึงต้องเป็น "ระยะทางเดิน" เส้นทางตามหุบเขาจะสั้นกว่าเส้นทางบนภูเขาแม้ว่าระยะทางตรงที่แท้จริงจะสั้นกว่า ที่แนบมาเป็นภาพหน้าจอที่แสดงความคิดของฉัน ในภาพเส้นทาง A และ C จะถูกคำนวณให้สั้นกว่าเส้นทาง Bจุดและระดับความสูง

คะแนนมาจากไฟล์ CSV แต่ฉันยังมีเลเยอร์แรสเตอร์พร้อมข้อมูลระดับความสูง


1
ฉันคิดว่ามันจะดีกว่าที่จะเดินคำนวณเวลา ความเร็วของการเดินขึ้นอยู่กับความลาดชันและขึ้นไปใช้เวลามากกว่าลง
AndreJ

1
ระยะทาง "3D" เมื่อเปรียบเทียบกับระยะห่างของแผนที่แบนหรือไม่ ความแตกต่างอาจน้อยกว่าที่คุณคิด Peter Guth คนที่อยู่เบื้องหลัง MICRODEM กล่าวว่า "ระยะทางหรือพื้นที่จะเพิ่มขึ้นตามเส้นตัดของมุมลาดชันและจนกว่าคุณจะถึงเนินที่มีขนาดใหญ่มาก
nhopton

คำตอบ:


6

การบรรลุเป้าหมายนี้ค่อนข้างเป็นงานขั้นพื้นฐานใน GIS อย่างไรก็ตามวิธีการใน QGIS อาจไม่น่ารำคาญ โอกาสที่ดีที่สุดของคุณคือการใช้r.walkฟังก์ชั่นของ GRASS ซึ่งสร้างพื้นผิวแบบต้นทุน anisotropic (ความชัน + ความชัน + ปัจจัยอื่น ๆ )

ครั้งแรกที่คุณจะต้องสร้างแรงเสียดทานพื้นผิวเป็น input r.walkไปยัง ในกรณีของคุณอาจเป็นแรสเตอร์ที่มีค่าเดียว (1.0) ที่ตรงกับขอบเขตของ DEM ของคุณ คุณสามารถสร้างมันได้ด้วยr.mapcalculatorสูตร: A*0+1โดยที่ A คือ DEM ของคุณ

ถัดไปคุณต้องเลือกชุดจุดเริ่มต้นจาก CSV ของคุณ เหล่านี้คือคะแนนพื้นผิวต้นทุนสะสมจะถูกคำนวณจาก คุณต้องสร้างพื้นผิวค่าใช้จ่ายส่วนบุคคลจากทุกจุดเริ่มต้น อาจเป็นการดีที่จะกำหนดจุดสิ้นสุดที่เกี่ยวข้องกับทุกจุดเริ่มต้นในขั้นตอนนี้ (ในแต่ละชั้นนอกหลักสูตร) หลังจากนั้นคุณสามารถรันr.walkด้วยอินพุตที่สร้างขึ้น จุดเริ่มต้นอาจอยู่ในเลเยอร์เดียวคุณสามารถวนซ้ำโดยใช้ลูกศรสีเขียวในกล่องโต้ตอบ

ในกรณีที่เหมาะสมที่สุดคุณมีพื้นผิวต้นทุนและจุดสิ้นสุดสำหรับทุกพื้นผิวต้นทุน ในทางทฤษฎีคุณสามารถหาเส้นทางที่มีค่าใช้จ่ายน้อยที่สุดr.drainแต่สำหรับฉันแล้วมันเกิดข้อผิดพลาด (python ไม่สามารถนำเข้าไลบรารี QgisRaster) หากคุณทำงานในปัญหาเดียวกันคุณสามารถไปกับอัลกอริทึม "เส้นทางค่าใช้จ่ายน้อยที่สุด" ของ SAGA มันจะสร้างจุดและเลเยอร์บรรทัดสำหรับทุกจุดสิ้นสุดด้วยพื้นผิวต้นทุน (ใช้ปุ่มวนซ้ำอีกครั้ง) หลังจากคุณมีทุกบรรทัดคุณสามารถรวมมันเข้าไปในไฟล์รูปร่างเดียวด้วยเครื่องมือ "ผสานรูปร่างเลเยอร์" ของ SAGA

วิธีนี้อาจช้ามากเมื่อมีการเพิ่มคะแนนดังนั้นถ้าคุณมีจำนวนมากคุณอาจลองใช้วิธีอัตโนมัติด้วย python ยังคงมีเวลาอีกมากในการคำนวณ (โดยเฉพาะพื้นผิวต้นทุน) แต่คุณไม่ต้องสร้างเลเยอร์จุดสิ้นสุดจำนวนมากด้วยตนเอง


ขอบคุณสำหรับสิ่งนี้ฉันอาจต้องเริ่มเรียนรู้วิธีใช้ GRASS ฉันคิดว่าฉันอาจมีปัญหาด้วยในภาพประกอบที่ฉันโพสต์ฉันคิดว่าภูเขาหลายแห่งไม่สามารถใช้ได้ดังนั้นฉันจะต้องเพิ่มบางอย่างเช่น "ถ้าภูเขาสูงกว่า x ไปรอบ ๆ " ... แต่ขอบคุณสำหรับ คำตอบนี่อาจช่วยให้ฉันเริ่มต้นได้
traustid

นั่นเป็นเงื่อนไขที่ง่ายr.walkค่ะ คุณสามารถใช้แผนที่แรงเสียดทานเพื่อตั้งค่าเซลล์ที่ไม่สามารถใช้ได้ จัดประเภท DEM ของคุณอีกครั้งr.reclassด้วยกฎเช่น1 thru 2000 = 1 2000 thru * = 9999ในไฟล์กฎ (ถ้าเกณฑ์ของคุณคือ 2000m) วิธีนี้อัลกอริทึมจะไม่ผ่านเซลล์ที่มีค่าความเสียดทานสูง แต่จะมีค่าใช้จ่ายน้อยกว่าในการดำเนินการ
Gabor Farkas

ขอบคุณมากสำหรับสิ่งนี้! ฉันไม่ค่อยมีความรู้เกี่ยวกับ GRASS มากนัก แต่นี่เป็นจุดเริ่มต้นที่ดีมาก
traustid

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