杨 微,刘纪平,王 勇
(1.山东农业大学,山东泰安271018;2.中国测绘科学研究院,北京100039)
Heatmap(热图)是一种在一定区域内大量数据点的某一特征的空间态势分布状况的可视化表达方式。即用热图中某一点的位置来映射地理对象的位置,该点的浓度参数来表示地理对象某要素、特征、属性的数值,并作线性拉伸,在表达地理对象空间位置的基础上表达出第三维数据值的大小变化特征的方法[1]。
国外对于热图的研究应用始于20世纪90年代末,最早作为犯罪案件数量分析显示工具应用于警力部署方面,随后迅速应用于政治、经济、文化、生活、娱乐等领域。目前热图已经形成了比较成熟的产业,比如Google公司提供输入shp数据自动生成热图API工具,OpenSignal网站可以提供全球手机基站信号覆盖热图,微软公司的统计数据访问量热图网站,Colorado公司开发的关于商业智能分析的软件SpatialKey,美国明尼苏达大学开发的关于道路安全分析的网站SafeRoadMaps等。
国内对于热图的研究应用较少,只由少数技术开发人员根据国外网站的热图示例,在个人博客中进行了简单的热图渲染技术描述,或借助外国网站提供的API生成热图,达到数据直观显示的效果。另有南京师范大学曾毅、李明铭等将热图运用到二手房产价格指数编制研究中,利用热图表达二手房价格高低变化的态势[1]。但是上述实例只是将热图作为一种可视化工具,利用色彩变化表现空间特征冷热状态,并没有形成高效成熟的空间热度分析方法和完整的技术流程,也没有将其广泛应用到空间信息服务的空间分析中。本文通过总结分析国内外现有的热图生成方法,对其进行改进,研究热度分析的过程(从数据采集、数据模型构建、数据存储管理到热度分析计算,计算结果可视化等完整的流程)并进行实际应用,形成了一种系统的空间数据分布热度计算方法。
总结国内外热图生成方法大致分为以下3种:影响力叠加法、格网划分法和滑动窗口法[2-8]。对比这3种方法,第1种方法简单方便,精度相对较高,使用较多。缺点是绘制热度图将每个对象的影响力认为是等大,而实际场景中各对象的影响力很显然是不一样的,在一定程度上对精度造成影响。第2种方法虽然简单,但是利用格网内对象个数进行热度分析,网格的大小直接影响生成热度图精度,而且以格网中心作为格网内所有研究对象的中心生成热度图精度更是不高。第3种方法计算量较大,过程复杂,而且假设研究对象都服从二项分布。
综合上述3种算法,本文采用第1种方法并对其进行改进作为热度计算方法,具体过程如下。
1)地理映射:将每个地理对象的坐标映射到画布区域内,映射公式为
式中,X为映射后屏幕横坐标;x为对象地理坐标纬度;xmin为所有地理对象纬度最小值;xmax为所有地理对象纬度最大值;Gwidth为画布宽度;Y为映射后屏幕横坐标;y为对象地理坐标经度;ymin为所有地理对象经度最小值;ymax为所有地理对象经度最大值;Gheight为画布高度。
2)求每个对象的影响力:该影响力值作为每个对象的影响范围的中心点的透明度,计算公式为
式中,V为影响力中心点透明度;v为某对象的待表达特征的值;vmin为所有对象待表达特征的值中最小值;vmax为所有对象待表达特征的值中最大值。
3)绘制灰度图:按照式(1)式、(2)将所有对象映射到画布中,并且以坐标点为中心,以V值为中心点透明度绘制一个灰度逐渐变浅的圆。所有的点绘制完成后,画布中每个像素就有了不同透明度值,形成了灰度图。
4)颜色渲染:定义一个调色板,色彩由浅到深按照一定的规律变化。将调色板与步骤3)中绘制出的灰度图叠加,将灰度图色彩化,透明度值越大的地方颜色越浅越高亮。叠加的过程是指利用Bitmap ImageAttributes的 SetRemapTable方法将原灰度图替换成色彩变换的颜色。
空间数据分布的热度计算需要满足地理对象映射精准、热度计算科学合理、热度生成快速高效、分析结果直观正确等条件,为政府、人们办公生活中了解实事动向、分布状况提供便捷直观的工具,为决策制定提供依据。其过程可以分解为3个阶段:数据准备阶段、热度计算阶段和结果分析阶段。
数据准备阶段主要解决空间数据获取,存储前的预处理以及构建方便数据组织管理快速检索的数据存储模型等问题。数据准备是热度分析的基础,数据质量直接关系热度分析结果的好坏,数据的快速存储检索是热度快速生成的保障。热度计算阶段主要解决热度计算方法确定问题,为了使地理对象需要表达的特征值能够得到有效直观的表达,满足人们快速得到有效信息的要求,建立快速便捷的特征值与热图的映射计算关系是本阶段要解决的关键问题,也是空间热度分析的关键。结果分析阶段是热度分析成果展示,热图作为最直观的可视化工具可以为用户提供有效的全面的信息,但是对热度进行分析总结,对地理对象分布热度态势进行文字说明,为用户提供指导性建议也是必不可少的。
在热图生成过程中,如果直接运用大量数据进行计算,则运算量巨大,对前端运行环境要求较高且运算速度较慢。为提高热度计算的算法效率,使其能够具有较高的运行速率和较好的运行效果,需要对初始数据集进行预处理,来避免对整个数据集的逐个扫描。
为解决上述问题,本文提出一种基于多级网格的空间聚类方法:首先通过不同分辨率下生成的动态网格对数据进行预处理,将数据量化映射到网格中,建立快速的空间索引,将网格内部地理对象数量代替对象本身作为热图计算的基本单元,将格网内地理对象特征值的均值作为格网属性值进行热度分析,最终以网格作为统计单元进行后续的热度计算。由于在现实生活中同一较小区域内的地理对象待分析的属性通常差距不大(比如北京二环内各小区的房价相差不大)且格网划分较密,因此网格结构能够有效保存原始数据的特征信息(如对象数量、聚集中心、属性值等),失真度较小,变形程度也较小,而且采用这种方法能够有效减少热度计算时参与运算的数据量,提高热度分析效率。通过对该方法研究及试验验证发现其具有较高的可用性,并且会作为以后研究的重点,继续研究海量数据快速进行热度分析的方法(见图1)。
图1 空间数据分布热度计算流程图
本文以全国居民小区房产价格空间热度分析为实例,利用网络爬虫技术从互联网上获取全国居民小区的地理位置及实时房价等地理信息,利用SQL Server 2000数据库进行存储,在Visual Studio 2005平台上采用C#GDI+语言进行图形图像编程,实现全国房价高低态势直观分布的热图,并结合实际情况对所得结果进行验证,确保热度分析方法的有效性。该方法可为人们购房决策提供依据。
能够支持前端热度高效运算的基础是空间数据的高效存储、快速提取及协同计算,这就对后台的数据存储及处理提出了较高要求。同时面对结构复杂的空间数据,对数据合理的存储和组织调度是提高前端热度算法运行效率的保障。
互联网上爬取数据可以组织成多种形式进行存储(比如XML、JSON等)。考虑到存储组织的便捷性,本文所述实例将获取数据组织成类似POI(Point of Interest,每个POI通常都包含4方面最基本的信息:名称、类别、经度、纬度)结构的点对象存储到数据库中。本试验数据来源主要从“安居客”网站上爬取,由于全国居民小区数量巨大,需要设计尽可能简洁的字段名称来节省存储空间。根据需求,地理对象存储字段及存储结构如表1所示。
表1 数据库设计表
算法实现过程分为后端数据服务和前端热图呈现两个部分。后端数据服务主要是从数据库中读取全国小区数据,并且按照当前分辨率划分格网,进行聚类计算,将小区数据转化成格网作为前端热度计算的基本单元。前端热图计算呈现将后端提供的统计格网作为一个地理对象映射到显示区域内,并且在映射过程中按照对象特征值的大小计算影响力绘制到显示区域内,生成灰度图。然后按照提前定义的调色板将灰度图与调色板叠加,生成色彩变化鲜明的热图。该部分为热度分析计算的核心,关键代码如下:
图2为全国居民小区价格热度分析图,由图可以看出目前该系统共统计全国小区数量110 423个,全国房价较高地区集中在北京、上海、广州、深圳、天津、南京、成都等一线城市。图3为北京市房产价格热度分析图,图中北京市一、二、三、四环内呈高亮颜色切分布较均匀,表示该地区房价最高且价格相差不多;五环内颜色稍浅且分布不均,说明四环外五环内房价稍低且小区数量较四环内相对少些;此外房山区和通州地区有两个高亮点。上述情况与现实中房价状况完全相符,可见该种分析方法是合理的。
图2 全国居民小区价格热度分析图
本文所述的空间热度分析方法方便简单,能够直观地反映地理对象某一特征的空间分布态势,解决了空间数据存储、管理、检索,热图计算、快速生成等问题,并且通过具体实例证明了该方法的可靠性。空间热度分析能够能帮助用户更好地认知空间环境,为人们工作生活中重大决策提供依据。
图3 北京市居民小区价格热度分析图
[1]曾毅,高斌,李铭明,等.一种HeatMap技术可视化GIS三维数据方法[J].电脑编程技巧与维护,2011(22):120-122.
[2]WANG G.C#热图生成(一)——with.NET 2.0[EB/OL].2010-05-13.http:∥www.cnblogs.com/Gildor/archive/2010/05/13/1734649.html.
[3]WANG G.C#热图生成(二)——with Silverlight[EB/OL].2010-05-18.http:∥www.cnblogs.com/Gildor/archive/2010/05/18/1738225.html.
[4]WANG G.C#热图生成(三)——with Silverlight改进热图显示[EB/OL].2010-05-21.http:∥archive.cnblogs.com/a/1740987/
[5]火丁笔记.浅谈 Heatmap[EB/OL].2011-01-04.http:∥huoding.com/2011/01/04/39.
[6]宣国富,徐建刚,赵静.基于ESDA的城市社会空间研究——以上海市中心城区为例[J].地理科学,2010,30(1):22-28.
[7]徐顾伟,汪浩,秦永健,等.基于移动社交网络的空间资源利用分析系统[J].计算机应用研究,2011,8(28):2958-2960.
[8]刘启亮,邓敏,石岩,等.一种基于多约束的空间聚类方法[J],测绘学报,2011,40(4):509-516.