thematic工具的重构
前面说的thematic出图流程有一个明显诟病,从软件开发的角度上看相当的不成熟,就是一个纯业务流程的产物,前后端耦合极高,再加上很多很多业务化服务希望能自动集成出图的结果,所以一直有重构的想法,并让其更加易用、易扩展。之后幸运的看到了这么一篇文章精读《前端与 BI》,让我对整个流程有了新的想法。
前面说的thematic出图流程有一个明显诟病,从软件开发的角度上看相当的不成熟,就是一个纯业务流程的产物,前后端耦合极高,再加上很多很多业务化服务希望能自动集成出图的结果,所以一直有重构的想法,并让其更加易用、易扩展。之后幸运的看到了这么一篇文章精读《前端与 BI》,让我对整个流程有了新的想法。
在气象行业,将各类型数据保存成图片,附着在各类文档材料中是个很常见的需求,其实行业内有些成熟的软件去处理这个事情,比方说常用的NCL,python中也有matplotlib包来绘制各类型的图片。从系统的角度上来说,业务人员会希望有一个交互性更好的平台来实现出图。
在Cesium中对点、线、面不同类型feature做贴地的具体操作,就不再赘述了,我们在二维的地图sdk使用过程中经常会开发一些自定义图层,大多基于canvas来实现,例如热力图、色板图、echarts图等,像leaflet中通常是一个新的dom来与主地图做同步,mapbox等新生代选手则可以直接添加到主地图的dom中。
对于这类自定义的canvas图层,在cesium中想要贴在地形之上进行展示,其实也很简单,GroundPrimitive配合上自定义material就好了,具体过程可以参考代码的注释。
在四步走,墨迹天气雷达数据可视化指南这篇文章中,提到了用矢量瓦片代替传统传统栅格图像可视化方案,可以达到更流程的性能,更高清的数据展示,更灵活的样式表达。感觉挺有意思,同时也为了考察这么做的成本,就试着还原做了下。
从文章来看整个过程总结起来就是准备数据geojson
,切成pbf
或者mbtiles
在 mapbox 中展示。
在地理信息行业中,我们常遇见的数据中有这么两类:
前端渲染
。之前写过一个基于 Leaflet 的标注点图层插件,Leaflet.Canvas-Marker-Layer,今天简单的说一下为什么需要用到它。在 Leaflet 中如果你需要渲染 marker,有两种方式:
Tilestrata的插件开发基本围绕着生命周期各个阶段展开,如果要开发一个自己的插件,首先想清楚插件的功能属于生命周期的哪个阶段,依据官方规定好的该阶段代码结构,写好插件内容,在服务端利用use
进行注册就好。个人觉得Tilestrata
吸引人的一个地方就是在于插件机制非常的灵活和便捷,十分好上手。
简单来说Tilestrata就是一个瓦片地图服务器。根据其自身的介绍,它有如下的特点:零配置,简洁,测试覆盖率高,性能高,拓展性强。可以通过TileStrata Balancer实现负载均衡,无缝伸缩。可以通过内置控制台去调试查看渲染时间。
tilestrata-disk插件可以在磁盘中存储/检索瓦片。它可以兼顾瓦片缓存和瓦片提供两个功能,代码虽简单,但是功能十分全面,个人感觉非常的实用,很值得推荐。
用它来缓存瓦片时,一定要为每个图层使用不同的目录(例如:”tiles/layer_a”, “tiles/layer_b”)。如果设置了maxage
参数,插件会检查瓦片的最近一次修改时间,如果间隔过长,将返回null
。如果 设置maxage=0
,就相当于没有开启缓存功能。
tilestrata-etag插件可以在 tilestrata 的请求中设置 ETag,可以让服务缓存变得更加高效可控,节省带宽。如果客户端的 ETag 的版本和服务器要发送的一致,则可以直接使用缓存中的数据,不再重新发送数据。