黃瑞泉
(廣西壯族自治區(qū)地圖院,南寧 530023)
地圖是一種特殊而重要的文化產品,它鮮明地體現(xiàn)著一個國家的主權意志和外交立場,具有嚴肅的政治性、嚴密的科學性和嚴格的法定性,尤其中國地圖因其特定的輪廓直觀反映了中華人民共和國領域和管轄的其他海域,以直觀易讀的特點體現(xiàn)了國家的主權神圣不可侵犯的憲法精神[1].
目前,市場上廣泛流通的地圖產品共有200 多種,主要有地圖冊、地圖集、各類書刊、報紙、影視作品中的地圖示意圖等.面對如此豐富的地圖產品,對于如何做好地圖監(jiān)管工作是一項艱巨的任務.傳統(tǒng)的監(jiān)管手段以人工為主,通過樣圖抽查、定期檢查的辦法,從現(xiàn)在看,已經不能滿足地圖市場日益增長的應用需求.
鑒于目前“問題地圖”范圍廣、存量大、使用率高等問題,將監(jiān)管工作信息化、流程化與數字化才是最優(yōu)解決方案.采用微信小程序作為前端框架,群眾用戶可通過手機拍照上傳,實現(xiàn)對問題地圖的精準舉報.系統(tǒng)根據問題地圖屬性信息自動甄別并發(fā)送至轄區(qū)監(jiān)管部門,實現(xiàn)對問題地圖的快速審查.執(zhí)法部門可根據審查結果,依照舉報線索和地圖申請單位等信息,快速精準執(zhí)法.系統(tǒng)提供全網統(tǒng)一的標準地圖下載入口,地圖申請單位或制圖單位可按需下載,促進問題整改以及防止問題重現(xiàn),從根本上有效解決問題地圖的發(fā)生.
本系統(tǒng)采用4 層架構的模式,分別為:(1)云基礎設施層.(2)數據層.(3)組件層.(4)應用層.系統(tǒng)架構如圖1所示.云基礎設施層選擇租用阿里云服務器ECS,提供彈性基礎設施服務,包括云數據庫資源、云計算資源、云存儲與快照、網絡安全資源及運維監(jiān)控服務等.數據層是指存儲系統(tǒng)數據的層,包括用戶注冊數據、系統(tǒng)邏輯結構數據以及業(yè)務數據.用戶注冊數據具體為審圖單位信息、申請單位信息、制圖單位信息、監(jiān)管與執(zhí)法單位信息等.系統(tǒng)邏輯結構數據具體為系統(tǒng)菜單與權限配置數據、表結構數據、數據字典等.業(yè)務數據具體為標準地圖數據、法律法規(guī)數據、地名地址數據、國家版圖知識數據、地圖審核審批意見以及地圖批準書附件文檔材料以及地圖備案數據等.組件層,使用組件式開發(fā)框架的模式,提供加密解密組件,圖像切片組件,圖像加載顯示組件,移動端與PC 端之間數據傳輸與接引服務轉換組件,數據查詢與統(tǒng)計組件,數據編輯與導出組件等.每個公共邏輯組件都是一項微服務,提供標準JSON 格式的數據接口.應用層也稱為應用實體(AE),提供了包含移動端和PC 端兩種應用實體,移動端包含了我的任務,在線檢定,自檢自查,在線舉報模塊.PC 端提供了圖件檢定管理,舉證管理,地圖教育管理,應急地圖用圖管理,地圖備案管理,系統(tǒng)配置管理6 個應用模塊.

圖1 系統(tǒng)架構圖
技術框架結構如圖2所示,分別為基礎設施層、存儲管理層、服務層、應用層共4 層,每一層級運用的相關技術如下:

