GRASS bir girdi grafiğinin çizgi grafiği temsilini hesaplayabilir mi?


10

Daha sonra diğer GRASS ağ analiz araçlarını kullanacağım için, bir giriş grafiği için, tercihen GRASS'ta bir çizgi grafik hesaplamakla ilgileniyorum . GRASS belgelerinde çizgi grafiklere referans bulamadım. Aramamda kullanmam gereken farklı bir terim veya böyle bir grafik oluşturacak gizli bir işlev var mı?

Bağlam için:

yönlendirilmemiş bir grafik G'nin çizgi grafiği, G'nin kenarları arasındaki bitişiklikleri temsil eden başka bir grafik L (G) 'dir.

resim açıklamasını buraya girin

Kaynak: http://en.wikipedia.org/wiki/Line_graph


1
Bu soru muhtemelen daha iyi grass-dev posta listesine gönderildi ...
markusN

Teşekkürler @markusN, osgeo-org.1560.x6.nabble.com/…
underdark

1
GRASS içinde bulduğum tek referans , giriş sayısal veriler olsa da , d.linegraph işlevidir. Çok yardımcı olmadığını biliyorum ama en azından GRASS'ta çizgi grafiklerle ilgili bir şey olduğunu biliyoruz :)
Joseph

Bunu doğru anladım mı? Zaten köşe noktalarına sahip olduğunuz ancak bunun yerine iki köşe kimliği açısından açıklanan bağlantıları oluşturmak istediğiniz PostGIS pgr_createTopology'nin tam tersi gibi bir şey mi arıyorsunuz? Aradığınız ağı oluşturmak için PostGIS köşe tablosunu ayrıştırabilir misiniz?
Adrian

@Adrian Evet, çizgi grafikteki köşeler, giriş grafiğindeki iki köşe ile tanımlanabilir. Çizgi grafiğindeki kenarlar, giriş grafiğindeki kenarlar arasındaki bitişiklikleri temsil eder. Belki tanımladığınız gibi PostGIS ile çalışır, ancak sıfırdan bir şey uygulamak zorunda kalırsam, bu benim ilk tercihim olmaz.
underdark

Yanıtlar:


3

Python iyi ise, çizgi grafiklerini bilen bazı iyi Python modülleri vardır. Bir örnek NetworkX (basitçe kurduğumsudo pip install networkx ).

Bazı yapıştırıcı kodları yazmanız gerektiğinden bu mükemmel bir cevap değildir. İlk önce girişinizi NetworkX grafik nesnelerine dönüştürürsünüz :

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

Ardından çizgi grafiğini hesaplamak için get NetworkX line_graphişlevini çağırırsınız :

H = nx.line_graph(G)

Ve nihayet yineleme ile kullanışlı bir şeye sonuç geri dönüştürmek istiyorum H.edges()ve H.nodes().

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.