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

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;
                }

转载自:https://blog.csdn.net/lysc_forever/article/details/8984213

You may also like...