ArcGIS影像數據庫的建立與入庫

本文幫你解決以下疑問:影像數據是以怎樣的方式保存在SDE等數據庫中的,影像數據如何入庫。

  • 空間數據庫技術

空間數據庫技術用關係數據庫管理系統(RDBMS)來管理空間數據,主要解決存儲在關係數據庫中的空間數據與應用程序之間的數據接口問題,即空間數據庫引擎( Spatial Database Engine)。更確切地說,空間數據庫技術是解決空間數據對象中幾何屬性在關係數據庫中的存取問題,其主要任務是:

1)用關係數據庫存儲管理空間數據;

2)從數據庫中讀取空間數據,並轉換爲GIS應用程序能夠接收和使用的格式;

3)將GIS應用程序中的空間數據導入數據庫,交給關係數據庫管理。因此空間數據庫技術是空間數據進出關係數據庫的通道。

  • 建庫目的


建立影像數據庫的目的是將分幅分層生產的海量影像數據進行整理,使之符合統一的規範和標準;並對數據進行有效組織、管理,便於空間數據的查詢、分發及其它應用。建庫之後的數據是標準化、規範化的,採用統一的編碼和統一的格式;數據是有效組織的,在平面方向,分幅的數據要組織成邏輯上無縫的一個整體,在垂直方向,各種數據通過一致的空間座標定位能夠相互疊加和套合;具有高效的空間數據查詢、調度、漫遊以及數據分發等功能,並且能夠與其它系統無縫集成,爲其它應用服務。從應用的角度講,建立影像庫的總體目標是能夠管理多比例尺、多分辨率、多數據源的正射影像數據,能夠作到在局域網或廣域網上由全貌到細節、由整體到局部、由低分辨率到高分辨率快速、無縫的進行影像漫遊、瀏覽和應用,支持圖像數據集中式和分佈式(局域網範圍內分佈式的存貯)的存貯與管理,爲海量數據的應用提供一個高效的無縫平臺。

  • 建庫原理


簡而言之就是"兩種方式,分層分塊"。"兩種方式"是指:柵格數據集(RasterDatset)和柵格目錄(Raster Catalog)。它的存儲和管理方式,這就是"分層分塊"。在Personal Geodatabase中,柵格數據可以作爲柵格目錄表(Raster Catalog)或柵格數據集(Raster Dataset)來存儲。柵格數據集表現爲連續的單幅數據。而柵格目錄表是多個柵格的集合。每種存儲方式都有各自的優勢和侷限性,但也有一些規則是兩種方式都要遵守的。

柵格目錄表和柵格數據集都可以先創建成一個空的容器,然後再向其中加載數據,或者可以動態創建。創建和加載柵格目錄表或柵格數據集可以用ArcToolbox中的數據管理工具。這些工具可以在ArcCatalog的用戶界面中找到。

  • 柵格數據集


簡單的說,"柵格數據集"就是ArcGIS對柵格數據模型的抽象,其英文爲RasterDataset,任何一種物理柵格文件(如Erdas Imagine文件、ArcGIS Ascii Grid文件,Tiff文件等)經過ArcGIS的柵格數據模型抽象在內存中都是以RasterDataset形式存在的,RasterDatset一般由至少一個波段的RasterBand組成,如簡單的灰度圖像就是由一個波段的數據組成,普通的彩色合成影像就由三個或者三個以上波段組成,其中多光譜由多個通道(我們又把RasterBand稱爲通道)。由於計算機顯示器一般提供三個通道的顯示信道,分別爲R(紅)、G(綠)、B(藍),因此即使我們手頭有一個多波段的影像數據,我們也只能同時顯示其三個波段數據,如對於TM影像的5、4、3波段分別用紅、綠、藍進行顯示。我們也可以這麼理解柵格數據模型, RasterDatset由多個波段組成,我們把波段理解爲"層"的概念,那麼這樣每個RasterDatset就是由多個"層"疊加組合而成,每個層又是由具有行列屬性的二維數組組成,爲了將內部實現抽象起來,ArcGIS利用RasterBand類包裝了這個二維數組,並且其提供了各種方法操作其內部二維數組。

柵格數據集比較適合帶有標準座標系的航片或衛片,當以這種方式導入影像文件的時候,SDE會將它們拼接(mosaic)成一張完整的大地圖,但這種方式對各個圖幅的要求就非常嚴格,要實現拼接必須滿足幾個條件:相鄰圖幅的相鄰邊不能有一丁點重疊錯位;圖幅必須帶座標系等等。但這種把圖幅全拼起來的管理方式也有問題,就是如果將來要更新其中的某一小塊區域的圖像怎麼辦呢?比如紐約的影像圖,世貿大廈被撞沒了,其實只需要更新一下曼哈頓那一點地方的數據就可以了,可要是以Raster Map方式管理全紐約的影像地圖的話那麼就意味着要全部刪掉原來的數據,再重新導入一遍全城的航片,幾十個G,不是小數目,如果是1:10000的話估計紐約的影像數據量應該在300個G左右,怎麼也得導幾天才能導完吧。

  • 柵格目錄


