Esempio n. 1
0
        //加载参与分析的点要素
        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();
        }
Esempio n. 3
0
        /// <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();
        }
Esempio n. 5
0
        //装载网络分析元素的位置
        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();
		}
Esempio n. 7
0
        //װ���������Ԫ�ص�λ��
        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);
        }