黃瑞泉
(廣西壯族自治區(qū)地圖院,南寧 530023)
地圖是一種特殊而重要的文化產(chǎn)品,它鮮明地體現(xiàn)著一個國家的主權(quán)意志和外交立場,具有嚴肅的政治性、嚴密的科學(xué)性和嚴格的法定性,尤其中國地圖因其特定的輪廓直觀反映了中華人民共和國領(lǐng)域和管轄的其他海域,以直觀易讀的特點體現(xiàn)了國家的主權(quán)神圣不可侵犯的憲法精神[1].
目前,市場上廣泛流通的地圖產(chǎn)品共有200 多種,主要有地圖冊、地圖集、各類書刊、報紙、影視作品中的地圖示意圖等.面對如此豐富的地圖產(chǎn)品,對于如何做好地圖監(jiān)管工作是一項艱巨的任務(wù).傳統(tǒng)的監(jiān)管手段以人工為主,通過樣圖抽查、定期檢查的辦法,從現(xiàn)在看,已經(jīng)不能滿足地圖市場日益增長的應(yīng)用需求.
鑒于目前“問題地圖”范圍廣、存量大、使用率高等問題,將監(jiān)管工作信息化、流程化與數(shù)字化才是最優(yōu)解決方案.采用微信小程序作為前端框架,群眾用戶可通過手機拍照上傳,實現(xiàn)對問題地圖的精準舉報.系統(tǒng)根據(jù)問題地圖屬性信息自動甄別并發(fā)送至轄區(qū)監(jiān)管部門,實現(xiàn)對問題地圖的快速審查.執(zhí)法部門可根據(jù)審查結(jié)果,依照舉報線索和地圖申請單位等信息,快速精準執(zhí)法.系統(tǒng)提供全網(wǎng)統(tǒng)一的標準地圖下載入口,地圖申請單位或制圖單位可按需下載,促進問題整改以及防止問題重現(xiàn),從根本上有效解決問題地圖的發(fā)生.
本系統(tǒng)采用4 層架構(gòu)的模式,分別為:(1)云基礎(chǔ)設(shè)施層.(2)數(shù)據(jù)層.(3)組件層.(4)應(yīng)用層.系統(tǒng)架構(gòu)如圖1所示.云基礎(chǔ)設(shè)施層選擇租用阿里云服務(wù)器ECS,提供彈性基礎(chǔ)設(shè)施服務(wù),包括云數(shù)據(jù)庫資源、云計算資源、云存儲與快照、網(wǎng)絡(luò)安全資源及運維監(jiān)控服務(wù)等.數(shù)據(jù)層是指存儲系統(tǒng)數(shù)據(jù)的層,包括用戶注冊數(shù)據(jù)、系統(tǒng)邏輯結(jié)構(gòu)數(shù)據(jù)以及業(yè)務(wù)數(shù)據(jù).用戶注冊數(shù)據(jù)具體為審圖單位信息、申請單位信息、制圖單位信息、監(jiān)管與執(zhí)法單位信息等.系統(tǒng)邏輯結(jié)構(gòu)數(shù)據(jù)具體為系統(tǒng)菜單與權(quán)限配置數(shù)據(jù)、表結(jié)構(gòu)數(shù)據(jù)、數(shù)據(jù)字典等.業(yè)務(wù)數(shù)據(jù)具體為標準地圖數(shù)據(jù)、法律法規(guī)數(shù)據(jù)、地名地址數(shù)據(jù)、國家版圖知識數(shù)據(jù)、地圖審核審批意見以及地圖批準書附件文檔材料以及地圖備案數(shù)據(jù)等.組件層,使用組件式開發(fā)框架的模式,提供加密解密組件,圖像切片組件,圖像加載顯示組件,移動端與PC 端之間數(shù)據(jù)傳輸與接引服務(wù)轉(zhuǎn)換組件,數(shù)據(jù)查詢與統(tǒng)計組件,數(shù)據(jù)編輯與導(dǎo)出組件等.每個公共邏輯組件都是一項微服務(wù),提供標準JSON 格式的數(shù)據(jù)接口.應(yīng)用層也稱為應(yīng)用實體(AE),提供了包含移動端和PC 端兩種應(yīng)用實體,移動端包含了我的任務(wù),在線檢定,自檢自查,在線舉報模塊.PC 端提供了圖件檢定管理,舉證管理,地圖教育管理,應(yīng)急地圖用圖管理,地圖備案管理,系統(tǒng)配置管理6 個應(yīng)用模塊.
圖1 系統(tǒng)架構(gòu)圖
技術(shù)框架結(jié)構(gòu)如圖2所示,分別為基礎(chǔ)設(shè)施層、存儲管理層、服務(wù)層、應(yīng)用層共4 層,每一層級運用的相關(guān)技術(shù)如下:
圖2 技術(shù)架構(gòu)
(1)基礎(chǔ)設(shè)施層
本層為切片服務(wù)的正常運行提供了基本保障,包括架設(shè)云存儲設(shè)施、數(shù)據(jù)庫服務(wù)器集群、Web 應(yīng)用服務(wù)器集群、網(wǎng)絡(luò)及安全設(shè)施,其中詳情如下:① 服務(wù)器操作系統(tǒng):WindowsServer;② Web 應(yīng)用服務(wù)器:Apache Tomcat;③ 數(shù)據(jù)庫平臺軟件:PostgreSQL+PostGIS,MongoDB;④ 負載均衡/代理服務(wù)器:Nginx.
(2)存儲管理層
存儲管理層主要包括存儲空間數(shù)據(jù)、業(yè)務(wù)數(shù)據(jù)和切片數(shù)據(jù)是數(shù)據(jù)庫,其中空間數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)采用的是開源的PostgreSQL 數(shù)據(jù)庫來存儲和管理,PostgreSQL是目前功能最強大、最先進的開源數(shù)據(jù)庫管理系統(tǒng)[2,3].切片文件數(shù)據(jù)量龐大、服務(wù)組件調(diào)用頻繁,通過架設(shè)MongoDB 分布式集群方式來進行部署.MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫,內(nèi)核由C++語言編寫,可以為Web 應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案[4].MongoDB 分布式集群[5],也稱之為分片集(sharded cluster).當數(shù)據(jù)量比較大的時,把數(shù)據(jù)分片運行在不同的機器中,以降低CPU、內(nèi)存和IO的壓力,從而提高可用性.高可用性H.A.(High Availability)指的是通過盡量縮短因日常維護操作(計劃)和突發(fā)的系統(tǒng)崩潰(非計劃)所導(dǎo)致的停機時間,以提高系統(tǒng)和應(yīng)用的可用性.
(3)服務(wù)層
系統(tǒng)服務(wù)層主要包括基于矢量數(shù)據(jù)發(fā)布的滿足OGC 標準的WMTS和WebService (Soap、Rest)服務(wù)接口,包括發(fā)布的切片服務(wù)、切片渲染服務(wù).Web Services是一個平臺獨立的、低耦合的、自包含的、基于可編程的Web的應(yīng)用程序,可使用開放的XML標準來描述、發(fā)布、發(fā)現(xiàn)、協(xié)調(diào)和配置這些應(yīng)用程序,用于開發(fā)分布式的互操作的應(yīng)用程序[6,7].在移動應(yīng)用的數(shù)據(jù)接引方面,移動接入網(wǎng)關(guān)負責(zé)處理移動終端的服務(wù)請求,移動接入網(wǎng)關(guān)提供Rest 風(fēng)格的標準Web Service.Rest是一種面向資源的訪問架構(gòu)風(fēng)格[8,9],該技術(shù)強調(diào)系統(tǒng)組件之間交互接口的可伸縮性、通用性、組件的獨立性以及用來增強系統(tǒng)的安全性、減少客戶端與服務(wù)器端的交互延遲、封閉原有遺留系統(tǒng)的中間組件.
(4)應(yīng)用層
系統(tǒng)應(yīng)用層為面向行業(yè)用戶進行,構(gòu)建了切片服務(wù)系統(tǒng),提供面向Web 端和移動端的地圖切片服務(wù)應(yīng)用.
根據(jù)業(yè)務(wù)場景需求,地圖監(jiān)管的功能設(shè)計分為移動端小程序和PC 頁面端兩個部分,具體如下:
(1)移動端功能
① 我的任務(wù):面向執(zhí)法部門,查收群眾舉報或者其他監(jiān)管部門的委托信息,需要實地核查的工作事項.提供基于手機端的事項內(nèi)容的基本描述、圖件審查意見以及問題發(fā)生地等信息的查看與定位.
② 在線檢定:對授予審圖號的地圖建立身份識別信息,并備案地圖申請單位與負責(zé)人相關(guān)信息.執(zhí)法人員通過手機掃碼審圖號二維碼,在線核查地圖申請單位、地圖版次、圖幅內(nèi)容等是否與審圖號匹配,是否存在違規(guī)修改地圖內(nèi)容、冒用審圖號或私自篡改審圖號等現(xiàn)象,實現(xiàn)監(jiān)管工作的移動便捷執(zhí)法.
③ 自檢自查:建設(shè)問題地圖線上智庫.提供常見問題地圖的描述、國家版圖相關(guān)知識、地圖相關(guān)法律法規(guī)、因問題地圖引發(fā)社會關(guān)注的相關(guān)案例教育以及地圖監(jiān)管工作領(lǐng)域相關(guān)通知文件等內(nèi)容,并提供全文搜索與詳情查看等功能.
④ 在線舉報:提供問題地圖拍照和實時上傳功能,提供問題地圖文字描述以及自動定位舉報地址等功能.
(2)PC 端功能
① 圖件檢定管理:面向地圖審查管理部門,提供圖表化的圖件檢定的綜合管理功能.提供歷史圖件檢定的查詢回溯,任務(wù)圖件正在執(zhí)法的進度查看,還未開展執(zhí)法任務(wù)圖件的線上審查等.
② 舉報信息管理:面向執(zhí)法及監(jiān)管部門,統(tǒng)計來自群眾對問題地圖信息舉報的綜合管理功能,基于管理頁面能查看和甄別舉報信息,委派圖件監(jiān)管任務(wù)到具體執(zhí)法人的功能等.
③ 地圖智庫管理:面向系統(tǒng)管理員提供文檔在線編輯與發(fā)布的功能.將常見的問題地圖類型、國家版圖知識、地圖相關(guān)法律法規(guī)、地圖敏感地名以及地圖監(jiān)管工作相關(guān)文件通過系統(tǒng)進行編輯與發(fā)布,為移動端在線智庫提供內(nèi)容上的支撐保障.
④ 應(yīng)急地圖管理:提供系統(tǒng)中成品地圖的入庫管理和應(yīng)急調(diào)度管理功能.入庫時將每張地圖進行身份信息登記,按照行政區(qū)、地圖版次、地圖用途、地圖申請單位進行排列,提供快速查詢和下載打印功能.并提供第三方應(yīng)急平臺的對接接口,實現(xiàn)應(yīng)急地圖的在線調(diào)用和查看.
⑤ 圖件備案管理:地圖備案是地圖審查和地圖監(jiān)管工作銜接中的重要一環(huán),系統(tǒng)向涉圖單位提供公開出版地圖在線備案的入口功能,向地圖監(jiān)管部門提供備案數(shù)據(jù)的查看審核功能以及標準地圖下載的功能.
⑥ 平臺配置管理:面向系統(tǒng)管理員的綜合管理頁面,保障系統(tǒng)的正常運行,提供用戶的注冊管理、權(quán)限管理、數(shù)據(jù)管理、接口管理以及日志管理等功能.
(1)微服務(wù)
微服務(wù)是一種用于快速構(gòu)建應(yīng)用的架構(gòu)方案,區(qū)別于傳統(tǒng)的單體式方案,微服務(wù)架構(gòu)可將系統(tǒng)應(yīng)用拆分成多個核心功能.每個功能都被視為一項微服務(wù),可獨立構(gòu)建和部署,因此,各個微服務(wù)在底層業(yè)務(wù)構(gòu)架上是不存在相互影響的.在這個基礎(chǔ)之上,抽取系統(tǒng)公共邏輯業(yè)務(wù),把這些業(yè)務(wù)編制成框架庫組件,并發(fā)布形成微服務(wù).這種低耦合的方法可以大范圍減少服務(wù)調(diào)用的頻率和性能損耗,也為系統(tǒng)業(yè)務(wù)延展性提供了基礎(chǔ)支撐.同時將數(shù)據(jù)庫也進行完全拆分,各個數(shù)據(jù)服務(wù)采用異構(gòu)的拆分技術(shù),實現(xiàn)業(yè)務(wù)邏輯的真實意義上的解耦.
(2)Spring Boot 架構(gòu)
Spring Boot是大量開源庫的集合,它能夠被任意項目的構(gòu)建系統(tǒng)所使用.通過在MAVEN 項目的pom.xml 文件中添加相關(guān)依賴包,然后使用對應(yīng)注解來代替繁瑣的XML 配置文件以管理對象的生命周期,減少了系統(tǒng)開發(fā)的繁瑣.Spring Boot 框架下有著完善的MVC 設(shè)計模型支持,采用了約定優(yōu)于配置策略,Convention over configuration,是一種由Spring Boot 本身來配置目標結(jié)構(gòu),由開發(fā)者在結(jié)構(gòu)中添加信息的軟件設(shè)計范式,使得在Spring Boot 環(huán)境下進行 MVC 模式的開發(fā)變得尤為簡單[10].因此,面對將公共邏輯業(yè)務(wù)變成的公共的框架庫組件,滿足系統(tǒng)的單獨或者快速組裝調(diào)用,該項技術(shù)具備了所有優(yōu)勢.
RSA是目前使用最廣泛的公鑰密碼體制之一,于1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的.RSA 加密解密流程如圖3所示,明文經(jīng)過轉(zhuǎn)碼后形成字節(jié)流,在加密算法中引入公鑰編譯成密文數(shù)據(jù)流.數(shù)據(jù)調(diào)用即進入解密操作,通過服務(wù)端的私鑰和二進制轉(zhuǎn)碼,將密文轉(zhuǎn)譯形成解密明文.系統(tǒng)中將加密算法封裝形成加密組件,前端動態(tài)傳入公鑰參數(shù)明文,系統(tǒng)后臺通過私鑰參數(shù)動態(tài)解譯明文,實現(xiàn)數(shù)據(jù)的安全加載.
圖3 RSA 加密和解密流程示意圖
(1)算法公式描述
隨機取不相等的質(zhì)數(shù)A和B,取得兩者的乘積:
取乘積N的歐拉函數(shù):
取隨機正整數(shù)P為加密鑰,要求:
且P與φ (N)互為質(zhì)數(shù),即最大公約數(shù)為1:
計算P對于 φ(N)的模反元素S,把S設(shè)定為密鑰中用來解密的關(guān)鍵數(shù)字,通過以下公式求解:
在已知值P和φ(N)的情況下,根據(jù)上述公式即得到的一元二次方程:
根據(jù)“擴展歐幾里得算法”求解一元二次方程方法,就可解出模反元素S的值,即為解密鑰的值,算法如下:
將參數(shù)(N,P)設(shè)置為公鑰,將參數(shù)(S,P)設(shè)置為私鑰.
(2)算法加密
對明文M按照ANSI 編碼,轉(zhuǎn)化為二進制分組,使得每個分組對應(yīng)的十進制數(shù)小于N,然后依次對每個分組做一次加密,所有分組的密文構(gòu)成的序列就是原始消息的加密結(jié)果.即M滿足 0 ≤M≤N,則得到密文為C加密算法如下:
(3)算法解密
解密算法,即為將密文C解密成明文M的過程,算法如下:
Vue.js是一套用于構(gòu)建用戶界面的漸進式JavaScript框架,使用node.js 技術(shù),安卓 vue-cli 腳手架構(gòu)建工具,由 vue-router 配置路由,使用 Axios 插件封裝的Ajax進行數(shù)據(jù)交互,實現(xiàn)數(shù)據(jù)持久化[11].它可根據(jù)項目的需求,可選擇在package.json (組件庫配置文件)中在的dependencies (依賴包)選項中填入第三方組件名稱和版本號,系統(tǒng)根據(jù)寫入的內(nèi)容并自動下載對于的組件版本并進行加載校驗.比如,寫入element-ui 組件庫,實現(xiàn)前端頁面的模塊風(fēng)格統(tǒng)一和快速靈活的開發(fā)能力.寫入echarts 組件庫,實現(xiàn)前端頁面數(shù)據(jù)快速可視化表達功能.寫入jszip 組件庫,實現(xiàn)前端頁面能夠加載解譯zip 壓縮文件的功能.因此,選用該項技術(shù)能夠靈活地面對后端微服務(wù)的存在頻繁變更的需求,實現(xiàn)敏捷的迭代和高效的運維.
微信小程序的開發(fā)框架基于MINA 框架,MINA框架是一個通用的網(wǎng)絡(luò)通信框架,采用MVVM 模式,框架核心是一個實時響應(yīng)的數(shù)據(jù)綁定系統(tǒng).微信小程序開發(fā)框架如圖4所示.邏輯層采用JavaScript 語言實現(xiàn)微信小程序邏輯行為,視圖層由微信官方提供的WXML (WeiXin Mark Language)和WXSS (WeiXin Style Sheet)語言來編輯,視圖層和邏輯層之間的交互依靠數(shù)據(jù)傳輸和事件系統(tǒng)完成[12].微信小程序的特點是無需下載、觸手可及、用完即走不占用手機內(nèi)存.因此,系統(tǒng)在建成之后,用戶可基于小程序?qū)崿F(xiàn)問題地圖拍照,問題自查、在線舉報、在線檢定等功能,實現(xiàn)問題地圖的快速定位和監(jiān)管.
圖4 小程序開發(fā)框架圖
以廣西的地圖市場監(jiān)管工作為研究對象,在阿里云(ECS)服務(wù)器上部署了基于Spring Boot 框架的地圖監(jiān)管系統(tǒng).在南寧市、柳州市等地開展試點,用戶通過微信小程序拍照問題地圖上傳云端,監(jiān)管部門人員在PC 端自動接收到該照片數(shù)據(jù),并選取對應(yīng)的標準地圖圖片進行配準比對,在問題地圖的圖面上標繪出錯誤的信息,并形成審核意見通過微信、短信通知返回的制圖與申請單位,相關(guān)涉圖單位可基于審核意見及標準地圖數(shù)據(jù)對問題地圖做快速更正,形成問題地圖在線舉證、檢定、整改的信息化監(jiān)管效果.
系統(tǒng)啟動運行以來,為第17 屆中國-東盟博覽會提供了地圖在線監(jiān)管服務(wù).據(jù)統(tǒng)計,在博覽會期間總共收到涉圖材料57 件,共計220 幅地圖.監(jiān)管人員通過系統(tǒng)在2 天時間內(nèi),查出問題地圖數(shù)量157 幅,其中以“南海諸島問題”、“釣魚島、赤尾島問題”類型的“問題地圖”居多.完成審查后,系統(tǒng)自動將涉圖材料的審查意見以郵件形式,實時發(fā)送給申請單位進行修改,保證了博覽會的如期舉辦.
系統(tǒng)的運行發(fā)布,為當?shù)氐谋O(jiān)管部門對于地圖監(jiān)管工作提供了一個可執(zhí)行的解決方案,也間接的從源頭上減少了“未經(jīng)審核”和“錯誤表示”的問題地圖的出現(xiàn),受到用戶的好評.問題地圖監(jiān)管數(shù)據(jù)統(tǒng)計如圖5所示.
圖5 系統(tǒng)成果截圖
在使用傳統(tǒng)的Spring 框架去做Java EE (Java Enterprise Edition)的開發(fā),大量的XML 配置文件存儲于項目之中,導(dǎo)致JavaEE 項目變得異常笨重,繁瑣的邏輯結(jié)構(gòu)配置與引用第三方框架的配置,導(dǎo)致了開發(fā)和部署的變得異常困難.Spring Boot 繼承Spring 聲明事物的支持、AOP 編程的支持等優(yōu)良特性的基礎(chǔ)上,集成了大量常用的第三方庫配置,零配置的開箱即用(out-of-the-box)的開發(fā)模式,讓開發(fā)者能夠更加專注于業(yè)務(wù)邏輯研究.
當前,Spring Boot 微服務(wù)框架在互聯(lián)網(wǎng)行業(yè)應(yīng)用十分廣泛,微服務(wù)靈活性注定是未來發(fā)展的趨勢,信息化項目會從傳統(tǒng)架構(gòu)慢慢轉(zhuǎn)向微服務(wù)架構(gòu),因為微服務(wù)可以讓不同的團隊專注于更小范圍的工作職責(zé)、使用獨立的技術(shù)、更安全更頻繁地部署.在需求日益增長的地圖市場應(yīng)用與監(jiān)管領(lǐng)域,基于Spring Boot 微服務(wù)框架下開發(fā)的地圖監(jiān)管系統(tǒng),在技術(shù)上提供了更靈活的底層邏輯和快速開發(fā)能力.在業(yè)務(wù)上,建設(shè)包含了微信小程序和PC 端應(yīng)用服務(wù),實現(xiàn)了問題地圖線索舉報、查證檢定、后續(xù)整改以及成圖備案等信息化辦公業(yè)務(wù),能夠為當前的地圖市場監(jiān)管的主管部門提供一套可行的解決辦法.