การหาระยะห่างระหว่างจุดตามแนวแม่น้ำ (การอ้างอิงเชิงเส้น)


10

ฉันใหม่กับระบบสารสนเทศภูมิศาสตร์และหลง ฉันมีเครือข่ายของแม่น้ำซึ่งประกอบด้วย linestrings ขนาดเล็ก (polylines) ใน Shapefile ที่แตกต่างกันฉันมีที่ตั้งของสถานีหลายแห่งในแม่น้ำ ฉันต้องหาระยะทางตามแม่น้ำจากแต่ละสถานีจนถึงจุดสิ้นสุดของแม่น้ำ

ปัญหาคือว่าฉันไม่มีแม่น้ำที่สมบูรณ์หนึ่งแห่ง และไม่มีคุณสมบัติทั่วไปที่ฉันสามารถใช้ในการรวมหรือรวม linestrings นอกจากนี้บางสถานีอยู่บนแคว

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

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

โปรดแสดงความคิดเห็นหากคุณต้องการข้อมูลเพิ่มเติม


3
คุณใช้แพลตฟอร์มซอฟต์แวร์ใด
TheSteve0

ฉันพยายาม arcmap arcinfo แต่มันเป็นข้อมูลที่ครอบคลุมเกี่ยวกับการอ้างอิงเชิงเส้น จากนั้นฉันย้ายไปที่ pgRouting และ QGIS ยังคงดิ้นรน
Naresh

คุณมีสิทธิ์เข้าถึง ArcGIS Network Analyst extension หรือไม่? ฉันคิดว่าเป็นไปได้ที่จะสร้างชุดข้อมูลเครือข่ายโดยใช้แม่น้ำของคุณจากนั้นการค้นหาระยะทางที่สั้นที่สุดควรเป็นเรื่องง่าย
radek

คำตอบ:


2

ฉันจะเห็นด้วยกับ BWill ปัญหาหลักของคุณคือการกำหนดที่มาของแต่ละ polyline อะไรคือ 'แม่น้ำ' make จะทำให้สมมติฐานที่ว่าเป็นแคว "เส้นทาง" แบบสแตนด์อโลนเริ่มต้นจาก 0-> ความยาวของแคว จากนั้นฉันก็จะเหมือนกันสำหรับแม่น้ำสายหลัก แต่ในกรณีนี้ฉันจะสร้างรูปหลายเหลี่ยมที่รวมกันจากโพลิลีนที่เป็นส่วนประกอบทั้งหมด ฉันคิดว่าเมื่อคุณมีสิ่งที่คุณ 'เกือบ' มี จากนั้น: แปลง polylines ที่ผสานทั้งหมดของคุณไปเป็น polylines ที่วัดได้ (PolylineM) - รวมถึงแคว จากนั้นคุณมี 'เครือข่ายเส้นทาง' ของคุณ จากนั้นเป็นเรื่องของการหาระยะทางตามเส้นทางของคุณสำหรับแต่ละสถานี ฉันเดาตำแหน่งสถานีถูกกำหนดเป็น XY หรือไม่? นอกจากนี้ - เดาอีกครั้ง - พวกเขาไม่ตกลงบนแม่น้ำ ทำพวกเขา ไม่ว่าในกรณีใดคุณจะต้องหาวิธีหาระยะทางของสถานีตั้งแต่ต้นแม่น้ำหรือแต่ละเผ่า ในทางทฤษฎีหากสถานีอยู่บนจุดตัดของแม่น้ำและสาขาอาจมี 2 ตำแหน่ง (หนึ่งสำหรับแต่ละสถานี)

ในการค้นหาตำแหน่งนี้คุณสามารถใช้เครื่องมือ ArcMap แต่ไม่ได้ใช้งานมาระยะหนึ่งแล้วจำไม่ได้เลยว่าหัวของฉันอยู่ตรงไหน ในทางตรงกันข้ามถ้าคุณนำเข้าเชปไฟล์ของคุณ (?) ลง PostGIS คุณสามารถใช้ST_Line_Locate_Point ฟังก์ชั่นนี้:

ส่งคืนค่าทศนิยมระหว่าง 0 ถึง 1 ซึ่งแทนตำแหน่งของจุดที่ใกล้ที่สุดบน LineString ไปยังจุดที่กำหนดซึ่งเป็นเศษส่วนของความยาวบรรทัด 2d ทั้งหมด

ซึ่งหมายความว่าคุณสามารถค้นหาตำแหน่งที่ตั้งตามแม่น้ำคูณสิ่งที่คุณค้นหาด้วยความยาวแม่น้ำ (รวม) บันทึกสุดท้าย - หากคุณใช้ PostGIS คุณไม่จำเป็นต้องทำตามขั้นตอนของการสร้าง PolylineM- เฉพาะ ArcGIS ที่ต้องการสิ่งนี้สำหรับการอ้างอิงเชิงเส้น

หวังว่ามันจะสมเหตุสมผล!


สถานีของฉันตั้งอยู่บนแม่น้ำสาขาหรือแม่น้ำ สิ่งที่โง่คือไม่มีแม่น้ำสายใหญ่เพียงเส้นเล็ก ๆ ฉันสามารถเห็นแม่น้ำสายใหญ่ได้ แต่ตัวข้อมูลเองนั้นไม่มีแอตทริบิวต์ทั่วไปใด ๆ ที่จะทำให้แม่น้ำสายเต็ม นอกจากนี้ฉันยังมีพิกัดเป็นองศาดังนั้นเมื่อฉันสร้างเส้นทางใน arcmap ฉันจะมีความยาวเป็นองศาหรือไม่ ฉันคิดว่ามันไม่สมเหตุสมผล ฉันต้องแปลงพิกัดจาก wgs84 เป็นประมาณการอื่น และใช่ฉันนำเข้าไฟล์รูปร่างใน PostGIS
Naresh

1

จากคำถามของฉันในลักษณะเดียวกัน

วิธีการสร้างจุดตามเส้นที่กำหนดระยะทาง

ลิงค์ที่มีประโยชน์ต่อไปนี้เกิดขึ้น
grass.osgeo.org/gdp/html_grass63/lrs.html
wiki.faunalia.it/dokuwiki/doku.php/qgis/lrs

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


2
ฉันมีความคืบหน้า ฉันสามารถหาเส้นทางที่สั้นที่สุดโดยใช้ pGrouting แต่ฉันต้องอัปเดต "nodes" ตอนนี้ฉันสร้างตารางโหนดใน postgresql และใช้มันเพื่อสร้างเครือข่ายที่ฉันดึงข้อมูลไปยัง pgrouting แต่ฉันต้องเพิ่มโหนดที่กำหนดเองในตารางซึ่งไม่ได้อยู่ที่ปลายโหนดวิธีที่โง่เง่าคือการแยก polylines ของฉันที่สถานีเพื่อให้พวกเขากลายเป็นโหนดโดยอัตโนมัติ ยังทำงานอยู่. อัปเดตเร็ว ๆ นี้
Naresh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.