1 // 定义地理变换参数,用于将图像像素坐标转换为地理坐标
2 private readonly double[] geoTransform = { 70.0, 0.01, 0.0, 45.0, 0.0, -0.01 };
3 // 定义坐标系统,此处采用WGS 84地理坐标系
4 private readonly string projString = "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433],AXIS[\"Latitude\",NORTH],AXIS[\"Longitude\",EAST],AUTHORITY[\"EPSG\",\"4326\"]]";
5
6 // 注册所有GDAL驱动程序
7 Gdal.AllRegister();
8 Driver driver = Gdal.GetDriverByName("GTiff");
9 // 创建新的GeoTIFF数据集
10 Dataset dataset = driver.Create(filePath, width, height, 1, DataType.GDT_Float32);
11 dataset.SetGeoTransform(geoTransform);
12 dataset.SetProjection(projString);
13 // 设置压缩方式,这里使用LZW压缩算法
14 dataset.SetMetadataItem("COMPRESSION", "LZW", "IMAGE_STRUCTURE");
15 // 写入数据到数据集中
16 float[] dataBuffer = new float[width * height]; // 假设dataBuffer已经填充了有效数据
17 dataset.GetRasterBand(1).WriteRaster(0, 0, width, height, dataBuffer, width, height, 0, 0);
18 // 刷新缓存并释放资源
19 dataset.GetRasterBand(1).FlushCache();
20 dataset.FlushCache();
21 dataset.Dispose();
22
23 // 注意:设置的元数据项可能不会在重新打开数据集时显示,这取决于具体的数据集实现和使用的GDAL版本。
24 // 如果需要检查或重新获取元数据,可以使用如下代码:
25 string[] metadata = dataset.GetMetadata("IMAGE_STRUCTURE");