Microsoft GLEE – Gráfok vizualizációja .NET alatt

MS AGL sampleFéléves önállólabor gyakorlatom egy Levelezés elemző rendszer elkészítése. Minden minden elemző szoftvernek, ennek is az a célja, hogy a végfelhasználó által feltett kérdésekre kielégítő és szemléletes válaszokat tudjon nyújtani. Ennek egyik lehet formája a grafikus megjelenítés. Projektem elkészítéséhez szükségem volt egy olyan eszközre, mely hatékonyan képes tetszőleges gráfokat ábrázolni, ugyanakkor interaktív működést biztosít, azaz képes érzékelni, ha a felhasználó valamilyen egér vagy más eseményt idéz elő egyik élén vagy csomópontján.

Hosszas keresgélés után rábukkantam a Microsoft Research – VIBE csoport egyik kísérleti fejlesztésére a Microsoft Automatic Graph Layout (MSAGL) csomagra, korábbi nevén a Graph Layout Execution Engine (GLEE) -re, mely oktatási és kísérleti célokra szabadon használható.

A GLEE telepítőkészlete a .NET osztályokkal, dokumentációkkal és példa kódokkal összesen 2MB-ot foglal gépünkön. A csomag egyébként 3 komponensből, a gráf tárolásáért és alapműveleteiért felelős Microsoft.GLEE, a megjelenítésért, színezésért, él és node ábrázolásért felelős Microsoft.GLEE.Drawing és az interaktív működésért felelős Microsoft.GLEE.GraphViewerGDI -ből áll összesen. Használata rendkívül egyszerű és kényelmes.

GleeGraph

Gráf objektum létrehozásához a GleeGraph osztályt kell példányosítanunk. Ennek tagjai lehetnek Node -ok és Edge-ek, melyeket az AddNode() és a AddEdge() metódusokkal vehetünk fel.

GleeGraph graph = new GleeGraph();

Node

A GleeGraph Node-ok rendelkeznek saját string ID-val, amit pédányosításkor kell megadnunk és ezzel az azonosítóval kereshetjük vagy hivatkozhatunk rájuk később, továbbá képesek eltárolni grafikájukat és rendelhetőek hozzá tetszőleges Object-ek, ha tárolásra és használnánk ezeket a csomópontokat.

Node a = new Node("a", new Ellipse(w, h, new P()));
Node b = new Node("b", CurveFactory.CreateBox(w, h, new P()));
graph.AddNode(a);
graph.AddNode(b);

Edge

Az élek tárolására megvalósított osztály, amely két node között húzódik. Ezek az élek minden esetben irányított éleknek, melyek konstruktoruk első Node-jából a másodikba mutatnak. Természetes ábrázolás szempontjából az irányítottság kérdése egyszerűen megoldható ha nyilak helyett csak szakaszokat használunk. Az Edge objektumok azonban a Node-okkal ellentétben nem rendelkeznek saját ID-val és a GleeGraph sem tartalmaz élkeresési eljárást, így ha ilyenre lenne szükségünk magunknak kell ezt megoldani.

Edge e = new Edge(a, b);
e.ArrowHeadAtSource = true; //Nyíl irányjelzője
graph.AddEdge(e);
graph.AddEdge(new Edge(a,b));

A GleeGraph -ok ábrázolására használhatjuk saját metódusainkat, de rá is bízhatjuk  a GraphViewerGDI vezérlőre, melynek Graph Propery-jének átadva gráfunkat az automatikusan le is rendereli. Ezen kívül a GLEE képes hagyományos Graphics objektumot is adni kimenetként, így gráfjainak akár egy ASP oldalon is generálhatjuk.

További infirmációk az MS AGL-ről és GLEE-ről:
http://research.microsoft.com/en-us/projects/msagl/

Amennyiben kereskdelmi szándékkal fejlesztünk az MS AGL 2007 csomag 280 USD -ért megrendelhető a Windows MarketPlace-en:
http://store.microsoft.com/microsoft/Automatic-Graph-Layout-2007/product/4DD40C40

0 comments on “Microsoft GLEE – Gráfok vizualizációja .NET alattAdd yours →