郭星濤,彭蓮香
(內蒙古自治區(qū)大數據中心,內蒙古 呼和浩特 010010)
行政區(qū)劃是國家為便于行政管理而分級劃分的區(qū)域,中華人民共和國的行政區(qū)劃由省級行政區(qū)、地級行政區(qū)、縣級行政區(qū)、鄉(xiāng)級行政區(qū)組成。行政區(qū)劃界線界樁是指由行政區(qū)域毗鄰的各方人民政府共同埋設并用于指示行政區(qū)域界線實地位置的標志物[1]。
地名是中華民族文明史的特殊記錄與見證,是傳承優(yōu)秀傳統(tǒng)文化的重要載體。地名管理應當有利于維護國家主權和民族團結,有利于弘揚社會主義核心價值觀,有利于推進國家治理體系和治理能力現(xiàn)代化,有利于傳承發(fā)展中華優(yōu)秀文化。使用標準地名可以在服務群眾生活、社會治理、科學研究、國防建設等方面起到積極作用[2-3]。
為進一步提高行政區(qū)劃界線界樁管理工作的信息化水平,推廣標準地名的大眾普及率,充分利用物聯(lián)網、北斗系統(tǒng)等新技術,設計開發(fā)了基于B/S 架構的行政區(qū)劃界線界樁地名信息系統(tǒng),實現(xiàn)了多項技術融合應用于行政區(qū)劃管理和地名服務工作,提高了管理服務的信息化、智能化和便捷化水平。
B/S 架構即瀏覽器和服務器架構模式[4-6],是Web 興起后的一種網絡架構模式,Web 瀏覽器是客戶端最主要的應用軟件[7]。這種模式統(tǒng)一了客戶端,將系統(tǒng)功能實現(xiàn)的核心部分集中到服務器上,簡化了系統(tǒng)的開發(fā)、維護和使用。在B/S 結構中,每個節(jié)點都分布在網絡上,這些網絡節(jié)點可以分為瀏覽器端、服務器端和中間件,通過它們之間的鏈接和交互來完成系統(tǒng)的功能任務。三個層次的劃分是從邏輯上進行的,在實際應用中多根據實際物理網絡進行不同的物理劃分。總之,B/S 結構就是將數據分布到某個數據服務器,將程序分布到應用(程序)服務器或者Web服務器,而客戶端(瀏覽器)只需要加載應用服務器的部分程序,用于數據的顯示和命令輸入,如圖1 所示。
MVVM 是前端視圖層的概念,主要關注于視圖層分離,它把前端的視圖層分為三部分: Model、View、ViewModel(VM)。它是一種軟件架構設計模式,是一種簡化用戶界面的事件驅動編程方式,提供了數據的雙向綁定。在MVVM架構中,是不允許數據和視圖直接通信的,只能通過ViewModel來通信,而ViewModel就是定義了一個Observer觀察者。ViewModel 是連接View 和Model 的中間件,具有低耦合、可復用、獨立開發(fā)、可測試等特點,具體如圖2 所示。
圖2 MVVM 架構
MVC 是后端的分層開發(fā)概念,如圖3 所示。以系統(tǒng)采用的后端NodeJs 語言為例,前端的View 視圖層通過后端app.js 進行請求處理;然后調用router.js 進行路由分發(fā),如果涉及業(yè)務邏輯處理操作,則調用controller 模塊進行業(yè)務處理,業(yè)務處理過程中如果涉及數據的CRUD,則調用Model層進行數據庫操作,其中路由分發(fā)與業(yè)務邏輯處理位于controller 層。
圖3 MVC 模式
Vue是一套用于構建用戶界面的漸進式輕量級JavaScript框架。最核心的功能包括組件化開發(fā)和響應式的雙向數據綁定。除此之外還有前端MVVM 模式、虛擬DOM、前后端分離部署等優(yōu)勢。Vue 框架采用自底向上增量開發(fā)的設計,通過與Vue 生態(tài)系統(tǒng)的支持和第三方庫的整合,可以為復雜的單頁面應用(SAP)提供驅動。相較于其他框架,Vue 具有學習難度低、易使用、開發(fā)效率高等優(yōu)點。
Express 是一個保持最小規(guī)模的、靈活的 Node.js Web 應用程序開發(fā)框架,提供了一系列強大的特性來幫助開發(fā)者創(chuàng)建各種Web 應用,主要有以下特性:開發(fā)快速、靈活的拓展機制、使用簡單、支持路由和多模塊[8-9]。
物聯(lián)網(Internet of Things, IoT)是一個基于互聯(lián)網、傳統(tǒng)電信網的信息承載體,讓所有能夠被獨立尋址的普通物理對象之間形成互聯(lián)互通的網絡,可以被視為互聯(lián)網的延伸和擴展。人們通過物聯(lián)網的應用可以獲得一個新的溝通維度,即從任何時間、任何地點的人與人的溝通聯(lián)接擴展到人與物、物與物之間的溝通聯(lián)接,其架構可劃分為感知層、網絡層、應用層[10]。
北斗系統(tǒng)本質上是全球化的天基時空基準,是構建信息社會必不可少的信息來源和信息提供者,北斗系統(tǒng)提供的精準時間和位置信息可為廣泛的用戶提供定時、授時、授頻等全天候、全天時可感知信息,是信息時代最為核心的關鍵基礎數據。
通過將北斗系統(tǒng)取得的位置點、位置關系、時間統(tǒng)一和時空分析這些時空元素與物聯(lián)網有機結合,必將對萬物互聯(lián)的智能時代起到巨大的支撐和推進作用,由北斗高精度服務提供的時空信息也必將成為智能化進程中的重要推動力。
行政區(qū)劃界線界樁地名信息系統(tǒng)的開發(fā)平臺為Visual Studio Code,前端頁面使用VueJs 框架、OpenLayers 開源前端GIS 庫、Element 組件庫、ECharts 開源可視化圖表庫等進行快速開發(fā),后臺使用NodeJs 語言,數據庫使用PostGIS 空間數據庫和MongoDB 非關系型數據庫,地圖服務器使用免費開源的GeoServer。前后端認證使用Json Web Token 進行認證鑒定。
系統(tǒng)的設計開發(fā)共分為6 個環(huán)節(jié),如圖4 所示,包括需求分析及現(xiàn)狀調查、確定系統(tǒng)架構和技術路線、設計功能與界面、搭建開發(fā)環(huán)境、開發(fā)和測試、部署與應用等。
圖4 系統(tǒng)設計流程
系統(tǒng)設計包括行政區(qū)劃、地名地址、界樁、北斗定位設備、通用地圖、設置共6 個模塊,包括15 個功能點,如圖5 所示。
圖5 系統(tǒng)功能模塊
行政區(qū)劃模塊主要包含了省市縣鄉(xiāng)四級查詢、行政區(qū)劃界線展示、轄區(qū)情況與歷史沿革三大功能。行政區(qū)劃查詢支持省市縣鄉(xiāng)四級選擇欄和地圖雙擊選擇,行政區(qū)劃界線包含省市縣鄉(xiāng)四級矢量要素的空間數據庫、地圖服務接口以及前端配置樣式后的地圖圖層等一系列數據資源支撐。轄區(qū)情況與歷史沿革支持選中某一級行政區(qū)劃后的詳細信息和歷史沿革展示,例如政府駐地、轄屬政區(qū)、行政區(qū)劃代碼、人口數量、設立年份等信息,行政區(qū)劃地名羅馬字母拼音、少數民族語言拼寫、地名含義及歷史沿革等信息。
地名地址模塊包含地名地址庫調用、地名地址查詢展示兩大功能。其中,地名地址庫使用民政部主管的中國·國家地名信息庫的接口服務,地名地址查詢展示支持搜索、列表分頁展示、地圖上的地名標識和詳細信息,主要數據項為地名地址相冊、羅馬拼音、來歷和歷史等信息。
界樁模塊包含界樁數據管理與展示、圖表統(tǒng)計分析兩大功能。界樁數據分為省、縣、鄉(xiāng)三級,平臺可支持界樁數據的錄入、修改、刪除等操作,支持界樁數據地圖圖層顯示、點擊顯示詳細信息等操作,支持按行政區(qū)劃統(tǒng)計界樁類型、材質以及相鄰地區(qū)分布等圖表展示。
北斗定位設備模塊包含設備綁定與數據展示、設備異常處理與記錄、設備軌跡地圖展示三大功能。北斗定位設備支持實時返回經度、緯度、角度X、角度Y及振動入侵等參數,通過將其與界樁綁定,可充分利用物聯(lián)網、北斗定位等新技術來實現(xiàn)界樁的信息化管理,同時平臺支持設備參數值異常報警、處理、記錄等功能,并支持設備移動軌跡展示。
設置模塊包含管理員身份設置。訪問平臺登錄須輸入管理員賬號和密碼,平臺所有頁面均設置了訪問權限。
數據庫主要包含空間數據庫PostGIS 和非關系型數據庫MongoDB。其中,行政區(qū)劃界線和界樁等矢量數據借助ArcGIS 10.2 軟件連接postgresql 創(chuàng)建并操作PostGIS 空間數據庫來實現(xiàn);地圖服務使用GeoServer 進行發(fā)布。矢量數據的屬性表內容見表1 所列。MongoDB 數據庫以類似Json 的bjson 格式來存放行政區(qū)劃基本信息和歷史沿革、管理員賬號和密碼信息,見表2 所列。
表1 PostGIS 數據庫設計
表2 MongoDB 數據庫設計
HTTP 接口服務主要包含地圖API 和數據API。其中地圖API 包括兩類:一是依據OGC WMTS 標準的天地圖矢量、影像及地形等切片地圖服務;二是依據WFS 標準、通過GeoServer 發(fā)布的行政區(qū)劃界線界樁的網絡要素服務。數據API 是指調用中國·國家地名信息庫的公開接口服務中的地名搜索、詳情及字符串解密等。具體項見表3 所列。
表3 HTTP 接口服務表
系統(tǒng)的客戶端與服務端的跨域認證采用Json Web Token(JWT)。JWT 的原理是在服務器對用戶名和密碼驗證成功后,由服務器生成一個Json 對象,并對其簽名加密生成Token 返回給客戶端。在之后的請求中,客戶端將這個Token 放于HTTP 請求頭中發(fā)送給服務端,一般是將它放入HTTP 請求的Header Authorization 字段中,服務端對Token 進行解析,并驗證其中的信息,包括用戶名、密碼、有效期等。若驗證成功,返回相應狀態(tài)碼,否則返回錯誤信息。
系統(tǒng)涉及的相關技術見表4 所列,共有前端、后端、地圖服務器以及數據庫四部分內容。
表4 涉及的相關技術
本文以內蒙古自治區(qū)行政區(qū)劃界線數據、基本情況和歷史沿革等信息、基于內蒙古自治區(qū)界線等距離生成的隨機點和屬性信息作為界樁數據來實現(xiàn)功能模塊、驗證系統(tǒng)的運行效果。內蒙古自治區(qū)共有12 個地級行政區(qū)劃、103 個縣級行政區(qū)劃(旗縣區(qū))、1 024 個鄉(xiāng)級行政區(qū)劃(街道、鄉(xiāng)鎮(zhèn)、蘇木)。
服務器上安裝ArcGIS、PostGIS、MongoDB 軟件存儲界線界樁及管理員身份數據,GeoServer 設置服務地址并發(fā)布界線界樁服務,NodeJs 設置地址并發(fā)布后端服務,VueJs 啟動前端項目并聯(lián)通天地圖、中國·國家地名信息庫、北斗定位模塊的接口,完成系統(tǒng)部署。部分源代碼片段如圖6 ~圖7 所示。
圖6 獲取要素地圖服務算法
圖7 獲取北斗定位設備信息
行政區(qū)劃基本情況與歷史沿革、界樁錄入、北斗定位設備參數、地圖測距測面等功能界面如圖8 ~圖11 所示。
圖8 行政區(qū)劃基本情況與歷史沿革
圖9 界樁數據錄入與設備綁定
圖10 北斗定位設備參數值
圖11 測距測面工具
本文利用B/S 架構,使用VueJs 和NodeJs 搭建前后端分離項目,建立JWT 的前后端身份認證機制,同時結合ArcGIS、PostGIS、GeoServer 及OpenLayers 等技術實現(xiàn)地理信息系統(tǒng)的落地,設計并實現(xiàn)了具有地圖、可視化圖表、北斗定位應用等功能的行政區(qū)劃界線界樁地名信息系統(tǒng)。系統(tǒng)運行穩(wěn)定,實現(xiàn)了行政界線界樁的信息化管理以及地名的推廣應用,為民政部門關于行政區(qū)劃的信息化建設提供了借鑒,同時為不同政務部門業(yè)務融合服務提供了基礎數據。但是對于服務界樁管理一線工作者的便捷性不足以及數據糾錯等問題,還有待進一步研究。