8.GDAL数据集总体概览
GDAL使用抽象數(shù)據(jù)模型(abstract data model)來解析它所支持的數(shù)據(jù)格式,抽象數(shù)據(jù)模型中包括下面幾部分內(nèi)容:
- 數(shù)據(jù)集(Dataset)
- 坐標(biāo)系統(tǒng)(Coordinate System)
- 仿射地理坐標(biāo)系統(tǒng)(AffineGeoTransform)
- 地面控制點(diǎn)(GCPs)
- 元數(shù)據(jù)(Metadata)
- 子數(shù)據(jù)集域(Subdatasets Domain)
- 圖像結(jié)構(gòu)域(Image_Structure Domain)
- RPC域(RPC Domain)
- XML域(XML:Domain)
- 柵格波段(Raster Band)
- 顏色表(Color Table)
- 快視圖(Overviews)
1. 數(shù)據(jù)集(Dataset)
數(shù)據(jù)集是由柵格波段和一些相關(guān)的信息共同組成的。在一個(gè)數(shù)據(jù)集中所有的波段都具有相同的大小,即圖像行數(shù)和列數(shù)相等;相關(guān)信息包括該i數(shù)據(jù)的地理坐標(biāo)、投影信息以及一些元數(shù)據(jù)信息等,其中元數(shù)據(jù)信息是由形如“名稱:值”的字符串組成的字符串列表
GDAL數(shù)據(jù)集是基于OpenGIS網(wǎng)格數(shù)據(jù)的標(biāo)準(zhǔn)來實(shí)現(xiàn)的。
2. 坐標(biāo)系統(tǒng)(Coordinate System)
數(shù)據(jù)集中的坐標(biāo)系統(tǒng)是使用OpenGIS的WKT字符串格式來實(shí)現(xiàn)的,包含以下內(nèi)容。
- 坐標(biāo)系統(tǒng)名稱
- 地理坐標(biāo)系統(tǒng)名稱
- 大地水準(zhǔn)面
- 橢球體名稱、長(zhǎng)半軸和扁率
- 中央經(jīng)線名稱與本初子午線的偏移量
- 投影方式
- 投影參數(shù)列表
- 單位名稱、單位與米或者弧度之間的轉(zhuǎn)換系數(shù)
- 坐標(biāo)軸名稱和順序
- 以上各項(xiàng)對(duì)應(yīng)的EEPPSG代碼
3. 元數(shù)據(jù)(Metadata)
GDAL中的元數(shù)據(jù)是對(duì)該數(shù)據(jù)的一個(gè)輔助說明,元數(shù)據(jù)的格式是由一系列形如"名稱=值"的字符串組成的列表。元數(shù)據(jù)的名稱由指定的付好構(gòu)成的任何字符。
數(shù)據(jù)集中最好不要存儲(chǔ)太多元數(shù)據(jù),如果元數(shù)據(jù)大小超過100KB就可能導(dǎo)致性能下降。
4. 子數(shù)據(jù)集域(Subdatasets Domain)
子數(shù)據(jù)集域是含有多個(gè)子數(shù)據(jù)集的字符串列表,通常用來提供指向多個(gè)影像的指針,這些影像存儲(chǔ)在同一個(gè)多影像文件中
5. 圖像結(jié)構(gòu)域(Image_Structure Domain)
在默認(rèn)域的元數(shù)據(jù)用來描述圖像的相關(guān)信息,這些元數(shù)據(jù)并沒有以特殊的方式保存在磁盤中。意思就是說,當(dāng)這些元數(shù)據(jù)信息被復(fù)制到一個(gè)新的圖像中的時(shí)候,會(huì)以合適的方式存在新的圖像中。此外還有一些信息是和圖像的格式緊密關(guān)聯(lián)的。為了防止這些信息在寫入新圖像的時(shí)候被復(fù)制,將這些信息存儲(chǔ)在一個(gè)叫IMAGE_STRUCTURE的特殊域中,通常這里存儲(chǔ)的東西不會(huì)寫入到新的圖像中去。
目標(biāo),在IMAGE_STRUCTURE域中定義的項(xiàng)目主要有下面幾個(gè)。
-
COMPRESSION:壓縮方式用來指定數(shù)據(jù)集或者波段的壓縮方式,這個(gè)是沒有固定的壓縮類型名稱,但是一個(gè)指定的格式,如果指定壓縮方式,那么在創(chuàng)建的時(shí)候會(huì)使用這種壓縮方式進(jìn)行壓縮。
-
NBITS:當(dāng)前波段或者當(dāng)前數(shù)據(jù)集的波段中真實(shí)的數(shù)據(jù)存儲(chǔ)bit數(shù)。通常只有非標(biāo)準(zhǔn)的數(shù)據(jù)類型才會(huì)使用該值,比如TIFF圖像中的1bit數(shù)據(jù),在GDAL會(huì)使用GDT_Byte來表示。
-
INTERLEAVE:這個(gè)只能用在數(shù)據(jù)集中,用來表示一個(gè)像元,一行和一個(gè)波段之間的間隔,可以用來作為讀取數(shù)據(jù)的一個(gè)提示。
-
PIXELTYPE:這個(gè)值會(huì)出現(xiàn)在一個(gè)GDT_Byte類型的波段(或者相應(yīng)的數(shù)據(jù)集)中,并且會(huì)使用SIGNEDBYTE值來表示無符號(hào)byte值介于128和255之間值應(yīng)該轉(zhuǎn)換為-128到-1之間。
6. RPC域(RPCDomain)
RPC元數(shù)據(jù)域存儲(chǔ)的是有理函數(shù)模型的系數(shù),該模型表示從圖像行列號(hào)與空間參考位置間的變換關(guān)系,該模型具體定義如下:
- ERR_BIAS: 偏移誤差,圖像上所有的點(diǎn)在水平軸上的偏移的中誤差,-1.0表示未知。
- ERR_RAND: 隨機(jī)誤差,圖像上所有的點(diǎn)在水平軸上的隨機(jī)中誤差,-1.0表示未知。
- LINE_OFF: 行偏移量
- SAMP_OFF: 列偏移量
- LAT_OFF: 緯度偏移量
- LONG_OFF: 經(jīng)度偏移量
- HEIGHT_OFF: 高程偏移量
- LINE_SCALE: 行縮放比例
- SAMP_SCALE: 列縮放比例
- LAT_SCALE: 緯度縮放比例
- LONG_SCALE: 經(jīng)度縮放比例
- HEIGHT_SCALE: 高程縮放比例
- LINE_NUM_COEFF (1-20): 行分子系數(shù),一共20個(gè)(使用空格隔開)
- LINE_DEN_COEFF (1-20): 行分母系數(shù),一共20個(gè)(使用空格隔開)
- SAMP_NUM_COEFF (1-20): 列分子系數(shù),一共20個(gè)(使用空格隔開)
- SAMP_DEN_COEFF (1-20): 列分母系數(shù),一共20個(gè)(使用空格隔開)
- 些內(nèi)容都是來自GeoTIFF的RPC文檔(http://geotiff.maptools.org/rpc_prop.html)。
7. XML域(XML:Domains)
任何前綴是“xml:”的一個(gè)字符串,但不是名稱/值這種類型的,這是一個(gè)簡(jiǎn)單的XML格式的長(zhǎng)字符串。
8. 柵格波段(Raster Band)
一個(gè)柵格波段在GDAL中使用GDALRasterBand類來進(jìn)行表示。他表示一個(gè)柵格波段、通道或者圖層。波段不能完全用來表示整個(gè)圖像,比如一個(gè)24位的RGB圖像中就含有三個(gè)波段,分別是紅波段,綠波段和藍(lán)波段。
柵格波段含有下面屬性:
- 圖像的寬和高,這個(gè)和數(shù)據(jù)集里面的定義一樣,如果這個(gè)波段是全分辨率波段的話。(這里有個(gè)說明,GDALRasterBand還可以表示金字塔的波段,如果是金字塔的波段的話,里面的寬高就和圖像的寬高不一樣)。
- 數(shù)據(jù)類型(GDALDataType)。應(yīng)該是Byte、UInt16、Int16、UInt32、Int32、Float32、Float64以及復(fù)數(shù)類型CInt16、CInt32、CFloat32和CFloat64中的一個(gè)。
- 大小。通過塊是讀取數(shù)據(jù)最高效的方式,對(duì)于分塊數(shù)據(jù),就是一個(gè)分塊大小,對(duì)于大多數(shù)圖像來說,一塊就是一行。
- 稱/值的元數(shù)據(jù)對(duì),格式和數(shù)據(jù)集中的一員,但是包含的信息可能是波段特有的。
- 個(gè)可選的波段描述字符串。
- 個(gè)可選的用來描述NODATA值的像元值。
- 個(gè)可選的NODATA值表示的掩碼波段或者在某些時(shí)候作為透明通道。
- 選的類別名稱列表(用于分類圖)
- 選的最大值和最小值。
- 選的偏移量和縮放比例,用來對(duì)圖像的像素值進(jìn)行變換,比如變換高度到米等。
- 像單位名稱,可選。比如可以用來表示高程數(shù)據(jù)的海拔。
- 段的顏色信息,是下面值中的某一個(gè):
-
GCI_Undefined:默認(rèn)值,未知
-
GCI_GrayIndex: 灰度圖
-
GCI_PaletteIndex:顏色表圖
-
GCI_RedBand: RGBA圖像的R部
-
GCI_GreenBand: RGBA圖像的G部
-
GCI_BlueBand: RGBA圖像的B部
-
GCI_AlphaBand: RGBA圖像的Alpha部
-
GCI_HueBand: HLS圖像的色調(diào)部
-
GCI_SaturationBand: HLS圖像的飽和度部
-
GCI_LightnessBand:HLS圖像的亮度部
-
GCI_CyanBand: CMYK圖像的青色部
-
GCI_MagentaBand: CMYK圖像的品紅部
-
GCI_YellowBand: CMYK圖像的黃色部
-
GCI_BlackBand: CMYK圖像的黑色部。
- 顏色表,下面有更詳細(xì)的說明
- 如果金字塔可用,含有一些關(guān)于金字塔的信息。
-
9. 顏色表(Color Table)
顏色表的定義如下,使用C語言的風(fēng)格定義:
typedef struct {/- gray, red, cyan or hue-/short c1;/- green, magenta, orlightness -/ short c2;/- blue, yellow, orsaturation -/short c3;/- alpha or blackband -/short c4; } GDALColorEntry;顏色表通常是顏色調(diào)色板的一個(gè)值,對(duì)于c1/c2/c3/c4 四個(gè)值對(duì)應(yīng)不同的調(diào)色板,其表示的含義不同,具體表示見下:
- GPI_Gray: 使用c1表示灰度值
- GPI_RGB: c1表示紅色,c2表示綠色,c3表示藍(lán)色,c4表示alpha通道
- GPI_CMYK: c1表示青色,c2表示洋紅,c3表示黃色,c4表示黑色
- GPI_HLS: c1表示色調(diào),c2表示亮度,c3表示飽和度。
通過顏色表,將象元值用顏色表中的顏色來進(jìn)行表示,顏色表中的值是從0開始遞增。
10. 快視圖(Overviews)
一個(gè)波段中可能沒有或者有很多個(gè)快視圖。每個(gè)快視圖都是一個(gè)GDALRasterBand,略縮圖大小將和其下層的柵格大小不一樣,但是快視圖表示的區(qū)域與整個(gè)圖像的區(qū)域是一致的。
快視圖是用來快速顯示圖像用的,使用全分辨率圖像進(jìn)行降采樣得到。
我們可以通過波段類中的HasArbitraryOverviews屬性來判斷是否由快視圖,如果返回TRUE表示有,就可以讀取任何分辨率的快視圖。
總結(jié)
以上是生活随笔為你收集整理的8.GDAL数据集总体概览的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小白篇(十九):openLdap介绍(又
- 下一篇: java后端入门必备书籍