ArcEngine新建几何网络_GeometricNetwork
来源:互联网 发布:引用,指针和数组的区别 编辑:程序博客网 时间:2024/05/22 13:04
前几天需要写两个方法,一个是需要构建网络数据集NetowrkDataset
,一个是需要构建几何网络GeometricNetwork
;
代码在AE的帮助文档中都是有的;如果你找不到的话直接百度也是有的,不过建议有些基础的还是直接看文档比较好~如果不知道在哪,直接百度**
How to create geometric networks within a geodatabase**
ArcGIS Engine 10.1 EN
Win7 64位
VS2010
本文说说在写的过程中遇到的问题;首先这篇主要是介绍几何网络的构建,后面将会讲到网络数据集;
**下面的代码方法是直接从文档中拷贝过来我修改的,修改依据是在ArcCatalog中
在Dataset中右键新建几何网络的默认设置流程,所以下面的有些代码我会进行删改;**
我会在代码中直接加注释进行解释,重点内容还会在末尾解释!~
public void CreateGeometricNetwork(IWorkspace workspace, IFeatureDatasetName featureDatasetName)//这里的参数不要告诉我你不会写代码得到~ { // Create a network loader.//创建一个网络加载器 INetworkLoader2 networkLoader2 = new NetworkLoaderClass(); // Set the network name.//给加载器命名--此名称一定不能为中文! networkLoader2.NetworkName = "Water_Net"; // Set the network type.//类型,效用网络就是几何网络 networkLoader2.NetworkType = esriNetworkType.esriNTUtilityNetwork; // Set the containing feature dataset.//设置关联的数据集IName networkLoader2.FeatureDatasetName = (IDatasetName)featureDatasetName; //添加featureclass到网络中,这里的featureclassname一定不能是中文!!! // Add the two classes to the network. if (networkLoader2.CanUseFeatureClass("featureclassname") == esriNetworkLoaderFeatureClassCheck.esriNLFCCValid) { networkLoader2.AddFeatureClass("featureclassname", esriFeatureType.esriFTComplexEdge, null, false); } //由于只有一个线图层,所以这个示例代码中的线图层就不用判断了 //if (networkLoader2.CanUseFeatureClass("Tanks") == esriNetworkLoaderFeatureClassCheck.esriNLFCCValid) //{ //networkLoader2.AddFeatureClass("Tanks",esriFeatureType.esriFTSimpleJunction, null, false); //} // Set the enabled field for the distribmains class.//这个可以直接注释掉,也可以根据线图层做修改,这里直接注释 //INetworkLoaderProps networkLoaderProps = (INetworkLoaderProps)networkLoader2; //String defaultEnabledFieldName = networkLoaderProps.DefaultEnabledField; //esriNetworkLoaderFieldCheck enabledFieldCheck = // networkLoader2.CheckEnabledDisabledField("Tanks", defaultEnabledFieldName); //switch (enabledFieldCheck) //{ // case esriNetworkLoaderFieldCheck.esriNLFCValid: // case esriNetworkLoaderFieldCheck.esriNLFCNotFound: // networkLoader2.PutEnabledDisabledFieldName("Tanks", // defaultEnabledFieldName); // break; // default: // Console.WriteLine( // "The field {0} could not be used as an enabled/disabled field.", // defaultEnabledFieldName); // break; //} //networkLoader2.PreserveEnabledValues = true; //这个是设置源和汇的,主要针对点图层,这里不需要就注释掉 // Set the ancillary role field for the tanks class. //String defaultAncillaryRoleFieldName = // networkLoaderProps.DefaultAncillaryRoleField; //esriNetworkLoaderFieldCheck ancillaryRoleFieldCheck = // networkLoader2.CheckAncillaryRoleField("Tanks", // defaultAncillaryRoleFieldName); //switch (ancillaryRoleFieldCheck) //{ // case esriNetworkLoaderFieldCheck.esriNLFCValid: // case esriNetworkLoaderFieldCheck.esriNLFCNotFound: // networkLoader2.PutAncillaryRole("Tanks", // esriNetworkClassAncillaryRole.esriNCARSourceSink, // defaultAncillaryRoleFieldName); // break; // default: // Console.WriteLine( // "The field {0} could not be used as an ancillary role field.", // defaultAncillaryRoleFieldName); // break; //} //这里针对的是GDB,不是SDE,所以也注释掉 // If the geodatabase is an SDE GDB, set the configuration keyword. //if (workspace.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace) //{ // networkLoader2.ConfigurationKeyword = "Network_Defaults"; //} //这里我们不设置Snap // Set the snap tolerance for the network. //networkLoader2.SnapTolerance = networkLoader2.MinSnapTolerance; ((INetworkLoader3)networkLoader2).UseXYsForSnapping = false; //不设置权重 //// Add a weight with a double type to the network. //networkLoader2.AddWeight("MainWeight", esriWeightType.esriWTDouble, 0); //// For weights of type esriWTBitGate, the BitGateSize parameter should be set: //networkLoader2.AddWeight("WTBitGateEx", esriWeightType.esriWTBitGate, 5); //// Associate the MainWeight weight with the DIAMETER field of Distribmains. //networkLoader2.AddWeightAssociation("MainWeight", "Distribmains", "DIAMETER"); //构建几何网络 // Load the network. networkLoader2.LoadNetwork(); //不管ErrorTable // Get the name of the network's error table. //String errorTableName = networkLoader2.ErrorTableName; //// Display the number of invalid features in the Distribmains class. //int numInvalidFeatures = networkLoader2.get_NumInvalidFeatures("Distribmains") // ; //Console.WriteLine("Distribmains contains {0} invalid features.", // numInvalidFeatures); //// Display the number of invalid features in the network. //int totalNumInvalidFeatures = networkLoader2.TotalNumInvalidFeatures; //Console.WriteLine("The network contains {0} invalid features.", // totalNumInvalidFeatures); }
上面的代码除了//networkLoader2.PreserveEnabledValues = true;
其他我是根据全部默认设置进行修改的,大家有其他需求可以自己修改;
尤其需要大家注意的是两个地方,一个是NetworkName
这个属性,就是网络数据集的名称一定不能为中文;另一个就是我们需要创建网络数据集的featureclass的名称;二者如果有一个存在中文,那么在最后构建几何网络的时候都会出现各种乱七八糟的异常;包括The Table was not found
、此版本的地理数据库不支持表格附件。
等,异常信息主要是看你的ArcGIS是中文还是英文了~!
0 0
- ArcEngine新建几何网络_GeometricNetwork
- ArcEngine新建网络数据集_NetworkDataset
- arcengine中的几何镜像
- ArcEngine 几何数据检查与修复
- arcengine编辑功能,新建要素报异常
- ArcEngine 几何对象录入两种方法说明
- ArcEngine -- 快速显示网络流向标识
- 几何网络的基本概念
- 建立几何网络
- 几何网络追踪分析
- 几何网络1
- 几何网络2
- 几何网络3
- 几何网络4
- 几何网络5
- ArcGIS 创建几何网络
- C#+AE 创建几何网络
- ArcGIS构建几何网络步骤
- hdoj5879Cure
- Android RecyclerView 使用完全解析 体验艺术般的控件
- React Native 学习中踩过的那些坑
- 推荐一个学习tomcat web app 的搭建过程的blog
- HDU5878 Cure 2016 ACM/ICPC Asia Regional Qingdao Online
- ArcEngine新建几何网络_GeometricNetwork
- 十大经典算法总结(JavaScript描述)
- 第3周项目4-顺序表应用(2)将所在奇数移到所有偶数的前面.
- hdu5883【欧拉通路】
- HDU 5883 The Best Path 2016青岛网赛
- Android开发之RecyclerView的使用全解
- [kuangbin带你飞]专题一 简单搜索 E POJ1426
- Picasso遇到的问题
- 002 打印沙漏