木 林
(中水淮河規劃設計研究有限公司,安徽合肥 230601)
GIS(地理信息系統)是多種學科交叉的產物,以地理空間作為基礎,以計算機技術作為實現手段,實現空間數據的采集、存儲、管理、處理、分析、顯示和描述的技術。WMTS作為地圖服務的關鍵技術,提供了一種采用預定義圖塊方法發布數字地圖服務的標準化解決方案。WMTS是一個流程化過程,涉及切片地圖的制作、切片、發布、使用等。
GDAL(geospatial data abstraction library)即地理空間數據抽象庫,是在X/MIT許可協議下讀寫空間數據(包括柵格數據和矢量數據)的開源庫[1]。該庫源碼由C++編寫,包括讀取、寫入、轉換、處理各種柵格數據格式(部分特定的格式對操作不支),其使用了單一的抽象數據模型,支持了大多數的柵格數據[2]。大部分GIS類產品均使用了GDAL/OGR庫,包括DotSpatial、MapWindow5、ArcGIS系列等,其中包括著名開源GIS軟件QGIS。
WMTS技術不同于WMS技術,從計算機的角度分析,實際上以空間換取時間的方案。從GIS行業過去與現在進行對比分析,可認為將以往的“地理計算過程”轉換為“文件服務過程”的方案,切片服務為客戶端和服務端的文件傳輸服務[2]。服務端通過向客戶端發送的地圖服務,在已存在的地圖切片緩存中直接調取相應的切片地圖,在客服端按照規則拼接成一幅地圖供用戶瀏覽。瓦片式地圖采用金字塔模型結構,是一種多分辨率層次模型,從瓦片金字塔的底層到頂層,分辨率越來越低,表示的地理范圍不變[3]。尺度的概念在地圖切片中較為重要,在不同尺度下不同地理位置顯示不同地圖切片信息。在地圖切片制作過程中,尺度轉換為級別比例尺,不同位置根據經緯度轉換為切片的行號X和列號Y。
按照切片計算規則,針對需要的切片級別,計算影像范圍內覆蓋的切片索引,通過切片索引反算該切片對應的影像坐標范圍。通過提取、變換、讀取、寫入等操作,將該范圍的影像數據寫入切片并保存,寫入過程中需要考慮切片的大小、分辨率等信息,切片的保存可按照不同的數據格式進行存儲。處理流程分為數據預處理、切片范圍計算、讀取寫入切片數據、圖像均衡化處理、數據庫存儲等步驟。
地圖切片生產流程如圖1所示。

圖1 地圖切片技術流程示意圖
(1)數據預處理。數據預處理包括投影變換、金字塔生成等,影像數據采用地理坐標系統,其他坐標系的數據需要進行投影變換;金字塔數據可提高數據生成效率。(2)直方圖統計。直方圖統計是運用影像數據的拉伸,解決影像數據整體偏暗或偏亮的問題,在直方圖統計中應剔除影像“黑邊”或“白邊”,正確反映影像數據的直方圖信息。(3)有效數據的邊界提取。提取影像有效區域的邊界,主要剔除無用的切片信息,當切片信息處于該范圍外部,將不會被處理。(4)切片信息計算。主要計算影像數據實際覆蓋的可用的切片信息,按照全圖范圍計算切片信息,每張切片行列號,采用邊緣追蹤的算法計算數據的實際有效區域的范圍,針對全圖范圍內的切片與邊緣范圍進行拓撲檢查,僅保留相交的切片信息。(5)影像讀取和切片生產。按照投影規則,計算該切片坐標,運用GDAL將該范圍內的數據讀入內存,并保存為PNG格式的圖片數據,并將當前切片的級別、行號和列號作為文件名中的標識進行保存。(6)直方圖均衡化。統計原始影像圖的直方圖數據,將該數據信息應用于單張切片上,按照相素進行處理。不同切片采用統一的拉伸處理,保證地圖控件上切片在拼接過程中不出現色差。
數據處理過程中,采用邊界提取技術獲取有效區域主要為了提高生產效率,特別是針對影像實際范圍是狹長地帶的情況下,影像實際范圍只占據影像較小部分,存在大量的影像“黑邊”或“白邊”,按照傳統方式進行處理,會增加處理時間。應提取有效的數據區域邊界,邊界提取采用效率較高的邊緣追蹤算法。
邊緣追蹤提取邊界流程如圖2所示。