"柵格目錄"可以簡單的理解爲一種普通表格數據模型,其英文爲RasterCatalog,"柵格目錄"中的每條記錄就是由"柵格數據集"和描述該"柵格數據集"的多種元數據信息組成。通過這種定義我們可以看出對於構建一個基礎數據庫,利用"柵格目錄"管理分幅影像數據具有很大的優勢,因爲分幅影像數據經常具有很多元數據屬性。"柵格目錄"管理也爲我們開發基礎數據系統提供了很方便的入口。

柵格目錄說白了就是個相冊。可以把任何東西的照片都存進去,SDE只管存儲和爲它們維護一個目錄,這一點可以從觀察Raster Catalog對應的Oracle Spatial表看出來,感覺就像一個被肢解了的圖片的集中營。如果用ESRI的桌面工具(比如ArcMap,ArcCatalog)來預覽這個Raster Catalog的時候,你將看到一張經過拼接的美圖!使用這種方式管理航片就沒有前面Raster Map方式最後說的那種問題,比如世貿大廈沒了,那麼我們就重新在那裏拍一張,再更新原來Raster Catalog中對應的那一個圖幅就可以了,其它的則沒必要去動。

  • "柵格數據集"與"柵格目錄"


總之,對於"柵格數據集"和"柵格目錄"其實就是ArcGIS 對於柵格數據抽象的一種內存模型,"柵格數據集"作爲Geodatabase核心數據模型在基礎庫中一般存儲地理背景數據,其要求是數據不經常變化(如經常更新背景數據就不適合利用RasterDataset進行存儲);"柵格目錄"一般用於管理具有屬性信息的影像數據,如分幅數據或者同一地區多期數據,需要注意的是,同一個"柵格目錄"必須具有相同的空間參考。

當創建柵格目錄表時,必須設置XY域(所有輸入柵格的空間範圍的集合),而柵格數據集則不需要。和ArcGIS中所有其它數據集一樣,我們強烈建議,要導入目錄表或數據集的柵格數據一定要預先定義空間參考,地理座標系統或投影座標系統。而這種座標系統不必要一定和目錄表或數據集的座標系統一致。

柵格數據集有一個空間參考,在拼接(Mosaic)的過程中,不同座標系統中的像元會被動態投影到正確的位置上。而在柵格目錄表中,每個柵格都會有自己的空間參考,它們和幾何空間參考以及柵格列的空間參考都不一樣,這些柵格只是在進行顯示或分析的時候纔會被動態投影。

  • 影像金字塔


"分層"是指:影像金字塔(pyramid)索引。其基本思想就是利用採樣自底向上生成金字塔,根據需求直接取其中某一級作爲操作對象,以提高整體效率。當然就像這個世界中的其它事物一樣,效率的提高是有代價的,這就是建塔帶來的額外空間開銷,建的級越多,越方便查詢,當然數據冗餘也越大。

如果爲大的柵格影像建立了金字塔的話,這些影像便能快速進行顯示。除了在屏幕上顯示外,金字塔還包含了很多其他信息。如果沒有金字塔,那麼在顯示時就要訪問整理柵格數據集,然後進行大量計算來選擇哪些柵格像元被顯示。金字塔是一種能對柵格影像按逐級降低分辨率的拷貝方式存儲的方法。通過選擇一個與顯示區域相似的分辨率,只需進行少量的查詢和少量的計算,從而減少顯示時間。

每次用ArcGIS打開一幅影像的時候,都會在狀態欄中看到Creating pyramids,這時就是在構建影像的金子塔。現在的google map,visual earth,mapbar這些portal應用都採用的是把地圖預先處理成影象金字塔,切塊後做四叉樹編碼。在進行zoom,pan操作的時候動態調用那些maptile。這種架構省略掉了製圖引擎這些對服務器性能消耗大的環節。

每一層影像金字塔都有其分辨率的,那麼根據你當前操作,比如說放大(無論是拉框放大、還是固定比例放大)、縮小、漫遊(此操作不涉及到影像分辨率的改變)計算出進行該操作後所需的影像分辨率及在當前視圖範圍內會顯示的地理座標範圍,然後根據這個分辨率去和已經建好的影像金字塔分辨率匹配,哪層影像金字塔的分辨率最接近就用哪層的圖像來顯示,並且根據操作後當前視圖應該顯示的範圍,來求取在該層影像金字塔上,應該對應取哪幾塊,然後取出來畫上去就可以了。

  • 按圖塊(block/tile)存儲


