GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。
GDAL提供对多种栅格数据的支持,包括Arc/Info ASCII Grid(asc),GeoTiff (tiff),Erdas Imagine Images(img),ASCII DEM(dem) 等格式。
使用C#开发gdal的程序,引用的C#类库不多,但是需要在执行目录中,添加不少C++的dll,要不然就会报错,缺失dll文件,具体可以去网上下载。
C#的工程中,需要引用以下的dll:
Gdal.AllRegister();
//支持中文
//Gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES");
Dataset ds = Gdal.Open(strFilePath, Access.GA_ReadOnly);
Band Band = ds.GetRasterBand(1);
//获取图像的尺寸
int width = Band.XSize;
int height = Band.YSize;
//获取坐标变换系数
double[] adfGeoTransform = new double[6];
ds.GetGeoTransform(adfGeoTransform);
//获取行列号
double dCol = 0.0, dRow = 0.0;
int dc = Convert.ToInt32(dCol);
int dr = Convert.ToInt32(dRow);
DataType DT = DataType.GDT_CFloat32;
//创建一个tiff文件的格式
OSGeo.GDAL.Driver driver = Gdal.GetDriverByName("GTiff");
Dataset dataset = driver.Create(testPath, fx, fy, 1, DT, null);
//影像转换参数
dataset.SetGeoTransform(adfGeoTransform);
//投影转换参数
dataset.SetProjection(ds.GetProjection());
//影像波段中写入数据
dataset.GetRasterBand(1).WriteRaster(0, 0, fx, fy, data, fx, fy, 0, 0);
dataset.GetRasterBand(1).FlushCache();