/// <summary>
/// 创建RasterDataset数据集
/// </summary>
/// <param name="pWs">打开的工作空间</param>
/// <param name="sDatasetName">Dataset的名字</param>
/// <param name="iBands">波段值</param>
/// <param name="iPixelType">Pixel Type</param>
/// <param name="iCellSizeX">X CellSize</param>
/// <param name="iCellSizeY">Y CellSize</param>
/// <param name="pSR">坐标参考系</param>
/// <param name="iPyramid">金字塔值</param>
/// <param name="iType">压缩算法</param>
/// <param name="sKeyword"></param>
/// <param name="iCompressRate">压缩比例</param>
/// <returns>返回创建的数据集</returns>
public static IRasterDataset CreateNewRasterDataset(IRasterWorkspaceEx pWs, string sDatasetName, int iBands, int iPixelType, int iCellSizeX, int iCellSizeY, ISpatialReference pSR, int iPyramid, int iType, string sKeyword, int iCompressRate) {
IRasterDef rasterDef = createRasterDef(false, pSR);
IRasterStorageDef rasterStoreDef = createRasterStorageDef(iPyramid, iType, iCompressRate, iCellSizeX, iCellSizeY);
// Bug Fix:下面这句会引发错误,暂时屏蔽掉
//IGeometryDef geoDef = createGeoDefds(pSR);
IGeometryDef geoDef = null;
if (sKeyword == null)
sKeyword = "defaults";
IRasterDataset pRasterDataset = null;
try {
pRasterDataset = pWs.CreateRasterDataset(sDatasetName, iBands,
(rstPixelType)iPixelType, rasterStoreDef, sKeyword, rasterDef, geoDef);
}
catch {
throw;
}
return pRasterDataset;
}
private static IRasterStorageDef createRasterStorageDef(int iPyramid, int iType, int iCompressRate, int iCellSizeX, int iCellSizeY) {
IRasterStorageDef pRasterStorageDef = new RasterStorageDefClass();
pRasterStorageDef.CompressionQuality = iCompressRate;
pRasterStorageDef.CompressionType = (esriRasterCompressionType)iType;
pRasterStorageDef.PyramidResampleType = rstResamplingTypes.RSP_NearestNeighbor;
pRasterStorageDef.PyramidLevel = iPyramid;
pRasterStorageDef.TileHeight = 128;
pRasterStorageDef.TileWidth = 128;
if (iCellSizeX > 0 && iCellSizeY > 0) {
IPnt pntCellSize = new ESRI.ArcGIS.DataSourcesRaster.DblPntClass();
pntCellSize.SetCoords(iCellSizeX, iCellSizeY);
pRasterStorageDef.CellSize = pntCellSize;
}
return pRasterStorageDef;
}