GraphViz

Installation unter Windows

Download unter http://www.graphviz.org/Download_windows.php. Installation der .msi-Datei.

Installation unter Ubuntu / Debian

sudo apt-get install graphviz

Erzeugung .dot-File aus Datenbank

Gegeben: 3 Relationen (1. Attribut ist jeweils Primärschlüssel):

graph (g_id)
nodes (n_id, duration, city, street, ...)
edges (e_id, n1_id, n2_id, duration, edgecount, ...)

SQL-Statement für PostgreSQL zur Ausgabe des Graphen:

COPY (
        SELECT 'digraph g {' UNION ALL SELECT DISTINCT n_id || ' [label="' || city ||'-'|| street ||'"]'
        FROM nodes
        WHERE g_id = '1'
    UNION ALL
        SELECT DISTINCT n1_id || ' -> ' || n2_id || '[label="' || duration || '-' || edgecount || '"]'
        FROM edges
        WHERE g_id = '1'
    UNION ALL
        SELECT '}'
) TO 'graph.dot';

Ergebnis in der Datei graph.dot:

digraph g {
    11 [label="Paderborn-Schütten Kamp 4"]
    18 [label="Lünen-Brechtener Str. 26"]
    19 [label="Castrop-Rauxel-Zum Düker 20"]
    20 [label="Herne-Baukauer Str. 48"]
    21 [label="Bochum-Hustadtring 67"]
    22 [label="Bochum-Bonifatiusstr. 1 a"]
    23 [label="Bochum-Sonnenleite 17"]
    24 [label="Bochum-Am Heerbusch 29"]
    26 [label="Hattingen-Kreisstr. 14"]
    27 [label="Herten-Königsberger Str. 38 B"]
    34 [label="Kreuztal-Aherhammer 1"]
    35 [label="Hagen-Niedernhofstraße"]
    36 [label="Hagen-Rönselstr. 13"]
    11 -> 18[label="7592-1"]
    18 -> 19[label="818-1"]
    18 -> 35[label="1927-1"]
    19 -> 27[label="895-1"]
    20 -> 21[label="943-2"]
    21 -> 18[label="1611-1"]
    21 -> 22[label="359-1"]
    21 -> 23[label="196-1"]
    21 -> 34[label="6411-1"]
    22 -> 35[label="1091-1"]
    23 -> 35[label="1155-1"]
    24 -> 20[label="878-1"]
    26 -> 20[label="1380-1"]
    26 -> 21[label="762-1"]
    27 -> 21[label="1333-1"]
    34 -> 11[label="8488-1"]
    34 -> 26[label="6447-1"]
    34 -> 35[label="5203-1"]
    34 -> 36[label="5055-1"]
    35 -> 24[label="1246-1"]
    35 -> 34[label="5203-3"]
    36 -> 26[label="1462-1"]
}

Erzeugen einer Grafik aus der .dot Datei

Per Befehlszeile kann eine Grafik erzeugt werden mit z. B.

dot -Tpng graph.dot > graph.png
dot -Tpdf graph.dot > graph.pdf

Beispiel-Graph

Die Graphik zu obiger graph.dot sieht dann so aus: