使用SVG + Java进行灵活的信息显示,这可行吗?

3
我有一个需求,需要创建一个复杂电气系统的“模拟”显示。我可以在Visio中访问实时状态信息和系统块图。
这是否是可行的方法:
1.从系统块图创建SVG图形 2.使用SVG属性标记感兴趣的SVG元素 3.将SVG DOM加载到Java中 4.根据系统状态信息定位已标记的元素并修改它们(例如,如果元素“警报”,则使其变为红色) 5.使用BATIK将SVG渲染为PNG以进行显示(使用swing组件:JSVGCanvas)
关键要求是在应用程序部署后灵活修改SVG。该应用程序能够根据SVG中的标签灵活地获取不同的“数据点”。
有人成功使用类似的策略吗?可能会遇到什么问题?有哪些SVG编辑工具可用?

更新,我已经有一个原型正在工作,并且看起来是可行的解决方案。我还没有尝试过使用非常大的SVG DOM,但我猜它可以处理。 - JeffV
2个回答

2
我曾经为健康状态显示做过类似的事情。实际上,我注释了数据对象,并将它们的状态推入了一个愚蠢的SVG文件中,但机制应该大致相同,只是反过来而已。
优点: - 使复杂的动态图表极易呈现。 - 相比我使用过的其他所有工具,图表维护要容易得多。 - 能够直接通过SVG或通过向客户端传递服务器呈现的图像来针对Web应用程序进行定位。
缺点: - 数据绑定可能会很痛苦,这取决于您希望可视化的复杂程度。如果要注释SVG以将数据拉入其中,则此操作可能最终变得困难。 - 您需要对XPath有很好的掌握才能完成稍微棘手的任何操作。这不难,但通常很繁琐调试XPath表达式。
编辑器: Inkscape。还有一些其他矢量图形编辑器可以直接或作为导出目标使用SVG,但我看到的所有编辑器都无法与Inkscape相媲美。它不支持当前SVG规范中的每个功能,但听起来对于您想要的大多数甚至全部功能来说都足够了。它还非常擅长不破坏手动编辑的SVG文件,以便在需要执行它不支持的操作时使用。

谢谢提供的信息。我更倾向于和你做的一样,从一个基本的SVG图开始进行操作。我计划使用id属性(id="NODE23.STATUS_INDICATOR")为元素打标签,并在此基础上进行匹配。我明白XPath的问题。一个绘图可以有任意层次的任意元素嵌套。 - JeffV

0

你也应该看看SVG Salamander,虽然我自己没有使用过,但它具有以下一些特点:

  • "可以轻松访问SVG图形中所有命名形状的索引。"
  • "直接访问场景图树。您可以使用Java命令直接操作它。"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接