将栅格数据(IRasterDataset)直接保存到数据库中很常见,但是保存到栅格目录下就比较少见,好不容易才找到,在这里记录一下。
public void saveRasterDs2Catalog(IRasterDataset rasterDs, IRasterCatalog rasterCatalog)
{
//保存前先设置rasterCatalog的坐标系,不然保存的栅格数据坐标系为空
IRasterProps rProps = rasterDs.CreateDefaultRaster() as IRasterProps;
rasterCatalog.AlterRasterSpatialReference(rProps.SpatialReference); IFeatureClass featureclass = rasterCatalog as IFeatureClass;
IFeature feature = featureclass.CreateFeature(); IRasterValue rValue = new RasterValueClass();
rValue.RasterDataset = rasterDs;
feature.set_Value(rasterCatalog.RasterFieldIndex, rValue);
//如果栅格目录里还有其他属性,也可以在这里设置
feature.Store();
} /// <summary>
/// 把一个文件夹里的栅格数据都保存到rastercatalog中
/// </summary>
/// <param name="propertySet">数据库的连接属性</param>
/// <param name="catalogName">rastercatalog的名称</param>
/// <param name="rasterFolder">包含有栅格数据的文件夹</param>
public void loadDir2Catalog(IPropertySet propertySet,String catalogName,String rasterFolder)
{
//IWorkspaceFactory wkspFactory = new SdeWorkspaceFactoryClass();
//IWorkspace wksp = wkspFactory.Open(propertySet, 0);
//IRasterWorkspaceEx rasterWkspEx = wksp as IRasterWorkspaceEx;
//IRasterCatalog rasterCatalog = rasterWkspEx.OpenRasterCatalog(catalogName); ITrackCancel pTrackCancel = new TrackCancel();
IRasterCatalogLoader rCatalogLoader = new RasterCatalogLoaderClass();
rCatalogLoader.ConnectionProperties = propertySet;
rCatalogLoader.Load(catalogName, rasterFolder, pTrackCancel);
}