This document is archived and information here might be outdated.  Recommended version.


Create Vehicle Routing Problem Layer Snippet (ArcObjects .NET 10.4 SDK)
ArcObjects Library Reference

Create Vehicle Routing Problem Layer Snippet

Create a new Vehicle Routing Problem layer.

[C#]
///<summary>Create a new Vehicle Routing Problem layer.</summary>
///<param name="networkDataset">An INetworkDataset interface that is the network dataset on which to perform the Vehicle Routing Problem analysis.</param>
///<returns>An INALayer3 interface that is the newly created network analysis layer.</returns>
public static ESRI.ArcGIS.NetworkAnalyst.INALayer3 CreateVehicleRoutingProblemLayer(ESRI.ArcGIS.Geodatabase.INetworkDataset networkDataset)
{
    ESRI.ArcGIS.NetworkAnalyst.INAVRPSolver naVRPSolver=new ESRI.ArcGIS.NetworkAnalyst.NAVRPSolverClass();
    ESRI.ArcGIS.NetworkAnalyst.INASolver naSolver=naVRPSolver as ESRI.ArcGIS.NetworkAnalyst.INASolver;

    ESRI.ArcGIS.Geodatabase.IDatasetComponent datasetComponent=networkDataset as ESRI.ArcGIS.Geodatabase.IDatasetComponent; // Dynamic Cast
    ESRI.ArcGIS.Geodatabase.IDENetworkDataset deNetworkDataset=datasetComponent.DataElement as ESRI.ArcGIS.Geodatabase.IDENetworkDataset; // Dynamic Cast
    ESRI.ArcGIS.NetworkAnalyst.INAContext naContext=naSolver.CreateContext(deNetworkDataset, naSolver.Name);
    ESRI.ArcGIS.NetworkAnalyst.INAContextEdit naContextEdit=naContext as ESRI.ArcGIS.NetworkAnalyst.INAContextEdit; // Dynamic Cast

    ESRI.ArcGIS.Geodatabase.IGPMessages gpMessages=new ESRI.ArcGIS.Geodatabase.GPMessagesClass();
    naContextEdit.Bind(networkDataset, gpMessages);

    ESRI.ArcGIS.NetworkAnalyst.INALayer naLayer=naSolver.CreateLayer(naContext);
    ESRI.ArcGIS.NetworkAnalyst.INALayer3 naLayer3=naLayer as ESRI.ArcGIS.NetworkAnalyst.INALayer3; // Dynamic Cast

    return naLayer3;
}

[Visual Basic .NET]
'''<summary>Create a new Vehicle Routing Problem layer.</summary> 
'''<param name="networkDataset">An INetworkDataset interface that is the network dataset on which to perform the Vehicle Routing Problem analysis.</param> 
'''<returns>An INALayer3 interface that is the newly created network analysis layer.</returns> 
Public Shared Function CreateVehicleRoutingProblemLayer(ByVal networkDataset As ESRI.ArcGIS.Geodatabase.INetworkDataset) As ESRI.ArcGIS.NetworkAnalyst.INALayer3

    Dim naVRPSolver As ESRI.ArcGIS.NetworkAnalyst.INAVRPSolver=New ESRI.ArcGIS.NetworkAnalyst.NAVRPSolverClass()
    Dim naSolver As ESRI.ArcGIS.NetworkAnalyst.INASolver=TryCast(naVRPSolver, ESRI.ArcGIS.NetworkAnalyst.INASolver)

    Dim datasetComponent As ESRI.ArcGIS.Geodatabase.IDatasetComponent=TryCast(networkDataset, ESRI.ArcGIS.Geodatabase.IDatasetComponent)
    Dim deNetworkDataset As ESRI.ArcGIS.Geodatabase.IDENetworkDataset=TryCast(datasetComponent.DataElement, ESRI.ArcGIS.Geodatabase.IDENetworkDataset)

    Dim naContext As ESRI.ArcGIS.NetworkAnalyst.INAContext=naSolver.CreateContext(deNetworkDataset, naSolver.Name)
    Dim naContextEdit As ESRI.ArcGIS.NetworkAnalyst.INAContextEdit=TryCast(naContext, ESRI.ArcGIS.NetworkAnalyst.INAContextEdit)

    Dim gpMessages As ESRI.ArcGIS.Geodatabase.IGPMessages=New ESRI.ArcGIS.Geodatabase.GPMessagesClass()
    naContextEdit.Bind(networkDataset, gpMessages)

    Dim naLayer As ESRI.ArcGIS.NetworkAnalyst.INALayer=naSolver.CreateLayer(naContext)
    Dim naLayer3 As ESRI.ArcGIS.NetworkAnalyst.INALayer3=TryCast(naLayer, ESRI.ArcGIS.NetworkAnalyst.INALayer3)

    Return naLayer3

End Function

Additional Requirements
  • The code in this document requires the following References added to the Visual Studio project:
  • ESRI.ArcGIS.Geodatabase
  • ESRI.ArcGIS.NetworkAnalyst
  • ESRI.ArcGIS.System