ArcEngine几何网络分析(整理 | 您所在的位置:网站首页 › 路径分析arcgis › ArcEngine几何网络分析(整理 |
这是在平时学习的时候,对几何网络分析相关资料的整理,中间有不对的地方,希望各位给予指出,共同学习。 几何网络分手是网络分析的一种,是用来解决现实世界中的水网、煤气网、电网等设施网络,因此几何网络也称为设施网络。几何网络是有向网络,一网络中的流通资源是无法改变连通性或方向的,只能按照建立几何网络时设立的规则进行。主要可以用来实现: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 实验室设备网 版权所有 |