本頁面的內容不再更新。
通過訪問前面介紹的GDAL的一些函數,可以概括地知道影像的 獲取時間、處理時間、空間分辨率、 影像大小等一些信息。但是為了對遙感影像進行處理,需要進一步能夠訪問遙感影像 中的數據, 即影像中像元的灰度值。
GDAL提供了下面兩個函數來訪問是影像的數值。
-
ReadRaster()
讀取圖像數據(以二進制的形式)微信號:MeetyXiao
添加微信好友, 獲取更多信息
復制微信號 -
ReadAsArray()
讀取圖像數據(以數組的形式)
下面看一下具體的用法。
>>> help(dataset.ReadRaster) ReadRaster(self, xoff, yoff, xsize, ysize, buf_xsize=None, buf_ysize=None, buf_type=None, band_list=None) >>> help(dataset.ReadAsArray) ReadAsArray(self, xoff=0, yoff=0, xsize=None, ysize=None)
這是兩個非常重要的函數,它們直接讀取圖像的數據, 從而可 以對柵格數據進行分析。 可以看到兩個函數的幫助中有許多的 參數。 解釋一下:
-
xoff,yoff
:指定想要讀取的部分原點位置在整張圖像中距 離全圖原點的位置(以像元為單位)。 -
xsize,ysize
: 指定要讀取部分圖像的矩形的長和寬(以像 元為單位)。 -
buf_xsize,buf_ysize
:可以在讀取出一部分圖像后進行縮放。 那么就用這兩個參數來定義縮放后圖像最終的寬和高,gdal將幫 你縮放到這個大小。 -
buf_type
:可以對讀出的數據的類型進行轉換(比如原圖數據 類型是short,你要把它們縮小成byte)。 -
band_list
:適應多波段的情況??梢灾付ㄒx取的哪幾個波段。
這里簡單看一下如何獲取GeoTIFF文件中的數據。
>>> dataset2 = gdal.Open("/bk/gdata/img_landsat_subset.tif") >>> dataset2.ReadAsArray(50,50,3,3) array([[[ 45, 40, 43], [ 51, 45, 45], [ 54, 50, 44]], [[148, 151, 168], [157, 153, 160], [170, 163, 156]], [[121, 119, 132], [130, 127, 127], [143, 135, 127]]], dtype=uint8) >>> dataset2.ReadRaster(50,50,3,3) '-(+3--62,\x94\x97\xa8\x9d\x99\xa0\xaa\xa3\x9cyw\x84\x82\x7f\x7f\x8f\x87\x7f'
我們就把圖像左上角位于(3340, 3780),寬高都為10個像元的 數據讀取出來了。這兩個函數返回的結果不一樣,其中 ReadAsArray()
讀出的是numpy的數組,類型為int16;而ReadData()
讀出二進制型。
返回目錄:Python與開源GIS
來源:開源地理空間基金會中文分會
來源鏈接:https://www.osgeo.cn/post/7230g
本站聲明:網站內容來源于 *** ,如有侵權,請聯系我們,我們將及時處理。