GRASS สามารถคำนวณการแสดงกราฟเส้นของกราฟอินพุตได้หรือไม่?


10

ฉันสนใจที่จะคำนวณกราฟเส้นสำหรับกราฟอินพุตโดยเฉพาะอย่างยิ่งใน GRASS เนื่องจากฉันจะใช้เครื่องมือวิเคราะห์เครือข่าย GRASSอื่น ๆ ในภายหลัง ฉันไม่พบการอ้างอิงถึงกราฟเส้นในเอกสาร GRASS มีคำอื่นที่ฉันควรใช้ในการค้นหาหรือฟังก์ชันซ่อนเร้นที่จะสร้างกราฟเช่นนี้หรือไม่?

สำหรับบริบท:

กราฟเส้นของกราฟที่ไม่ได้บอกทิศทาง G คือกราฟ L (G) อีกอันที่แสดงถึงคำคุณศัพท์ระหว่างขอบของ G

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

ที่มา: http://en.wikipedia.org/wiki/Line_graph


1
คำถามนี้เป็นคำถามอาจจะดีกว่าที่โพสต์ในหญ้า dev รายการทาง ...
markusN

ขอบคุณ @markusN ทำosgeo-org.1560.x6.nabble.com/…
underdark

1
การอ้างอิงเดียวที่ฉันพบภายใน GRASS คือฟังก์ชันd.linegraphแม้ว่าอินพุตจะต้องเป็นข้อมูลตัวเลข ฉันรู้ว่ามันไม่ได้ช่วยมาก แต่อย่างน้อยเรารู้ว่ามีบางสิ่งบางอย่างในหญ้าที่เกี่ยวข้องกับกราฟเส้น :)
โจเซฟ

ฉันเข้าใจถูกต้องหรือไม่ คุณกำลังมองหาสิ่งที่ตรงกันข้ามกับ PostGIS pgr_createTopology ซึ่งคุณมีจุดยอดอยู่แล้ว แต่ต้องการสร้างลิงก์ที่อธิบายในแง่ของรหัสจุดยอดสองอันแทนหรือไม่ คุณสามารถแยกตารางจุดสุดยอด PostGIS เพื่อสร้างเครือข่ายที่คุณกำลังมองหา?
Adrian

@ เอเดรียนใช่จุดยอดในกราฟเส้นสามารถระบุได้โดยจุดยอดสองจุดในกราฟอินพุต ขอบในกราฟเส้นแสดงถึงการเยื้องระหว่างขอบในกราฟอินพุต บางทีมันอาจจะทำงานร่วมกับ PostGIS ตามที่คุณอธิบาย แต่ถ้าฉันต้องใช้อะไรตั้งแต่เริ่มต้นนั่นไม่ใช่ทางเลือกแรกของฉัน
underdark

คำตอบ:


3

ถ้า Python ไม่เป็นไรแสดงว่ามีโมดูล Python ที่ดีบางตัวที่รู้เกี่ยวกับกราฟเส้น ตัวอย่างหนึ่งคือ NetworkX (ซึ่งฉันติดตั้งไว้ด้วยsudo pip install networkx)

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

import networkx as nx
G = nx.Graph()
G.add_node( ... )
G.add_edge( ... )

จากนั้นคุณจะเรียกใช้line_graphฟังก์ชันรับ NetworkX เพื่อคำนวณกราฟเส้น:

H = nx.line_graph(G)

และในที่สุดคุณจะเปลี่ยนผลกลับไปยังสิ่งที่มีประโยชน์โดยการทำซ้ำมากกว่าและH.edges()H.nodes()

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