• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

gisoracle

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

获得一个mxd中NetworkDataSet

获得一个mxd中NetworkDataSet

// 获得一个mxd中NetworkDataSet
        private static INetworkDataset GetNetworkDataSet(string mxdFileName)
        {
            //Open the mxd file and get the network dataset
            IMapDocument pMapDocument = new MapDocumentClass();
            pMapDocument.Open(mxdFileName, "");
            INetworkDataset networkDataset = null;

            //iterate all the maps
            for (int cMap = 0; cMap < pMapDocument.MapCount; cMap++)
            {
                for (int cLayer = 0; cLayer < pMapDocument.get_Map(cMap).LayerCount; cLayer++)
                {
                    ILayer pLayer = pMapDocument.get_Map(cMap).get_Layer(cLayer);
                    //NA Layer
                    if (pLayer is INALayer)
                    {
                        INALayer pNALayer = pLayer as INALayer;
                        networkDataset = pNALayer.Context.NetworkDataset;
                        break;
                    }
                    //Composite Layer
                    if (pLayer is IGroupLayer)
                    {
                        ICompositeLayer pCompositeLayer = pLayer as ICompositeLayer;
                        for (int cContainLayer = 0; cContainLayer < pCompositeLayer.Count; cContainLayer++)
                        {
                            if (pCompositeLayer.get_Layer(cContainLayer) is INALayer)
                            {
                                INALayer pNALayer = pCompositeLayer.get_Layer(cContainLayer) as INALayer;
                                networkDataset = pNALayer.Context.NetworkDataset;
                                break;
                            }
                        }
                    }
                }
            }

            //Close the MXD Document
            pMapDocument.Close();
            ////judge get the net work data set or not
            if (networkDataset == null)
            {
                Exception ex = new Exception();
                ex.Data.Add(0, "无法打开网络数据集!");
                throw ex;
            }
            return networkDataset;
        }
       

posted on 2009-12-25 09:42  gisai  阅读(324)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3