2010-10-01 42 views
3

我有一個需求來創建一個複雜電氣系統的「模擬」顯示。我可以訪問Visio中的實時狀態信息和系統框圖。使用SVG + Java進行靈活的信息顯示,這是可行的嗎?

這是一個可行的辦法:

  1. 創建SVG從系統框圖繪製屬性

  2. 負荷SVG DOM到與SVG興趣

  3. 標籤的SVG元素java

  4. 找到標記的元素並根據系統狀態信息修改它們(使t他元件RED如果它的「報警」,例如)

  5. 使用蠟染(使用擺動部件使SVG至PNG用於顯示:JSVGCanvas)

的關鍵要求是彎曲的能力部署應用程序後修改SVG。該應用能夠根據SVG中的標籤靈活地拉入不同的「數據點」。

任何人都有成功使用類似的策略? 我應該期待什麼陷阱? SVG編輯工具的用途是什麼?

+0

更新,我有一個原型工作,它看起來像一個可行的解決方案。我還沒有嘗試過使用非常大的SVG DOM,但是我猜測它可以處理它。 – JeffV 2010-10-12 22:42:16

回答

2

我已經做了類似的健康狀態顯示。我實際上註釋了數據對象,並讓他們把他們的狀態變成一個愚蠢的SVG文件,但機器應該大致相同,只是顛倒過來。

優點:

  • 使得複雜的,動態的圖表非常輕鬆呈現。
  • 與我曾經使用過的其他任何東西相比,圖維護是一件輕而易舉的事情。
  • 能夠直接通過SVG或直接通過服務器呈現的圖像傳送給客戶端來定位Web應用程序。

陷阱:

  • 數據綁定可以根據你想多麼複雜可視化是很痛苦。如果你想註解SVG將數據拉入自己,這可能最終成爲難題。
  • 您需要掌握好XPath才能做任何事情,即使有點棘手。這從來不難,但調試XPath表達式通常很繁瑣。

編者: Inkscape。還有一些其他矢量圖形編輯器可以直接或作爲導出目標來執行SVG,但是我所看到的沒有一個與Inkscape接近。它不支持當前SVG規範中的所有功能,但它聽起來像是即使不是全部你想要的東西也足夠了。當你需要某些不支持的東西時,不要將手工編輯的內容暴露給SVG文件,這也是相當不錯的。

+0

感謝您的信息。我更傾向於像你在做什麼一樣,從一個基本的SVG圖開始並操縱它。我打算使用id屬性標記元素(id =「NODE23.STATUS_INDICATOR」)並在其上匹配。我聽到你用XPath的東西。繪圖可以有任意級別的任意元素嵌套。 – JeffV 2010-10-01 19:46:59

0

你也應該看看SVG Salamander,我沒有用它自己,而是一些特點是:「在SVG圖形所有命名形狀的指標是方便」

  • 「直接訪問場景圖樹,您可以使用Java命令直接操作它。」
相關問題