盧志煒 武漢大學(xué)
隨著數(shù)字化的推進(jìn),現(xiàn)在很多人購買書籍產(chǎn)品,都是采用網(wǎng)上訂購,直接送貨上門。對于公司而言,需要對各地所有門店、庫房進(jìn)行統(tǒng)計(jì)盡力做到最近送貨達(dá)到最優(yōu)的效率。采用電子地圖展示方式對調(diào)度方案進(jìn)行可視化管理,可以有效提高工作效率,節(jié)約運(yùn)輸成本。
系統(tǒng)總體架構(gòu)計(jì)劃采用B/S結(jié)構(gòu),由前端web訪問服務(wù)器與后臺數(shù)據(jù)服務(wù)器組成。這樣可以在前端部署多個(gè)訪問服務(wù)器來分流流量,達(dá)到負(fù)載均衡。
后臺數(shù)據(jù)服務(wù)器可以統(tǒng)一所有網(wǎng)點(diǎn)的信息,進(jìn)行集中展示與管理。
前端web訪問服務(wù)器,提供地圖展示功能,加載web引擎,將后臺的數(shù)據(jù)按一定方式篩選展示在地圖界面上。
細(xì)分下來,系統(tǒng)實(shí)現(xiàn)應(yīng)當(dāng)分為:
(1)前端web框架,用作用戶登錄、帳號權(quán)限管理等功能。
(2)前端web引擎,用作地圖展示、熱點(diǎn)規(guī)劃分析等功能。
(3)地圖API接口,用作前后端交互的接口,從后端服務(wù)器讀取數(shù)據(jù)展示到前端界面上。
(4)后端服務(wù)器,用作后臺數(shù)據(jù)庫管理、檢索、接口調(diào)用等。
(5)后端地圖數(shù)據(jù),包括在線地圖與離線地圖,存入數(shù)據(jù)庫待后端服務(wù)器調(diào)用檢索。
根據(jù)后臺API接口返回的信息,展示地圖底圖、數(shù)據(jù)層信息、及其他相關(guān)元素的展示、操作,更新等。
市面上常見的web引擎有OpenLayers、OpenScales、ArcGIS Web、四維圖新前端等。
①OpenLayers是基于BSD協(xié)議的開源產(chǎn)品
②OpenScales是基于LGPL協(xié)議的開源產(chǎn)品
③ArcGIS Web是美國ESRI公司開發(fā)的商用產(chǎn)品(費(fèi)用較高)
④四維圖新是我國從事地圖數(shù)據(jù)庫采集的國企,產(chǎn)品為商業(yè)用途。
①OpenLayers是JavaScript框架
②OpenScales是基于flash技術(shù)的Flex框架
③ArcGIS Web是Silverlight+JavaScript框架
④四維圖新是自行研發(fā)的引擎API與后臺數(shù)據(jù)
①OpenLayers提供了豐富的API接口操作,可以完成常見的GIS地圖功能需求。
②OpenScales最初叫FlexLayer是Openlayers的Flex版本,但因?yàn)閛penscales并沒有完全實(shí)現(xiàn)openlayers所提供的所有接口和功能,所以有些工作需要自己實(shí)現(xiàn)。比如放大和縮小工具欄、監(jiān)聽鼠標(biāo)雙擊事件實(shí)現(xiàn)放大地圖、以及正多邊形畫法等等。
③ArcGIS Web為ArcGIS Server提供了對應(yīng)的API接口供使用。
④四維圖新提供了眾多可以按需組合的API接口。
①OpenLayers的文檔很詳細(xì)。
②OpenScales缺少必要的文檔,不過其本身是對OpenLayers的Flex實(shí)現(xiàn),所以可以閱讀OpenLayers的文檔作為參考。
③ArcGIS Web商業(yè)產(chǎn)品的文檔總是合格的。
④四維圖新是國產(chǎn)商業(yè)產(chǎn)品,擁有豐富的中文說明文檔。
①OpenLayers支持百度、高德等常見地圖提供商的數(shù)據(jù)。
② OpenScales同 OpenLayers。
③ArcGIS Web只能加載google等有限的幾種國外地圖數(shù)據(jù),不支持國內(nèi)地圖數(shù)據(jù)提供商的數(shù)據(jù)。
提供地圖底圖數(shù)據(jù)接口以及相關(guān)數(shù)據(jù)層數(shù)據(jù)接口,并且可以在后臺根據(jù)前端相關(guān)采集設(shè)備反饋的信息和數(shù)據(jù)庫內(nèi)數(shù)據(jù)對數(shù)據(jù)層進(jìn)行即時(shí)演算。
市面上常見的GIS后臺服務(wù)器通常有:GeoServer、MapServer、ArcGIS Server、四維圖新后臺服務(wù)器等。
根據(jù)后臺API接口返回的信息,展示地圖底圖、數(shù)據(jù)層信息、及其他相關(guān)元素的展示、操作,更新等。
①GeoServer是基于BSD協(xié)議的開源產(chǎn)品
②MapServer是基于MIT協(xié)議的開源產(chǎn)品
③ArcGIS Server是美國ESRI公司開發(fā)的商用產(chǎn)品
④四維圖新是國內(nèi)四維圖新公司的商用產(chǎn)品提供商用API
⑤高德地圖、百度地圖等雖是商業(yè)產(chǎn)品,但提供免費(fèi)API
①GeoServer是基于J2EE開發(fā)的:Geoserver(服務(wù)器)+uDig(桌面軟件)+PostGIS(數(shù) 據(jù)庫)++Openlayers(JS)/openscale(FLex)(瀏覽器客戶端)
②MapServer是基于C/C++開發(fā)的:Mapserver(服務(wù)器)+QGIS(桌面軟件)+PostGIS(數(shù)據(jù)庫)+Openlayers(JS)/openscale(FLex)(瀏覽器客戶端)
③ArcGIS Server是非開源的產(chǎn)品,對應(yīng)的前端也通常采用他們自己的ArcGIS前端
④四維圖新是非開源產(chǎn)品,對應(yīng)的前端也通常采用自己的相關(guān)設(shè)備
⑤高德地圖提供開源的API,但不提供離線的API
⑥百度地圖本身采用的是四維圖新的地圖數(shù)據(jù)源,但做了開放的API接口
①GeoServer包括GIS的大部分功能,滿足絕大部分的web地圖應(yīng)用開發(fā)
②MapServer包括GIS的基本功能,滿足基礎(chǔ)的web地圖應(yīng)用開發(fā),功能略低于GeoServer
③ArcGIS Server可以定制GIS相關(guān)功能,并可以進(jìn)行分布式GIS系統(tǒng)開發(fā)
④四維圖新同樣提供各個(gè)GIS模塊的定制
⑤高德地圖的API是開源的,不過不提供單獨(dú)的服務(wù)器部署與離線地圖
這3個(gè)系統(tǒng)相對于其他的GIS服務(wù)器來說,都是比較快的,而這三者之間以ArcGIS Server最快,MapServer次之,GeoServer最后。
①GeoServer是純Java的開源框架,可以基于GeoServer做二次開發(fā),定制所需產(chǎn)品。
②MapServer提供兩種工作方式,CGI方式和MapScript方式。以原生CGI方式效率最高,配合TileCache,可以快速生成大范圍的地圖瓦片數(shù)據(jù)。比較基于.Net和J2EE的商業(yè)或開源平臺,MapServer更適合高負(fù)荷的大型互聯(lián)網(wǎng)地圖應(yīng)用。MapServer是基于C寫的地圖服務(wù)軟件,比用JAVA寫的GeoServer速度要快。而且MapServer歷史要比GeoServer悠久,甚至MapServer的性能與商業(yè)的ArcIMS的功能可以娉美。
③ArcGIS Server自身具備對應(yīng)的桌面軟件ArcMap,所以對于前期地理數(shù)據(jù)的編輯整飾比較方便,ArcServer相對來說比較容易上手。
④四維圖新的發(fā)展定位在于車載導(dǎo)航,與車廠合作緊密,注重導(dǎo)航模塊,主要記錄道路信息,POI熱點(diǎn)精度較細(xì),尤其對于大門、主干道入口的定位比其他地圖更精準(zhǔn)。
⑤高德地圖,地圖信息比較全面,在導(dǎo)航精度不如四維圖新,但在其他方面,如三維圖標(biāo)、三維仿真地圖、實(shí)景圖、模式圖、方向路牌等均優(yōu)于四維圖新。
ArcGIS作為商業(yè)產(chǎn)品,是最穩(wěn)定的,提供的幫助文檔是最多的。ArcGIS的服務(wù)完備,功能齊全,但是龐大臃腫,大部分功能在平時(shí)用不到。且安裝困難,ArcGIS連安裝盤都找不到,需要專門人員上門安裝,一旦故障要有重做系統(tǒng)的準(zhǔn)備。相對來說,GeoServer等開源的地圖服務(wù),則是輕量級的,且常用的功能都可以支持。
ArcGIS不支持開源數(shù)據(jù)庫如PostgreSQL等,需要使用他自己的或者Oracle等數(shù)據(jù)庫。
其他大多數(shù)后臺服務(wù)器都支持市面常見數(shù)據(jù)庫。
四維圖新采用完全將數(shù)據(jù)和業(yè)務(wù)系統(tǒng)分離的方式對地圖數(shù)據(jù)進(jìn)行管理,因此可以將數(shù)據(jù)部署在內(nèi)外。
高德地圖不支持離線地圖功能,所以使用高德地圖做數(shù)據(jù)源的平臺,均無法在內(nèi)網(wǎng)使用,如谷歌地圖、ArcGIS Server等。
(1)web框架,這個(gè)部分目前各個(gè)廠商都沒有提供,由于牽扯帳號信息、日志歸檔、權(quán)限劃分等,一般也都是自己進(jìn)行實(shí)現(xiàn),這部分應(yīng)該是輕量級的頁面,可以考慮用PHP來實(shí)現(xiàn)比較快速。
(2)web引擎,通用模塊,通過在頁面指定區(qū)域填充地圖,加載JS模塊的方式,進(jìn)行地圖繪制。
(3)邏輯腳本,這部分主要是聯(lián)動引擎與后臺API,對傳輸數(shù)據(jù)進(jìn)行篩選拼接,然后調(diào)用API接口,這部分也是需要自行實(shí)現(xiàn)。
(4)后臺API,由廠商提供,有付費(fèi)的也有免費(fèi)的,不同API支持服務(wù)不同。
(5)后臺服務(wù)器,用來對數(shù)據(jù)庫進(jìn)行檢索和展示,這個(gè)牽扯到地圖算法檢索、數(shù)據(jù)庫遍歷等,可以用JAVA、C或PHP等實(shí)現(xiàn)。
從此次項(xiàng)目的選擇來看,前后端合一的方式,比較適合較小的訪問量,節(jié)約前端服務(wù)器成本。JAVA框架具有較多的開源資源和幫助資料,地圖數(shù)據(jù)源和API統(tǒng)一采用四維圖新的地圖數(shù)據(jù)與接口,四維圖新雖然是商業(yè)版,但是定制的模塊,可以只選擇自己需要的部分進(jìn)行加載,相對自行研發(fā)從0開始的成本,采用一個(gè)已經(jīng)成熟的API接口與框架,可以很快做出成品,在這個(gè)將就效率的時(shí)代,從零開始自行研究開源GIS地圖,成本未必就比購買的低。
因此,此次項(xiàng)目采用了JAVA+四維圖新API+四維圖新在線地圖數(shù)據(jù)源,是最符合此次項(xiàng)目需求的方案。
[1]《四維圖新在線》趙宇鵬,2016
[2]《主流網(wǎng)絡(luò)地圖應(yīng)用開發(fā)API技術(shù)研究》龍際夢;劉宏建;蔡中祥;張琳翔,2015
[3]《百度、高德及Google地圖API比較研究》向玉云;高爽;陳云紅;黃嘉成;許新華,2017
[4]《基于YII框架的O2O平臺網(wǎng)站的設(shè)計(jì)和實(shí)現(xiàn)》劉琛辰,2014
[5]《MVC設(shè)計(jì)模式在Yii框架中的應(yīng)用與研究》牧春,2015