圖2 技術架構
(1)基礎設施層
本層為切片服務的正常運行提供了基本保障,包括架設云存儲設施、數據庫服務器集群、Web 應用服務器集群、網絡及安全設施,其中詳情如下:① 服務器操作系統(tǒng):WindowsServer;② Web 應用服務器:Apache Tomcat;③ 數據庫平臺軟件:PostgreSQL+PostGIS,MongoDB;④ 負載均衡/代理服務器:Nginx.
(2)存儲管理層
存儲管理層主要包括存儲空間數據、業(yè)務數據和切片數據是數據庫,其中空間數據和業(yè)務數據采用的是開源的PostgreSQL 數據庫來存儲和管理,PostgreSQL是目前功能最強大、最先進的開源數據庫管理系統(tǒng)[2,3].切片文件數據量龐大、服務組件調用頻繁,通過架設MongoDB 分布式集群方式來進行部署.MongoDB是一個基于分布式文件存儲的數據庫,內核由C++語言編寫,可以為Web 應用提供可擴展的高性能數據存儲解決方案[4].MongoDB 分布式集群[5],也稱之為分片集(sharded cluster).當數據量比較大的時,把數據分片運行在不同的機器中,以降低CPU、內存和IO的壓力,從而提高可用性.高可用性H.A.(High Availability)指的是通過盡量縮短因日常維護操作(計劃)和突發(fā)的系統(tǒng)崩潰(非計劃)所導致的停機時間,以提高系統(tǒng)和應用的可用性.
(3)服務層
系統(tǒng)服務層主要包括基于矢量數據發(fā)布的滿足OGC 標準的WMTS和WebService (Soap、Rest)服務接口,包括發(fā)布的切片服務、切片渲染服務.Web Services是一個平臺獨立的、低耦合的、自包含的、基于可編程的Web的應用程序,可使用開放的XML標準來描述、發(fā)布、發(fā)現(xiàn)、協(xié)調和配置這些應用程序,用于開發(fā)分布式的互操作的應用程序[6,7].在移動應用的數據接引方面,移動接入網關負責處理移動終端的服務請求,移動接入網關提供Rest 風格的標準Web Service.Rest是一種面向資源的訪問架構風格[8,9],該技術強調系統(tǒng)組件之間交互接口的可伸縮性、通用性、組件的獨立性以及用來增強系統(tǒng)的安全性、減少客戶端與服務器端的交互延遲、封閉原有遺留系統(tǒng)的中間組件.
(4)應用層
系統(tǒng)應用層為面向行業(yè)用戶進行,構建了切片服務系統(tǒng),提供面向Web 端和移動端的地圖切片服務應用.
根據業(yè)務場景需求,地圖監(jiān)管的功能設計分為移動端小程序和PC 頁面端兩個部分,具體如下:
(1)移動端功能
① 我的任務:面向執(zhí)法部門,查收群眾舉報或者其他監(jiān)管部門的委托信息,需要實地核查的工作事項.提供基于手機端的事項內容的基本描述、圖件審查意見以及問題發(fā)生地等信息的查看與定位.
② 在線檢定:對授予審圖號的地圖建立身份識別信息,并備案地圖申請單位與負責人相關信息.執(zhí)法人員通過手機掃碼審圖號二維碼,在線核查地圖申請單位、地圖版次、圖幅內容等是否與審圖號匹配,是否存在違規(guī)修改地圖內容、冒用審圖號或私自篡改審圖號等現(xiàn)象,實現(xiàn)監(jiān)管工作的移動便捷執(zhí)法.
③ 自檢自查:建設問題地圖線上智庫.提供常見問題地圖的描述、國家版圖相關知識、地圖相關法律法規(guī)、因問題地圖引發(fā)社會關注的相關案例教育以及地圖監(jiān)管工作領域相關通知文件等內容,并提供全文搜索與詳情查看等功能.
④ 在線舉報:提供問題地圖拍照和實時上傳功能,提供問題地圖文字描述以及自動定位舉報地址等功能.
(2)PC 端功能
① 圖件檢定管理:面向地圖審查管理部門,提供圖表化的圖件檢定的綜合管理功能.提供歷史圖件檢定的查詢回溯,任務圖件正在執(zhí)法的進度查看,還未開展執(zhí)法任務圖件的線上審查等.
② 舉報信息管理:面向執(zhí)法及監(jiān)管部門,統(tǒng)計來自群眾對問題地圖信息舉報的綜合管理功能,基于管理頁面能查看和甄別舉報信息,委派圖件監(jiān)管任務到具體執(zhí)法人的功能等.
③ 地圖智庫管理:面向系統(tǒng)管理員提供文檔在線編輯與發(fā)布的功能.將常見的問題地圖類型、國家版圖知識、地圖相關法律法規(guī)、地圖敏感地名以及地圖監(jiān)管工作相關文件通過系統(tǒng)進行編輯與發(fā)布,為移動端在線智庫提供內容上的支撐保障.
④ 應急地圖管理:提供系統(tǒng)中成品地圖的入庫管理和應急調度管理功能.入庫時將每張地圖進行身份信息登記,按照行政區(qū)、地圖版次、地圖用途、地圖申請單位進行排列,提供快速查詢和下載打印功能.并提供第三方應急平臺的對接接口,實現(xiàn)應急地圖的在線調用和查看.
⑤ 圖件備案管理:地圖備案是地圖審查和地圖監(jiān)管工作銜接中的重要一環(huán),系統(tǒng)向涉圖單位提供公開出版地圖在線備案的入口功能,向地圖監(jiān)管部門提供備案數據的查看審核功能以及標準地圖下載的功能.
⑥ 平臺配置管理:面向系統(tǒng)管理員的綜合管理頁面,保障系統(tǒng)的正常運行,提供用戶的注冊管理、權限管理、數據管理、接口管理以及日志管理等功能.
(1)微服務
微服務是一種用于快速構建應用的架構方案,區(qū)別于傳統(tǒng)的單體式方案,微服務架構可將系統(tǒng)應用拆分成多個核心功能.每個功能都被視為一項微服務,可獨立構建和部署,因此,各個微服務在底層業(yè)務構架上是不存在相互影響的.在這個基礎之上,抽取系統(tǒng)公共邏輯業(yè)務,把這些業(yè)務編制成框架庫組件,并發(fā)布形成微服務.這種低耦合的方法可以大范圍減少服務調用的頻率和性能損耗,也為系統(tǒng)業(yè)務延展性提供了基礎支撐.同時將數據庫也進行完全拆分,各個數據服務采用異構的拆分技術,實現(xiàn)業(yè)務邏輯的真實意義上的解耦.
(2)Spring Boot 架構
Spring Boot是大量開源庫的集合,它能夠被任意項目的構建系統(tǒng)所使用.通過在MAVEN 項目的pom.xml 文件中添加相關依賴包,然后使用對應注解來代替繁瑣的XML 配置文件以管理對象的生命周期,減少了系統(tǒng)開發(fā)的繁瑣.Spring Boot 框架下有著完善的MVC 設計模型支持,采用了約定優(yōu)于配置策略,Convention over configuration,是一種由Spring Boot 本身來配置目標結構,由開發(fā)者在結構中添加信息的軟件設計范式,使得在Spring Boot 環(huán)境下進行 MVC 模式的開發(fā)變得尤為簡單[10].因此,面對將公共邏輯業(yè)務變成的公共的框架庫組件,滿足系統(tǒng)的單獨或者快速組裝調用,該項技術具備了所有優(yōu)勢.
RSA是目前使用最廣泛的公鑰密碼體制之一,于1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的.RSA 加密解密流程如圖3所示,明文經過轉碼后形成字節(jié)流,在加密算法中引入公鑰編譯成密文數據流.數據調用即進入解密操作,通過服務端的私鑰和二進制轉碼,將密文轉譯形成解密明文.系統(tǒng)中將加密算法封裝形成加密組件,前端動態(tài)傳入公鑰參數明文,系統(tǒng)后臺通過私鑰參數動態(tài)解譯明文,實現(xiàn)數據的安全加載.

