河南省中緯測繪規(guī)劃信息工程有限公司
Henan Zhongwei Surveying and Mapping Planning Information Engineering Co., Ltd.

基于開源的WebGIS開發(fā)框架的研究與實現(xiàn)

發(fā)表時間:2019-12-21 11:10作者:賈賀祥

本文研究了一整套開源開發(fā)框架,在后端使用基于Python語言的Django開發(fā)框架、前端使用JavaScript、數(shù)據(jù)庫使用PostgreSQL、采用FastDFS作為文件存儲、地圖服務發(fā)布采用GeoServer、地圖前端展示采用OpenLayers。開發(fā)框架如圖1所示。

圖1框架結構

一、開發(fā)框架

1.數(shù)據(jù)層

框架使用PostgreSQL作為數(shù)據(jù)庫存儲空間數(shù)據(jù)和非空間數(shù)據(jù),PostgreSQL是一個功能非常強大的、源代碼開放的客戶/服務器關系型數(shù)據(jù)庫管理系統(tǒng)。PostGIS作為PostgreSQL的一個擴展提供空間對象、空間索引、空間操作函數(shù)和空間操作符等空間信息服務功能,同時,PostGIS遵循OpenGIS的規(guī)范。FastDFS分布式存儲系統(tǒng)作為本框架的文件存儲,通過一個文件客戶端tracker來對多個文件服務端storage進行存儲和讀取,并實現(xiàn)負載均衡解決大容量的文件存儲和高并發(fā)訪問問題。

2.業(yè)務層

業(yè)務層是框架的核心,使用Python作為服務端的開發(fā)語言,基于Django開發(fā)框架,Django是一個開放源代碼的Web應用框架,由Python寫成,采用了MTV的框架模式。Django具有強大的數(shù)據(jù)模型、自帶強大的后臺功能、優(yōu)雅的網(wǎng)址設計、具有強大而可擴展的模板系統(tǒng)、具有可掛在內存緩存或其它框架實現(xiàn)超級緩存的緩存系統(tǒng)、內置國際化系統(tǒng)方便開發(fā)出多種語言的網(wǎng)站等優(yōu)點。在開發(fā)過程中,每一個系統(tǒng)的模塊可作為獨立的APP供系統(tǒng)調用,每一個APP具有獨立的模型(數(shù)據(jù)存取層)、模板(表現(xiàn)層)、視圖(業(yè)務邏輯層),很方便的實現(xiàn)了系統(tǒng)的高內聚低耦合。同時、Django框架也可快速高效實現(xiàn)空間數(shù)據(jù)導入到PostGIS并通過GeoServer自動進行服務發(fā)布。

3.表現(xiàn)層

表現(xiàn)層是整個模型的最高層,是構建與瀏覽器之上的,通過瀏覽器向用戶展示空間數(shù)據(jù),獲取用戶輸入和操作信息并交給業(yè)務層去處理然后對結果進行展示。該框架使用Django的模板,按照功能的類別劃分為不同的模塊,每個模塊相互獨立,模塊之間又可以通信交互。在地圖展示上,采用OpenLayers,OpenLayers 是一個專為Web GIS 客戶端開發(fā)提供的JavaScript 類庫包,用于實現(xiàn)標準格式發(fā)布的地圖數(shù)據(jù)訪問。OpenLayers是一個開源的項目,其設計之意是為互聯(lián)網(wǎng)客戶端提供強大的地圖展示功能,包括地圖數(shù)據(jù)顯示與相關操作,并具有靈活的擴展機制,支持多種矢量數(shù)據(jù)格式的渲染,可以聚合多源的地理服務。

二、開發(fā)框架實現(xiàn)

利用本框架實現(xiàn)了洛陽市國土調查數(shù)據(jù)分析與共享服務系統(tǒng),系統(tǒng)主要功能包括:

1.分析和共享數(shù)據(jù)中心。將全市國土調查數(shù)據(jù)進行數(shù)據(jù)整合,并可加載土地規(guī)劃、基礎測繪等各類基礎數(shù)據(jù),形成分析和共享數(shù)據(jù)中心,為相關統(tǒng)計分析和共享服務提供數(shù)據(jù)基礎。

2.數(shù)據(jù)統(tǒng)計分析。實現(xiàn)對全市國土調查數(shù)據(jù)與土地規(guī)劃、基礎測繪等各類基礎數(shù)據(jù)的綜合統(tǒng)計分析,高效利用海量數(shù)據(jù),提高三調成果對管理決策的支撐服務能力。

3.數(shù)據(jù)共享服務。以三調形成的系列非涉密成果及相關成果目錄為數(shù)據(jù)基礎,基于互聯(lián)網(wǎng)環(huán)境,研發(fā)數(shù)據(jù)共享平臺,平臺運行于政務外網(wǎng)或互聯(lián)網(wǎng),使市域范圍內各部門形成一個緊密聯(lián)系的整體,提高資源利用率,避免在信息采集、存儲和管理上的重復與浪費。