劉暢,邵楠
(沈陽市勘察測繪研究院有限公司,遼寧 沈陽 110000)
2020年6月,自然資源部辦公廳發布了《2020年自然資源部網絡安全與信息化工作要點》,文件指出,按照“放管服”的總體要求,結合自然資源管理和發展的需要,在統一的國土空間基礎信息平臺上形成一體化的自然資源政務信息化管理,加強自然資源業務管理信息化建設,推進自然資源系統內數據共享與應用[1]。自然資源數據種類豐富,城市級別管理的數據量龐大,并隨著城市發展不斷累積增長,通過城市地理信息系統進行管理與使用時,將涉及不同類型,不同區劃數據的權限控制問題[2],比如一種典型的應用場景為:“市、區兩級應用”,市級別與區級別共用同源數據,市級用戶可調用全市范圍全部數據內容,而區級用戶則只能調用其管轄范圍內的數據,這就要求地圖服務需要根據不同用戶的權限返回相應范圍內的數據。因此,如何在地圖服務應用中完成地圖內容的顯示控制是值得探討的。
城市地理數據服務通常采用成熟的GIS軟件服務,如ArcGIS Server、SuperMap IServer、Geoserver等。地圖服務一般包括切片地圖服務WMS(Web Map Service),要素地圖服務WFS(Web Feature Service)等幾種類型[3],不同服務在前端顯示的技術有所不同,其中切片地圖服務又叫緩存地圖服務,地圖緩存是通過制作完成的不同比例尺級別的地圖圖像進行分發,實現地圖使用的一種非常有效的方法。因此在地圖顯示方面,進行不規則范圍地控制比較困難;要素地圖服務則可以通過屬性、空間范圍等參數設置篩選顯示的數據。文獻[3]針對ArcGIS的動態服務提出了一種圖像處理的方式實現范圍控制,顯示效果較好,但對切片服務的控制無法實現。文獻[4]對切片服務請求返回的圖片進行相交判斷,實時裁切達到范圍顯示控制,但是由于計算量較大,影響了地圖顯示的效率。本文在實踐中嘗試了基于Html5頁面CSS不規則遮罩的控制方法,結合現有的幾種控制方法,綜合對比了它們的優缺點。
電子地圖顯示范圍的控制需要與應用系統相集成,一般顯示范圍控制的流程為:應用系統用戶登錄獲取角色與權限信息,由角色權限信息獲取控制范圍圖形數據,最后根據控制范圍與地圖服務請求的數據共同處理,完成電子地圖顯示范圍的控制,如圖1所示。

圖1 范圍控制流程
地圖服務是通過用戶發送服務請求返回地圖數據的Webservices服務,因此可以根據客戶端發送的請求,在服務器端實時處理,并將生成的數據發送給客戶端,以實現地圖數據權限控制。而在地圖顯示控制方面,可以按照服務端權限控制達到顯示效果,也可以從客服端角度完成處理。
地圖服務的應用是典型的B/S方式,因此可將地圖服務進行轉發包裝,服務請求時需要將范圍信息或權限信息發送至代理服務,由代理服務根據范圍對地圖服務進行操作處理[5,6],如圖2所示。根據地圖服務的類型,有不同的處理方式:

圖2 服務端處理流程
(1)動態服務處理
以ArcGIS Server為例,動態服務是要素服務的一種,通過客戶端請求發送至服務端,由服務端根據地圖的實時顯示范圍返回當前要素的圖像,因此,可以對返回的要素圖像進行圖形裁切,根據顯示范圍與圖像的關系,將范圍內部圖像的像素值保留,范圍外部的像素值賦值為透明或地圖的底色,最終將實時處理后的圖像返回客戶端。
(2)切片服務處理
切片服務根據服務請求返回緩存完成的圖像文件,圖像文件數量隨級別的不同而不同,比例尺越大圖像數量越大,與動態服務處理方式相類似,需要根據范圍數據對請求的邊界圖像裁切,范圍內部的圖像則不需要。
地圖操作限制是應用系統的前端地圖控制方法,在用戶登錄后獲取該用戶權限對應范圍的外接矩形數據,在用戶進行地圖縮放,平移等操作時,實時判別用戶視窗與外接矩形的空間位置關系,一旦操作超出外接矩形范圍外,將控制鼠標拖拽操作,強制拉回地圖視窗到限制范圍內,從而達到限制目的。
范圍遮罩是將顯示范圍的矢量數據發布為要素地圖服務或者切片服務,遮罩面采用白色等遮擋顏色,根據用戶權限對應的區域,使用不同的要素服務疊加顯示,用戶不能通過圖層管理等手段移除疊加的范圍服務。
CSS遮罩也是一種采用前端遮擋顯示范圍的方法,從應用系統前端頁面(Html5)的角度出發,選擇在地圖顯示控件的上方,疊加一層不透明(或與地圖底色一致)的DIV,用戶登錄獲取權限對應的顯示范圍數據,按照當前地圖顯示范圍與視窗的關系,將顯示范圍數據轉換為視窗坐標點位,按照CSS中裁切屬性的輸入要求,將遮罩DIV裁切出空洞進而顯示出地圖部分。如圖3(a)所示,裁切方法默認是按照屏幕坐標串順時針路徑裁剪區域,該區域內部將保留并顯示,而外部則被裁剪。對于遮罩而言則是相反的,需要保留范圍外部的遮擋面,因此需要按照圖3(b)所示,從外部某一頂點出發,將圖形外部當作“內部”,實現挖洞裁切。