圖2 邊緣追蹤提取邊界流程
(1)從圖像的左上角開始,向右向下掃描圖像,記錄第一個具有信息的像素值得坐標信息,以此作為邊界追蹤的起點,并設置當前的搜索方向為0。(2)針對當前坐標,采用八相鄰方向進行搜索,搜索的起始方向采用相反方向,且順時針順序進行搜索。(3)檢查當前相鄰點的坐標值是否與起點相同,如果相同,追蹤算法結束,轉到第5步,如果不相同,并將該坐標添加到邊界存儲列表,退出當前八方向臨近遍歷循環,記錄當前處理坐標為該臨近點坐標。(4)檢測當前像素是否為影像邊緣,如果是影像邊緣,按照邊緣類型在相鄰像素添加無效數據,重復步驟2、3,直到出現相應判斷條件停止。(5)獲取的邊界點坐標序列,記錄了像素坐標信息,將該序列通過GDAL轉換為影像實際坐標序列,根據閾值進行抽稀處理,得到符合條件的坐標序列,并轉為面數據,用于后期數據處理。
在數存儲過程中,數據庫不支持多線程寫入,在處理過程中,應注意多線程處理的分發數據、多線程數據,再壓縮到線程處理數據庫中。多線程處理的部分集中在切片創建和處理過程中,在本次研究中數據處理需要花費時間。為了改善用戶體驗,數據在處理需要顯示進度條,以方便查看處理進度,整個流程是主線程和多線程相互切換的過程。
未經過人工處理的影像數據,特別是在陰天進行作業完成的數據,整體色調將偏暗,需要經過人工進行增強處理。直方圖均衡化是采用空域圖像增強方法,具有運算復雜度低的優點,對曝光不足或曝光過度圖像有較好的增強效果[4]。通過改變圖像中的直方圖,改變圖像中像素的灰度,增強范圍偏小的圖像對比度,將原始集中在某一區域的灰度范圍拓寬到0~255,增強圖像像素之間的對比度,使圖像更清晰。本研究采用簡單統計的直方圖拉伸方式,在保留影像的基本的光譜的同時,增強對比度。針對多通道的圖像的拉伸,將三個通道合并進行拉伸處理,提取統一的拉伸比例,運用到每個通道中,效果較好,不會產生異常像素值。
基于GDAL的地圖切片技術的軟件實現開發平臺采用Visual Studio,開發語言采用C#,主要應用GDAL的C#類庫進行影像處理,GDAL支持源碼下載編輯,可采用壓縮包、SVN方式進行下載。
本文直接采用C#調用GDAL編譯的類庫進行操作,在Visoual Studio的工程中直接引用gdal_csharp.dll、gdalconst_csharp.dll、ogr_csharp.dll、osr_charp.dll四個類庫,在程序運行時,將gdal_data文件夾路徑寫入環境變量中,同時進行GDAL的注冊,軟件界面如圖3所示。

圖3 基于GDAL的地圖切片技術的軟件實現
設置切片標識、影像透明像素值、是否進行直方圖均衡化、切片的級別等參數,即可進行切片生成。
隨著計算機技術的發展,地理信息系統在現實場景的構建領域越來越重要,GIS在移動端、車載、虛擬現實技術等具有良好的發展空間。本文探討了切片地圖的生產和實現,提高了生產效率,制定了完整的數據處理流程,完成后的數據可發布為標準的地圖服務,為移動端提供離線地圖數據,為電力巡檢、國土調查等領域地理信息系統提供數據支撐。