热力图是众多空间信息表达中的一种,通过热力图可以直观地了解地理点位的聚集情况,从宏观上了解整个热度状况。如果加上时间序列或者类别序列,那么就可以查看到热力变化的走向和预测发展趋势。
热力图可以说是一种密度图,一般使用具备显著颜色差异的方式来呈现数据效果。值得一提的是,热力图最终效果常常优于离散点的直接显示,可以在二维平面或者地图上直观地展现空间数据的疏密程度或频率高低。一般使用红色表示最密集的部分,橙色、黄色次之,绿色则为稀疏部分(图6-18)。
热力图在很多方面都有广泛应用。例如,网站站长统计来访者的区域位置,交通部门统计道路的拥挤程度,景区管理部门统计景区不同地点的游客拥挤程度等。
OpenLayers3同样为开发者提供了相应的API来实现热力图的功能。
图6-18 热力图效果(颜色最深的为红色,由橙色、黄色至绿色,图中颜色变淡)
1.数据准备
读者可以访问USGS(美国地质勘探局,全称United States Geological Survey)官网下载相关测试数据(地址:https://earthquake.usgs.gov/earthquakes/map),点击“Download”,下载KML格式数据。
2.编写代码
首先,创建一个Heatmap图层,用来存放热力图矢量数据,热力图的数据源就是上面下载的地震数据KML文件,然后需要配置热力图的热点半径和模糊尺寸。并且需要为矢量数据源添加addfeature事件监听,添加权重信息用于同步渲染热点图。代码如下:(www.xing528.com)
图6-19 下载数据界面
【说明】以上代码中,关键部分是使用ol.layer.Heatmap创建热点图层对象,source属性为数据源,在开发中可以动态获取服务器中的数据;opacity为热力图的透明度,取值范围为(0,1);radius属性为热力图的热点半径;blur属性为热力图的模糊尺寸。在热力图层的addfeature事件中,首先在KML文件中提取出name属性(图6-20给出了此KML文件的name属性格式);进而提取出震级信息,event.feature.set()方法则设置了热力图的权重属性值,第一个参数weight就是权重,第二个参数通过震级减去相应的数值以获取比较好的权重渲染效果,用户可以根据实际需求调整数值进行渲染。
图6-20 数据具体内容
另外,在官方API的介绍中,还有很多参数可以进行设置,用以实现更好的效果。例如,extent属性用来设置图层渲染的边界范围,在范围之外的部分不会渲染和显示;gradient属性用来设置颜色梯度,用户可以传入一个CSS颜色字符串数组进行渲染,默认值为[ˈ#00fˈ,ˈ#0ffˈ,ˈ#0f0ˈ,ˈ#ff0ˈ,ˈ#f00ˈ];shadow属性则用来设置阴影大小。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。