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


Create Location Allocation Layer Snippet (ArcObjects .NET 10.4 SDK)
ArcObjects Library Reference

Create Location Allocation Layer Snippet

Create a new Location Allocation layer.

[C#]
///<summary>Create a new Location Allocation layer.</summary>
///<param name="networkDataset">An INetworkDataset interface that is the network dataset on which to perform the Location Allocation analysis.</param>
///<returns>An INALayer3 interface that is the newly created network analysis layer.</returns>
public static ESRI.ArcGIS.NetworkAnalyst.INALayer3 CreateLocationAllocationLayer(ESRI.ArcGIS.Geodatabase.INetworkDataset networkDataset)
{
    ESRI.ArcGIS.NetworkAnalyst.INALocationAllocationSolver naLocationAllocationSolver=new ESRI.ArcGIS.NetworkAnalyst.NALocationAllocationSolverClass();
    ESRI.ArcGIS.NetworkAnalyst.INASolver naSolver=naLocationAllocationSolver 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 Location Allocation layer.</summary> 
'''<param name="networkDataset">An INetworkDataset interface that is the network dataset on which to perform the Location Allocation analysis.</param> 
'''<returns>An INALayer3 interface that is the newly created network analysis layer.</returns> 
Public Shared Function CreateLocationAllocationLayer(ByVal networkDataset As ESRI.ArcGIS.Geodatabase.INetworkDataset) As ESRI.ArcGIS.NetworkAnalyst.INALayer3

    Dim naLocationAllocationSolver As ESRI.ArcGIS.NetworkAnalyst.INALocationAllocationSolver=New ESRI.ArcGIS.NetworkAnalyst.NALocationAllocationSolverClass()
    Dim naSolver As ESRI.ArcGIS.NetworkAnalyst.INASolver=TryCast(naLocationAllocationSolver, 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