楊衛(wèi)寧,鄒維寶
(長安大學 地質工程與測繪學院,西安 710054)
由于城市化進程加劇以及汽車數(shù)量增加,城市交通問題日益嚴重[1],通過分析各種空間數(shù)據(jù)解決交通問題是當前研究的熱點.出租車提供廣泛且靈活的交通運輸服務,是城市交通的重要組成部分.出租車軌跡數(shù)據(jù)記錄了城市道路與居民的流動信息,對出租車軌跡數(shù)據(jù)的挖掘分析有助于城市智慧交通[2,3]的建設,有利于制定合理的城市交通政策、合理配置城市公共交通、緩解城市交通擁堵.
隨著經濟進步與空間信息技術的發(fā)展,出租車軌跡數(shù)據(jù)的規(guī)模呈指數(shù)級增長.為了存儲和分析生成的大量數(shù)據(jù),需要一種新的架構來處理出租車軌跡數(shù)據(jù).大數(shù)據(jù)技術的發(fā)展,為快速、有效地處理大規(guī)??臻g數(shù)據(jù)提供了可能.Spark 是Hadoop 生態(tài)系統(tǒng)中新興的杰出分布式計算框架,具有高容錯性和高可擴展性.利用Spark 框架的并行存儲、并行計算與內存計算的優(yōu)勢,可以精確有效地分析和研究城市交通問題,實現(xiàn)大數(shù)據(jù)驅動的智慧交通.
高效益的駕駛員擁有豐富的駕駛經驗與運營策略[4],獲取高效益的出租車軌跡數(shù)據(jù)對研究更有意義.本文提出一種效益指數(shù)模型用于對出租車效益進行量化排序,提取高效益出租車作為研究對象.在此基礎上設計了一個基于Spark 的出租車軌跡處理與可視化平臺,可以快捷有效地對高效益出租車的運營模式與載客策略進行可視分析.該平臺開發(fā)對出租車軌跡數(shù)據(jù)處理和可視化具有以下貢獻:
(1)將Spark 與GeoTools(Java GIS 工具包)相結合實現(xiàn)對出租車軌跡數(shù)據(jù)的快速處理與空間分析計算;
(2)設計了基于蜂窩形格網與DBSCAN 算法的出租車載客熱點可視化方法,通過時間約束,多視角展示載客熱點的變化趨勢;
(3)提出基于緩沖區(qū)的交互式軌跡查詢算法,該算法通過時間與空間約束,將符合查詢條件的軌跡數(shù)據(jù)信息可視化.
基于位置的服務(Location Based Services,LBS)的快速發(fā)展,通過出租車軌跡數(shù)據(jù)能夠很好的反映出出租車的運營規(guī)律、城市交通狀況以及居民出行特征.不同領域的研究人員對出租車軌跡進行了各種研究.
在出租車運營分析方面,Weng JC 等[5]提出基于浮動車數(shù)據(jù)的出租車運營分析模型(包括載客里程、里程利用率、駕駛員工作強度等參數(shù)).Liu L 等[4]通過分析出租車GPS 數(shù)據(jù)了解出租車的運營模式,對駕駛員進行分類,揭示收益高的出租車的運營時空特征.Zhang DQ 等[6]通過挖掘出租車GPS 軌跡,從尋客策略、載客運營策略以及服務區(qū)域偏好三個角度研究出租車服務策略.
在出租車熱點分析方面,Liu DY 等[7]開發(fā)了SmartAdP可視化分析系統(tǒng),利用出租車軌跡數(shù)據(jù)用于確定廣告牌放置的熱點區(qū)域.Chang HW 等[8]預測與時間、天氣和出租車位置相關的載客需求分布,通過K-means、層次聚類和DBSCAN 進行熱點分析,改善出租車運營管理.B-Planner 系統(tǒng)[9]使用出租車軌跡數(shù)據(jù)提取乘客上下車熱點用于杭州市夜間公交路線規(guī)劃.
在可視分析方面,Wang ZC 等[10]設計了一個基于GPS軌跡的城市交通擁堵的交互式可視化系統(tǒng),用于探索和分析城市的交通狀況.牛丹丹等[11]通過處理出租車軌跡數(shù)據(jù),從時間、空間維度對乘客出行特征進行可視分析.Huang XK 等[12]提出的可視化方法TrajGraph,通過圖結構存儲和可視化出租車軌跡記錄的交通信息,研究城市的交通模式.
大數(shù)據(jù)技術的應用,可以快速、有效地處理大規(guī)??臻g數(shù)據(jù).近些年出現(xiàn)了許多處理空間數(shù)據(jù)的分布式計算框架,如基于Hadoop 擴展的SpatialHadoop[13]與Hadoop-GIS[14],基于Spark 擴展的GeoSpark[15]、LocationSpark[16]與Simba[17]等.但Hadoop MapReduce計算模型會將中間結果輸出到磁盤上,產生大量I/O操作,難以實現(xiàn)大規(guī)??臻g數(shù)據(jù)處理.Spark 框架的性能要優(yōu)于Hadoop 框架,通過使用RDD,其基于內存的并行計算架構性能更優(yōu).
在城市交通領域,譚亮等[18]基于Spark Streaming和Kafka 構建了一個實時交通數(shù)據(jù)處理平臺,處理雙基基站采集的數(shù)據(jù),用于解決城市交通問題.段宗濤等[19]通過Spark 框架挖掘出租車乘客出行特征.Mao B 等[20]基于Spark 處理、挖掘時空數(shù)據(jù),提出了一種基于八叉樹的時空數(shù)據(jù)三維體繪制可視化框架,對紐約市2009-2015 年的出租車軌跡數(shù)據(jù)進行了可視化.
針對上述研究成果,本文結合Spark 框架的優(yōu)越計算性能設計開發(fā)出租車軌跡處理與可視化平臺.
Spark 是一個類Hadoop 的開源分布式計算框架,擴展了廣泛使用的MapReduce 計算模型,用于構建大型的、低延遲的數(shù)據(jù)分析應用程序.其主要特點是能夠在內存中進行讀寫計算,提升計算性能.
彈性分布式數(shù)據(jù)集(Resilient Distributed Dataset,RDD)是Spark 中的基本數(shù)據(jù)抽象,代表一個只讀、可分區(qū)、可并行計算的數(shù)據(jù)集合.RDD 可以全部或部分地緩存在內存中,在多次計算中重用;通過實時分發(fā)任務到所有節(jié)點,可以保證計算的并行性.RDD 支持兩種類型的操作算子:轉化操作與行動操作.轉化操作會由一個RDD 計算生成一個新的RDD,行動操作會對RDD 計算出一個結果并將結果輸出Spark 系統(tǒng).
Spark SQL 是Spark 用來處理結構化數(shù)據(jù)的一個模塊,在數(shù)據(jù)存儲上采用列存的方式優(yōu)化數(shù)據(jù)存儲[21],可以更便捷地處理出租車軌跡數(shù)據(jù).Spark SQL 的核心編程抽象為DataFrame,一種以RDD 為基礎的分布式數(shù)據(jù)集,記錄有數(shù)據(jù)的結構信息.同時提供SQL 語句對數(shù)據(jù)進行操作與管理,以DataFrame 形式返回結果.
當前城市中頻繁出現(xiàn)的出租車拒載、空載等現(xiàn)象,導致出租車運營成本增加,城市公共交通運行效率低下,乘客出行需求得不到滿足.針對這一問題,如何篩選出高效益的出租車滿足本文研究的數(shù)據(jù)需求,是當前所要解決的問題.
Qin GY 等[22]發(fā)現(xiàn)縮短搜索時間并提高行駛速度有利于增加收入,孫飛等[23]發(fā)現(xiàn)出租車單次里程長對應著單程收入高,但若要效益高同時還要考慮尋客時間內的開銷.本文將單次載客軌跡與相鄰前一段尋客軌跡相結合作為一次有效行程,建立了出租車效益指數(shù)模型.效益指數(shù)F是關于出租車的單次行程收入I、單次里程利用率K1與單次尋客時長T0(min)的函數(shù),有利于對出租車效益進行量化排序:
出租車的單次行程收入I根據(jù)某城市的出租車計價標準確定:
其中,VS表示出租車起步價格;V表示出租車超里程單價(RMB/km);DS表示出租車的起步里程(km);D1表示出租車載客里程(km).
里程利用率K1是指載客里程與現(xiàn)實里程之比:
其中,D0表示出租車尋客里程(km).
一般情況下,尋客時間越長,認為此次載客的效率越低,本文采用尋客時長的倒數(shù)即T0對效益計算加以時間控制.可以得到效益指數(shù)的計算公式:
計算某輛出租車一天的效益指數(shù)如下所示:
其中,n表示當天該出租車的載客次數(shù).
由于瀏覽器軟件具有高擴展、易維護、不需要安裝特定軟件等優(yōu)勢,本文采用B/S 軟件技術架構進行平臺構建,開發(fā)了一個集大數(shù)據(jù)處理、可視化和交互于一體的“出租車軌跡處理與可視化平臺”,平臺架構如圖1 所示.
圖1 平臺概覽圖
在大數(shù)據(jù)處理階段,平臺基于Spark 框架處理原始數(shù)據(jù),經過數(shù)據(jù)預處理及效益指數(shù)模型計算后提取出高效益出租車軌跡數(shù)據(jù),計算高效益出租車特征數(shù)據(jù)作為后續(xù)可視化的數(shù)據(jù)源.
可視化階段由3 部分組成:(1)運營特性分析將高效益出租車特征數(shù)據(jù)進行統(tǒng)計計算以圖表形式進行可視化;(2)載客熱點可視化結合地圖數(shù)據(jù)與載客點數(shù)據(jù),允許用戶使用蜂窩形格網與DBSCAN 算法對不同時段高效益出租車載客點進行熱點可視化;(3)對于軌跡查詢與可視化,提取高效益出租車單條載客軌跡的軌跡相關因子并在地圖上進行軌跡可視化.
本文利用Spark RDD 和Spark SQL 處理出租車軌跡大數(shù)據(jù),處理流程如圖2 所示,包括數(shù)據(jù)讀取與封裝、數(shù)據(jù)預處理、高效益出租車提取以及可視化特征數(shù)據(jù)集計算.
數(shù)據(jù)讀取與封裝,將某一天的出租車軌跡數(shù)據(jù)以字符串形式讀取至RDD 中,構建Taxi 類進行封裝,擴展RDD 為TaxiRDD,將初始RDD 轉化為TaxiRDD.
數(shù)據(jù)預處理,將TaxiRDD 導入建立的Spark SQL數(shù)據(jù)表中,Spark SQL 會根據(jù)TaxiRDD 自動分配字段名稱及數(shù)據(jù)類型,使用SQL 語句對數(shù)據(jù)進行預處理,包括剔除異常數(shù)據(jù)、數(shù)據(jù)去重等操作.
高效益出租車提取,將預處理完成的DataFrame導出為TaxiRDD,運用Spark 提供的轉化算子計算出租車效益指數(shù)并排序,提取高效益出租車并輸出高效益出租車軌跡數(shù)據(jù)TaxiRDD<List<Taxi>>.計算過程如算法1 所示.
圖2 Spark 處理流程圖
?
可視化特征數(shù)據(jù)集計算,對高效益出租車軌跡數(shù)據(jù)TaxiRDD<List<Taxi>>中軌跡點計算得到高效益出租車可視化特征數(shù)據(jù)集.數(shù)據(jù)集保存至本地文件夾作為后續(xù)可視分析的數(shù)據(jù)源.
對高效益出租車的運營特性進行分析,可以為廣大出租車駕駛員的運營策略提供幫助.運營特性主要包括高效益出租車每小時載客量分布、單次尋客時長分布、單次載客時長分布、單次載客距離分布等特性.平臺提供日期范圍選擇,允許查詢任意日期范圍的高效益出租車運營特性.利用Spark 讀取選中日期的可視化特征數(shù)據(jù)集,進行統(tǒng)計計算,計算結果以JSON 格式傳輸至前端,使用ECharts[24]在瀏覽器界面實現(xiàn)交互式圖表展示.
本功能提供日期范圍選擇與時間范圍選擇,支持蜂窩形格網與DBSCAN 空間聚類算法計算高效益出租車載客熱點.
格網結構有利于分析大型空間數(shù)據(jù)集,而蜂窩結構是覆蓋二維平面的最佳拓撲結構,六邊形也是邊數(shù)最多的無縫多邊形.本文采用蜂窩結構的格網可視化載客點分布狀況,實現(xiàn)過程如下:
(1)利用ArcGIS 構建蜂窩結構圖層;
(2)利用GeoTools 將蜂窩單元讀取為若干Polygon幾何對象,將載客點讀取為若干Point 幾何對象;
(3)使用Spark 對Polygon 與Point 進行“Contains”空間拓撲運算,計算結果生成shp 文件(圖3(a));
(4)將shp 文件使用ArcGIS Server 進行發(fā)布,即可在瀏覽器上進行可視化(圖3(b)).
圖3 蜂窩形格網載客熱點可視化
但基于網格的載客熱點計算在一定程度上降低了熱點計算的準確性.故在此基礎上實現(xiàn)了DBSCAN 算法計算載客熱點.DBSCAN 是基于密度的空間聚類算法,能夠將具有高密度的區(qū)域劃分為簇,并可在帶有噪聲的空間數(shù)據(jù)中發(fā)現(xiàn)任意形狀的聚類.設定合適的Eps 鄰域和最小包含點數(shù)MinPts 進行聚類是DBSCAN算法的核心.根據(jù)文獻[25]對出租車熱點區(qū)域范圍的定義,將Eps 設定為50 m.在Eps 參數(shù)確定的情況下,MinPts取值過小將會產生過多類簇,反之將會忽略大量非噪聲對象.結合本文研究數(shù)據(jù),經過多次試驗,發(fā)現(xiàn)MinPts 設置為20 最為合適.
本文在Spark 中實現(xiàn)了基于KD-Tree 最鄰近搜索的DBSCAN 空間聚類算法,用于改進由于數(shù)據(jù)量較大造成聚類時間長的問題.設定參數(shù)Eps:50 m,MinPts:20,計算得到聚類結果后,將聚類結果中的每個類中心作為核心聚類點,進行逆地址解析.
城市交通中,不同區(qū)域間通常存在多條可達路徑,各路徑蘊含豐富的信息[26],可用于城市道路交通分析.本功能提供某一天的軌跡查詢請求,同時設置空間約束,提出了基于緩沖區(qū)的交互式軌跡查詢算法.計算過程如算法2 所示.
?
?
采用多視圖協(xié)同交互的方法,當鼠標懸停在地圖上某一區(qū)域,單擊并拖動鼠標在地圖上繪制O/D點緩沖區(qū)(圖4),拖動過程中控制面板文本框會顯示當前繪制的O/D點坐標與緩沖區(qū)距離.將控制面板中文本框內容作為輸入數(shù)據(jù).查詢結果使用天地圖JavaScript API 進行軌跡可視化.
實驗用到的數(shù)據(jù)集為成都市2014 年8 月17 日至23 日共13 000 輛出租車的運營軌跡,每天的數(shù)據(jù)記錄時間為6:00-24:00,數(shù)據(jù)總量為18.3 GB.數(shù)據(jù)集以天為單位并采用txt 格式進行存儲,每個軌跡點包含以下屬性:出租車編號,緯度,經度,時間,載客狀態(tài).載客狀態(tài)是出租車是否載有乘客的標簽(1 表示載客,0 表示空駛).
經過效益指數(shù)模型計算,選取Top 20%的出租車作為高效益出租車共計807 267 條軌跡,提取高效益出租車可視化特征數(shù)據(jù)集,并據(jù)此分析高效益出租車的運營規(guī)律.
對7 天的高效益出租車進行運營特性分析.如圖5所示,統(tǒng)計各小時內的載客量,分析高效益出租車在一天內不同時段載客量的變化特征.在6:00-9:00 時段載客量急劇增加,到10 時達到早高峰,在13 時達到午間需求高峰.從13:00-16:00 呈現(xiàn)緩慢下降趨勢,在19:00-22:00 載客量又開始迅速增加,并在21 點達到晚高峰.另外工作日與休息日的載客量分布略有不同.在工作日,13:00-18:00 載客量呈下降趨勢,并在18 時載客量最少;而在休息日,13:00-18:00 載客量分布較均等.
圖4 查詢緩沖區(qū)繪制
圖5 高效益出租車每小時載客量分布圖(8 月18-22 日為工作日,8 月17 日與23 日為休息日)
將7 天的數(shù)據(jù)作均值計算,得到高效益出租車的尋客時長、載客時長以及載客距離的分析結果.圖6展示了高效益出租車單次尋客時長分布結果,發(fā)現(xiàn)高效益出租車尋客時長相對較短,60%的駕駛員會在2 min內尋找到乘客,說明高效益出租車駕駛員對客源分布與道路狀況非常熟悉.圖7 展示了高效益出租車的單次載客時長分布結果,圖8 為單次載客距離分布結果.高效益出租車的主要服務時長在20 min 內,其中15 min以內的載客次數(shù)占總數(shù)的66.2%,為高效益出租車主要服務時域.76.1%的高效益出租車的單次載客距離多集中在8 km 以內,為高效益出租車主要服務半徑.
圖6 高效益出租車單次尋客時長分布圖
圖7 高效益出租車單次載客時長分布圖
圖8 高效益出租車單次載客距離分布圖
蜂窩形格網可視化可以宏觀地展現(xiàn)城市不同時間的載客熱點變化趨勢與空間分布趨勢,便于觀察高效益出租車載客分布的動態(tài)過程.DBSCAN 空間聚類算法可視化可以發(fā)現(xiàn)高效益出租車的核心聚類點,更細致地得到高效益出租車載客中心位置.
圖9 展示了7 天6 個時間段的蜂窩格網載客熱點分布,由綠到紅代表載客密度的不斷增大.可以看出,高效益出租車的載客分布大致在二環(huán)路內,隨著時間的推進向南三環(huán)路擴展.載客熱點主要分布在市中心、商場、醫(yī)院、旅游景點及重要交通樞紐等地塊.
圖10 展示了21:00-24:00 時段的DBSCAN 聚類載客熱點分布,五角星代表計算得出的核心聚類點.點擊五角星,彈窗會顯示當前核心聚類點的地址信息.可以發(fā)現(xiàn),機場(圖10Ra)、旅游景點(圖10Rb)、春熙路商業(yè)區(qū)(圖10Rd)、火車站等都屬于客流集中區(qū)域.此外,載客熱點還包括大學周邊(圖10Rc)、休閑娛樂場所(圖10R)等區(qū)域.
圖9 各時段蜂窩形格網載客熱點可視化
圖10 DBSCAN 聚類結果可視化
通過在地圖上繪制起點緩沖區(qū)OB 與終點緩沖區(qū)DB,可視化起點緩沖區(qū)與終點緩沖區(qū)中的多條軌跡,并提取軌跡相關因子.選取8 月17 日與23 日的數(shù)據(jù),將OB 設置在春熙路地鐵站附近,緩沖區(qū)半徑為155 m,將DB 設置在寬窄巷子長順上街附近,緩沖區(qū)半徑為260 m.共查詢出31 條軌跡,圖11 展示了部分軌跡可視化結果.其中,軌跡a、b、d、e 為高效益出租車頻繁選擇路徑,軌跡c、f 只出現(xiàn)過一次,為特殊路徑.
軌跡可視化結合軌跡相關因子,可以了解當前區(qū)域的道路交通狀況與分析駕駛員的路徑選擇行為.表1展示了圖11 中軌跡a 在不同時段的軌跡相關因子,發(fā)現(xiàn)a2 的運營時長最長,a3 的運營時長最短,說明a 路徑在午間車流量較大,較為擁堵,晚間車流量較小,駕駛速度較快.圖11 中軌跡d、e、f 為相同時段選擇不同路徑的軌跡,表2 羅列了其軌跡相關因子,發(fā)現(xiàn)軌跡d 行駛距離最短但運營時長最長,軌跡f 行駛距離最長但運營時長最短.可以發(fā)現(xiàn)當前時段d 路徑較為擁堵,想要較短時間到達目的地需要選擇繞行避開擁堵區(qū)域.
圖11 軌跡可視化(A 標注為起點,B 標注為終點)
表1 針對圖11(a)中軌跡a 不同時段相同路徑的軌跡相關因子表
表2 相同時段不同路徑的軌跡相關因子表
本文實現(xiàn)了一個基于Spark 的出租車軌跡大數(shù)據(jù)處理與可視化平臺,設計效益指數(shù)模型提取高效益出租車用于可視化分析.運營特性分析,對研究高效益出租車運營模式、提升出租車效益具有重要意義.對載客熱點進行分析,有利于合理配置城市公共交通、提高載客效率.軌跡查詢與可視化,可用于城市道路交通分析、研究軌跡相關因子對路徑選擇行為的影響.以成都市出租車軌跡數(shù)據(jù)作為研究實例,驗證了平臺的有效性.
在未來研究中,將繼續(xù)完善平臺功能,如添加三維可視化、提供尋客推薦功能、實現(xiàn)實時出租車數(shù)據(jù)分析服務.同時希望平臺可以應用于不同地區(qū),比較不同地區(qū)出租車運營模式與載客策略的異同.