1. 程式人生 > >遙感影象處理 | 採用GDAL讀取影象成功後獲取影象的一些基本資訊和統計資訊(C#)

遙感影象處理 | 採用GDAL讀取影象成功後獲取影象的一些基本資訊和統計資訊(C#)

描述資訊:  const char*  GDALDataset.GetDriver().GetDescription(),通常是影象的格式

影象大小:  影象寬度  int  GDALDataset.GetRasterXSize()

                    影象高度  int  GDALDataset.

GetRasterYSize()

波段數:      int   GDALDataset.GetRasterCount()    

                    波段少則一個,多則很多個,在遙感影象中波段通常有多個。

投影資訊:  GDALDataset.GetProjectionRef()   

                   

有的影象沒有投影資訊,如一般的JPGBMP格式影象。

地理座標資訊double adfGeoTransform[6]  

                         GDALDataset.GetGeoTransform(adfGeoTransform)

地理座標資訊是一個含6double型資料的陣列,

adfGeoTransform[1]adfGeoTransform[5]表示東西和南北方向 一個畫素對應的距離,adfGeoTransform[0]adfGeoTransform[3]表示左上角的座標。

波段資訊:     資料集中重要的資訊,有波段尺寸、資料型別、顏色資訊等。

                       獲取波段的方法:

                       Band  band= Dataset.GetRasterBand(i)     

波段尺寸:     int   band.GetXSize()

                       int   band.GetYSize()

資料型別:     const char*   GDALGetDataTypeName(poBand.GetRasterDataType())   

顏色資訊:     const char*   GDALGetColorInterpretationName(poBand.GetColorInterpretation())


統計資訊

            # region table獲取統計值
            ds = dataset;
            //影像統計值(最小值,最大值,均值,標準差)
            string staticvalue = null;

            int bApproxOK = 1; int bForce = 1;
            double pdfMin; double pdfMax; double pdfMean; double pdfStdDev;

            if (dataset != null)
            {
                for (int i = 1; i <= dataset.RasterCount; i++)
                {
                    Band band = dataset.GetRasterBand(i);
                    band.GetStatistics(bApproxOK, bForce, out pdfMin, out pdfMax, out pdfMean, out pdfStdDev);//獲取統計資訊
                    staticvalue += "Band" + i.ToString() + "," + pdfMin.ToString() + "," + pdfMax.ToString() + "," + pdfMean.ToString() + "," + pdfStdDev.ToString() + ",";
                }
            }
            if (staticvalue == null)
            {
                MessageBox.Show("無檔案資訊");
                this.Close();
            }