基于多模式交通可達(dá)性的影院位置評(píng)估軟件系統(tǒng)開發(fā)——以西安市為例
引 言
隨著經(jīng)濟(jì)社會(huì)的發(fā)展,許多大中城市正在從“生產(chǎn)城市” 向“消費(fèi)城市”轉(zhuǎn)型,各商業(yè)體蓬勃發(fā)展。本文通過高德地圖采集西安市基礎(chǔ)路網(wǎng)、公交線路、地鐵線路和商業(yè) POI 數(shù)據(jù),通過淘票票采集西安市影院數(shù)據(jù),將以上數(shù)據(jù)進(jìn)行預(yù)處理后,均存儲(chǔ)于數(shù)據(jù)庫(kù)(Structured Query Language,SQL)中,并在數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)運(yùn)算,對(duì)各影院位置進(jìn)行評(píng)估,再通過 Java 進(jìn)行后端數(shù)據(jù)調(diào)用推送至前端網(wǎng)頁(yè)呈現(xiàn)。
SQL 是由 Microsoft 開發(fā)和推廣的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(Relational Database Management System,RDBMS),是關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)的標(biāo)準(zhǔn)語(yǔ)言。其擁有強(qiáng)大的數(shù)據(jù)處理能力, 可處理千萬(wàn)級(jí)別的數(shù)據(jù)量,擁有圖形化用戶界面、豐富的編程接口以及對(duì) Web 技術(shù)的支持,被廣泛應(yīng)用于動(dòng)態(tài)開發(fā)、關(guān)系數(shù)據(jù)和商業(yè)智能。
1 數(shù)據(jù)預(yù)處理
本文采用的衡量影院位置優(yōu)劣的標(biāo)準(zhǔn)是票房收入,影院數(shù)據(jù)采集自淘票票專業(yè)版,該影院數(shù)據(jù)包括各月份的票房收入、影院廳數(shù)、座位數(shù)等屬性。在此基礎(chǔ)上,為了盡可能規(guī)避影院內(nèi)部因素對(duì)票房收入的影響,將各影院 12 個(gè)月的票房收入取平均值,且剔除 3 個(gè)廳數(shù)以下的影院。預(yù)處理影院數(shù)據(jù)后,重點(diǎn)關(guān)注外部因素對(duì)影院票房收入的影響。本文關(guān)注研究了步行可達(dá)性、公交可達(dá)性、地鐵可達(dá)性及商業(yè) POI 等外部因素,如圖 1 所示。
通過高德地圖采集西安市基礎(chǔ)路網(wǎng)、公交線路、地鐵線路和商業(yè) POI 數(shù)據(jù)。其中,基礎(chǔ)路網(wǎng)包括所有行人可通行的部分,即主干路網(wǎng)、支干路網(wǎng)及公園、小區(qū)路網(wǎng)等,該部分?jǐn)?shù)據(jù)能夠保證步行可達(dá)性計(jì)算的準(zhǔn)確性。公交可達(dá)性的計(jì)算中,剔除了站點(diǎn)較少的直達(dá)線路及偏遠(yuǎn)地區(qū)線路,著重分析西安市三環(huán)以內(nèi)主城區(qū)可達(dá)性。地鐵線路選擇已通車運(yùn)行的3 條地鐵線路,未涉及規(guī)劃線路與在建線路。商業(yè) POI 數(shù)據(jù)采集自西安市范圍內(nèi)的餐飲與購(gòu)物 POI 數(shù)據(jù),用 POI 的密度間接反映區(qū)域商業(yè)活力。
在 Arcgis 內(nèi),將西安步行路網(wǎng)按照每隔 30 m 的距離打斷為小路段,并將這些小路段轉(zhuǎn)換為路段采樣點(diǎn),而后通過臨近計(jì)算或插值的方法,將相關(guān)屬性數(shù)據(jù)轉(zhuǎn)換到采樣點(diǎn)上, 把所有數(shù)據(jù)存入數(shù)據(jù)庫(kù)以分析調(diào)用。
2 用戶界面設(shè)計(jì)
用戶界面不僅是軟件應(yīng)用的重要組成部分,同時(shí)還應(yīng)是良好的人機(jī)交互界面,快捷方便,簡(jiǎn)明扼要,展示、引導(dǎo)用戶使用絕大部分程序功能。JSP(Java Server Pages)是 Java 服務(wù)器頁(yè)面,具備 Java 技術(shù)的簡(jiǎn)單應(yīng)用與完全的面向?qū)ο螅?具有平臺(tái)無(wú)關(guān)性,且安全可靠,主要面向因特網(wǎng)的所有特點(diǎn), 具有多平臺(tái)支持。
窗口是人機(jī)對(duì)話的重要組成部分,用戶登錄界面包含賬戶、密碼及驗(yàn)證碼,用戶可通過該界面進(jìn)行登錄,并最終查詢數(shù)據(jù)可視化結(jié)果,可實(shí)現(xiàn)同時(shí)為多位用戶提供數(shù)據(jù)可視化界面。用戶登錄界面如圖 2 所示。
圖 2 用戶登錄界面
3 數(shù)據(jù)庫(kù)通信設(shè)計(jì)
數(shù)據(jù)庫(kù)訪問技術(shù)是連接數(shù)據(jù)庫(kù)與 Java 客戶端之間的必備橋梁。目前,Java 語(yǔ)言訪問數(shù)據(jù)庫(kù)已經(jīng)有了一套 API。
3.1 JDBC編程接口
JDBC(Java Database Connectivity)是連接 Java 應(yīng)用程序和數(shù)據(jù)庫(kù)之間的橋梁,是一組標(biāo)準(zhǔn) Java 語(yǔ)言中的接口和類, 是一種對(duì) ODBC API 面向?qū)ο蟮姆庋b和重新設(shè)計(jì),使得 Java 客戶端程序可以訪問各種不同類型的數(shù)據(jù)庫(kù)。Java.sql 提供了多種 JDBC API,其中常見的有 :Connection 接口,代表與數(shù)據(jù)庫(kù)的連接,通過它調(diào)用 createStatement 對(duì)象 ;Statement 接口,用來執(zhí)行 SQL 語(yǔ)句并返回結(jié)果記錄集 ;ResultSet 接口,SQL 語(yǔ)句執(zhí)行后的結(jié)果記錄集,必須逐行訪問數(shù)據(jù)行,可用任何順序訪問列。
3.2 MicrosoftSQLServer 數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)與管理數(shù)據(jù)的倉(cāng)庫(kù)。數(shù)據(jù)庫(kù)有很多種,其中應(yīng)用最為廣泛的是 SQL Server 數(shù)據(jù)庫(kù), 它具有使用方便、伸縮性好及相關(guān)軟件集成程度高等優(yōu)點(diǎn)。例如,可提供高性能的數(shù)據(jù)訪問 ;每個(gè)表可處理多達(dá)千萬(wàn)級(jí)別的數(shù)據(jù)量 ;可通過一個(gè)簡(jiǎn)單的 T-SQL 語(yǔ)句使一個(gè)對(duì)象在因特網(wǎng)上被訪問,從而創(chuàng)建一個(gè) HTTP 終端 ;支持 OLE DB 與多種查詢方式 ;圖像化的用戶界面,使系統(tǒng)管理與數(shù)據(jù)庫(kù)管理更加直觀、簡(jiǎn)單。
3.3 SQL語(yǔ)言
SQL 是結(jié)構(gòu)化查詢語(yǔ)言,也是一種數(shù)據(jù)庫(kù)查詢與程序設(shè)計(jì)語(yǔ)言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。
SQL 語(yǔ)言是高級(jí)的非過程化編程語(yǔ)言,允許用戶在高層數(shù)據(jù)結(jié)構(gòu)上工作。它不要求用戶指定對(duì)數(shù)據(jù)的存放方法,也無(wú)需用戶了解具體的數(shù)據(jù)存放方式,所以具有完全不同底層結(jié)構(gòu)的不同數(shù)據(jù)庫(kù)系統(tǒng)可使用相同的結(jié)構(gòu)化查詢語(yǔ)言作為數(shù)據(jù)輸出與管理的接口,大幅度簡(jiǎn)化了用戶的工作。同時(shí), SQL 語(yǔ)言可實(shí)現(xiàn)嵌套,具有極大的靈活性與強(qiáng)大的功能。
3.4 關(guān)鍵程序設(shè)計(jì)
應(yīng)用軟件時(shí),使用者通過用戶界面與數(shù)據(jù)庫(kù)進(jìn)行交流與通信,以實(shí)現(xiàn)數(shù)據(jù)傳輸、計(jì)算以及可視化功能。本文程序設(shè)計(jì)中,使用者通過外部設(shè)備操作瀏覽器,向前端控制器發(fā)送相應(yīng)請(qǐng)求,前端控制器收到請(qǐng)求后交由后端處理器進(jìn)行數(shù)據(jù)庫(kù)操作,數(shù)據(jù)由數(shù)據(jù)庫(kù)返回至后端處理器,經(jīng)前端控制器交由視圖渲染后呈現(xiàn)于瀏覽器上。評(píng)估系統(tǒng)流程如圖 3 所示。
用戶瀏覽所呈現(xiàn)的影院評(píng)估可視化結(jié)果如圖 4 所示。圖中左側(cè)顯示了根據(jù)本文研究量化后的西安現(xiàn)有各影院綜合評(píng)分,右側(cè)的點(diǎn)是各影院在地圖上的空間分布,其大小因其評(píng)分高低差異有所不同,點(diǎn)的大小與評(píng)分成正比。由此可方便用戶直觀地看出不同影院間的評(píng)分差異。
圖 4 用戶瀏覽所呈現(xiàn)的影院評(píng)估可視化結(jié)果
在瀏覽器窗口中,可任意在地圖上點(diǎn)擊代表各影院的點(diǎn)獲取影院評(píng)分的詳細(xì)指標(biāo),影院各指標(biāo)的具體評(píng)分如圖 5 所示。在該對(duì)話窗口中,可直觀地得到各影院的票房數(shù)據(jù)、影院廳數(shù)等具體數(shù)值,同時(shí)也可得到各種可達(dá)方式以及餐飲、購(gòu)物 POI 評(píng)分。
圖 5 影院各指標(biāo)的具體評(píng)分
從 SQL 中提取數(shù)據(jù)的相應(yīng)數(shù)據(jù)庫(kù)配置程序代碼如下 :
MyBites 數(shù)據(jù)庫(kù)配置 :
存放對(duì)應(yīng)的 sql 語(yǔ)句,和 dao 層相對(duì)應(yīng) :
Ex :
<select id="findList" resultType="Car">
SELECT cc.id,
4 結(jié) 語(yǔ)
Java 功能強(qiáng)大,具有簡(jiǎn)單性、健壯性、安全性、可移植性、多線程等優(yōu)點(diǎn),Hadoop 框架及其他大數(shù)據(jù)處理技術(shù)足以勝任本文研究涉及的數(shù)據(jù)量。JSP 是 Java 服務(wù)器頁(yè)面,是用來封裝產(chǎn)生動(dòng)態(tài)網(wǎng)頁(yè)的處理邏輯,它將網(wǎng)頁(yè)邏輯與網(wǎng)頁(yè)設(shè)計(jì)和現(xiàn)實(shí)分離,支持可重用的基于組件的設(shè)計(jì),使基于 Web 的應(yīng)用程序的開發(fā)變得迅速、容易。本文將 Java 與 SQL 相結(jié)合, 利用堆棧原理,將數(shù)據(jù)可視化動(dòng)態(tài)地展示于用戶面前,更直觀方便地體現(xiàn)了數(shù)據(jù)的說服力。