php實現拓撲圖(工程拓撲圖)

  • 1、怎麼使用jointjs 在php項目中繪製拓撲圖
  • 2、javascript 有哪些適合做網路拓撲圖形展示的包
  • 3、如何用PHP創建能夠顯示網路拓撲圖節點信息的網頁?
  • 4、有沒有自動繪製網路拓撲圖的軟體,推薦一下
  • 5、php能畫拓撲圖嗎

最近有一個需求是根據數據自動在前端頁面畫出一個流程導向圖,簡單說就是把數據以A節點指向B節點,B節點指向C節點這種形式給你,然後讓頁面自己在一定區域內渲染出一個流程圖.當然節點上可能還有其他信息,這個暫時不考慮,就是這樣一個需求,最後是藉助一個工具完成的.先說一下處理過程:

  可以說這個問題一開始我走了彎路,想的不是那麼清楚,一開始想的是自己畫.低端的就是用html+css各種布局,畫出方塊和線條,至於箭頭什麼的再想辦法.後來一想這樣太低端了,應該專業一點,就打算用canvas或者svg.因為之前用過echarts前端的圖標庫,知道它底層有個依賴庫zrender就是專門弄canvas的,所以好一陣看,感覺還靠譜,能畫出來.

  

  這樣雖然能畫出來,不過接下來我們就要考慮更多的問題,首先什麼時候折行,然後遇到分支的種種情況怎麼處理.最後我查資料竟然開始涉及一些圖論的東西了,深刻感覺到東西好像變複雜了,我的目的不是研究理論,而是為了一個實現.

  這時候轉變一下思路,有沒有什麼工具能專門做這樣的工作,類似於jQuery大家都用它操作DOM,RequireJS都用它來實現模塊化載入.那應該也有類似的東西,集成了數學上的圖論,自動布局等.這就不得不說Github火的一塌糊塗是有原因的,我搜了很多中文網站以及百度都沒什麼結果(不知道是不是關鍵字有問題),總之沒搜到能用的東西.但是在Github上找到了一個開源項目:dagre-d3.

  看名字就能猜到它是基於D3庫的,D3是一個專門用於前端圖形繪製的庫,dagre-d3就是實現自動布局並且繪製流程圖的這麼一個東西.

Dagre is a JavaScript library that makes it easy to lay out directed graphs on the client-side. The dagre-d3 library acts a front-end to dagre, providing actual rendering using D3.

  上一個簡單的Demo:

// Create a new directed graph

var g = new dagreD3.Digraph();

// Add nodes to the graph. The first argument is the node id. The second is

// metadata about the node. In this case we’re going to add labels to each of

// our nodes.

g.addNode(“kspacey”,    { label: “Kevin Spacey” });

g.addNode(“swilliams”,  { label: “Saul Williams” });

g.addNode(“bpitt”,      { label: “Brad Pitt” });

g.addNode(“hford”,      { label: “Harrison Ford” });

g.addNode(“lwilson”,    { label: “Luke Wilson” });

g.addNode(“kbacon”,     { label: “Kevin Bacon” });

// Add edges to the graph. The first argument is the edge id. Here we use null

// to indicate that an arbitrary edge id can be assigned automatically. The

// second argument is the source of the edge. The third argument is the target

// of the edge. The last argument is the edge metadata.

g.addEdge(null, “kspacey”,   “swilliams”, { label: “K-PAX” });

g.addEdge(null, “swilliams”, “kbacon”,    { label: “These Vagabond Shoes” });

g.addEdge(null, “bpitt”,     “kbacon”,    { label: “Sleepers” });

g.addEdge(null, “hford”,     “lwilson”,   { label: “Anchorman 2” });

g.addEdge(null, “lwilson”,   “kbacon”,    { label: “Telling Lies in America” });

  它渲染出來是這樣的:

  這樣我們只要把數據處理成對應格式,就可以輕鬆的自動繪製會流程圖.比較給力的是它對數據的支持良好,有多個格式可以選擇,而且雖然介面不多,但是對於節點以及線條的操作都有,可以很輕鬆的改變節點以及線條的樣式,這個大家可以看官方的demo.

  另外如果要附加交互事件,可以通過jquery實現,也很容易,我使用bootstrap的tooltip很輕鬆的就加上去了.感覺還是個很給力的庫,而且國內這方面資料感覺不多

比較合適的方法:jTopo(Javascript Topology library)是一款完全基於HTML5 Canvas的關係、拓撲圖形化界面開發工具包。

使用jTopo很簡單,可以快速創建一些關係圖、拓撲等相關圖形化的展示。只要您的數據之間存在有關聯關係,都可以使用jTopo來進行人性化、圖形化的展示。

jTopo的目標:1.簡單好用 2.靈活擴展 3.輕鬆開發出類似Visio、在線腦圖、UML建模等類似工具 4.為大數據可視化提供解決方案.

我也在找這種方法,如果過幾天找不到,我可能會通過圖片熱點方式解決

現在市場上這類產品挺多的,像網強、北塔、游龍科技、泰信科技等,我之前在選型的時候都有所接觸。因為考慮到將來要上IT運維和服務管理,所以我最終選用了泰信科技的產品,Apex NM,用得還是挺方便的,可以將網路中相關設備都用物理方式提供拓撲圖,而且一旦網路中相關設備變更的話,也能夠在拓撲圖中及時更新過來。

進入php源程序目錄中的ext目錄中,這裡存放著各個擴展模塊的源代碼,選擇你需要的模塊,比如curl模塊:cd curl執行phpize生成編譯文件!

phpize在PHP安裝目錄的bin目錄/usr/local/php5/bin/phpize運行時,

可能會報錯:Cannot find autoconf. Please check your autoconf installation andthe $PHP_AUTOCONFenvironment variable is set correctly and then rerun thisscript.,需要安裝autoconf:yum install autoconf(RedHat或者CentOS)、apt-get installautoconf(Ubuntu Linux)!

執行/usr/local/php5/bin/php -v這個命令時,php會去檢查配置文件是否正確,

如果有配置錯誤,這裡會報錯,可以根據錯誤信息去排查!

原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/126356.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-10-03 23:07
下一篇 2024-10-03 23:07

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Vue TS工程結構用法介紹

    在本篇文章中,我們將從多個方面對Vue TS工程結構進行詳細的闡述,涵蓋文件結構、路由配置、組件間通訊、狀態管理等內容,並給出對應的代碼示例。 一、文件結構 一個好的文件結構可以極…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若伺服器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • 網路拓撲圖的繪製方法

    在計算機網路的設計和運維中,網路拓撲圖是一個非常重要的工具。通過拓撲圖,我們可以清晰地了解網路結構、設備分布、鏈路情況等信息,從而方便進行故障排查、優化調整等操作。但是,要繪製一張…

    編程 2025-04-27
  • PHP與Python的比較

    本文將會對PHP與Python進行比較和對比分析,包括語法特性、優缺點等方面。幫助讀者更好地理解和使用這兩種語言。 一、語法特性 PHP語法特性: <?php // 簡單的P…

    編程 2025-04-27
  • PHP版本管理工具phpenv詳解

    在PHP項目開發過程中,我們可能需要用到不同版本的PHP環境來試驗不同的功能或避免不同版本的兼容性問題。或者我們需要在同一台伺服器上同時運行多個不同版本的PHP語言。但是每次手動安…

    編程 2025-04-24
  • PHP數組去重詳解

    一、array_unique函數 array_unique是php中常用的數組去重函數,它基於值來判斷元素是否重複,具體使用方法如下: $array = array(‘a’, ‘b…

    編程 2025-04-24

發表回復

登錄後才能評論