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