IPropertySet pProp = new PropertySetClass();
pProp.SetProperty("SERVER", "zhangye");//设置数据库服务器名
pProp.SetProperty("INSTANCE", "port:5151");//设置SDE的端口,这是安装时指定的,默认为“port:5151"
pProp.SetProperty("DATABASE", "orcl");//设置数据库的名字,只有SQL Server Informix 数据库才需要设置
pProp.SetProperty("USER", "sde"); //SDE的用户名
pProp.SetProperty("PASSWORD", "sde");//密码
pProp.SetProperty("VERSION", "SDE.DEFAULT");
IWorkspaceFactory2 Fact = new SdeWorkspaceFactoryClass();
//打开SDE工作空间,并转化为地物工作空间
IWorkspace ws = Fact.Open(pProp,0);
if (ws == null)
{
MessageBox.Show("sde连接不成功");
this.Close();
}
else
{
IWorkspaceName pWorkname = new ESRI.ArcGIS.Geodatabase.WorkspaceNameClass();
pWorkname.ConnectionProperties = pProp;
//pWorkname.WorkspaceFactoryProgID = "esriDataSourcesGDB.SdeWorkspaceFactory.1";
IRasterSdeConnection pSdeCon = new RasterSdeLoaderClass();
//pSdeCon.SdeWorkspaceName = pWorkname;
pSdeCon.ServerName = "192.168.9.177";
pSdeCon.Instance = "port:5151";
pSdeCon.UserName = "sde";
pSdeCon.Password = "sde";
pSdeCon.Database = "orcl";
pSdeCon.SdeRasterName = "S20080622130000";
pSdeCon.InputRasterName = @"d:/test/20080622130000.img";
IRasterSdeStorage pSDEStorage = (IRasterSdeStorage)pSdeCon;
IWorkspaceFactory pWKSF = new RasterWorkspaceFactoryClass();
IWorkspace pWorkspace = pWKSF.OpenFromFile(@"d:/test", 0);
IRasterWorkspace pRasterWS = (IRasterWorkspace)pWorkspace;
IGeoDataset pGeoDs = (IGeoDataset)pRasterWS.OpenRasterDataset("20080622130000.img");
// Set spatialreference
pSDEStorage.SpatialReference = pGeoDs.SpatialReference;
// Set compression
pSDEStorage.CompressionType = esriRasterSdeCompressionTypeEnum.esriRasterSdeCompressionTypeUncompressed;
//Set tilesize
pSDEStorage.TileHeight = 128;
pSDEStorage.TileWidth = 128;
// Pyramids option
pSDEStorage.PyramidOption = esriRasterSdePyramidOptEnum.esriRasterSdePyramidBuildWithFirstLevel;
pSDEStorage.PyramidResampleType = rstResamplingTypes.RSP_BilinearInterpolation;
//pSDEStorage.CompressionType = esriRasterSdeCompressionTypeJPEG2000;
// Start loading
IRasterSdeServerOperation pSDEOp = (IRasterSdeServerOperation)pSdeCon;
pSDEOp.Create();
pSDEOp.Update();
pSDEOp.ComputeStatistics();
//释放内存
pSdeCon = null;
pSDEStorage = null;
pSDEOp = null;
pWKSF = null;
pRasterWS = null;
pGeoDs = null;
}