趙軍,宮麗瑋,周圣川,3,胡振彪,王海銀,黃蓉
(1.青島市勘察測繪研究院,山東 青島 266032; 2.青島市西海岸基礎地理信息中心有限公司,山東 青島 266000;3.山東省海陸集成與應用工程研究中心,青島市海陸地理信息集成與應用重點實驗室,山東 青島 266032)
社會治理事件在業(yè)務流轉系統(tǒng)中,由于某些事件的性質、類型、歸屬等問題難以界定(這里稱之為復合型事件),往往涉及多個業(yè)務部門,在條例嚴格、流程精細、單向指派的業(yè)務流轉系統(tǒng)中往往難以判斷、下發(fā)、指派。實現復合型事件的高效管理,目前主要存在以下幾點不足:①社會治理事件信息往往與空間信息緊密相關,傳統(tǒng)業(yè)務系統(tǒng)無法較好地兼顧空間信息;②復合型事件往往附帶文字、圖片、視頻等多類型屬性信息,目前缺乏實現所有屬性統(tǒng)一集成調用查看的手段;③缺乏復合型事件的可視化編輯方式。
基于以上問題的分析,本文研究采用PostgreSQL空間數據庫+文件系統(tǒng)對事件數據進行存儲管理,利用ArcSDE空間數據引擎作為應用系統(tǒng)與數據庫服務器之間的接口,選用ArcGIS for JavaScript API實現社會治理事件的可視化管理和多媒體屬性編輯,開發(fā)掛圖作戰(zhàn)系統(tǒng),輔助指揮中心以“所見即所得”的形式實現對復合型事件的“督戰(zhàn)”。
所謂掛圖作戰(zhàn),即以地圖為載體,決策層所有的現場指揮操作以一張圖為平臺,重現“立體沙盤”作戰(zhàn);這樣,相比傳統(tǒng)的業(yè)務系統(tǒng),問題的所在地、類型、狀態(tài)等情況更加淺顯易懂,“督導通報”的效果更加顯著,有助于社會治理事件的科學高效解決,推動智慧城市建設。
空間數據庫是指地理信息系統(tǒng)在計算機物理存儲介質上存儲的與應用相關的地理空間數據的總和[1],主要采用關系型數據庫管理系統(tǒng)來管理空間數據,具有高可訪問性、空間數據類型復雜、實現屬性數據和空間數據聯合管理等優(yōu)點。目前的空間數據庫主要是建立在關系型數據庫之上,通過空間數據引擎作為中間件(依托中間件屏蔽操作系統(tǒng)和數據庫平臺之間的差異),基于MVC模式,實現了系統(tǒng)功能模塊與后臺數據的分離,提高了系統(tǒng)的安全性和穩(wěn)定性,降低了系統(tǒng)維護成本。
PostgreSQL是自由的對象-關系數據庫服務器,功能強大。相比Oracle數據庫,PostgreSQL完全開源,遵循BSD協議,具有較好的可擴展性。具有面向對象特性,包含類及繼承等機制。支持豐富的數據類型,允許自定義數據類型;同時,還具有強大的跨平臺性,是目前支持平臺最多的數據庫管理系統(tǒng)之一。
PostGIS作為PostgreSQL的空間擴展模塊,增強了空間數據庫的儲存管理能力,提供了空間對象、空間索引、空間操作函數等空間信息服務功能,使PostgreSQL實現了對復雜的空間類型、空間分析、投影變換等功能的支持,遵循OpenGIS的規(guī)范,實現了對ArcGIS空間數據從管理平臺到入庫的無損過度,在數據庫層面徹底實現了空間數據與屬性數據存儲的統(tǒng)一[2~4]。
從ArcGIS客戶端軟件到空間數據庫入庫管理,需要使用中間件-ArcSDE,ArcSDE是ArcGIS的空間數據引擎,是在關系數據庫管理系統(tǒng)(RDBMS)中存儲和管理多用戶空間數據庫的通路,通過該通路實現ArcGIS數據在PostgreSQL等多種數據庫平臺上管理地理信息。利用數據庫的強大數據查詢機制[5,6],ArcSDE實現了對地理空間數據的管理和在多用戶條件下的高效并發(fā)訪問。地理空間數據庫存儲原理如圖1所示。
圖1 地理空間數據庫存儲原理圖
對于圖片或者視頻,在數據庫中存儲方式主要分為兩種:①將多媒體數據直接以二進制文件形式存儲在數據庫中;②數據存儲在磁盤,數據庫字段中保存的多媒體數據路徑。由于復合型事件附帶的多媒體數據量龐大和對下面三個方面的考慮,針對多媒體屬性信息這一塊,本文選擇第二種方案。
①對數據庫的讀/寫的速度不如文件系統(tǒng)處理的速度。
②大并發(fā)訪問的情況下,保存二進制,大字段數據會加重數據庫負擔,拖慢數據庫;數據庫備份變得巨大,越來越耗時間。
③文件的訪問需要穿越應用層和數據庫層,存儲路徑的方式在多媒體數據調用時的效率優(yōu)于存儲二進制的方式。
本文使用空間數據庫與文件系統(tǒng)相結合的方式,實現對復合型事件地理空間數據的高效管理。
論文基于WebGIS搭建B/S掛圖作戰(zhàn)系統(tǒng),實現不同街道辦、不同問題類型的多源事件上傳、管理、可視化和編輯;要求事件信息的編輯不僅包括空間屬性的編輯,同時包括非空間文本屬性、多媒體屬性信息等全方位的數據編輯。技術路線主要包括客戶端、服務端、數據庫三個層面,如圖2所示。
客戶端系統(tǒng)整體架構采用HTML5、CSS、JavaScript進行開發(fā)。地圖可視化采用ArcGIS for JavaScript API進行二次開發(fā),發(fā)布地圖瓦片服務,通過請求ArcGIS Server的rest服務實現地圖的操作;系統(tǒng)UI框架和其他相關技術,使用JQuery EasyUI進行開發(fā)。
客戶端與服務端的交互,基于Ajax引擎實現,采用XMLHTTP組件中的XMLHTTPrequest對象實現,客戶端通過Ajax引擎向服務端發(fā)送HTTP請求,返回JSON數據對客戶端進行顯示,其最大的優(yōu)勢是實現異步請求,可以在無須等待情況下進行局部更新。
服務端使用Eclipse平臺,基于Java Servlet+JDBC,實現數據增刪查改等相關服務的開發(fā);采用Tomcat部署相關服務,響應和處理HTTP請求。
數據庫層面使用ArcSDE+PostgreSQL構建空間數據庫,實現系統(tǒng)所需相關數據的管理[6~8]。
圖2 系統(tǒng)技術路線圖
系統(tǒng)的功能設計需要滿足指揮中心人員對于復合型事件的管理、查看和編輯等社會治理事件管理的相關功能,因此,需要具備以下特點和功能:
(1)分級登錄。系統(tǒng)需要具備分級登錄體系,非登錄用戶只具備基礎的地圖漫游功能;不同街道辦只能登錄控制本街道范圍內各類型事件問題,瀏覽編輯本街道范圍內事件。
(2)事件數據可視化。系統(tǒng)實現事件數據的地圖可視化,一鍵單擊可以同時查詢事件的基礎屬性信息和多媒體信息(圖片、視頻、文件)。
(3)事件數據編輯。系統(tǒng)可以實現事件信息的增刪改功能,支持在地圖上精確打點增加事件信息和附掛多媒體信息,支持事件信息的屬性編輯和事件完成狀態(tài)變更。
(4)事件信息統(tǒng)計。系統(tǒng)具備對區(qū)域范圍內各類事件問題的統(tǒng)計分析,輔助用戶了解事件分布特點和區(qū)域分布密度。
ArcGIS for JavaScript是Esri官方推出的WebGIS地圖功能開發(fā)包,其本身是基于JavaScript語言的可以調用ArcGIS Server Rest API接口的腳本,將調用到的地圖資源和地圖服務整合到網絡應用中[9,10]。
基于功能強大的Dojo JavaScript工具包,擁有強大的地理信息系統(tǒng)開發(fā)和定制能力,可以實現瀏覽器端地圖的顯示、瀏覽、查詢、編輯等多項功能。ArcGIS for JavaScript開源,不需要任何密鑰,具有良好的擴展性。
功能模塊是系統(tǒng)功能的執(zhí)行單元,彼此之間相對獨立。合理的模塊劃分有助于系統(tǒng)的實現。本系統(tǒng)根據功能和不同應用場景劃分為4個功能模塊:用戶登錄、事件上傳與可視化、事件編輯和統(tǒng)計分析。
(1)用戶登錄
系統(tǒng)開發(fā)用戶登錄功能實現事件的用戶管理和事件控制。以街道辦轄區(qū)范圍作為事件上報和管理的臨界范圍。
技術實現如圖3所示,在ArcGIS Server中發(fā)布街道辦的要素類專題服務,通過Rest服務請求獲得各街道辦名稱和街道辦的GIS空間范圍值Geometry,最后以街道名稱作為key值,街道辦對應的范圍Geometry值作為value,構建JSON鍵值對。當選擇各街道辦時,由Geometry作為事件篩選條件,顯示當前街道的所屬事件。
系統(tǒng)登錄UI設計如圖4所示:
圖3 系統(tǒng)登錄控制流程圖
圖4 系統(tǒng)登錄效果圖
(2)事件上傳與可視化
事件數據庫表的表結構設計如表1所示。heatquestion、questioninfo、wczt、time、ssjd作為常規(guī)屬性存儲基礎文本信息;mediadirectory負責記錄事件的多媒體信息的文件夾路徑,為避免文件夾重名,文件夾命名格式采用Unix時間戳;photoname記錄圖片名稱,圖片之間以分號隔開,如“1.png;2.png;3.png;”,程序調用時轉化為數組;videoname記錄事件的視頻信息,以“mediadirectory/videoname”的方式構建視頻完整路徑。
事件信息數據庫表結構 表1
事件上傳與可視化,使用ArcGIS for JavaScript二次開發(fā)接口,將事件信息以ArcSDE數據源的方式發(fā)布WFS服務,使用安排WFS服務的playEdits方法,實現事件的上傳;使用ArcGIS API上傳事件的同時,將上傳的圖片、視頻等多媒體信息通過開發(fā)Java Servlet文件上傳接口上傳至服務器文件系統(tǒng),前端調用時通過拼接URL地址讀取顯示在前端地圖。使用API的Featurelayer類可直接在地圖上實現事件專題的顯示,事件上傳與可視化流程如圖5所示。
系統(tǒng)效果圖如圖6所示,通過點擊添加問題按鈕,允許用戶只能在當前選擇街道的范圍內打點,在下拉列表中選擇事件問題類型,錄入事件的屬性信息,如整治狀態(tài)、問題描述、圖片、視頻等,點擊提交問題按鈕即可實現事件問題的添加。在地圖上點擊事件圖標,其所有的屬性信息即可一覽無余。
圖6 事件上傳可視化及屬性查看效果圖
(3)事件編輯
系統(tǒng)將事件信息的編輯分成兩部分,即基礎文本屬性編輯和多媒體信息編輯。對于基礎文本屬性編輯,如完成狀態(tài)等,直接在編輯狀態(tài)下使用WFS服務的applyEdits方法。對于多媒體信息,applyEdits方法只能更改字段信息,對于路徑指向的圖片、視頻源,則通過開發(fā)Java Servlet接口,更新文件系統(tǒng)中多媒體源文件,通過ArcSDE同步更新WFS服務,實現事件信息的編輯。流程圖如圖7所示。
圖7 事件編輯流程圖
編輯狀態(tài)下單獨開放多媒體編輯界面,如圖8所示,通過簡單地增加、刪除按鈕,可以快速實現原多媒體資源的增加、刪除和替換。
圖8 事件編輯效果圖
(4)統(tǒng)計分析
系統(tǒng)基于Echarts工具進行事件信息的統(tǒng)計分析,實現以統(tǒng)計圖的形式體現事件信息分布及統(tǒng)計情況?;赗est服務實現事件信息的分街道、分類型統(tǒng)計。系統(tǒng)實現效果如圖9所示。
圖9 事件統(tǒng)計分析效果圖
系統(tǒng)基于WebGIS,通過ArcGIS for JavaScript二次開發(fā),實現了社會治理復合型事件的上傳、編輯與可視化,實現了各街道范圍事件管理的權限控制。以掛圖作戰(zhàn)的形式呈現在指揮中心大屏,很好地輔助了社會治理指揮中心對于復合型事件的管理和解決督查,對城市社會治理工作的有效開展起到了積極的推動作用。不足之處,系統(tǒng)在局部UI設計上有待優(yōu)化,對于復合型事件處理過程中的狀態(tài)監(jiān)測也有待加強。