日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8影像计算ndvi landsat_使用GDAL读取遥感影像的信息

發布時間:2023/12/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8影像计算ndvi landsat_使用GDAL读取遥感影像的信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 讀取影像數據集的元數據

  • ????GDAL已經提供了足夠方便的函數,可以讀取影像的一些元數據信息, 從而方便對數據進行處理。GDAL一般是以字典的形式對元數據進行組織的, 但是對于不同的柵格數據類型,元數據的類型與鍵值可能都不一樣。

    ????目前, 國際上對空間元數據標準內容進行研究的組織主要有三個,分別是歐洲標準化委員會(CEN/TC 287)、 美國聯邦地理數據委員會(FGDC)和國際標準化組織地理信息/地球信息技術委員會(ISO/TC 211)。

    ??? GDAL可以作為數據集級別的元數據來處理下面的基本的TIFF標志。

    • TIFFTAG_DOCUMENTNAME

    • TIFFTAG_IMAGEDESCRIPTION

    • TIFFTAG_SOFTWARE

    • TIFFTAG_DATETIME

    • TIFFTAG_ARTIST

    • TIFFTAG_HOSTCOMPUTER

    • TIFFTAG_COPYRIGHT

    • TIFFTAG_XRESOLUTION

    • TIFFTAG_YRESOLUTION

    • TIFFTAG_RESOLUTIONUNIT

    • TIFFTAG_MINSAMPLEVALUE (read only)

    • TIFFTAG_MAXSAMPLEVALUE (read only)

    ????使用python來訪問以下元數據。

    from osgeo import gdaldataset = gdal.Open("C:/Users/WangTianli/Desktop/GDAL/Landsat/Washington/geotiff_file.tif")dataset.GetMetadata(){'AREA_OR_POINT': 'Area', 'PyramidResamplingType': 'NEAREST'}

    ????GetMetadata()?方法可以訪問數據的元數據信息,元數據信息對于每個數據都是不一樣的。比如再打開另外一個文件:

    ds?=?gdal.Open('C:/Users/WangTianli/Desktop/GDAL/Landsat/gdata/lu75c.tif')ds.GetMetadata(){'AREA_OR_POINT': 'Area',
    'TIFFTAG_XRESOLUTION': '1',
    'TIFFTAG_YRESOLUTION': '1'}

    ????這個文件只對兩個TIFF標志進行了定義,還有一個并不是TIFF標志定義的。

    ????2.使用GetDescription()獲得柵格數據的信息

    dataset.GetDescription()'C:/Users/WangTianli/Desktop/GDAL/Landsat/Washington/geotiff_file.tif'

    ????看來這里的圖像描述是圖像的路徑名, 但是這是和各種不同數據集相關的, 不同數據集有不同的描述。

    ????3.獲取數據集柵格波段數目

    ????柵格數據集是由多個數據構成的,在GDAL中,每一個波段,都是一個數據集;不僅如此,柵格數據集還可能包含有子數據集,每子數據集又可能包含有波段

    ????這些數據集的數目可以通過RasterCount屬性來查看。

    dataset.RasterCount

    3

    ????這是一個由3個波段構成的Landsat遙感影像。注意RasterCount后面沒有括號,因為它是屬性不是方法。

    ????再看一個MODIS L1B數據:

    mds = gdal.Open("C:/Users/WangTianli/Desktop/GDAL/Landsat/gdata/MOD09A1.A2009193.h28v06.005.2009203125525.hdf")mds.RasterCount

    0

    ????運行結果居然是0。這意味著當前的數據集 dataset 中的柵格數目是0。實際上,MODISL1B的數據格式是HDF格式的, 它的數據是以子數據集組織的, 要獲取其相關的數據的信息, 需要繼續訪問其子數據集。

    ????4.獲取數據集影像行列數據

    ????柵格數據的大小指出了影像以像元為單位的寬度與高度。

    img_width,img_height?=?dataset.RasterXSize,dataset.RasterYSizeimg_width,img_height(1500, 900)

    ????可以看出我們的影像大小是 10572?×?9422 。

    ????5.獲得數據集空間參考

    ????GetGeoTransform()?地理仿射變換參數。

    ????對于遙感影像來說,它需要在地理空間中進行定位。在GDAL中,這有兩種方式,其中一種是使用六個參數坐標轉換模型。這個模型的具體實現在不同的軟件中是不一樣的。在GDAL中,這六個參數包括左上角坐標像元X、Y方向大小旋轉等信息。要注意,Y方向的像元大小為負值。

    dataset.GetGeoTransform()

    (1868454.913, 30.0, 0.0, 5353126.266, 0.0, -30.0)

    ????6.獲得數據集投影信息

    ????使用?GetProjection()?函數,可以比較容易地獲取數據集的投影信息。

    dataset.GetProjection()'PROJCS["Albers_Beijing54",GEOGCS["Unknown datum based upon the Krassowsky 1940 ellipsoid",DATUM["Not_specified_based_on_Krassowsky_1940_ellipsoid",SPHEROID["Krassowsky 1940",6378245,298.3,AUTHORITY["EPSG","7024"]],AUTHORITY["EPSG","6024"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]]],PROJECTION["Albers_Conic_Equal_Area"],PARAMETER["latitude_of_center",0],PARAMETER["longitude_of_center",105],PARAMETER["standard_parallel_1",25],PARAMETER["standard_parallel_2",47],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH]]'

    ????7.獲取數據集的波段

    ????GetRasterBand()?函數,可以獲得柵格數據集的波段。這是函數的參數使用波段的索引值。

    from osgeo import gdaldataset = gdal.Open('/gdata/lu75c.tif')dataset.RasterCount

    1

    band = dataset.GetRasterBand(1)

    ????這里通過?GetRasterBand()?函數獲取了第一個波段band,注意:這里訪問波段的索引和通常的數組索引不一樣,波段索引的開始值是1而不是0。


    以上內容針對數據集。

    以下內容針對波段。


    ????8.查看波段的基本信息

    ????使用dir()函數查看波段有什么屬性和方法。

    dir(band)

    ????9.獲取波段行列數據

    band.XSize

    6122

    band.YSize

    4669

    band.DataType

    3

    ????執行以上代碼得到了波段圖像的寬和高(像元為單位)。對于我們所使用的影像, 這個與?dataset?中使用?RasterXSize()?與?RasterYSize()?獲取的值一致。DataType是圖像中實際數值的數據類型,表示8位無符號整型。

    ????10.獲取波段數據的屬性

    band.GetNoDataValue()band.GetMaximum()band.GetMinimum()band.ComputeRasterMinMax()

    (-1.0, 66.0)

    ????Maximum?是表示在本波段數值中最大的值,當然?Minimum?就是表示本波段中最小的值。通過運行結果,我們可以看到在一開始RasterXSize()和RasterYSize()都沒有值。因為對于文件格式不會有固有的最大最小值。所以我們可以通過函數ComputeRasterMinMax()?計算得到。注意!這里的最大最小值不包括“無意義值”!也就是上面顯示的?NoDataValue?。

    總結

    以上是生活随笔為你收集整理的8影像计算ndvi landsat_使用GDAL读取遥感影像的信息的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。