?

一種面向空間分析的開源GeoServer服務自動發布與切片方法

2022-03-24 12:17陳建華甘先霞張洪吉
物探化探計算技術 2022年1期
關鍵詞:柵格切片客戶端

劉 旭, 趙 錚, 陳建華, 甘先霞, 張洪吉

(1.成都理工大學 地球物理學院,成都 610059;2.四川省自然資源科學研究院,成都 610015)

0 引言

隨著互聯網技術的快速發展,地理信息系統(Geographic Information System,GIS)與互聯網相結合形成的網絡地理信息系統(WebGIS),為地理信息數據發布、共享和交流協作提供了良好的基礎[1]。WebGIS已經融入到人們的日常生活和工作中,在城市交通、環境檢測[2]、地質災害等領域都有著良好地應用。但是目前WebGIS還存在著如下問題:①空間分析能力較弱,特別是涉及遙感圖像計算的空間分析;②地理信息數據發布步驟復雜,需要繁瑣的發布流程。

空間分析作為地理信息系統的核心功能,目前WebGIS已經實現了一些基本的基于矢量的空間分析功能,包括路徑規劃、緩沖區分析、空間查詢[3]等,但是對于遙感圖像的空間分析還較為薄弱。遙感圖像具有數據量大,像素點多的特點,導致遙感圖像處理和分析通常運算復雜,占用大量運行內存,在過去服務器性能較低時,遙感圖像分析通常在桌面端完成,其運算速度取決于硬件的好壞。云計算的出現提高了服務器性能,其通過網絡集中計算資源并按需調配,達到節約經濟地利用計算資源的目的,能夠快速地實現大規模計算,其效率遠高于本地進行遙感圖像分析。因此筆者針對在服務器開展遙感圖像的空間分析進行了研究。

GIS服務用于處理客戶端讀取GIS數據的請求[4],將地理信息數據發布在服務器是WebGIS客戶端訪問數據的基礎,對于服務器的空間分析結果也應該能夠發布到服務器以便于其共享。但空間分析結果具有動態變化的特點,其數據參數隨著輸入數據不同而不同,因此需要一種能自動發布空間分析結果的方法。

GIS服務一般由GIS服務發布工具提供,GIS服務發布工具主要有ESRI的ArcGIS Server和開源的GeoServer等[5]。ArcGIS Server能夠提供數據訪問服務,以及有限的空間分析服務,但是價格昂貴,并且由于是商業軟件,功能擴展能力較弱;GeoServer能夠提供數據訪問服務,空間分析服務能力較弱,但具有軟件開源、擴展能力強[6]的優點。

基于上述需求,筆者面向開源GIS服務器GeoServer,在其基礎上擴展空間分析能力,為客戶端提供動態空間分析服務,實現全自動將動態空間分析結果發布為GeoServer服務,并為了加速數據訪問速度在此基礎上對發布的數據自動切片。

1 服務自動發布與切片方法

1.1 服務器端體系結構

服務端體系結構見圖1,服務端提供了兩種服務:①處理基本業務邏輯和執行空間分析功能的空間分析服務;②基于GeoServer的GIS服務。

圖1 體系結構設計圖

空間分析服務是由基本的Web服務器提供,負責處理普通的數據管理業務和執行空間分析功能??臻g分析服務能夠接受客戶端的HTTP請求,并將處理結果返回給客戶端;能夠調用GeoServer實現對分析數據的自動發布和自動切片;可以讀寫數據庫及數據文件??蛻舳讼蚩臻g分析服務發送空間分析操作請求以及需要分析的數據,空間分析服務根據操作請求調用相應的處理函數,實現對數據的空間分析,并將空間分析的結果根據其類型分別存入數據庫和數據文件。在空間分析完成后,空間分析服務自動將結果文件的路徑等參數信息利用HTTP請求的方法,發送給GeoServer服務,調度GeoServer發布結果數據并將其切片。

GeoServer服務由開源GIS服務器GeoServer提供,負責各種地理信息數據發布。GeoServer服務只能接收客戶端對于獲取地理信息數據的請求;不能接收客戶端上傳的地理信息文件;不能接收客戶端發送的服務發布請求,發布服務只能通過空間分析服務調用;只具備讀取數據文件的權限,不能修改數據文件。

