ArcEngine几何网络分析(整理 您所在的位置:网站首页 路径分析arcgis ArcEngine几何网络分析(整理

ArcEngine几何网络分析(整理

2023-08-08 06:52| 来源: 网络整理| 查看: 265

  这是在平时学习的时候,对几何网络分析相关资料的整理,中间有不对的地方,希望各位给予指出,共同学习。

    几何网络分手是网络分析的一种,是用来解决现实世界中的水网、煤气网、电网等设施网络,因此几何网络也称为设施网络。几何网络是有向网络,一网络中的流通资源是无法改变连通性或方向的,只能按照建立几何网络时设立的规则进行。主要可以用来实现:1.寻找连通或不连通的管线。2上/下游追踪。3寻找环路。4寻找通路。5 爆管分析。      

     Geometric NetWork(几何网络)是由edge和junctions两部分组成,并且两部分都是由数据库中的FeatureClass组成。形成网络分析必须是数据库中的数据集,不可以是shapefile文件。另外edge是有两种类型:第一是simple edge,连接两个junctions,每一端各连接一个,第二是complex edge,每个edge可以连接多个junctions,端点可以连接两个或更多个junctions,也可以在中间连接junctions。几何网络分源和汇,源表示从该点流出,汇表示流入改点,在几何网络中只需要设置一个源或汇即可,否在会出现不能确定流向的区域。在创建几何网络时会在edge中创建enabled字段用来表示该edge是否可以流通。还可以创建两种连通规则即edge-junctions和edge-edge。

    下面来看一下几何网络的构建。

首先需要建立一个数据集,在数据集中新建两个要素类分别用来组成(edge和junctions),然后右击数据集点击新建“几何网络”后,如下图:

                                                       

然后点击”下一步“,如图 :

                                                      

     输入几何网络的名称,然后选择是否指定容差内捕捉,因为在进行矢量化时可能会造成线的末端和节点不能完全重合,可能造成不匹配,不匹配则生成的几何网络便会出现问题,设置容差之后表示系统可以在容差范围内的对要素进行移动。然后点击下一步。

                                                   

  选择用来构建几何网络的要素。

                                                      

下一步,如图:

                                                      

设置源和汇以便来设置网络的流向,一般选择是。

                                                      

设置几何网络中的权重,在这里我们以length为权重,点击下一步。

                                                     

新建几何网络数据完成。

     到这里几何网络数据集其实已经建成了,但是还需要设置源汇,点击开始编辑,然后将AncillaryRole中需要设置成源或汇的设置好,然后点击保存,,停止编辑,这样几何网络的数据集的源汇便设计好了,紧接着再点击编辑,然后点击几何网络分析中的设置流向、显示箭头,即可。如下图:

                             

     在创建完成几何网络之后,需要用编程实现相应的功能,在几何网络的分析中我们要经过以下几个步骤:1打开几何网络数据集2.建立边或节点的旗帜(这两中方式在最后的分析结果略有不同,这个对于初学者来说需要注意)3.设置障碍点(在爆管分析中用到)4.设置权重5.分析得到的边或点的EID 6.最后得到相应的要素进行处理显示。

如:最短路径分析(建立节点的旗帜):

     第一步:打开几何网络数据集。

      IWorkspaceFactroy pWF=new FileGDBWorkspaceFactoryClass();

      IWorkspace pW=pWF.OpenFromFile("数据库的存储路径");

      IFeatureDataset pFeaDataset=(pW as IFeatureWorkspace).OpenFeatureDataset("geometics") ;

      INetworkCollection pNetColl=pFeaDataset  as INetworkCollection; //获取数据库中的网络数据集

      IGeometricNetwork pGeometricNet=pNetColl.get_GeometricNetwork(0);//由于数据集中只有一个网络数据集,因此获取第一个

     第二步:建立节点的旗帜

     int intJunctionUserClassID;

     int intJunctionUserID;

     int intJunctionUserSubID;

     int intJunctionID;

     IPoint pFoundJunctionPoint;

    //ITraceFlowSolverGEN这个接口是几何网络分析中的重要接口,大部分的功能都是由此接口完成,现在需要获取逻辑网络,对逻辑网络进行设置。

     ITraceFlowSolverGEN pTraceFlowSolverG = new TraceFlowSolverClass() as ITraceFlowSolverGEN;    

     INetSolver  pNetSolver=pTraceFlowSolverG as INetSolver;

     INetWork pNetWork=pGeometricNet.NetWork;

     pNetSolver.SourceNetwork = pNetwork;

      INetElements pNetElements = pNetwork as INetElements; 

     int pCount=pCollection.PointCount;//获取输入点的个数,来建立旗帜的数组

     IJunctionFlag[] pJunctionFlag=new JunctionFlagClass[pCount];

     IPointToEID pPointToEID=new PointToEIDClass();

     pPointToEID.SourceMap=pMap;

     pPointToEID.GeometricNetWork=pGeometricNet;

     pPointToEID.SnapTolerance =pDisc;

   第三  获取节点的旗帜

      for (int i = 0; i 

            IEIDInfo pEIDInfo = pEnumEIDInfo.Next();

            IGeometry pGeometry = pEIDInfo.Geometry;

            pGeometryCollection.AddGeometryCollection(pGeometry as IGeometryCollection);

       }

至此几何网络分析的最短路径完成,这其中关键的是ITraceFlowSolverGEN接口。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有