楊 微,劉紀平,王 勇
(1.山東農業(yè)大學,山東泰安271018;2.中國測繪科學研究院,北京100039)
Heatmap(熱圖)是一種在一定區(qū)域內大量數據點的某一特征的空間態(tài)勢分布狀況的可視化表達方式。即用熱圖中某一點的位置來映射地理對象的位置,該點的濃度參數來表示地理對象某要素、特征、屬性的數值,并作線性拉伸,在表達地理對象空間位置的基礎上表達出第三維數據值的大小變化特征的方法[1]。
國外對于熱圖的研究應用始于20世紀90年代末,最早作為犯罪案件數量分析顯示工具應用于警力部署方面,隨后迅速應用于政治、經濟、文化、生活、娛樂等領域。目前熱圖已經形成了比較成熟的產業(yè),比如Google公司提供輸入shp數據自動生成熱圖API工具,OpenSignal網站可以提供全球手機基站信號覆蓋熱圖,微軟公司的統(tǒng)計數據訪問量熱圖網站,Colorado公司開發(fā)的關于商業(yè)智能分析的軟件SpatialKey,美國明尼蘇達大學開發(fā)的關于道路安全分析的網站SafeRoadMaps等。
國內對于熱圖的研究應用較少,只由少數技術開發(fā)人員根據國外網站的熱圖示例,在個人博客中進行了簡單的熱圖渲染技術描述,或借助外國網站提供的API生成熱圖,達到數據直觀顯示的效果。另有南京師范大學曾毅、李明銘等將熱圖運用到二手房產價格指數編制研究中,利用熱圖表達二手房價格高低變化的態(tài)勢[1]。但是上述實例只是將熱圖作為一種可視化工具,利用色彩變化表現空間特征冷熱狀態(tài),并沒有形成高效成熟的空間熱度分析方法和完整的技術流程,也沒有將其廣泛應用到空間信息服務的空間分析中。本文通過總結分析國內外現有的熱圖生成方法,對其進行改進,研究熱度分析的過程(從數據采集、數據模型構建、數據存儲管理到熱度分析計算,計算結果可視化等完整的流程)并進行實際應用,形成了一種系統(tǒng)的空間數據分布熱度計算方法。
總結國內外熱圖生成方法大致分為以下3種:影響力疊加法、格網劃分法和滑動窗口法[2-8]。對比這3種方法,第1種方法簡單方便,精度相對較高,使用較多。缺點是繪制熱度圖將每個對象的影響力認為是等大,而實際場景中各對象的影響力很顯然是不一樣的,在一定程度上對精度造成影響。第2種方法雖然簡單,但是利用格網內對象個數進行熱度分析,網格的大小直接影響生成熱度圖精度,而且以格網中心作為格網內所有研究對象的中心生成熱度圖精度更是不高。第3種方法計算量較大,過程復雜,而且假設研究對象都服從二項分布。
綜合上述3種算法,本文采用第1種方法并對其進行改進作為熱度計算方法,具體過程如下。
1)地理映射:將每個地理對象的坐標映射到畫布區(qū)域內,映射公式為

式中,X為映射后屏幕橫坐標;x為對象地理坐標緯度;xmin為所有地理對象緯度最小值;xmax為所有地理對象緯度最大值;Gwidth為畫布寬度;Y為映射后屏幕橫坐標;y為對象地理坐標經度;ymin為所有地理對象經度最小值;ymax為所有地理對象經度最大值;Gheight為畫布高度。
2)求每個對象的影響力:該影響力值作為每個對象的影響范圍的中心點的透明度,計算公式為

式中,V為影響力中心點透明度;v為某對象的待表達特征的值;vmin為所有對象待表達特征的值中最小值;vmax為所有對象待表達特征的值中最大值。
3)繪制灰度圖:按照式(1)式、(2)將所有對象映射到畫布中,并且以坐標點為中心,以V值為中心點透明度繪制一個灰度逐漸變淺的圓。所有的點繪制完成后,畫布中每個像素就有了不同透明度值,形成了灰度圖。
4)顏色渲染:定義一個調色板,色彩由淺到深按照一定的規(guī)律變化。將調色板與步驟3)中繪制出的灰度圖疊加,將灰度圖色彩化,透明度值越大的地方顏色越淺越高亮。疊加的過程是指利用Bitmap ImageAttributes的 SetRemapTable方法將原灰度圖替換成色彩變換的顏色。
空間數據分布的熱度計算需要滿足地理對象映射精準、熱度計算科學合理、熱度生成快速高效、分析結果直觀正確等條件,為政府、人們辦公生活中了解實事動向、分布狀況提供便捷直觀的工具,為決策制定提供依據。其過程可以分解為3個階段:數據準備階段、熱度計算階段和結果分析階段。
數據準備階段主要解決空間數據獲取,存儲前的預處理以及構建方便數據組織管理快速檢索的數據存儲模型等問題。數據準備是熱度分析的基礎,數據質量直接關系熱度分析結果的好壞,數據的快速存儲檢索是熱度快速生成的保障。熱度計算階段主要解決熱度計算方法確定問題,為了使地理對象需要表達的特征值能夠得到有效直觀的表達,滿足人們快速得到有效信息的要求,建立快速便捷的特征值與熱圖的映射計算關系是本階段要解決的關鍵問題,也是空間熱度分析的關鍵。結果分析階段是熱度分析成果展示,熱圖作為最直觀的可視化工具可以為用戶提供有效的全面的信息,但是對熱度進行分析總結,對地理對象分布熱度態(tài)勢進行文字說明,為用戶提供指導性建議也是必不可少的。
在熱圖生成過程中,如果直接運用大量數據進行計算,則運算量巨大,對前端運行環(huán)境要求較高且運算速度較慢。為提高熱度計算的算法效率,使其能夠具有較高的運行速率和較好的運行效果,需要對初始數據集進行預處理,來避免對整個數據集的逐個掃描。
為解決上述問題,本文提出一種基于多級網格的空間聚類方法:首先通過不同分辨率下生成的動態(tài)網格對數據進行預處理,將數據量化映射到網格中,建立快速的空間索引,將網格內部地理對象數量代替對象本身作為熱圖計算的基本單元,將格網內地理對象特征值的均值作為格網屬性值進行熱度分析,最終以網格作為統(tǒng)計單元進行后續(xù)的熱度計算。由于在現實生活中同一較小區(qū)域內的地理對象待分析的屬性通常差距不大(比如北京二環(huán)內各小區(qū)的房價相差不大)且格網劃分較密,因此網格結構能夠有效保存原始數據的特征信息(如對象數量、聚集中心、屬性值等),失真度較小,變形程度也較小,而且采用這種方法能夠有效減少熱度計算時參與運算的數據量,提高熱度分析效率。通過對該方法研究及試驗驗證發(fā)現其具有較高的可用性,并且會作為以后研究的重點,繼續(xù)研究海量數據快速進行熱度分析的方法(見圖1)。

