//加载参与分析的点要素 public static void LoadNANetworkLocations(string strNAClassName, IFeatureClass inputFC, INAContext m_NAContext, double snapTolerance) { //ITable b1 = inputFC as ITable;//将传入的要素类转化为一个Table对象,这个要素类如站点类、障碍点类等。 //int i1 = b1.RowCount(null);//获取行数 INAClass naClass; INamedSet classes; classes = m_NAContext.NAClasses; //上下文对象的有关网络分析类的对象集合NamedSet属性 naClass = classes.get_ItemByName(strNAClassName) as INAClass; //通过传入的名称参数,往classes中获取对应的NAClass naClass.DeleteAllRows(); //删除naClass中的所有要素 INAClassLoader classLoader = new NAClassLoader(); //新建一个NAClassLoader对象 classLoader.Locator = m_NAContext.Locator; //将上下文对象的locator属性赋给classLoader,locator用于确定网络上要加载的要素的位置。 if (snapTolerance > 0) { classLoader.Locator.SnapTolerance = snapTolerance; //设置容差 } classLoader.NAClass = naClass; //给classLoader对象的NAClass属性赋值 //设置字段映射 INAClassFieldMap fieldMap = null; fieldMap = new NAClassFieldMap(); fieldMap.set_MappedField("FID", "FID"); //set_MappedField方法用于建立源数据到NAClass类的映射 classLoader.FieldMap = fieldMap; //给classLoader对象的FieldMap属性赋值 int rowsIn = 0; int rowLocated = 0; IFeatureCursor featureCursor = inputFC.Search(null, true); classLoader.Load((ICursor)featureCursor, null, ref rowsIn, ref rowLocated);//ref类型关键字表示对于该参数,在函数过程中可以读也可以写,相当于引用传递。引用传递参数允许函数成员更改参数的值,并保持该更改。 ((INAContextEdit)m_NAContext).ContextChanged(); }
/// <summary> /// 加载停靠点 /// </summary> public void loadNANetworkLocations(string strNAClassName, IFeatureClass inputFC, double snapTolerance) { INAClass naClass; INamedSet classes; classes = m_NAContext.NAClasses; naClass = classes.get_ItemByName(strNAClassName) as INAClass; //删除naClasses中添加的项 naClass.DeleteAllRows(); //加载网络分析对象,设置容差值 INAClassLoader classLoader = new NAClassLoader(); classLoader.Locator = m_NAContext.Locator; if (snapTolerance > 0) { classLoader.Locator.SnapTolerance = snapTolerance; } classLoader.NAClass = naClass; //字段匹配 INAClassFieldMap pNAClassFieldMap = new NAClassFieldMap(); pNAClassFieldMap.CreateMapping(naClass.ClassDefinition, inputFC.Fields); classLoader.FieldMap = pNAClassFieldMap; //加载网络分析类 int rowsln = 0; int rowsLocated = 0; IFeatureCursor featureCursor = inputFC.Search(null, true); classLoader.Load((ICursor)featureCursor, null, ref rowsln, ref rowsLocated); ((INAContextEdit)m_NAContext).ContextChanged(); }
/// <summary> /// 加载参与分析的点要素 /// 按住Ctrl点击下行链接[Onclick]查看使用 /// <see cref="WhuGIS.ArcEngineTool.NetworkAnalysis.GetPathSolve.ShortPathSolveCommand.OnClick"/> /// </summary> /// <param name="strNAClassName"></param> /// <param name="inputFC"></param> /// <param name="m_NAContext"></param> /// <param name="snapTolerance"></param> public static void LoadNANetworkLocations(string strNAClassName, IFeatureClass inputFC, INAContext m_NAContext, double snapTolerance) { ITable b1 = inputFC as ITable; int i1 = b1.RowCount(null); INAClass naClass; INamedSet classes; classes = m_NAContext.NAClasses; naClass = classes.get_ItemByName(strNAClassName) as INAClass; ITable b2 = naClass as ITable; int i2 = b2.RowCount(null); naClass.DeleteAllRows(); ITable b3 = naClass as ITable; int i3 = b2.RowCount(null); INAClassLoader classLoader = new NAClassLoader(); classLoader.Locator = m_NAContext.Locator; if (snapTolerance > 0) { classLoader.Locator.SnapTolerance = snapTolerance; //设置容差 } classLoader.NAClass = naClass; //设置字段映射 INAClassFieldMap fieldMap = null; fieldMap = new NAClassFieldMap(); fieldMap.set_MappedField("FID", "FID"); classLoader.FieldMap = fieldMap; int rowsIn = 0; int rowLocated = 0; IFeatureCursor featureCursor = inputFC.Search(null, true); classLoader.Load((ICursor)featureCursor, null, ref rowsIn, ref rowLocated); INAClass na = classLoader.NAClass; ITable b5 = na as ITable; int i5 = b2.RowCount(null); ITable b4 = inputFC as ITable; int i4 = b1.RowCount(null); ((INAContextEdit)m_NAContext).ContextChanged(); }
//********************************************************************************* // Load Network Locations //********************************************************************************* public void LoadNANetworkLocations(string strNAClassName, IFeatureClass inputFC, double maxSnapTolerance) { INamedSet classes = m_NAContext.NAClasses; INAClass naClass = classes.get_ItemByName(strNAClassName) as INAClass; // Delete existing Locations before loading new ones naClass.DeleteAllRows(); // Create a NAClassLoader and set the snap tolerance (meters unit) INAClassLoader classLoader = new NAClassLoader(); classLoader.Locator = m_NAContext.Locator; if (maxSnapTolerance > 0) { ((INALocator3)classLoader.Locator).MaxSnapTolerance = maxSnapTolerance; } classLoader.NAClass = naClass; //Create field map to automatically map fields from input class to NAClass INAClassFieldMap fieldMap = new NAClassFieldMap(); fieldMap.CreateMapping(naClass.ClassDefinition, inputFC.Fields); classLoader.FieldMap = fieldMap; // Avoid loading network locations onto non-traversable portions of elements INALocator3 locator = m_NAContext.Locator as INALocator3; locator.ExcludeRestrictedElements = true; locator.CacheRestrictedElements(m_NAContext); //Load Network Locations int rowsIn = 0; int rowsLocated = 0; IFeatureCursor featureCursor = inputFC.Search(null, true); classLoader.Load((ICursor)featureCursor, null, ref rowsIn, ref rowsLocated); //Message all of the network analysis agents that the analysis context has changed ((INAContextEdit)m_NAContext).ContextChanged(); }
//装载网络分析元素的位置 private void LoadNANetworkLocations(string strNAClassName, IFeatureClass inputFC, double snapTolerance) { try { INAClass naClass; INamedSet classes; classes = pMainFrm.m_NAContext.NAClasses; naClass = classes.get_ItemByName(strNAClassName) as INAClass; // delete existing Locations except if that a barriers naClass.DeleteAllRows(); // Create a NAClassLoader and set the snap tolerance (meters unit) INAClassLoader classLoader = new NAClassLoader(); classLoader.Locator = pMainFrm.m_NAContext.Locator; if (snapTolerance > 0) { classLoader.Locator.SnapTolerance = snapTolerance; } classLoader.NAClass = naClass; //Create field map to automatically map fields from input class to naclass INAClassFieldMap fieldMap; fieldMap = new NAClassFieldMap(); fieldMap.CreateMapping(naClass.ClassDefinition, inputFC.Fields); classLoader.FieldMap = fieldMap; //Load Network Locations int rowsIn = 0; int rowsLocated = 0; IFeatureCursor featureCursor = inputFC.Search(null, true); classLoader.Load((ICursor)featureCursor, null, ref rowsIn, ref rowsLocated); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
//********************************************************************************* // Load Network Locations //********************************************************************************* public void LoadNANetworkLocations(string strNAClassName, IFeatureClass inputFC, double maxSnapTolerance) { INamedSet classes = m_NAContext.NAClasses; INAClass naClass = classes.get_ItemByName(strNAClassName) as INAClass; // Delete existing Locations before loading new ones naClass.DeleteAllRows(); // Create a NAClassLoader and set the snap tolerance (meters unit) INAClassLoader classLoader = new NAClassLoader(); classLoader.Locator = m_NAContext.Locator; if (maxSnapTolerance > 0) ((INALocator3)classLoader.Locator).MaxSnapTolerance = maxSnapTolerance; classLoader.NAClass = naClass; //Create field map to automatically map fields from input class to NAClass INAClassFieldMap fieldMap = new NAClassFieldMap(); fieldMap.CreateMapping(naClass.ClassDefinition, inputFC.Fields); classLoader.FieldMap = fieldMap; // Avoid loading network locations onto non-traversable portions of elements INALocator3 locator = m_NAContext.Locator as INALocator3; locator.ExcludeRestrictedElements = true; locator.CacheRestrictedElements(m_NAContext); //Load Network Locations int rowsIn = 0; int rowsLocated = 0; IFeatureCursor featureCursor = inputFC.Search(null, true); classLoader.Load((ICursor)featureCursor, null, ref rowsIn, ref rowsLocated); //Message all of the network analysis agents that the analysis context has changed ((INAContextEdit)m_NAContext).ContextChanged(); }
//װ���������Ԫ�ص�λ�� private void LoadNANetworkLocations(string strNAClassName, IFeatureClass inputFC, double snapTolerance) { INAClass naClass; INamedSet classes; classes = m_NAContext.NAClasses; naClass = classes.get_ItemByName(strNAClassName) as INAClass; // delete existing Locations except if that a barriers naClass.DeleteAllRows(); // Create a NAClassLoader and set the snap tolerance (meters unit) INAClassLoader classLoader = new NAClassLoader(); classLoader.Locator = m_NAContext.Locator; if (snapTolerance > 0) classLoader.Locator.SnapTolerance = snapTolerance; classLoader.NAClass = naClass; //Create field map to automatically map fields from input class to naclass INAClassFieldMap fieldMap; fieldMap = new NAClassFieldMap(); fieldMap.CreateMapping(naClass.ClassDefinition, inputFC.Fields); classLoader.FieldMap = fieldMap; //Load Network Locations int rowsIn = 0; int rowsLocated = 0; IFeatureCursor featureCursor = inputFC.Search(null, true); classLoader.Load((ICursor)featureCursor, null, ref rowsIn, ref rowsLocated); }