ArcGIS Engine加载工作空间里面的要素和栅格数据

 /// <summary>
    /// 加载工作空间里面的要素和栅格数据
    /// </summary>
    /// <param name="pWorkspace"></param>
    private void AddAllDataset(IWorkspace pWorkspace, IMap pMap)
    {
        IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);
        pEnumDataset.Reset();
        //将Enum数据集中的数据一个个读到DataSet中
        IDataset pDataset = pEnumDataset.Next();
        //判断数据集是否有数据
        while (pDataset != null)
        {
            if (pDataset is IFeatureDataset)  //要素数据集
            {
                IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pWorkspace;
                IFeatureDataset pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);
                IEnumDataset pEnumDataset1 = pFeatureDataset.Subsets;
                pEnumDataset1.Reset();
                IGroupLayer pGroupLayer = new GroupLayerClass();
                pGroupLayer.Name = pFeatureDataset.Name;
                IDataset pDataset1 = pEnumDataset1.Next();
                while (pDataset1 != null)
                {
                    if (pDataset1 is IFeatureClass)  //要素类
                    {
                        IFeatureLayer pFeatureLayer = new FeatureLayerClass();
                        pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset1.Name);
                        if (pFeatureLayer.FeatureClass != null)
                        {
                            pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
                            pGroupLayer.Add(pFeatureLayer);
                            pMap.AddLayer(pFeatureLayer);
                        }
                    }
                    pDataset1 = pEnumDataset1.Next();
                }
            }
            else if (pDataset is IFeatureClass) //要素类
            {
                IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pWorkspace;
                IFeatureLayer pFeatureLayer = new FeatureLayerClass();
                pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset.Name);

                pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
                pMap.AddLayer(pFeatureLayer);
            }
            else if (pDataset is IRasterDataset) //栅格数据集
            {
                IRasterWorkspaceEx pRasterWorkspace = (IRasterWorkspaceEx)pWorkspace;
                IRasterDataset pRasterDataset = pRasterWorkspace.OpenRasterDataset(pDataset.Name);
                //影像金字塔判断与创建
                IRasterPyramid3 pRasPyrmid;
                pRasPyrmid = pRasterDataset as IRasterPyramid3;
                if (pRasPyrmid != null)
                {
                    if (!(pRasPyrmid.Present))
                    {
                        pRasPyrmid.Create(); //创建金字塔
                    }
                }
                IRasterLayer pRasterLayer = new RasterLayerClass();
                pRasterLayer.CreateFromDataset(pRasterDataset);
                ILayer pLayer = pRasterLayer as ILayer;
                pMap.AddLayer(pLayer);
            }
            pDataset = pEnumDataset.Next();
        }



    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值