圖3 裁切方式
需要注意的是,遮罩DIV的裁切需要實時監控地圖范圍變化,完成動態裁切,從而保證地圖在縮放、平移時實時完成顯示區域的控制。
(1)顯示效果
基于服務端圖像處理方式是進行了傳輸圖像的裁切,可以嚴格按照輸入邊界進行控制,適用于不規則范圍控制的場景;實際中顯示范圍控制區域多以行政區劃為主,邊界線不規則,而地圖操作限制的方式只能以外界矩形的大小展示地圖內容,無法達到不規則區域的顯示,因此只適用于簡單范圍控制,對權限要求不高的場景;圖層疊加的矢量范圍遮罩方式在靜態地圖效果中有不錯的顯示,但是在進行地圖拖拽,縮放等操作時,遮罩層會出現顯示延遲,通常會在鼠標釋放操作完成后加載,這樣導致地圖內容泄露,影響控制的效果;CSS不規則遮罩是Html5動態遮擋方式,能夠根據不規則的范圍線計算遮擋范圍,顯示效果較好,如圖4所示。

圖4 CSS遮罩效果
(2)顯示速度
基于服務端圖像處理方式的圖像處理算法運行在服務器中,算法計算的時間與控制范圍圖形的復雜度、圖像的數量、大小都存在一定的關系。對于動態服務,其處理過程是僅對一張圖像進行相交計算,因此顯示的速度取決于圖像處理算法的性能;切片服務,在比例尺較大的情況下,邊界圖像數量較大,處理時間較長,在地圖縮放過程中,有明顯的顯示延遲。一般控制范圍圖形的折點數量也較多,相同算法下,處理速度會因圖形的復雜而變慢。
地圖操作限制是在前端代碼控制實現的,不存在數據請求返回的時間影響,而且范圍采用的外界矩形,前端計算方法簡單,顯示速度較快;范圍遮罩方法不會增加任何計算負擔,主要取決于網絡速度;CSS不規則遮罩方法的計算也是通過前端代碼實現,取決于范圍圖形的折點數量,數量越多計算代價越大,實踐中一般超過60個點,會有比較明顯的地圖操作滯后。因此,在顯示范圍控制的圖形處理上,還需要進行范圍圖形的簡化處理,盡量減少范圍圖形的折點數目,將會大幅度提升顯示的速度。
(3)安全問題
服務端處理方式在數據源頭進行了操作處理,嚴格把控數據的返回,可以做到不在控制內的數據不會返回,因此在數據安全方面是較為合理的;前端處理方式(操作限制、遮罩)并沒有在數據端做干涉,雖然可以在前端通過遮擋、限制或不加以顯示,但網絡請求已將數據獲取至前端,并不能完全做到數據的安全把控。
通過上述三個方面的分析,得出不同的方法在處理效果、速度、數據安全都有側重點,基于服務端圖像處理方法總體表現優異,但仍然掣肘于數據處理效率上;前端處理方法中,筆者則推薦使用CSS不規則遮罩,顯示效果較好,技術難度適中。在實際應用中,需要根據用戶、網絡等情況選擇最優的方案。
地圖權限的控制在自然資源數據管理與應用中越來越重要,通過同一數據資源的再分配完成范圍管轄能夠節約數據制作的成本。本文簡要闡述了地圖服務根據空間范圍進行局部顯示的方法,在不同的生產環境下可選擇相適應的方式,有效解決權限管理與電子地圖適配的問題。