AE+C#批量修改MXD中图层数据源

AE+C#批量修改MXD中图层数据源

 

在实际的工作中经常遇到MXD找不到数据源或者没有需要批量转换数据源,本文样例代码为AE+C#如何批量修改MXD的数据源。

 

代码如下

                stringpath = @"D:\temp";

                stringsdeName = @"localhost.sde";

                stringsdePath = path + "\\" + sdeName;

                if(File.Exists(sdePath))

                {

                    File.Delete(sdePath);

                }

                IWorkspaceFactorypWorkspaceFactory = new SdeWorkspaceFactoryClass();

                IWorkspaceNamepWorkspaceName = pWorkspaceFactory.Create(path, sdeName, ConnectSDE(true), 0);

 

                ILayerpLayer = null;

                IFeatureLayerpFeatureLayer = null;

                IDataLayer2pDataLayer = null;

                IDatasetNamepDatasetName = null;

 

                for(int i = 0; i < mapCtrl.LayerCount; i++)

                {

                    //获取图层

                    pLayer = null;

                    pLayer =mapCtrl.get_Layer(i);

                    pFeatureLayer = (IFeatureLayer)pLayer;

                    stringlayername = pLayer.Name;

                    if(pLayer is IDataLayer)

                    {

                        pDataLayer = (IDataLayer2)pFeatureLayer;

                        pDatasetName = (IDatasetName)pDataLayer.DataSourceName;

                        try

                        {

                            if (pFeatureLayer.FeatureClass != null)

                            {

                                if (!(pFeatureLayer isIDimensionLayer))

                                {

                                   pDataLayer.Disconnect();

                                }

                            }

                           pDatasetName.WorkspaceName = pWorkspaceName;

 

                           pDataLayer.Connect((IName)pDatasetName);

                        }

                        catch (Exception ex)

                        {

                            string msg = ex.Message;

                        }

                    }

                }

                mapCtrl.Refresh();

  

主要用的接口是IDataLayer2。其中对于IDimensionLayer类型的数据,pDataLayer.Disconnect();

没有实现,这里已经进行了屏蔽。


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值