劉暢,邵楠
(沈陽市勘察測繪研究院有限公司,遼寧 沈陽 110000)
2020年6月,自然資源部辦公廳發(fā)布了《2020年自然資源部網(wǎng)絡安全與信息化工作要點》,文件指出,按照“放管服”的總體要求,結合自然資源管理和發(fā)展的需要,在統(tǒng)一的國土空間基礎信息平臺上形成一體化的自然資源政務信息化管理,加強自然資源業(yè)務管理信息化建設,推進自然資源系統(tǒng)內(nèi)數(shù)據(jù)共享與應用[1]。自然資源數(shù)據(jù)種類豐富,城市級別管理的數(shù)據(jù)量龐大,并隨著城市發(fā)展不斷累積增長,通過城市地理信息系統(tǒng)進行管理與使用時,將涉及不同類型,不同區(qū)劃數(shù)據(jù)的權限控制問題[2],比如一種典型的應用場景為:“市、區(qū)兩級應用”,市級別與區(qū)級別共用同源數(shù)據(jù),市級用戶可調(diào)用全市范圍全部數(shù)據(jù)內(nèi)容,而區(qū)級用戶則只能調(diào)用其管轄范圍內(nèi)的數(shù)據(jù),這就要求地圖服務需要根據(jù)不同用戶的權限返回相應范圍內(nèi)的數(shù)據(jù)。因此,如何在地圖服務應用中完成地圖內(nèi)容的顯示控制是值得探討的。
城市地理數(shù)據(jù)服務通常采用成熟的GIS軟件服務,如ArcGIS Server、SuperMap IServer、Geoserver等。地圖服務一般包括切片地圖服務WMS(Web Map Service),要素地圖服務WFS(Web Feature Service)等幾種類型[3],不同服務在前端顯示的技術有所不同,其中切片地圖服務又叫緩存地圖服務,地圖緩存是通過制作完成的不同比例尺級別的地圖圖像進行分發(fā),實現(xiàn)地圖使用的一種非常有效的方法。因此在地圖顯示方面,進行不規(guī)則范圍地控制比較困難;要素地圖服務則可以通過屬性、空間范圍等參數(shù)設置篩選顯示的數(shù)據(jù)。文獻[3]針對ArcGIS的動態(tài)服務提出了一種圖像處理的方式實現(xiàn)范圍控制,顯示效果較好,但對切片服務的控制無法實現(xiàn)。文獻[4]對切片服務請求返回的圖片進行相交判斷,實時裁切達到范圍顯示控制,但是由于計算量較大,影響了地圖顯示的效率。本文在實踐中嘗試了基于Html5頁面CSS不規(guī)則遮罩的控制方法,結合現(xiàn)有的幾種控制方法,綜合對比了它們的優(yōu)缺點。
電子地圖顯示范圍的控制需要與應用系統(tǒng)相集成,一般顯示范圍控制的流程為:應用系統(tǒng)用戶登錄獲取角色與權限信息,由角色權限信息獲取控制范圍圖形數(shù)據(jù),最后根據(jù)控制范圍與地圖服務請求的數(shù)據(jù)共同處理,完成電子地圖顯示范圍的控制,如圖1所示。
圖1 范圍控制流程
地圖服務是通過用戶發(fā)送服務請求返回地圖數(shù)據(jù)的Webservices服務,因此可以根據(jù)客戶端發(fā)送的請求,在服務器端實時處理,并將生成的數(shù)據(jù)發(fā)送給客戶端,以實現(xiàn)地圖數(shù)據(jù)權限控制。而在地圖顯示控制方面,可以按照服務端權限控制達到顯示效果,也可以從客服端角度完成處理。
地圖服務的應用是典型的B/S方式,因此可將地圖服務進行轉發(fā)包裝,服務請求時需要將范圍信息或權限信息發(fā)送至代理服務,由代理服務根據(jù)范圍對地圖服務進行操作處理[5,6],如圖2所示。根據(jù)地圖服務的類型,有不同的處理方式:
圖2 服務端處理流程
(1)動態(tài)服務處理
以ArcGIS Server為例,動態(tài)服務是要素服務的一種,通過客戶端請求發(fā)送至服務端,由服務端根據(jù)地圖的實時顯示范圍返回當前要素的圖像,因此,可以對返回的要素圖像進行圖形裁切,根據(jù)顯示范圍與圖像的關系,將范圍內(nèi)部圖像的像素值保留,范圍外部的像素值賦值為透明或地圖的底色,最終將實時處理后的圖像返回客戶端。
(2)切片服務處理
切片服務根據(jù)服務請求返回緩存完成的圖像文件,圖像文件數(shù)量隨級別的不同而不同,比例尺越大圖像數(shù)量越大,與動態(tài)服務處理方式相類似,需要根據(jù)范圍數(shù)據(jù)對請求的邊界圖像裁切,范圍內(nèi)部的圖像則不需要。
地圖操作限制是應用系統(tǒng)的前端地圖控制方法,在用戶登錄后獲取該用戶權限對應范圍的外接矩形數(shù)據(jù),在用戶進行地圖縮放,平移等操作時,實時判別用戶視窗與外接矩形的空間位置關系,一旦操作超出外接矩形范圍外,將控制鼠標拖拽操作,強制拉回地圖視窗到限制范圍內(nèi),從而達到限制目的。
范圍遮罩是將顯示范圍的矢量數(shù)據(jù)發(fā)布為要素地圖服務或者切片服務,遮罩面采用白色等遮擋顏色,根據(jù)用戶權限對應的區(qū)域,使用不同的要素服務疊加顯示,用戶不能通過圖層管理等手段移除疊加的范圍服務。
CSS遮罩也是一種采用前端遮擋顯示范圍的方法,從應用系統(tǒng)前端頁面(Html5)的角度出發(fā),選擇在地圖顯示控件的上方,疊加一層不透明(或與地圖底色一致)的DIV,用戶登錄獲取權限對應的顯示范圍數(shù)據(jù),按照當前地圖顯示范圍與視窗的關系,將顯示范圍數(shù)據(jù)轉換為視窗坐標點位,按照CSS中裁切屬性的輸入要求,將遮罩DIV裁切出空洞進而顯示出地圖部分。如圖3(a)所示,裁切方法默認是按照屏幕坐標串順時針路徑裁剪區(qū)域,該區(qū)域內(nèi)部將保留并顯示,而外部則被裁剪。對于遮罩而言則是相反的,需要保留范圍外部的遮擋面,因此需要按照圖3(b)所示,從外部某一頂點出發(fā),將圖形外部當作“內(nèi)部”,實現(xiàn)挖洞裁切。
圖3 裁切方式
需要注意的是,遮罩DIV的裁切需要實時監(jiān)控地圖范圍變化,完成動態(tài)裁切,從而保證地圖在縮放、平移時實時完成顯示區(qū)域的控制。
(1)顯示效果
基于服務端圖像處理方式是進行了傳輸圖像的裁切,可以嚴格按照輸入邊界進行控制,適用于不規(guī)則范圍控制的場景;實際中顯示范圍控制區(qū)域多以行政區(qū)劃為主,邊界線不規(guī)則,而地圖操作限制的方式只能以外界矩形的大小展示地圖內(nèi)容,無法達到不規(guī)則區(qū)域的顯示,因此只適用于簡單范圍控制,對權限要求不高的場景;圖層疊加的矢量范圍遮罩方式在靜態(tài)地圖效果中有不錯的顯示,但是在進行地圖拖拽,縮放等操作時,遮罩層會出現(xiàn)顯示延遲,通常會在鼠標釋放操作完成后加載,這樣導致地圖內(nèi)容泄露,影響控制的效果;CSS不規(guī)則遮罩是Html5動態(tài)遮擋方式,能夠根據(jù)不規(guī)則的范圍線計算遮擋范圍,顯示效果較好,如圖4所示。
圖4 CSS遮罩效果
(2)顯示速度
基于服務端圖像處理方式的圖像處理算法運行在服務器中,算法計算的時間與控制范圍圖形的復雜度、圖像的數(shù)量、大小都存在一定的關系。對于動態(tài)服務,其處理過程是僅對一張圖像進行相交計算,因此顯示的速度取決于圖像處理算法的性能;切片服務,在比例尺較大的情況下,邊界圖像數(shù)量較大,處理時間較長,在地圖縮放過程中,有明顯的顯示延遲。一般控制范圍圖形的折點數(shù)量也較多,相同算法下,處理速度會因圖形的復雜而變慢。
地圖操作限制是在前端代碼控制實現(xiàn)的,不存在數(shù)據(jù)請求返回的時間影響,而且范圍采用的外界矩形,前端計算方法簡單,顯示速度較快;范圍遮罩方法不會增加任何計算負擔,主要取決于網(wǎng)絡速度;CSS不規(guī)則遮罩方法的計算也是通過前端代碼實現(xiàn),取決于范圍圖形的折點數(shù)量,數(shù)量越多計算代價越大,實踐中一般超過60個點,會有比較明顯的地圖操作滯后。因此,在顯示范圍控制的圖形處理上,還需要進行范圍圖形的簡化處理,盡量減少范圍圖形的折點數(shù)目,將會大幅度提升顯示的速度。
(3)安全問題
服務端處理方式在數(shù)據(jù)源頭進行了操作處理,嚴格把控數(shù)據(jù)的返回,可以做到不在控制內(nèi)的數(shù)據(jù)不會返回,因此在數(shù)據(jù)安全方面是較為合理的;前端處理方式(操作限制、遮罩)并沒有在數(shù)據(jù)端做干涉,雖然可以在前端通過遮擋、限制或不加以顯示,但網(wǎng)絡請求已將數(shù)據(jù)獲取至前端,并不能完全做到數(shù)據(jù)的安全把控。
通過上述三個方面的分析,得出不同的方法在處理效果、速度、數(shù)據(jù)安全都有側重點,基于服務端圖像處理方法總體表現(xiàn)優(yōu)異,但仍然掣肘于數(shù)據(jù)處理效率上;前端處理方法中,筆者則推薦使用CSS不規(guī)則遮罩,顯示效果較好,技術難度適中。在實際應用中,需要根據(jù)用戶、網(wǎng)絡等情況選擇最優(yōu)的方案。
地圖權限的控制在自然資源數(shù)據(jù)管理與應用中越來越重要,通過同一數(shù)據(jù)資源的再分配完成范圍管轄能夠節(jié)約數(shù)據(jù)制作的成本。本文簡要闡述了地圖服務根據(jù)空間范圍進行局部顯示的方法,在不同的生產(chǎn)環(huán)境下可選擇相適應的方式,有效解決權限管理與電子地圖適配的問題。