问题1:C#和GDAL如何修改栅格数据Band的blocksize大小?一般影像Band的blocksize就是一个如:19321,我想修改位512512
问题2:C#和GDAL如何修读取栅格再输出栅格时,两个栅格数据的投影精度没变,但投影名称为什么会发生变化?如输入:WGS84_UTM_1N,输出时会变成:WGS84 UTM 1N。
C#和GDAL对栅格处理
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
10条回答 默认 最新
关注获得0.60元问题酬金 引用 皆我百晓生 小程序回应内容作答:
问题1:要修改栅格数据Band的blocksize大小,可以使用GDAL中的GDALRasterBand.GetBlockSize()和GDALRasterBand.SetBlockSize()方法来实现。下面是示例代码:using OSGeo.GDAL; // 打开栅格数据集 Dataset ds = Gdal.Open("path/to/raster", Access.GA_Update); // 获取第一个Band Band band = ds.GetRasterBand(1); // 设置blocksize为512x512 int blockSizeX = 512; int blockSizeY = 512; band.SetBlockSize(blockSizeX, blockSizeY); // 关闭数据集 band.Dispose(); ds.Dispose();问题2:栅格数据的投影精度不会发生变化,但投影名称在输出时可能会发生变化。这是因为在输出时,GDAL会将投影名称中的下划线替换为空格。如果想保持输出时的投影名称不变,可以手动设置输出数据集的投影信息。下面是示例代码:
using OSGeo.GDAL; // 打开输入栅格数据集 Dataset inputDs = Gdal.Open("path/to/input/raster", Access.GA_ReadOnly); // 创建输出栅格数据集 Dataset outputDs = Gdal.GetDriverByName("GTiff").Create("path/to/output/raster", inputDs.RasterXSize, inputDs.RasterYSize, inputDs.RasterCount, DataType.GDT_Float32); // 设置输出栅格数据集的投影信息和变换系数 outputDs.SetProjection(inputDs.GetProjection()); outputDs.SetGeoTransform(inputDs.GetGeoTransform()); // 释放资源 inputDs.Dispose(); outputDs.Dispose();通过上述代码,保持了输入和输出数据集的投影精度和名称不变。
解决 无用评论 打赏 举报