Bisakah GRASS menghitung representasi grafik garis dari grafik input?


10

Saya tertarik menghitung grafik garis untuk grafik input, lebih disukai dalam GRASS karena saya akan menggunakan alat analisis jaringan GRASS lainnya sesudahnya. Saya tidak dapat menemukan referensi ke grafik garis dalam dokumen GRASS. Apakah ada istilah berbeda yang harus saya gunakan dalam pencarian saya atau fungsi tersembunyi yang akan membuat grafik seperti itu?

Untuk konteks:

grafik garis dari graf tidak berarah G adalah grafik L lain (G) yang mewakili kedekatan antara tepi G.

masukkan deskripsi gambar di sini

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


1
Pertanyaan ini mungkin lebih baik diposting di milis dev-dev ...
markusN

Terima kasih @markusN, dilakukan osgeo-org.1560.x6.nabble.com/...
underdark

1
Satu-satunya referensi yang saya temukan dalam GRASS adalah fungsi d.linegraph , walaupun input harus berupa data numerik. Saya tahu ini tidak banyak membantu tetapi setidaknya kita tahu ada sesuatu dalam GRASS yang terkait dengan grafik garis :)
Joseph

Sudahkah saya memahami ini dengan benar? Anda mencari sesuatu seperti kebalikan dari PostGIS pgr_createTopology, di mana Anda sudah memiliki simpul tetapi ingin membuat tautan yang dijelaskan dalam dua id vertex? Bisakah Anda menguraikan tabel verteks PostGIS untuk menghasilkan jaringan yang Anda cari?
Adrian

@Adrian Ya, simpul dalam grafik garis dapat diidentifikasi oleh dua simpul dalam grafik input. Tepi dalam grafik garis menunjukkan kedekatan antara tepi dalam grafik input. Mungkin itu akan bekerja dengan PostGIS seperti yang Anda gambarkan, tetapi jika saya harus mengimplementasikan sesuatu dari awal, itu tidak akan menjadi pilihan pertama saya.
underdark

Jawaban:


3

Jika Python tidak apa-apa, maka ada beberapa modul Python bagus yang tahu tentang grafik garis. Salah satu contoh adalah NetworkX (yang saya instal dengan sederhana sudo pip install networkx).

Ini bukan jawaban yang sempurna karena Anda perlu menulis beberapa kode lem. Pertama, Anda akan mengkonversi input Anda menjadi objek grafik NetworkX :

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

Maka Anda akan memanggil line_graphfungsi get NetworkX untuk menghitung grafik garis:

H = nx.line_graph(G)

Dan akhirnya Anda akan mengubah hasilnya kembali menjadi sesuatu yang bermanfaat dengan mengulangi H.edges()dan H.nodes().

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.