1.2 空間分析服務

由于GeoServer服務并不具有空間分析能力,因此需要一個單獨的提供空間分析的服務,它能夠接收客戶端請求和客戶端上傳的各種地理信息數據,將上傳的數據按照一定的組織結構有序地存放在服務器端的文件系統中,并根據客戶端請求對文件執行相應的空間分析功能,得到分析后的結果。

空間分析又分為基于柵格的空間分析和基于矢量的空間分析?;跂鸥竦目臻g分析可以通過由開源地理空間數據抽象庫(Geospatial Data Abstraction Library,GDAL)編碼實現,其是一個在X/MIT協議下的開源柵格空間數據轉換庫,具有開源、高效、跨平臺的優點,能夠讀取、寫入、轉換、處理大多數柵格格式文件[7]?;谑噶康目臻g分析服務,可以通過開源地理信息數據庫PostGIS或GDAL的子項目OGR(OpenGIS Simple Features Reference Implementation)庫實現。綜上GDAL庫相比PostGIS的空間分析功能更加強大,兼容柵格數據和矢量數據,因此我們使用Python作為基礎編程語言,結合GDAL實現了一系列的空間分析功能,其中包括柵格計算、線性變換、柵格分類、柵格圖像生成、空間插值等。

論文中針對于柵格數據的空間分析,具體的方法為:使用GDAL提取柵格數據波段信息,其主要代碼如下:

band= self.dataset.GetRasterBand(nband)

data = band.ReadAsArray(0, 0, self.cols, self.rows)

其中第一行是獲取波段對象;第二行是獲取波段信息,ReadAsArray將讀取的波段信息存入數組。

在獲取兩幅影像的波段信息之后,對兩幅影像的DN值求差,但值得注意的是由于圖像DN值沒有負數,因此求差結果需要去絕對值,其主要代碼如下:

data = ds.getRasterInformation(n)[0:ds.computeRows(),0:db.computeCols()-computoffset(ds,db)[0]]

result=abs(data2-data1)

其中,第一行主要是讀取影像的DN值,第二行是獲取到兩幅影像的DN值之后對其求差并取絕對值。

1.3 GeoServer服務自動發布

GeoServer是遵循OpenGIS規范實現的開源地圖服務器,其允許用戶對地理數據(包括矢量數據和柵格數據)進行更新、刪除及插入操作,支持WMTS、WCS、WFS和WMS服務,方便用戶發布地圖數據并共享地理空間信息[8]。GeoServer是輕量級的GIS服務器,其自帶的功能滿足多數Web地圖應用開發,且與前端框架OpenLayers集成較好[9],但是其空間分析功能相對ArcGIS Server較弱,因此需要擴展實現空間分析功能,以增強GeoServer的分析能力。

假定GeoServer已經在計算機中配置完成,GeoServer沒有可視化用戶界面,其會構建一個服務,通過瀏覽器訪問IP地址對GeoServer進行管理。GeoServer手動發布服務的步驟為通過瀏覽器訪問GeoServer提供的IP地址,選擇自己需要發布的服務類型,然后填寫對應的參數,包括基本資源信息、坐標參考系統、覆蓋參數、波段計算細節等。參數配置過程繁瑣,且需要根據數據信息選擇參數,這些配置的選擇要求發布人員具有一定的專業知識,限制了GeoServer發布服務的靈活性。

為了提高GeoServer發布服務的靈活性、簡化相關人工工作步驟,空間分析動態生成結果的自動發布顯得十分迫切。GeoServer提供了一種REST接口,用戶可以通過這個接口檢索有關實例的信息并進行配置更改,使用REST接口接收HTTP請求,可以達成配置GeoServer服務的目的,無需再通過瀏覽器訪問Web管理界面。REST接口實質上對應一個HTTP地址,通過get、post、put、delete四種不同的請求方式達成對GeoServer實例的讀取、增加、修改、刪除的目的。REST接口為自動化發布GeoServer服務提供了基礎。

