張發 姜維 王華強


摘 要:本文主要探討利用Google Earth軟件對Google影像海量下載與拼接的方法。
關鍵詞:Google Earth;API函數;影像拼接
一、引言
Google Earth是一款由谷歌公司開發的虛擬地球軟件,其高分辨率的全球影像可以為很多行業提供服務,在實際生產作業中,Google影像作為輔助信息也可以發揮很大的作用,可在地形圖編輯時作為底圖對地物信息進行參考、正射影像制作時對紋理匱乏區域進行修補替換等。
二、利用API函數操縱Google地球
Google提供了一系列API函數用于Google地球的二次開發,通過API函數我們可以設置Google影像的顯示位置和縮放比例、當前數據流量的進度以及當前窗口Google影像的四個角點地理坐標等信息。屏幕的位置和縮放比例主要通過是設置相機的位置和高度來控制,用的是IApplicationGE接口的SetCameraParams方法,傳入的主要參數包括中心點的經緯度、高度、高度模式、范圍、傾角、方位角等;當前數據流量進度是只當前屏幕范圍內數據的下載進度,可以通過IApplicationGE接口的StreamingProgressPercentage參數來設置;計算當前屏幕的四個角點地理坐標可依次通過IApplicationGE接口的GetPointOnTerrainFromScreenCoords函數計算。
三、利用拷屏技術下載Google Earth影像
將Google Earth定位到指定坐標后,接下需要通過拷貝屏幕的方式來獲得窗口內的Google影像,步驟如下:
1、獲得Google Earth窗口在屏幕上的矩形位置
通過API函數我們可以獲得Google Earth的窗口句柄,然后通過窗口句柄可以獲得其屏幕位置和客戶區大小,進而可以推算出Google Earth窗口在屏幕上的矩形位置。
2、判斷窗口是否被遮擋
由于是通過拷屏的方式獲得Google影像,在拷屏前需要對Google Earth窗口是否被遮擋進行判斷,組合運用API函數可以實現此功能,步驟如下:首先獲得窗口的句柄以及所在的屏幕位置,然后利用GetNextWindow函數可以依次獲得位于其上的窗口句柄,然后獲得每一個位于其上的窗口所在的屏幕位置,若兩個窗口所在的屏幕位置存在交叉,則判定窗口被遮擋。
四、海量Google影像的拼接與存儲
由拷屏方法獲得的Google影像是一塊塊分散的影像,在應用前需要對其進行拼接形成一幅整個區域的大影像。對于影像的拼接如果采用人工拼接的方式勢必費時費力,且當影像數據量較大時需要專業軟件才能滿足要求,因此對于下載的影像的拼接采用自動化的方式,對于海量數據的存儲采用自定義的支持海量數據的影像格式。
1、海量影像數據格式簡介
對于下載的Google影像,當區域范圍大、影像分辨率較高時,影像的數據量會隨之急劇增大,可達幾百GB甚至TB級,為了便于影像的存儲和拼接,本文采用支持64位尋址的分層分塊的自定義影像格式。64位尋址技術可使支持的影像大小達222TB,數據分塊的存儲方式可以極大地減少計算機尋址的次數,大幅提高影像讀寫的效率,通過建立金字塔的方式,可以方便程序對影像的快速瀏覽顯示。
自定義的影像格式包含兩個部分:文件頭和影像數據區,其中文件頭包含文件標識、影像高度和寬度、影像的灰度級數、影像塊大小、金字塔影像的層數、文件大小等信息。影像數據區為每層的影像數據,對于每層的影像數據根據影像塊大小進行分塊存儲。自定義海量影像數據結構如圖1所示。
2、Google影像的并行拼接
Google影像的并行拼接目的是使Google影像的下載與拼接分開進行,以提高Google影像下載的速度。并行拼接的原理如下:下載程序將拷屏下載得到的影像保存于臨時目錄,同時將其路徑信息等以消息形式發給并行程序控制端,然后下載程序進行下一位置的影像下載;并行程序控制端對接收的消息依次逐個進行處理,首先解析出每條消息中的待拼接影像路徑和執行程序等信息,然后創建線程進行執行影像拼接。
單個待拼接影像的拼接步驟如下:首先讀取待拼接影像信息和其坐標范圍信息(地理坐標),根據坐標范圍信息計算待拼接影像在整個區域海量影像中的坐標范圍(單位是像素),然后申請空間并根據整個區域影像的采樣間隔對待拼接影像重采樣,最后將重采樣后的影像寫入區域海量數據影像文件。
五、下載與拼接試驗結果
本文根據上述方法對香港地區的Google影像進行了下載與拼接試驗。下圖2為香港地區拼接后的Google影像(起始坐標為經度113.82、緯度22.14,采樣間隔為0.00001(度),影像寬68000、高46000,生成金字塔后影像大小為11.6GB),第一個圖片為全局圖像,第二個圖像正常大小的局部影像。
六、結束語
目前,利用本文方法獲得的影像數據已在多項生產作業中作為輔助信息使用,生產實踐證明本文方法獲得的Google影像在對正射影像的紋理匱乏區域進行修補方面具有很強的應用價值。隨著Google影像的全球覆蓋化,且很多地區影像分辨率較高,我們通過對其數據的下載、拼接,便可獲得全球任意地區的影像數據。這些數據可以作為輔助信息直接或間接參與生產。由此預見,通過本文方法下載拼接的Google影像在測繪生產尤其是將來的境外測繪生產任務中具有巨大的應用潛力。