帆软report可视化笔记——城市系统
本文为帆软report可视化数据大屏制作过程中遇到的问题以及总结:
一、城市系统
完成效果:
设计思路:热力图展示近几年全国二手房价的变化,排行榜展示每月二手房价的前十城
小技巧:在空白的决策报表中拉一个绝对画布块进来铺满,我们的所有作图均在该画布块上操作,优点是方便我们进行报表间整体复制粘贴,利于后面版面制作的比较多,并且希望能够逐个播放。直接新建一个决策报表,拉一个tab块,在tab块中新建多个版块,将各个版块的画布块复制进来,设置tab轮播即可实现。
一、热力图
- 热力图匹配城市可通过经纬度匹配以及城市匹配,经纬度可在网上找到全国城市经纬度匹配表,建议在相关网站花点小钱购买别人提供的数据,可节约很多时间。在数据库中将经纬度与源数据通过城市匹配更新进去。
UPDATE house_price_like t1 INNER JOIN city_geography t2 on t1.城市=t2.shortName
SET t1.纬度=t2.latitude,t1.经度=t2.longitude;
#house_price_like 源数据表,city_geography 城市经纬度
城市匹配在report中遇到了瓶颈,单纯的经纬度匹配提供经纬度即可,区域匹配要复杂一些。原因是report提供的地图数据只能实现国家下各省的展示或者是某个省下各市的展示。而我的需求是实现全国下各个城市的数据展示。因此此处需要更新地图json数据。此处的json数据利用软件自带的json数据(本地地址位于\FineReport_10.0\webapps\webroot\WEB-INF\assets\map\geographic\world\中国)在特定的地图网站( geojson.io )进行合并。
合并地图json数据步骤:
1、进入网站,先清除原有数据
2、导入report自带的json文件,注,此处只能单个导入。因为我们需要的是中国各个城市的数据,report自带的省份json数据中以及合并好各自省份的城市数据。我们可以直接导入引用,例如导入吉林省-area.json,不是导入吉林省文件夹。此处区分区域area和点point。需要区域地图则都导入area数据即可。不要区域和点交叉,也不可重复导入。四个直辖市的json数据涵盖的是各个区,和城市的行政级别不一样,需要单独处理,到地图网站找到直辖市的json文件下载,再和其他一样导入合并即可。
3、将合并好的json数据复制,粘贴到新建的TXT文档中,另存为UTF-8格式,更改txt文档后缀为json,将该中国城市.json的文件放到\FineReport_10.0\webapps\webroot\WEB-INF\assets\map\geographic\world\目录下,重启report即可读取。注:合并的area文件和point文件不能同时放到该文件夹下,会导致area不能读取。原因不详,还在查找。
经纬度匹配的热力图制作效果
由于数据缺失问题,导致西北部数据少,显示效果不佳。考虑转为区域匹配。利用合并的中国城市-area.json数据实现功能后发现,热力图显示的就是点状数据,并没有城市轮廓的那种感觉。现考虑转为普通地图,通过区域实现。
二、热力图2.0
实现了城市区域划分,并根据房价高低进行颜色区域划分,report地图的图例划分区间最大只有6个,房价分布不均匀,导致呈现效果较差。考虑增加划分区间,通过特效-条件格式进行设置。
通过条件显示,完美实现了显示效果。 关于图形显示的问题,基本都可以通过条件显示实现
现在地图显示的问题解决了,那么如何实现地图的月份轮播,数据刷新。通过SQL查询语句以及监控刷新功能实现。注SQL语句中的a是模板参数,需要先在模板中定义为now()函数并命名为a
1、SQL查询
2、监控刷新
三、轮播条形图
灵感来自网上流传的疫情变化动态图,查看官方文档后发现也能通过report实现
小技巧:排行榜中以及环比等数据由多个模块合成的一个整体,建议拉一个小的绝对画布块进来,这些整体中的各个模块都在这个小画布块中操作。能够实现整个小画布块拖动,减少排版的麻烦以及方便后面的复制
实现原理:SQL查询+监控刷新
条形图设置到这里已经初具模型了,能够实现查询以及跟随月份跳转。但还有个缺陷,就是图形的配色顺序一直不变,我的需求是能够跟随城市的顺序发生变化。这里又需要用到条件显示功能了
单独设置常在前10的十几个城市配色,其他的城市可以通过系列配色让系统自动搭配。不影响总体效果
设置自定义最大值,避免条形图标准不一样,忽长忽短
四、表格数据
需求: 表格的数据也是各个城市对应的每月数据,需要将这些数据月份以及城市对应起来
实现过程:
同样利用前面我们查询前10的SQL语句,拉一个报表块,在表格中插入查询公式,并设置监控刷新,刷新频率设置一样
设置表格数据扩展方向为向下
代表正负的箭头设置方法同样是条件显示,箭头需要自己准备对应的图片
五、时间
月份的跳转,在报表块的表格中插入函数(二手房价格为查询名,月份、城市为字段名)
UNIQUEARRAY(二手房价格.select("月份", 城市 = "北京"))
六、结束
实现功能后即可保存播放,若需要在其他电脑播放,需要位于同一局域网,将浏览器中的网址复制,修改localhost为本机的IP,即可实现区域网播放。个人版report除本机外最多一台电脑播放。建议使用谷歌浏览器,按F11全屏再刷新,才是真正的显示效果。需要提供中国城市json数据,私聊
记录日期:2020年12月26日