在空間分析服務接收到客戶端發送的請求數據以及發送過來的文件后,從請求數據中解析出需要執行的空間分析功能,調用對應的封裝好的空間分析接口,對數據進行空間分析,得到空間分析結果并保存到文件系統中。由于發布服務需要用到發布數據的相關參數信息,包括基本資源信息、坐標參考系統、邊界矩形等,因此需要利用GDAL讀取待發布數據的對應基本信息。

以讀取影像數據的參數為例,獲取包括影像的波段信息、影像數據范圍以及影像仿射變換矩陣,在獲取到參數之后,按照一定組織規律生成影像的配置文件。在生成配置文件之后,根據具體的發布需求,在配置文件中加上服務配置參數,包括影像背景值、發布后影像的數據格式等,從而完成對配置文件的設置。

將配置文件綁定到HTTP請求中,向GeoServer REST接口發送請求,在發布成功之后GeoServer服務會將發送結果返回給空間分析服務,最后將結果返回給客戶端,以柵格計算為例,自動發布服務流程圖如圖2所示。

圖2 自動發布流程圖

以空間分析服務向GeoServer REST接口發送新增圖層的方法為例,利用Python發送請求的主要代碼如下:

ps=requests.post(url=url,auth=('admin','geoserver'),data=open(coveragepath+'/coverage.xml').read(), headers=headers)

該方法使用post請求向Geoserver發送數據,其中url參數指定了Geoserver服務器的IP地址,auth參數指定了Geoserver服務器的用戶名和密碼;data參數指定了配置文件的路徑以及名稱;headers參數指定了http請求的頭部信息。

1.4 GeoServer自動切片

地理信息數據往往包含大量信息,因此地理信息數據占用的空間都是比較大的,如果要一次性加載全部信息,會導致服務器壓力大、客戶端等待時間長、客戶端使用卡頓的問題。因此,可以將較大的地理信息數據采用金字塔結構(四叉樹)進行組織和存儲,切分成大量不同級別、分辨率不同的小幅數據,每提高一個瀏覽級別,就用四張更高分辨率的數據代替較低分辨率的一張數據。用戶在客戶端查看數據的時,一次僅對少量需要的數據進行請求,服務器發送響應數據即可滿足用戶需求,這樣減少了網絡數據量,可大大減少系統響應時間,改善用戶體驗。

GeoServer提供了對數據切片的功能,在客戶端加載數據時,GeoServer在實時的對數據進行切片,切片之后再根據請求范圍返回對應的數據,實時切片的方式增加了服務器的響應時間。如果能在服務發布之后自動將服務數據切片,在訪問之前預先完成切片將減小服務響應時間。

由于GeoServer REST接口并不提供執行切片功能的接口,因此之前使用REST接口自動發布的方式在自動切片部分不再適用。對于已經發布的數據,可以通過訪問GeoServer提供的對應IP地址在可視化頁面中交互式的操作數據(圖3)。在對數據進行切片時,需要選擇切片級數范圍、數據的坐標系、切片后的數據格式等,參數設置完成后,點擊“Submit”按鈕開始對數據進行切片。

圖3 自動切片可視化界面

分析發現,GeoServer管理界面的URL固定,以IP地址加問號加圖層ID構成,并且每次訪問的頁面保持一致且易于登錄,因此可以通過Web自動化測試工具(Web爬蟲)完成自動切片。Web自動化測試工具通過編寫腳本代碼,在執行腳本時,自動生成一個模擬的瀏覽器,并訪問給定的URL,按照腳本代碼做出點擊、輸入、打開、驗證等操作。

因此,采用Python語言結合自動化測試工具Selenium,通過添加Geoserver用戶名密碼代理驗證,代理驗證通過后,通過驅動模擬瀏覽器自動訪問服務地址,將相應的參數通過代碼自動填入到對應的位置,如圖3所示的參數中Grid Set設置切片的格網方案、Format設置切片的格式、Zoom start和Zoom stop設置切片的級別范圍、Bounding box設置了切片的邊界范圍。在參數設置完成后,模擬點擊“Submit”按鈕實現數據自動切片,自動切片流程如圖4所示。

