2011-02-02 14 views
5

Özür dilerim, terminolojiyi kötüye kullanıyorum ve düzeltmeler takdir ediliyor. Yönlendirilmiş grafiklerle büyülendim, ama hiçbir zaman matematik/cs arka plan hakkında ne olduğunu bilmek için gerçekten hakkında, ben sadece teknolojiyi beğendim çünkü kullanışlı diyagramlar yapıyor.PHP Kütüphanesi xdot Dosyalarını Oluşturmak İçin Nokta Dosyalarından

Tarayıcıya dinamik olarak yönlendirilmiş bir grafik oluşturacak bir web uygulaması özelliği oluşturmaya çalışıyorum. Son zamanlarda kullanmak istediğim bir cavas tabanlı xdot renderer olan Canviz'u keşfettim.

Canviz müthiş, ama (görünür?) Benim uygulamayla üreten ediyorum dosyalar hiçbirini ihtiva dot dosyalarıdır

/* example xdot file */ 
digraph abstract { 
    graph [size="6,6"]; 
    node [label="\N"]; 
    graph [bb="0,0,1250,612", 
     _draw_="c 9 -#ffffffff C 9 -#ffffffff P 4 0 -1 0 612 1251 612 1251 -1 ", 
     xdotversion="1.2"]; 
    S1 [pos="464,594", width="0.75", height="0.5", _draw_="c 9 -#000000ff e 464 594 27 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 9 -#000000ff T 464 588 0 15 2 -S1 "]; 
    10 [pos="409,522", width="0.75", height="0.5", _draw_="c 9 -#000000ff e 409 522 27 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 9 -#000000ff T 409 516 0 15 2 -10 "]; 

    S1 -> 10 [pos="e,421.43,538.27 451.52,577.66 444.49,568.46 435.57,556.78 427.71,546.5", _draw_="c 9 -#000000ff B 4 452 578 444 568 436 557 428 546 ", _hdraw_="S 5 -solid c 9 -#000000ff C 9 -#000000ff P 3 430 544 421 538 425 548 "]; 
} 

tüm karmaşık konumlandırma mantığını içermesi xdot dosyaları vermektedir Bu konumlandırma mantığı

digraph g { 

    ranksep=6 
    node [ 
     fontsize = "16" 
     shape = "rectangle" 
     width =3 
     height =.5 
    ]; 
    edge [ 
    ]; 

    S1 -> 10 
}  

Ben Canviz tarafından tüketilebilir bir xdot dosyaya benim dot dosyayı dönüştürebilirsiniz bir PHP kitaplığı için arıyorum. Komut satırı programının dot'un bunu yapabildiğini biliyorum, ancak bu yeniden dağıtılabilir bir PHP web uygulaması içindir ve bağımlılıklar olarak herhangi bir ikili dosyayı tercih etmeyi tercih ederim.

Temel sorunum: Basit yönlendirilmiş ilişkilere dayanarak dot dosyaları oluşturuyorum ve görsel grafikleri bir tarayıcıda son kullanıcılara göstermek istiyorum. Sunucuda belirli bir ikili programın varlığına güvenmek zorunda kalmadan bunu yapmak istiyorum. Bunun için en iyi çözümün, xdot dosyaları oluşturmak için Canviz + PHP olduğunu düşünüyorum. Bunu yapabilecek bir PHP kütüphanesi arıyorum. Ancak, diğer çözümlere açık olduğumdan daha fazlasıyım.

cevap

1

Image_GraphViz'a baktınız mı? Bu sadece ikili için bir sarıcı, ama şeylerin görünüşünden, daha iyi bir şey bulacağınızı düşünmüyorum ve bu en azından PHP betiğinizden doğrudan komut satırı çağrıları yapmak zorunda kalmanıza engel oluyor.

$dot_obj = new Image_GraphViz(); 
$dot_obj -> load('path/to/graph.gv'); 
$xdot = $dot_obj -> fetch('xdot'); 
İlgili konular