DamoN达梦之旅

A little everyday! Concern about GIS、ArcGIS、Open Source GIS...

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
在进行ArcGIS的NetworkAnalyst分析时,每种分析结果的展示都是以INALayer为载体,
NALayerClass实现了ILayer、ICompositeLayer接口,但是它又不同于一般的CompositeLayer,
它的子图层是不能独自删除的。
还有一个特点是,INALayer的子图层的FeatureClass是NetworkAnalyst独有的,它不保存到GDB
中,即它的分析结果是保存在mxd文件中的。如果我们想实现INALayer的图层结构,或者
添加自定义的子图层,则可以用如下方法。

 1      INASolver m_NaSolver = new NAClosestFacilitySolverClass();
 2      //QI from the Network Dataset to the DatasetComponent
 3      IDatasetComponent dsComponent = m_Network.NetworkData as IDatasetComponent;
 4      //Get the Data Element
 5      IDENetworkDataset deNetworkDataset = dsComponent.DataElement as IDENetworkDataset;
 6      //Create NAContext
 7      INAContextEdit naContextEdit = m_NaSolver.CreateContext(deNetworkDataset, m_SolverName) as INAContextEdit;
 8      naContextEdit.Bind(m_Network.NetworkData, new GPMessagesClass());
 9      //get NAContext
10     m_NAContext = naContextEdit as INAContext;
11     //先生成默认的INALayer
12     INALayer nalayer = m_NaSolver.CreateLayer(m_NAContext);
13     //清除所有原有图层
14     nalayer.Clear();
15     //接下来生成自定义的FeatureClass要素类
16     //QI
17     INAContextEdit naContextEdit = m_NAContext as INAContextEdit;
18     //定义分区中心类
19     INAClassDefinition dPartCenterClass = BuildPartitionCenterFields(sRef);//使用INAClassDefinitionEdit生成
20     INAClass naClass = naContextEdit.CreateAnalysisClass(dPartCenterClass);
21     //将生成要素类添加到INALayer中
22     IFeatureLayer layer = new FeatureLayerClass();
23     layer.Name = "自定义图层";
24     layer.FeatureClass = naClass as IFeatureClsss;
25 

 现在将nalayer添加到mapControl控件就可以看到自己添加的子图层了,可以再此基础上进行自己想要的
操作。
posted on 2009-08-31 20:39  Damon S.  阅读(793)  评论(0编辑  收藏  举报