圖4 自動切片流程圖

2 實例與分析

針對河流水質動態監測的現實需求,以開源GeoServer為基礎,結合上述提出的GeoServer服務自動化方法,設計、實現了一套面向Web的高分遙感河流水質動態監測系統。

高分遙感河流水質動態監測系統通過對相應河流區域遙感圖像進行反演之后,將任兩期反演結果柵格圖像上傳到服務器,在服務器進行差異性分析,從而判斷水質變化,具體流程如下。

對原始多期國產高分遙感數據作處理,包括輻射定標、大氣校正、正射校正、圖像配準、圖像融合、圖像拼接、圖像裁剪、水體提取。依據水體影像不同波段組合,反演出單波段水質指標濃度(包括葉綠素a、總磷、總氮、高錳酸鹽、懸浮物及透明度等)。由各指標反演結果計算其營養狀態指數,并計算綜合營養狀態指數。將所有反演結果、營養狀態指數、綜合營養狀態指數導出為包含濃度信息的柵格圖像數據。

客戶端將任兩期高分遙感河流水質反演結果柵格圖像上傳到服務器,并選擇自動發布、自動切片的相關參數。

利用空間分析服務對客戶端上傳的兩期結果圖像依次進行如下計算:

1)柵格計算,獲取兩期河流水質反演結果圖像的DN值,對兩者作求差計算處理。

2)線性變換,將DN值按一定的比例對數據進行線性變化。

3)柵格分類,按照一定的分類規則對生成的差異柵格圖像進行分類、著色。

4)柵格圖像生成,在分類完成后生成新的差異柵格圖像并保存至文件系統。

在差異柵格圖像生成基礎上,讀取其文件系統中柵格圖像相關參數信息(坐標系統、邊界矩形等一系列相關信息),調用根據GeoServer服務自動發布原理構建的自動發布接口,完成柵格圖像發布,并根據參數決定是否自動切片,在執行完成后服務器向客戶端返回發布結果(圖5)。

圖5 差異柵格圖像自動生成、自動發布、自動切片流程圖

基于上述原理,實現的面向Web的高分遙感河流水質動態監測系統整體效果(圖6),差異柵格圖像在自動切片后不同顯示級別的效果(圖7)。

圖6 系統整體效果

圖7 切片顯示柵格圖像效果

系統實現差異柵格圖像自動生成、自動發布、自動切片功能,取代復雜的傳統發布過程,具有顯著的省時、省力、自動化等特點??蛻舳嗽L問服務,加載差異柵格圖像并疊加柵格影像數據更加真實的反應了河流水質變化(圖7),圖7(a)~圖7(d)為四個不同展示級別的結果,四個圖像具有不同的分辨率。表明:將圖像自動發布、自動切片是提升WebGIS服務質量的有效途徑。

3 結論

這里提出了一種面向空間分析的開源GeoServer服務自動發布與自動切片方法,運用Python與GDAL構建空間分析服務,彌補了GeoServer空間分析能力不足的弱點,針對空間分析結果動態變化的特點,實現了結果的自動服務發布、自動切片。該方法顯著提升了基于GeoServer的WebGIS系統的靈活性,解決了傳統GIS服務需要專業人士手動發布、手動配置,無法動態發布等問題。將該方法運用到面向Web的高分遙感河流水質動態監測系統,能夠有效實現差異柵格圖像動態生成并對其自動發布、自動切片,實現了水質監測結果快速生成、持久保存、快速加載顯示的目的。

猜你喜歡
柵格切片客戶端
你的手機安裝了多少個客戶端
“人民網+客戶端”推出數據新聞
——穩就業、惠民生,“數”讀十年成績單
柵格環境下基于開闊視野蟻群的機器人路徑規劃
超聲速柵格舵/彈身干擾特性數值模擬與試驗研究
新局勢下5G網絡切片技術的強化思考
5G網絡切片技術增強研究
網絡切片標準分析與發展現狀
反恐防暴機器人運動控制系統設計
淺析5G網絡切片安全
基于柵格地圖中激光數據與單目相機數據融合的車輛環境感知技術研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合