圖3 RSA 加密和解密流程示意圖
(1)算法公式描述
隨機取不相等的質數A和B,取得兩者的乘積:

取乘積N的歐拉函數:

取隨機正整數P為加密鑰,要求:

且P與φ (N)互為質數,即最大公約數為1:

計算P對于 φ(N)的模反元素S,把S設定為密鑰中用來解密的關鍵數字,通過以下公式求解:

在已知值P和φ(N)的情況下,根據上述公式即得到的一元二次方程:

根據“擴展歐幾里得算法”求解一元二次方程方法,就可解出模反元素S的值,即為解密鑰的值,算法如下:

將參數(N,P)設置為公鑰,將參數(S,P)設置為私鑰.
(2)算法加密
對明文M按照ANSI 編碼,轉化為二進制分組,使得每個分組對應的十進制數小于N,然后依次對每個分組做一次加密,所有分組的密文構成的序列就是原始消息的加密結果.即M滿足 0 ≤M≤N,則得到密文為C加密算法如下:

(3)算法解密
解密算法,即為將密文C解密成明文M的過程,算法如下:

Vue.js是一套用于構建用戶界面的漸進式JavaScript框架,使用node.js 技術,安卓 vue-cli 腳手架構建工具,由 vue-router 配置路由,使用 Axios 插件封裝的Ajax進行數據交互,實現(xiàn)數據持久化[11].它可根據項目的需求,可選擇在package.json (組件庫配置文件)中在的dependencies (依賴包)選項中填入第三方組件名稱和版本號,系統(tǒng)根據寫入的內容并自動下載對于的組件版本并進行加載校驗.比如,寫入element-ui 組件庫,實現(xiàn)前端頁面的模塊風格統(tǒng)一和快速靈活的開發(fā)能力.寫入echarts 組件庫,實現(xiàn)前端頁面數據快速可視化表達功能.寫入jszip 組件庫,實現(xiàn)前端頁面能夠加載解譯zip 壓縮文件的功能.因此,選用該項技術能夠靈活地面對后端微服務的存在頻繁變更的需求,實現(xiàn)敏捷的迭代和高效的運維.
微信小程序的開發(fā)框架基于MINA 框架,MINA框架是一個通用的網絡通信框架,采用MVVM 模式,框架核心是一個實時響應的數據綁定系統(tǒng).微信小程序開發(fā)框架如圖4所示.邏輯層采用JavaScript 語言實現(xiàn)微信小程序邏輯行為,視圖層由微信官方提供的WXML (WeiXin Mark Language)和WXSS (WeiXin Style Sheet)語言來編輯,視圖層和邏輯層之間的交互依靠數據傳輸和事件系統(tǒng)完成[12].微信小程序的特點是無需下載、觸手可及、用完即走不占用手機內存.因此,系統(tǒng)在建成之后,用戶可基于小程序實現(xiàn)問題地圖拍照,問題自查、在線舉報、在線檢定等功能,實現(xiàn)問題地圖的快速定位和監(jiān)管.