圖1 空間數據分布熱度計算流程圖
本文以全國居民小區(qū)房產價格空間熱度分析為實例,利用網絡爬蟲技術從互聯(lián)網上獲取全國居民小區(qū)的地理位置及實時房價等地理信息,利用SQL Server 2000數據庫進行存儲,在Visual Studio 2005平臺上采用C#GDI+語言進行圖形圖像編程,實現全國房價高低態(tài)勢直觀分布的熱圖,并結合實際情況對所得結果進行驗證,確保熱度分析方法的有效性。該方法可為人們購房決策提供依據。
能夠支持前端熱度高效運算的基礎是空間數據的高效存儲、快速提取及協(xié)同計算,這就對后臺的數據存儲及處理提出了較高要求。同時面對結構復雜的空間數據,對數據合理的存儲和組織調度是提高前端熱度算法運行效率的保障。
互聯(lián)網上爬取數據可以組織成多種形式進行存儲(比如XML、JSON等)。考慮到存儲組織的便捷性,本文所述實例將獲取數據組織成類似POI(Point of Interest,每個POI通常都包含4方面最基本的信息:名稱、類別、經度、緯度)結構的點對象存儲到數據庫中。本試驗數據來源主要從“安居客”網站上爬取,由于全國居民小區(qū)數量巨大,需要設計盡可能簡潔的字段名稱來節(jié)省存儲空間。根據需求,地理對象存儲字段及存儲結構如表1所示。

表1 數據庫設計表
算法實現過程分為后端數據服務和前端熱圖呈現兩個部分。后端數據服務主要是從數據庫中讀取全國小區(qū)數據,并且按照當前分辨率劃分格網,進行聚類計算,將小區(qū)數據轉化成格網作為前端熱度計算的基本單元。前端熱圖計算呈現將后端提供的統(tǒng)計格網作為一個地理對象映射到顯示區(qū)域內,并且在映射過程中按照對象特征值的大小計算影響力繪制到顯示區(qū)域內,生成灰度圖。然后按照提前定義的調色板將灰度圖與調色板疊加,生成色彩變化鮮明的熱圖。該部分為熱度分析計算的核心,關鍵代碼如下:


圖2為全國居民小區(qū)價格熱度分析圖,由圖可以看出目前該系統(tǒng)共統(tǒng)計全國小區(qū)數量110 423個,全國房價較高地區(qū)集中在北京、上海、廣州、深圳、天津、南京、成都等一線城市。圖3為北京市房產價格熱度分析圖,圖中北京市一、二、三、四環(huán)內呈高亮顏色切分布較均勻,表示該地區(qū)房價最高且價格相差不多;五環(huán)內顏色稍淺且分布不均,說明四環(huán)外五環(huán)內房價稍低且小區(qū)數量較四環(huán)內相對少些;此外房山區(qū)和通州地區(qū)有兩個高亮點。上述情況與現實中房價狀況完全相符,可見該種分析方法是合理的。

圖2 全國居民小區(qū)價格熱度分析圖
本文所述的空間熱度分析方法方便簡單,能夠直觀地反映地理對象某一特征的空間分布態(tài)勢,解決了空間數據存儲、管理、檢索,熱圖計算、快速生成等問題,并且通過具體實例證明了該方法的可靠性。空間熱度分析能夠能幫助用戶更好地認知空間環(huán)境,為人們工作生活中重大決策提供依據。

圖3 北京市居民小區(qū)價格熱度分析圖
[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的城市社會空間研究——以上海市中心城區(qū)為例[J].地理科學,2010,30(1):22-28.
[7]徐顧偉,汪浩,秦永健,等.基于移動社交網絡的空間資源利用分析系統(tǒng)[J].計算機應用研究,2011,8(28):2958-2960.
[8]劉啟亮,鄧敏,石巖,等.一種基于多約束的空間聚類方法[J],測繪學報,2011,40(4):509-516.