可视化方案的实践--图库模

我们在工作中,经常会遇到一些需要可视化展示的地方,如电力,石油,热力等等,需要有一个图,然后在图上我们来展示诸多的信息,甚或需要在图上将展示进行变化(如开关开合,管道断开,或展示此位置的电流电压或热量流速等),这样的系统,对我们来说,数据提取等都是简单的,关键是如何将信息展示到图上,与图配合起来,进行一个直观的展示。此类系统难点有二:

1. 如何得到此图,从客户得到的图多是cad等,我们很难直接应用到我们的系统中。
2. 如何将我们的信息展示到图上呢?将图为底,在其上再刷新一层数据(如果图要放缩移动怎么办)?还是将数据直接嵌入到图中(数据变化,如何触发图的变化,刷新太多会不会有效率问题)?

逐个来谈吧。

针对第一点,我想大家都有自己的理解了,svg作为一个普适性图形格式,极好的适合我们的应用场景。其是矢量图,保证了放缩不失真,基于xml,可以很好的,将图元与我们的业务数据绑定。如果你没有特殊的要求(甚或即使你有特殊要求,也可以通过在xml中添加自定义属性来满足),我想这种格式无疑是你最好的选择。在做系统的时候,其实也了解到,有一些单位做的系统,会用自己独特的图形格式,也可以理解,这就需要投入更多的人力来完成这个图形的解析及绘制工具,如果是小项目而公司的长久产品的话,恐怕不值得。
谈谈我们自己的实现方式吧,我们做了一个svg的编辑工具,可以自已来完成图形的绘制,同时,可以针对业务对图形进行属性的写入。姑且称之为一个作图软件吧,这个软件可单独成包安装,也可以嵌入到你的系统中,用来进行绘图使用,基于java,最终的产出是一个svg格式的图片。一般不做这种系统的话,可以很少会触及这种工具软件的开发,如矩阵的变化,图形的移动,线的连接等等,还是太复杂了,做应用软件的人,更多的喜欢去进行业务上的思考,如数据流向,存取方式,对这种作图类的工具软件,可以兴趣不大,但深入进去,还是挺好玩的,可以把你原来的一些高数及几何知识捡起来。展示一下效果吧:

届时,我们可以在自已的系统里,通过解析这个svg文件,取出各个图元的唯一标识,然后,与业务数据进行绑定,即可以根据业务进行开关开合或测试数据的展示了。

针对第二点,其实上面也点了一下我们的处理方式。原来的处理方式,是将数据绑定,集中到这个绘图软件中,其实这样不是太好,因为还是希望保证绘图软件只做绘图这一件事。不想证它再去访问业务系统或业务数据库。变通一下,我们可以通过将最终的svg文件作为共享源,业务系统中加载这个文件,并提供对这个文件的解析,然后将其内的图元唯一标识与我们的业务数据绑定在一起,实现图库模的一体化。

大体说这些吧,其实这种系统还是难在图怎么画,及业务怎么刷新上。我们都是基于java的,所以做起来平台比较统一,但是毕竟现在web也可以加载svg,这一定程序上也使得svg可能跨越不同的开发平台。

大体的技术:绘图软件基于java,swing(javafx也可以直接嵌入这个swing),界面大体如下,要是加点皮肤的效果会更好一些:

要是不同的平台,可以考虑一下本平台内有无svg处理的库,java这个领域还是swing的处理库比较权威一些,javafx都不是太官方,功能上太弱,但是如果你用javafx,可以将swing加载svg后的panel嵌入到javafx中,我们正在用,效果也很好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值