本發(fā)明屬于遙感圖像分析領域,涉及了一種適用于多投影遙感影像的海岸線數據快速自動疊加方法。
背景技術:
海岸線數據是遙感圖像處理領域中非常重要的基礎數據。海岸線數據在遙感圖像分割、近海岸地物識別、海上船只檢測等諸多領域有著至關重要的作用。
然而,傳統的海岸線數據具有數據規(guī)模大、投影單一的特點。無法滿足各種投影的遙感影像數據處理及顯示要求。而傳統處理此問題的方法是將海岸線數據人工進行投影轉換,再進行疊加顯示??梢园l(fā)現,傳統方法不僅消耗時間長,且處理方法不能滿足其他投影的遙感數據的需求。并且,遙感影像通常只涉及到部分的海岸線,傳統全部加載海岸線的方式存在加載速度過慢、瀏覽顯示存在卡頓現象等不足。
因此,如何針對不同投影的遙感圖像數據快速的、自動的疊加海岸線數據,對遙感圖像處理與分析領域有著至關重要的作用。
SHAPELIB是針對矢量文件進行讀取、寫入等操作的開源庫。GDAL是一個轉換各種柵格數據格式的庫,包括讀取、寫入、轉換、處理各種柵格數據格式。利用GDAL和SHAPELIB庫能夠方便的進行遙感影像數據、海岸線數據的讀取。
技術實現要素:
本發(fā)明的目的是克服現有技術的不足,提出一種適用于多投影遙感影像的海岸線數據快速自動疊加方法。
適用于多投影遙感影像的海岸線數據快速自動疊加方法,包括如下步驟:
1)讀取遙感圖像中的投影坐標系、左上角坐標、分辨率、遙感圖像寬度、遙感圖像高度5個參數;
2)根據步驟1)得到的參數計算遙感影像范圍矩陣的左上角和右下角坐標;
3)對步驟2)得到的范圍矩陣進行擴充,使其寬度、高度均為1000的整數倍,接著對擴充后的范圍建立內存格網索引;
4)判斷海岸線文件和遙感圖像文件的投影坐標系是否一致;
5)如果海岸線文件和遙感圖像文件的投影坐標系不一致,則需要將步驟3)得到格網矩陣坐標進行投影轉換,得到與海岸線坐標一致的矩陣坐標,如果一致,則進行步驟6);
6)利用SHAPELIB獲取每個格網中的海岸線對象;
7)如果海岸線文件和遙感圖像文件的投影坐標系不一致,則將步驟5)中獲取到的對象也進行投影轉換,使對象的坐標與遙感圖像文件中的坐標系一致,否則進行步驟8);
8)根據遙感影像當前顯示大小,從內存索引中實時獲取顯示對象,并將獲取到的對象進行繪制。
上述方案中,各步驟可采用如下優(yōu)選方式:
所述步驟2)中計算公式為:
xmin=xlt-width*xres (1)
ymin=ylt-height*yres (2)
xmax=xlt+width*xres (3)
ymax=ylt+height*yres (4)
其中,(xlt,ylt)是遙感圖像左上角的坐標,width是遙感圖像的寬度,height代表遙感圖像的高度,xres是遙感圖像的橫向分辨率,yres是遙感圖像的縱向分辨率;(xmin,ymin)代表當前顯示范圍的左上角坐標,(xmax,ymax)代表當前顯示范圍的右下角坐標。
所述的步驟3)中內存格網索引為一個包含數據對象、格網范圍、是否有數據的標識的一系列對象,其具體建立方式為:將顯示范圍矩陣劃分為多個1000x1000的格網,并利用SHAPELIB開源庫獲取每個格網中的海岸線對象,并在海岸線對象填充的過程中標識該格網是否包含海岸線。
所述步驟4)中的判斷遙感圖像和海岸線文件的投影是否一致,其判斷方法為:
abs(ffalse_easting-ff'alse_easting)<0.0001 (5)
abs(ffalse_northing-ff'alse_northing)<0.0001 (6)
abs(fscale_factor-fs'cale_factor)<0.0001 (7)
abs(fcentral_meridian-fc'entral_meridian)<0.0001 (8)
abs(flatitude_origin-fl'atitude_origin)<0.0001 (9)
其中,abs是絕對值函數,ffalse_easting和f'false_easting分別代表遙感圖像投影坐標系和海岸線投影坐標的東偽偏移,ffalse_northing和f'false_northing分別代表遙感圖像投影坐標系和海岸線投影坐標的北偽偏移,fscale_factor和f'scale_factor分別代表遙感圖像投影坐標系和海岸線投影坐標的比例因子,fcentral_meridian和f'central_meridian分別代表遙感圖像投影坐標系和海岸線投影坐標的中央經線,flatitude_origin和f'latitude_origin分別代表遙感圖像投影坐標系和海岸線投影坐標的起始原點;
當遙感圖像坐標系和海岸線坐標系均滿足式5)至式9)時,則認為兩者坐標系一致,否則判定為不一致。
所述的步驟5)的實現方式為:建立坐標原始坐標系統、建立目標坐標系統,并利用ProjNet開源庫,實現坐標從原始坐標系統到目標坐標系統的轉換。
所述的步驟8)中實時獲取顯示對象的方法為:將當前遙感影像顯示范圍矩陣與格網求交,繪制與其有交集的格網數據;獲取遙感影像當前顯示范圍的公式如下:
xmin=xlt-width*xres*ratio (11)
ymin=ylt-height*yres*ratio (12)
xmax=xlt+width*xres*ratio (13)
ymax=ylt+height*yres*ratio (14)
其中,(xlt,ylt)是遙感圖像左上角的坐標,width是遙感圖像的寬度,height代表遙感圖像的高度,xres是遙感圖像的橫向分辨率,yres是遙感圖像的縱向分辨率,ratio代表當前遙感圖像的縮放因子;(xmin,ymin)代表當前顯示范圍的左上角坐標,(xmax,ymax)代表當前顯示范圍的右下角坐標。
本發(fā)明能夠使用一套海岸線數據滿足不同投影坐標系的遙感影像數據海岸線疊加需求。同時,提出了內存格網索引,能夠滿足以最小的內存耗費滿足遙感影像范圍內的海岸線快速疊加顯示。
附圖說明
圖1為海岸線格網索引構建及查詢圖。
圖2為提取到的海岸線。
具體實施方式
下面結合附圖和實施例對本發(fā)明做進一步說明。
以某沿海地區(qū)遙感影像為基礎,采用本發(fā)明方法進行海岸線數據的快速自動疊加,方法包括如下步驟:
1)讀取遙感圖像中的投影坐標系、左上角坐標、分辨率、遙感圖像寬度、遙感圖像高度5個參數;
2)根據步驟1)得到的參數計算遙感影像范圍矩陣的左上角和右下角坐標;其計算公式為:
xmin=xlt-width*xres (1)
ymin=ylt-height*yres (2)
xmax=xlt+width*xres (3)
ymax=ylt+height*yres (4)
其中,(xlt,ylt)是遙感圖像左上角的坐標,width是遙感圖像的寬度,height代表遙感圖像的高度,xres是遙感圖像的橫向分辨率,yres是遙感圖像的縱向分辨率。(xmin,ymin)代表當前顯示范圍的左上角坐標,(xmax,ymax)代表當前顯示范圍的右下角坐標。
3)對步驟2)得到的范圍矩陣進行擴充,使其寬度、高度均為1000的整數倍,接著對擴充后的范圍建立內存格網索引,并獲取每個格網中的海岸線對象。內存格網索引是一個包含數據對象、格網范圍、是否有數據的標識的一系列對象,其具體建立方式為,將顯示范圍矩陣劃分為多個1000x1000的格網,并利用SHAPELIB開源庫獲取每個格網中的海岸線對象,并在海岸線對象填充的過程中標識該格網是否包含海岸線。
4)判斷海岸線文件和遙感圖像文件的投影坐標系是否一致;其判斷方法為:
abs(ffalse_easting-f'false_easting)<0.0001 (5)
abs(ffalse_northing-f'false_northing)<0.0001 (6)
abs(fscale_factor-f'scale_factor)<0.0001 (7)
abs(fcentral_meridian-f'central_meridian)<0.0001 (8)
abs(flatitude_origin-f'latitude_origin)<0.0001 (9)
其中,abs是絕對值函數,ffalse_easting和f'false_easting分別代表遙感圖像投影坐標系和海岸線投影坐標的東偽偏移,ffalse_northing和f'false_northing分別代表遙感圖像投影坐標系和海岸線投影坐標的北偽偏移,fscale_factor和f'scale_factor分別代表遙感圖像投影坐標系和海岸線投影坐標的比例因子,fcentral_meridian和f'central_meridian分別代表遙感圖像投影坐標系和海岸線投影坐標的中央經線,flatitude_origin和f'latitude_origin分別代表遙感圖像投影坐標系和海岸線投影坐標的起始原點。當遙感圖像坐標系和海岸線坐標系均滿足式5)至式9)時,則認為兩者坐標系一致,否則判定為不一致。
5)如果海岸線文件和遙感圖像文件的投影坐標系不一致,則需要將步驟3)得到格網矩陣坐標進行投影轉換,得到與海岸線坐標一致的矩陣坐標,如果一致,則進行步驟6)。對范圍矩陣進行投影坐標轉換的具體實現方式為:建立坐標原始坐標系統、建立目標坐標系統,并利用ProjNet開源庫,實現坐標從原始坐標系統到目標坐標系統的轉換。
6)利用SHAPELIB獲取每個格網中的海岸線對象。
7)如果海岸線文件和遙感圖像文件的投影坐標系不一致,則將步驟5)中獲取到的對象也進行投影轉換,使對象的坐標與遙感圖像文件中的坐標系一致,否則進行步驟8)。
8)根據遙感影像當前顯示大小,從內存索引中實時獲取顯示對象,并將獲取到的對象進行繪制;其實時獲取顯示對象的方法為:將當前遙感影像顯示范圍矩陣與格網求交,繪制與其有交集的格網數據;獲取遙感影像當前顯示范圍的公式如下:
xmin=xlt-width*xres*ratio (11)
ymin=ylt-height*yres*ratio (12)
xmax=xlt+width*xres*ratio (13)
ymax=ylt+height*yres*ratio (14)
其中,(xlt,ylt)是遙感圖像左上角的坐標,width是遙感圖像的寬度,height代表遙感圖像的高度,xres是遙感圖像的橫向分辨率,yres是遙感圖像的縱向分辨率,ratio代表當前遙感圖像的縮放因子。(xmin,ymin)代表當前顯示范圍的左上角坐標,(xmax,ymax)代表當前顯示范圍的右下角坐標。
圖1展示了采用上述方法在遙感影像上加載海岸線數據。為了驗證本發(fā)明的有效性,本文采用ARCGIS軟件對不同投影的遙感影像數據進行海岸線疊加顯示,具體顯示結果如表1。
表1