ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

创建几何网络(Geometric Network)

2019-06-28 11:26:08  阅读:266  来源: 互联网

标签:Set esriNetworkLoaderFieldCheck fcnames item 几何 var Geometric networkLoader2 Net


 1 
 2         /// <summary>
 3         /// 创建几何网络
 4         /// </summary>
 5         /// <param name="junctions"></param>
 6         /// <param name="simpleEdges"></param>
 7         /// <param name="complexEdges"></param>
 8         /// <param name="featureDatasetName"></param>
 9         /// <param name="networkname"></param>
10         public static void CreateGeometricNetwork(List<string> junctions, List<string> simpleEdges, List<string> complexEdges, IFeatureDatasetName featureDatasetName, string networkname) {
11             // Create a network loader.
12             INetworkLoader2 networkLoader2 = new NetworkLoaderClass();
13             // Set the network name.
14             networkLoader2.NetworkName = networkname;
15             // Set the network type.
16             networkLoader2.NetworkType = esriNetworkType.esriNTUtilityNetwork;
17             // Set the containing feature dataset.
18             networkLoader2.FeatureDatasetName = (IDatasetName)featureDatasetName;
19 
20             // Add classes to the network.
21             foreach (var item in junctions) {
22                 if (networkLoader2.CanUseFeatureClass(item) ==
23                     esriNetworkLoaderFeatureClassCheck.esriNLFCCValid) {
24                     networkLoader2.AddFeatureClass(item,
25                         esriFeatureType.esriFTSimpleJunction, null, false);
26                 }
27             }
28             // 添加简单边
29             foreach (var item in simpleEdges) {
30                 if (networkLoader2.CanUseFeatureClass(item) ==
31                     esriNetworkLoaderFeatureClassCheck.esriNLFCCValid) {
32                     networkLoader2.AddFeatureClass(item,
33                         esriFeatureType.esriFTSimpleEdge, null, false);
34                 }
35             }
36             // 添加复杂边
37             foreach (var item in complexEdges) {
38                 if (networkLoader2.CanUseFeatureClass(item) ==
39                     esriNetworkLoaderFeatureClassCheck.esriNLFCCValid) {
40                     networkLoader2.AddFeatureClass(item,
41                         esriFeatureType.esriFTComplexEdge, null, false);
42                 }
43             }
44 
45             // Set the enabled field for the distribmains class.
46             List<string> fcnames = new List<string>(junctions);
47             fcnames.AddRange(simpleEdges);
48             fcnames.AddRange(complexEdges);
49 
50             INetworkLoaderProps networkLoaderProps = (INetworkLoaderProps)networkLoader2;
51             String defaultEnabledFieldName = networkLoaderProps.DefaultEnabledField;
52             esriNetworkLoaderFieldCheck enabledFieldCheck = esriNetworkLoaderFieldCheck.esriNLFCUnknownError;
53             foreach (var item in fcnames) {
54                 enabledFieldCheck = networkLoader2.CheckEnabledDisabledField(item, defaultEnabledFieldName);
55                 switch (enabledFieldCheck) {
56                     case esriNetworkLoaderFieldCheck.esriNLFCValid:
57                     case esriNetworkLoaderFieldCheck.esriNLFCNotFound:
58                         networkLoader2.PutEnabledDisabledFieldName(item,
59                             defaultEnabledFieldName);
60                         break;
61                 }
62             }
63             networkLoader2.PreserveEnabledValues = true;
64 
65             // Set the ancillary role field for the tanks class.
66             //String defaultAncillaryRoleFieldName = networkLoaderProps.DefaultAncillaryRoleField;
67             //esriNetworkLoaderFieldCheck ancillaryRoleFieldCheck = esriNetworkLoaderFieldCheck.esriNLFCUnknownError;
68             //foreach (var item in fcnames) {
69             //    networkLoader2.CheckAncillaryRoleField(item, defaultAncillaryRoleFieldName);
70             //    switch (ancillaryRoleFieldCheck) {
71             //        case esriNetworkLoaderFieldCheck.esriNLFCValid:
72             //        case esriNetworkLoaderFieldCheck.esriNLFCNotFound:
73             //            networkLoader2.PutAncillaryRole(item,
74             //                esriNetworkClassAncillaryRole.esriNCARSourceSink,
75             //                defaultAncillaryRoleFieldName);
76             //            break;
77             //    }
78             //}
79 
80             // If the geodatabase is an SDE GDB, set the configuration keyword.
81             if (SdeWorkspace.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace) {
82                 networkLoader2.ConfigurationKeyword = "Network_Defaults";
83             }
84             // Set the snap tolerance for the network.
85             networkLoader2.SnapTolerance = networkLoader2.MinSnapTolerance;
86 
87             //// Add a weight with a double type to the network.
88             //networkLoader2.AddWeight("MainWeight", esriWeightType.esriWTDouble, 0);
89             //// For weights of type esriWTBitGate, the BitGateSize parameter should be set:
90             //networkLoader2.AddWeight("WTBitGateEx", esriWeightType.esriWTBitGate, 5);
91             //// Associate the MainWeight weight with the DIAMETER field of Distribmains.
92             //networkLoader2.AddWeightAssociation("MainWeight", "Distribmains", "DIAMETER");
93 
94             // Load the network.
95             networkLoader2.LoadNetwork();
96         }

 

转载于:https://www.cnblogs.com/xgyb12458/archive/2010/06/02/1749985.html

标签:Set,esriNetworkLoaderFieldCheck,fcnames,item,几何,var,Geometric,networkLoader2,Net
来源: https://blog.csdn.net/weixin_33709590/article/details/93979222

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有