馮推亮,熊小青,王春曉
(1.自然資源部海南基礎(chǔ)地理信息中心,海南 ???570203)
近年來(lái),隨著計(jì)算機(jī)、通信、網(wǎng)絡(luò)等技術(shù)和測(cè)繪地理信息技術(shù)的快速發(fā)展以及國(guó)家政策的支持,各地市“數(shù)字城市”建設(shè)已基本完成,“智慧城市”、物聯(lián)網(wǎng)建設(shè)也相繼開展,對(duì)于基礎(chǔ)地理空間數(shù)據(jù)的需求將會(huì)不斷增長(zhǎng)[1]。目前基礎(chǔ)地理空間數(shù)據(jù)的提供方式為地圖服務(wù),ArcGIS Server作為地圖服務(wù)器,已被各政府機(jī)關(guān)、企事業(yè)單位和公眾認(rèn)可,并得到了廣泛應(yīng)用。為了保護(hù)數(shù)據(jù)所有者的權(quán)限,必須對(duì)空間數(shù)據(jù)進(jìn)行安全保護(hù)[2],針對(duì)不同的用戶,需配置不同的地圖服務(wù),因此需要相關(guān)的運(yùn)維管理平臺(tái)對(duì)地圖服務(wù)訪問(wèn)進(jìn)行管理[3]。 ArcGIS Server平臺(tái)服務(wù)器具有對(duì)應(yīng)的運(yùn)維管理模塊,包括地圖服務(wù)管理、權(quán)限管理和日志記錄等,但其地圖服務(wù)權(quán)限管理功能只能控制到用戶是否能訪問(wèn)某些地圖服務(wù)的級(jí)別,無(wú)法對(duì)地圖服務(wù)中的要素訪問(wèn)范圍和切片訪問(wèn)范圍起到控制作用,需要進(jìn)行二次開發(fā)才能實(shí)現(xiàn)該功能。鑒于此,為了滿足實(shí)際業(yè)務(wù)對(duì)數(shù)據(jù)細(xì)粒度的控制要求,本文設(shè)計(jì)并開發(fā)了基于ArcGIS Server的要素級(jí)地圖服務(wù)權(quán)限控制系統(tǒng)。系統(tǒng)在ArcGIS Server擴(kuò)展接口的基礎(chǔ)上進(jìn)行二次開發(fā),采用REST接口[4]、SOI服務(wù)對(duì)象攔截器技術(shù)和OpenCV開源輕量級(jí)且跨平臺(tái)的視覺處理技術(shù)[5]等進(jìn)行開發(fā)。系統(tǒng)建成后已應(yīng)用到具體的業(yè)務(wù)中,實(shí)現(xiàn)了對(duì)地圖服務(wù)要素訪問(wèn)范圍和切片訪問(wèn)范圍的有效控制。
地圖服務(wù)權(quán)限控制采用SOA架構(gòu),包括基礎(chǔ)層、數(shù)據(jù)層、服務(wù)層和應(yīng)用層,如圖1所示。SOA架構(gòu)便于實(shí)現(xiàn)跨平臺(tái)和互操作,利用 REST接口實(shí)現(xiàn)一種松散耦合的異構(gòu)式環(huán)境的集成,采用OGC標(biāo)準(zhǔn)規(guī)范接口構(gòu)建面向服務(wù)的集共享服務(wù)提供方、使用方和管理方于一體的地理信息數(shù)據(jù)共享框架體系結(jié)構(gòu),實(shí)現(xiàn)基于統(tǒng)一注冊(cè)和分級(jí)授權(quán)的服務(wù)組織模式與運(yùn)行管理機(jī)制,從而實(shí)現(xiàn)地理信息共享交換的持續(xù)發(fā)展[6-8]。
圖1 系統(tǒng)架構(gòu)設(shè)計(jì)
基礎(chǔ)層包括存儲(chǔ)、網(wǎng)絡(luò)、系統(tǒng)、數(shù)據(jù)庫(kù)、安全設(shè)備等,為數(shù)據(jù)層、服務(wù)層和應(yīng)用層的建設(shè)與運(yùn)行提供基礎(chǔ)保障。數(shù)據(jù)層采用Oracle關(guān)系型數(shù)據(jù)庫(kù)為基礎(chǔ)地理空間數(shù)據(jù)和應(yīng)用系統(tǒng)數(shù)據(jù)提供高效存儲(chǔ),采用文件系統(tǒng)存儲(chǔ)地圖切片數(shù)據(jù)。服務(wù)層基于Web API開發(fā)框架,利用RESTful風(fēng)格構(gòu)建地圖服務(wù)目錄、服務(wù)代理、切片訪問(wèn)控制、要素訪問(wèn)控制、切片處理和地圖服務(wù)權(quán)限管理等模塊,負(fù)責(zé)數(shù)據(jù)層業(yè)務(wù)邏輯的實(shí)現(xiàn),為應(yīng)用層的數(shù)據(jù)展現(xiàn)和功能實(shí)現(xiàn)提供服務(wù)接口。應(yīng)用層包括外部的App移動(dòng)端和Web應(yīng)用程序端的服務(wù)使用方以及框架內(nèi)部的地圖服務(wù)運(yùn)維系統(tǒng)的管理方。
權(quán)限控制策略主要由地圖服務(wù)目錄、服務(wù)代理、切片處理、地圖服務(wù)權(quán)限管理端、切片訪問(wèn)控制和要素訪問(wèn)控制等模塊組成。具體控制策略和流程結(jié)構(gòu)如圖2所示。
圖2 權(quán)限控制策略流程圖
App移動(dòng)端或Web客戶端通過(guò)訪問(wèn)地圖服務(wù)目錄提供的服務(wù)地址訪問(wèn)系統(tǒng)提供的地圖服務(wù),目錄服務(wù)將客戶端的請(qǐng)求提交給服務(wù)代理,由服務(wù)代理根據(jù)請(qǐng)求的服務(wù)類型調(diào)用對(duì)應(yīng)的處理程序,若是請(qǐng)求切片則調(diào)用切片訪問(wèn)控制模塊來(lái)處理客戶端的請(qǐng)求,切片訪問(wèn)控制模塊再調(diào)用切片處理工具,根據(jù)級(jí)別和行列號(hào)參數(shù)提取原始切片并進(jìn)行空間關(guān)系運(yùn)算和透明化等處理,最后將處理后的切片返回給客戶端;若是請(qǐng)求要素查詢則調(diào)用要素訪問(wèn)控制模塊來(lái)處理該請(qǐng)求,根據(jù)客戶端傳遞的查詢參數(shù)進(jìn)行要素查詢,并根據(jù)用戶的可訪問(wèn)范圍對(duì)要素查詢結(jié)果進(jìn)行空間過(guò)濾處理,最后將處理后的結(jié)果返回給客戶端。
權(quán)限控制數(shù)據(jù)庫(kù)用于保存用戶、地圖服務(wù)、權(quán)限范圍信息。數(shù)據(jù)庫(kù)表結(jié)構(gòu)主要包括用戶表、用戶組表、地圖服務(wù)表、范圍表、用戶與地圖服務(wù)關(guān)系表、用戶與范圍關(guān)系表、業(yè)務(wù)系統(tǒng)表、業(yè)務(wù)系統(tǒng)秘鑰表等,具體結(jié)構(gòu)如表1所示。
表1 數(shù)據(jù)庫(kù)表結(jié)構(gòu)說(shuō)明
REST是一種軟件架構(gòu)風(fēng)格,由Roy Thomas Fielding 博士于2000年提出,是一種針對(duì)網(wǎng)絡(luò)應(yīng)用的設(shè)計(jì)和開發(fā)方式,可降低開發(fā)的復(fù)雜性,提高系統(tǒng)的可伸縮性。通俗地說(shuō),即網(wǎng)絡(luò)中的所有資源都有唯一的網(wǎng)絡(luò)地址與其一一對(duì)應(yīng)[9]。
地圖服務(wù)目錄模塊的主要功能是采用REST架構(gòu)風(fēng)格將系統(tǒng)的地圖服務(wù)通過(guò)REST接口對(duì)外提供地圖服務(wù)的調(diào)用地址和詳細(xì)信息,類似于ArcGIS Server 的Services目錄服務(wù),從而方便用戶快速查找相關(guān)的地圖服務(wù)。相關(guān)部分代碼為:
服務(wù)代理模塊的主要功能是接收來(lái)自地圖服務(wù)目錄提交的服務(wù)地址。通過(guò)服務(wù)地址提取Token(ArcGIS 的令牌)、key(秘鑰)和userid(用戶id)參數(shù)驗(yàn)證 key 的有效性,通過(guò)Token驗(yàn)證用戶是否有權(quán)限訪問(wèn)該地圖服務(wù)以及該服務(wù)是否設(shè)置了要素可訪問(wèn)范圍的限制;再根據(jù)服務(wù)地址識(shí)別請(qǐng)求的服務(wù)類型,若請(qǐng)求切片,代理則將調(diào)用切片訪問(wèn)控制模塊進(jìn)行切片訪問(wèn)控制操作,同時(shí)將傳遞范圍信息給該模塊,若請(qǐng)求要素查詢,代理則將調(diào)用要素訪問(wèn)控制模塊進(jìn)行要素查詢控制操作,同時(shí)將傳遞范圍信息給該模塊。
切片訪問(wèn)控制模塊的主要功能是接收來(lái)自服務(wù)代理模塊傳遞的服務(wù)地址和訪問(wèn)范圍信息。通過(guò)服務(wù)地址和訪問(wèn)范圍信息進(jìn)行數(shù)據(jù)庫(kù)查詢,得到切片處理工具處理好的切片存放路徑,并根據(jù)切片請(qǐng)求地址中的行列號(hào)和級(jí)別信息調(diào)用后臺(tái)切片讀取程序讀取相應(yīng)的切片文件,再將切片以二進(jìn)制流的形式返回給客戶端。
要素訪問(wèn)控制模塊的主要功能是接收來(lái)自服務(wù)代理模塊傳遞的服務(wù)地址和訪問(wèn)范圍信息。以Query查詢?yōu)槔?,將訪問(wèn)范圍與用戶輸入的圖形進(jìn)行空間關(guān)系運(yùn)算,若訪問(wèn)范圍與輸入圖形無(wú)交集,則結(jié)束請(qǐng)求并提示超出權(quán)限范圍;若訪問(wèn)范圍包含輸入圖形,則將Query的geometry參數(shù)設(shè)置為用戶輸入的圖形;若訪問(wèn)范圍與輸入圖形相交,則將Query的geometry的參數(shù)設(shè)置為訪問(wèn)范圍與輸入圖形相交計(jì)算的交集。然后,調(diào)用ArcGIS Server 的對(duì)應(yīng)接口獲取要素查詢結(jié)果,若客戶端請(qǐng)求地址的參數(shù)中設(shè)置了需對(duì)查詢結(jié)果進(jìn)行裁剪,則將訪問(wèn)范圍與查詢結(jié)果進(jìn)行相交運(yùn)算,只保留訪問(wèn)范圍內(nèi)的要素,最后將結(jié)果以JSON格式返回給客戶端。
切片處理模塊的主要功能是對(duì)ArcGIS Server生成的切片文件進(jìn)行二次處理。讀取boundle文件中的每張瓦片,并與訪問(wèn)范圍進(jìn)行空間關(guān)系運(yùn)算,將訪問(wèn)范圍之外的部分進(jìn)行透明化處理;然后將每張瓦片重新存儲(chǔ)到新的切片文件中。對(duì)每個(gè)服務(wù)切片、每個(gè)級(jí)別、每行每列進(jìn)行相同處理,最終生成指定訪問(wèn)范圍的地圖服務(wù)切片。相關(guān)部分代碼為:
地圖服務(wù)權(quán)限管理端的主要功能是集成ArcGIS Server發(fā)布的地圖服務(wù)。集成業(yè)務(wù)系統(tǒng)獲取其用戶和角色數(shù)據(jù),通過(guò)服務(wù)權(quán)限配置功能可為每個(gè)用戶配置可訪問(wèn)的地圖服務(wù)以及每個(gè)服務(wù)里用戶能訪問(wèn)的空間范圍,同時(shí)提供切片處理工具運(yùn)行的啟動(dòng)按鈕和工具運(yùn)行相關(guān)的配置項(xiàng)管理。相關(guān)界面如圖3 所示。
圖3 地圖服務(wù)權(quán)限管理端界面
ArcGIS Server平臺(tái)服務(wù)器提供SOI擴(kuò)展開發(fā)接口,即服務(wù)對(duì)象攔截器接口,目前支持使用.NET或Java進(jìn)行二次開發(fā)。利用攔截器可攔截到客戶端發(fā)送的地圖服務(wù)要素查詢請(qǐng)求或服務(wù)響應(yīng)的結(jié)果,在攔截器中開發(fā)者可修改客戶端發(fā)送請(qǐng)求的參數(shù)再繼續(xù)請(qǐng)求服務(wù),也可修改地圖服務(wù)查詢結(jié)果再將修改后的結(jié)果返回給客戶端。本系統(tǒng)采用攔截器攔截了客戶端的請(qǐng)求,并對(duì)查詢的參數(shù)進(jìn)行了修改;再繼續(xù)請(qǐng)求服務(wù);然后對(duì)服務(wù)響應(yīng)的結(jié)果再次進(jìn)行攔截,并修改查詢的結(jié)果;最后把修改后的結(jié)果返回給客戶端。
OpenCV是一種開源輕量級(jí)且跨平臺(tái)的視覺處理庫(kù),支持C#、Java、C++等主流開發(fā)語(yǔ)言 。利用OpenCV可實(shí)現(xiàn)圖像處理操作、構(gòu)建圖形用戶界面、視頻分析、人臉和目標(biāo)檢測(cè)以及形狀分析等功能。本系統(tǒng)采用OpenCV的圖像處理功能進(jìn)行瓦片處理,將每張瓦片轉(zhuǎn)換為圖片,再利用特定的訪問(wèn)范圍與瓦片圖片進(jìn)行比較,對(duì)超出訪問(wèn)范圍的圖片部分進(jìn)行透明化圖像處理,最后將瓦片圖片保存到新的切片文 件中。
技術(shù)實(shí)現(xiàn)時(shí),實(shí)驗(yàn)網(wǎng)絡(luò)環(huán)境采用局域網(wǎng),開發(fā)環(huán)境采用DotNet Framework 4.5+VS 2013,數(shù)據(jù)庫(kù)采用Oracle關(guān)系型數(shù)據(jù)庫(kù),實(shí)驗(yàn)數(shù)據(jù)采用地理國(guó)情普查地表覆蓋數(shù)據(jù)。系統(tǒng)利用ArcGIS Server SOI擴(kuò)展接口進(jìn)行二次開發(fā),開發(fā)語(yǔ)言選用C#。
本文將某地區(qū)兩個(gè)行政區(qū)交界區(qū)域的地表覆蓋圖層發(fā)布為要素服務(wù),通過(guò)上述要素訪問(wèn)控制技術(shù)進(jìn)行控制,并進(jìn)行不同行政區(qū)劃下數(shù)據(jù)控制的對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果如圖4、5所示,可以看出,未對(duì)訪問(wèn)范圍進(jìn)行控制時(shí),可同時(shí)查看兩個(gè)行政區(qū)的數(shù)據(jù),空間點(diǎn)選查詢均正常;對(duì)其中的一個(gè)行政區(qū)的訪問(wèn)范圍進(jìn)行限制時(shí),該行政區(qū)以外的數(shù)據(jù)沒有顯示,點(diǎn)選也無(wú)法查詢,能保證無(wú)限制訪問(wèn)區(qū)域數(shù)據(jù)的顯示效果,點(diǎn)選效果正常。實(shí)驗(yàn)結(jié)果表明,對(duì)用戶設(shè)置訪問(wèn)范圍前,用戶可查詢?nèi)∫?,而設(shè)置訪問(wèn)范圍后用戶只能查詢指定范圍內(nèi)的要素。
圖4 要素訪問(wèn)控制前效果圖
圖5 要素訪問(wèn)控制后效果圖
本文將上述地表覆蓋圖層發(fā)布為切片服務(wù),通過(guò)切片訪問(wèn)控制技術(shù)進(jìn)行控制,并進(jìn)行不同行政區(qū)劃下數(shù)據(jù)控制的對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果如圖6、7所示,可以看出,未對(duì)訪問(wèn)范圍進(jìn)行控制時(shí),可同時(shí)查看兩個(gè)行政區(qū)的數(shù)據(jù),空間點(diǎn)選查詢均正常;對(duì)其中的一個(gè)行政區(qū)的訪問(wèn)范圍進(jìn)行限制時(shí),該行政區(qū)以外的數(shù)據(jù)沒有顯示,點(diǎn)選也無(wú)法查詢,能保證無(wú)限制訪問(wèn)區(qū)域數(shù)據(jù)的顯示效果,點(diǎn)選效果正常。實(shí)驗(yàn)結(jié)果表明,對(duì)用戶設(shè)置訪問(wèn)范圍前,用戶可查看該服務(wù)全省的切片,而設(shè)置訪問(wèn)范圍后用戶只能查看指定范圍內(nèi)的切片。
圖6 切片訪問(wèn)控制前效果圖
圖7 切片訪問(wèn)控制后效果圖
針對(duì)該地圖服務(wù),在未對(duì)用戶設(shè)置訪問(wèn)范圍權(quán)限時(shí),用戶可查看全省的切片和進(jìn)行全省的要素查詢,但在對(duì)用戶設(shè)置訪問(wèn)范圍權(quán)限后,用戶只能看到指定區(qū)域的切片和進(jìn)行指定區(qū)域的要素查詢。通過(guò)切片訪問(wèn)控制效果對(duì)比圖和要素訪問(wèn)控制效果對(duì)比圖可知,本系統(tǒng)提出的權(quán)限控制策略可根據(jù)用戶可訪問(wèn)范圍進(jìn)行切片顯示和要素查詢的空間范圍控制。
針對(duì)當(dāng)前ArcGIS Server的地圖服務(wù)權(quán)限管理體系只能控制到用戶是否有權(quán)限訪問(wèn)某些服務(wù)的級(jí)別,無(wú)法滿足對(duì)地圖服務(wù)中指定空間范圍內(nèi)要素的訪問(wèn)控制問(wèn)題,本文基于SOI服務(wù)對(duì)象攔截器技術(shù)和OpenCV開源圖像處理技術(shù)等關(guān)鍵技術(shù),提出了基于ArcGIS Server的要素級(jí)地圖服務(wù)權(quán)限控制策略,利用DotNet Framework 4.5+VS 2013的開發(fā)環(huán)境、Oracle關(guān)系型數(shù)據(jù)庫(kù)環(huán)境和局域網(wǎng)網(wǎng)絡(luò)環(huán)境進(jìn)行了技術(shù)實(shí)現(xiàn),并利用地理國(guó)情普查地表覆蓋數(shù)據(jù)進(jìn)行了實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,該策略可對(duì)地圖服務(wù)進(jìn)行要素級(jí)別和訪問(wèn)范圍級(jí)別的精細(xì)化權(quán)限控制,加強(qiáng)了地圖服務(wù)權(quán)限的管理。該策略建成后經(jīng)過(guò)不斷的測(cè)試和完善,已運(yùn)行穩(wěn)定并及時(shí)應(yīng)用到實(shí)際生產(chǎn)環(huán)境中,滿足了實(shí)際業(yè)務(wù)對(duì)地圖服務(wù)訪問(wèn)更精細(xì)化控制的需求,增強(qiáng)了地圖服務(wù)權(quán)限精細(xì)管理能力。