圖4 小程序開發(fā)框架圖
以廣西的地圖市場監(jiān)管工作為研究對象,在阿里云(ECS)服務器上部署了基于Spring Boot 框架的地圖監(jiān)管系統(tǒng).在南寧市、柳州市等地開展試點,用戶通過微信小程序拍照問題地圖上傳云端,監(jiān)管部門人員在PC 端自動接收到該照片數據,并選取對應的標準地圖圖片進行配準比對,在問題地圖的圖面上標繪出錯誤的信息,并形成審核意見通過微信、短信通知返回的制圖與申請單位,相關涉圖單位可基于審核意見及標準地圖數據對問題地圖做快速更正,形成問題地圖在線舉證、檢定、整改的信息化監(jiān)管效果.
系統(tǒng)啟動運行以來,為第17 屆中國-東盟博覽會提供了地圖在線監(jiān)管服務.據統(tǒng)計,在博覽會期間總共收到涉圖材料57 件,共計220 幅地圖.監(jiān)管人員通過系統(tǒng)在2 天時間內,查出問題地圖數量157 幅,其中以“南海諸島問題”、“釣魚島、赤尾島問題”類型的“問題地圖”居多.完成審查后,系統(tǒng)自動將涉圖材料的審查意見以郵件形式,實時發(fā)送給申請單位進行修改,保證了博覽會的如期舉辦.
系統(tǒng)的運行發(fā)布,為當地的監(jiān)管部門對于地圖監(jiān)管工作提供了一個可執(zhí)行的解決方案,也間接的從源頭上減少了“未經審核”和“錯誤表示”的問題地圖的出現(xiàn),受到用戶的好評.問題地圖監(jiān)管數據統(tǒng)計如圖5所示.

圖5 系統(tǒng)成果截圖
在使用傳統(tǒng)的Spring 框架去做Java EE (Java Enterprise Edition)的開發(fā),大量的XML 配置文件存儲于項目之中,導致JavaEE 項目變得異常笨重,繁瑣的邏輯結構配置與引用第三方框架的配置,導致了開發(fā)和部署的變得異常困難.Spring Boot 繼承Spring 聲明事物的支持、AOP 編程的支持等優(yōu)良特性的基礎上,集成了大量常用的第三方庫配置,零配置的開箱即用(out-of-the-box)的開發(fā)模式,讓開發(fā)者能夠更加專注于業(yè)務邏輯研究.
當前,Spring Boot 微服務框架在互聯(lián)網行業(yè)應用十分廣泛,微服務靈活性注定是未來發(fā)展的趨勢,信息化項目會從傳統(tǒng)架構慢慢轉向微服務架構,因為微服務可以讓不同的團隊專注于更小范圍的工作職責、使用獨立的技術、更安全更頻繁地部署.在需求日益增長的地圖市場應用與監(jiān)管領域,基于Spring Boot 微服務框架下開發(fā)的地圖監(jiān)管系統(tǒng),在技術上提供了更靈活的底層邏輯和快速開發(fā)能力.在業(yè)務上,建設包含了微信小程序和PC 端應用服務,實現(xiàn)了問題地圖線索舉報、查證檢定、后續(xù)整改以及成圖備案等信息化辦公業(yè)務,能夠為當前的地圖市場監(jiān)管的主管部門提供一套可行的解決辦法.