SDE open rastercatalog,遍历rasterCatalog下的所有RasterDataset

来源:互联网 发布:直播源码 编辑:程序博客网 时间:2024/06/07 14:47
IRasterWorkspaceEx pRasterWex=Utilities.OpenSDERasterWSEx();//访问SDE 中的 RasterCatalog
//连接SDE 中的RasterCatalog
 
public static IRasterWorkspaceEx OpenSDERasterWSEx()        {            ESRILicense();//LicenseProduce.Engine 此方法通过.                          //LicenseProduct.EngienGeoDB 此方法异常            IPropertySet propertySet = new ESRI.ArcGIS.esriSystem.PropertySetClass();            propertySet.SetProperty("SERVER", Configuration.SdeServer);            propertySet.SetProperty("INSTANCE", Configuration.SdeInstance);            propertySet.SetProperty("DATABASE", Configuration.SdeDataBase);            propertySet.SetProperty("USER", Configuration.SdeUser);            propertySet.SetProperty("PASSWORD", Configuration.SdePassword);            propertySet.SetProperty("VERSION", Configuration.SdeVersion);            IWorkspaceFactory pWsFact = new SdeWorkspaceFactory();            IRasterWorkspaceEx pWs = pWsFact.Open(propertySet, 0) as IRasterWorkspaceEx;            return pWs;        }
//遍历RasterCatalog中的所有rasterDataset
IRasterCatalog rasterCatalog= pRasterWex.OpenRasterCatalog(Configuration.SdeRasterCatalog);//遍历RasterCatalog下的所有rasterDataset            ITable table = rasterCatalog as ITable;            ICursor cursor = table.Search(null,false);            IRow row = cursor.NextRow();            List<IRasterDataset> li_Rasters = new List<IRasterDataset>();//遍历RasterCatalog将所有rasterds添加进去            while(row != null)            {                  IRasterCatalogItem rasterCatalogItem = row as IRasterCatalogItem;                  IRasterDataset rasterDataset = rasterCatalogItem.RasterDataset;                                   li_Rasters.Add(rasterDataset);                  row = cursor.NextRow();            }

//RasterCatalog:

        存储一组空间参考相同的RasterDataset.   RasterCatalog相当于featureclass+raster字段和shape字段,RasterCatalog下的每个RasterDataset相当于一个feature

参考:RasterCatalog ...搜索中的  

 

//以FeatureClass来处理RasterCatalog

IRasterWorkspaceEx pRasterWex=Utilities.OpenSDERasterWSEx();//访问SDE 中的 RasterCatalog            IRasterCatalog rasterCatalog= pRasterWex.OpenRasterCatalog(Configuration.SdeRasterCatalog);//遍历RasterCatalog下的所有rasterDataset              IPolyline pPart = new PolylineClass();//相交部分的线            IFeatureClass pfc = rasterCatalog as IFeatureClass;            IFeatureCursor pfcc = pfc.Search(null, false);            IFeature pf = pfcc.NextFeature();                      while(pf!=null)            {                bool partialintersect = false;                IRasterCatalogItem rasterCatalogItem = pf as IRasterCatalogItem;                IRaster pRaster = rasterCatalogItem.RasterDataset.CreateDefaultRaster();//                string rastername = pf.get_Value(pf.Fields.FindField("Name")).ToString();//RasterDataset的名称                if (rastername == Configuration.BottomRaster) //如果是最底图层                {                    pf = pfcc.NextFeature();                    continue;                }