"分塊"是指每個圖幅是按圖塊(block/tile)存儲的,並使用格網索引。在將圖幅存儲於數據庫中時,SDE不是傻乎乎的一行一行的存進去,而是將圖幅劃分成若干個大小相同的圖塊,每塊大小不能超過16K,一般就取128×128。劃分的順序是從上到下,從左至右的,分塊的好處在於可以減少磁盤I/O。但是哪有那麼好的圖幅,長寬都是128的整數倍?而事實上就幾乎沒有這麼好的圖幅,圖幅的長和寬都除不開128的情況先,SDE的策略就是--補零。在圖幅的右側和下側補上若干零元(RGB:000000),也就是黑點,這樣處理過的圖幅就可以進行劃分了。

  • 建庫過程


當所有軟硬件都準備齊全後(這裏包括在ArcSDE軟件的安裝過程中已經創建好了SDE數據庫文件)就可以建立影像數據庫了。在企業級數據庫中,柵格數據的存儲結構包括分塊、索引、建立影像金字塔,並且常常經過壓縮處理。正是因爲數據具有分塊、索引以及金字塔結構等屬性,每次對柵格數據進行查詢時,只有滿足查詢範圍和精度的數據塊纔會返回,而不是每次都返回整個數據集。壓縮可以降低客戶和服務器間的數據交換量,使存儲大的無縫柵格數據集以及達到幾個TB的柵格目錄並使他們能夠在客戶端快速顯示成爲可能。

(1)數據準備


由於影像數據庫對入庫原始數據的要求比較嚴格,這也是保證影像數據庫完整性的一部分,因此在入庫之前應將原始影像整理放置,同時確保每個原始影像文件配有唯一一個正確的座標文件存放在相同目錄中,統計一下數據量以備後用。

(2)壓縮方式


由於影像數據量巨大,爲了減少存貯空間,提高顯示效率, 在柵格數據存入地理數據庫之前對其塊的大小進行壓縮。使用的壓縮方式可以是有損的(JPEG和JPEG2000)或無損的(LZ77)。無損壓縮意味着柵格數據集中像元的值不會被改變。壓縮的量取決於像元數據的類型;影像越一致,壓縮的比例越高。

對數據進行壓縮最主要的好處是可以節省存儲空間。另一個好處是從總體上提供了性能,因爲降低了服務器和客戶應用間交換的數據包。

因爲以下原因,可以選擇有損壓縮:

  1. 如果柵格數據只是用作背景圖像,而且無需對其進行分析。
  2. 數據加載和檢索快捷
  3. 所需的存儲空間小,因爲壓縮比例可以達到5:1或10:1(若選擇JPEG2000可以獲得更多的壓縮比例,如10:1或20:1)

因爲以下原因,可以選擇無損壓縮

  1. 柵格數據集是用來獲取新的數據或用於視覺分析
  2. 需要的壓縮比例在1:1和1:3之間
  3. 不打算保留原始數據
  4. 輸入的數據已經被有損壓縮過

即使不對柵格數據進行壓縮,企業級地理數據庫的存儲能力也可以滿足要求,但是,還是推薦進行柵格數據壓縮。如果無法確定使用何種壓縮方法,那就用默認的LZ77(無損壓縮)。

(3)數據入庫 
ArcSDE 管理影像方式主要有連續的柵格數據集和柵格目錄兩種。柵格目錄具有每個柵格都是獨立的,利於更新和數據庫維護;可查詢訪問單個數據集,可以根據用戶定義的屬性在表中加入用戶定義字段。因此,採用柵格目錄Raster Catalog這種方式存儲影像數據。

具體步驟如下:

1.成功連接數據庫服務器後(連接過程前面有詳細介紹),新建柵格目錄。右鍵"new"--"Raster Catalog"。

2..在柵格目錄中導入數據。右鍵"柵格目錄"--"load"--"load data",導入柵格數據。

(4)建金字塔 
經過較長時間的大量數據入庫後,利用ArcCatalog工具連接好數據庫後選中影像數據庫項,點擊鼠標右鍵,選擇"Build Pyramids"項後,系統就開始創建影像金字塔了。創建完金字塔後影像數據庫就基本建立完成了,爲了配合影像使用可以再向數據庫中導入矢量數據,這樣才能夠形成具有真正意義的影像數據庫。

創建金字塔時,一個降低分辨率的數據集(.rrd)文件將被創建。對於一個未經過壓縮的柵格數據集,它產生的(.rrd)文件的大小近似於源柵格數據集的8%。用戶不能爲柵格目錄創建金字塔,但可以對其中的每個柵格據集創建金字塔。

在 ArcCatalog 中創建金字塔(索引)

1.在Catalog樹中右擊柵格數據集。

2.單擊Build Pyramids按鈕。

3.如果還沒有選中,則指向用戶要創建金字塔的柵格數據集。

4.單擊Ok。

爲創建金字塔改變缺省設置

1. 單擊Tools菜單,並單擊 Options。

2. 單擊Raster選項卡。

3..單擊描述創建金字塔時的合適選項. 

發佈了19 篇原創文章 · 獲贊 15 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章