如何创建网络数据集

如何创建网络数据集,第1张

// <summary>

/// 创建自定义网络数据

/// </summary>

/// <param name="_pWsName"></param>

/// <param name="_pDatasetName"></param>

/// <param name="_pNetName"></param>

/// <param name="_pFtName"></param>

void CreateNetworkDataset(string _pWsName, string _pDatasetName,string _pNetName, string _pFtName)

{

IDENetworkDataset pDENetworkDataset = new DENetworkDatasetClass()

pDENetworkDataset.Buildable = true

IWorkspace pWs = GetWorkspace(_pWsName)

IFeatureWorkspace pFtWs = pWs as IFeatureWorkspace

IFeatureDataset pFtDataset = pFtWs.OpenFeatureDataset(_pDatasetName)

// 定义空间参考,负责会出错

IDEGeoDataset pDEGeoDataset = (IDEGeoDataset)pDENetworkDataset

IGeoDataset pGeoDataset = pFtDataset as IGeoDataset

pDEGeoDataset.Extent = pGeoDataset.Extent

pDEGeoDataset.SpatialReference = pGeoDataset.SpatialReference

// 网络数据集的名称

IDataElement pDataElement = (IDataElement)pDENetworkDataset

pDataElement.Name = _pNetName

// 参加建立网络数据集的要素类

INetworkSource pEdgeNetworkSource = new EdgeFeatureSourceClass()

pEdgeNetworkSource.Name = _pFtName

pEdgeNetworkSource.ElementType = esriNetworkElementType.esriNETEdge

// 要素类的连通性

IEdgeFeatureSource pEdgeFeatureSource = (IEdgeFeatureSource)pEdgeNetworkSource

pEdgeFeatureSource.UsesSubtypes = false

pEdgeFeatureSource.ClassConnectivityGroup = 1

pEdgeFeatureSource.ClassConnectivityPolicy =esriNetworkEdgeConnectivityPolicy.esriNECPEndVertex

//不用转弯数据

pDENetworkDataset.SupportsTurns = false

IArray pSourceArray = new ArrayClass()

pSourceArray.Add(pEdgeNetworkSource)

pDENetworkDataset.Sources = pSourceArray

//网络数据集的属性设置

IArray pAttributeArray = new ArrayClass()

// Initialize variables reused when creating attributes:

IEvaluatedNetworkAttribute pEvalNetAttr

INetworkAttribute2 pNetAttr2

INetworkFieldEvaluator pNetFieldEval

INetworkConstantEvaluator pNetConstEval

pEvalNetAttr = new EvaluatedNetworkAttributeClass()

pNetAttr2 = (INetworkAttribute2)pEvalNetAttr

pNetAttr2.Name ="Meters"

pNetAttr2.UsageType = esriNetworkAttributeUsageType.esriNAUTCost

pNetAttr2.DataType = esriNetworkAttributeDataType.esriNADTDouble

pNetAttr2.Units = esriNetworkAttributeUnits.esriNAUMeters

pNetAttr2.UseByDefault = false

pNetFieldEval = new NetworkFieldEvaluatorClass()

pNetFieldEval.Setexpression_r("[METERS]", "")

//方向设置

pEvalNetAttr.set_Evaluator(pEdgeNetworkSource,esriNetworkEdgeDirection.esriNEDAlongDigitized, (INetworkEvaluator)pNetFieldEval)

pEvalNetAttr.set_Evaluator(pEdgeNetworkSource,esriNetworkEdgeDirection.esriNEDAgainstDigitized, (INetworkEvaluator)pNetFieldEval)

pNetConstEval = new NetworkConstantEvaluatorClass()

pNetConstEval.ConstantValue = 0

pEvalNetAttr.set_DefaultEvaluator(esriNetworkElementType.esriNETEdge,(INetworkEvaluator)pNetConstEval)

pEvalNetAttr.set_DefaultEvaluator(esriNetworkElementType.esriNETJunction,(INetworkEvaluator)pNetConstEval)

pEvalNetAttr.set_DefaultEvaluator(esriNetworkElementType.esriNETTurn,(INetworkEvaluator)pNetConstEval)

// 一个网络数据集可以有多个属性,我只添加了一个

pAttributeArray.Add(pEvalNetAttr)

pDENetworkDataset.Attributes = pAttributeArray

// 创建网络数据集,注意在创建几何网络的时候会锁定相应的要素类,因此不要用ArcMap或者catalog等打开参相应的数据

INetworkDataset pNetworkDataset = Create(pFtDataset, pDENetworkDataset)

//建立网络

INetworkBuild pNetworkBuild = (INetworkBuild)pNetworkDataset

pNetworkBuild.BuildNetwork(pGeoDataset.Extent)

}

网络分析是arcgis提供的重要的空间分析的功能,利用它可以模拟现实世界的网络问题。例如多个地点的最短路径问题。

在arcgis中,将地理网络模型分为两种:几何网络模型和网络数据集模型。由于本片文章研究的是网络数据集模型,所以暂时不说几何网络模型。

在网络数据集模型中,可以随意改变资源流动的方向,速度,终点等等。如驾驶员选择行车路线等等模拟交通网络。利用地理数据库中的要素类数据集或者shp文件来建立网络数据集,利用“网络分析”工具可以进行网络数据集的分析。

接下来介绍,如何通过网络数据集进行一个最短路径分析的例子。

一、网络数据集的创建

1.首先打开MXD地图。

2.激活你的拓展模块

点击菜单栏 自定义-拓展模块,然后把network给勾上

3.在右侧目录中,找到road_network,选择新建网络数据集

4.接下来会提示你,输入新的数据集的名称,以及添加的要素,点击下一步就好。

第三步是添加转弯要素,选用默认的就可以。第四步选择网络的连通性,可以进行连通性策略的选择。第五步是高程建模,点击下一步即可。其余就可以点下一步。

简单的说,如果你不需要特别的修改的话,可以一路点击下一步过来,arcgis会进行的自动的网络数据集的建立的。

5.最后就完成了网络数据集的建立。

二、最短路径分析

我们已经完成了是网络数据集的构建,接下来就可以进行最短路径的分析。

首先调出network analyst工具栏

点击新建路径,创建一个路径的图层

点击创建网络位置工具,在图上标出你想要的点

选择好之后就可以点击求解

完成最短路径的计算!


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11619036.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存