Processing TomTom MultiNet data into a Network Dataset

03-16-2015 08:46 AM
Occasional Contributor II

I am having some issues with the Process MultiNet Street Data tool from the Street Data Processing Toolbox created by the Network Analyst team (found here Unfortunately this tool isn’t supported by tech support.  Do any of you have a contact within the Network Analyst team that might be able to help me. It appears the tool doesn’t like something about the Sign Path Table from TomTom.  Here is the Error from

Creating signpost feature class and table...

Index was out of range. Must be non-negative and less than the size of the collection.

Parameter name: index

at System.Collections.ArrayList.get_Item(Int32 index)

at GPProcessVendorDataFunctions.ProcessMultiNetDataFunction.MakeSignGeometry(ArrayList edgesData, ArrayList reverseEdge)

at GPProcessVendorDataFunctions.ProcessMultiNetDataFunction.CreateSignposts(String inputSITablePath, String inputSPTablePath, String outputFileGdbPath, IGPMessages messages, ITrackCancel trackcancel)

at GPProcessVendorDataFunctions.ProcessMultiNetDataFunction.Execute(IArray paramvalues, ITrackCancel trackcancel, IGPEnvironmentManager envMgr, IGPMessages messages)

Failed to execute (ProcessMultiNetData).

Any help would be appreciated.

Christopher McClain

  1. Sr. GIS Specialist

Brick Township MUA

0 Kudos
5 Replies
Esri Regular Contributor
0 Kudos
New Contributor II

Hi Chris,

From what I can tell from the sample code, I'm guessing that the problem is occurring because one of the signposts in your data only has one transportation element reference in the SP table for that signpost -- each signpost must have at least two transportation element references.

This is just a best guess, as I don't know what release of the MultiNet data or the region(s) of the data you're passing into the tool.  If you step through this through the debugger, you can probably figure out exactly which one is the culprit.


0 Kudos
Occasional Contributor II

I'm working with 2014.09.19.00 - usaunjnj029. I haven't worked with the debugger option before where can I find some info on it?


Chris M

0 Kudos
New Contributor II

Hi Chris,

It looks like you're using a county-size dataset.  Unfortunately, I do not have access to county-level data to investigate myself, but I did check that the 2014.09 data for the entire state of New Jersey has complete signpost records.

Below is some quick VBA code I whipped up to check to see that all the signposts have at least two transportation element features:

Sub signpostTest()

  Dim pWSF As IWorkspaceFactory

  Set pWSF = New ShapefileWorkspaceFactory

  Dim pFWS As IFeatureWorkspace

  Set pFWS = pWSF.OpenFromFile("C:\MyData\", 0)

  Dim pTable As ITable

  Set pTable = pFWS.OpenTable("usaunj___________sp.dbf")

  Dim lSignpostIDField As Long

  lSignpostIDField = pTable.FindField("ID")

  Dim lSequenceField As Long

  lSequenceField = pTable.FindField("SEQNR")

  Dim pTableSort As ITableSort

  Set pTableSort = New TableSort

  Set pTableSort.Table = pTable

  pTableSort.Fields = "ID, SEQNR"

  pTableSort.Ascending("ID") = True

  pTableSort.Ascending("SEQNR") = True

  pTableSort.Sort Nothing

  Dim pCursor As ICursor

  Set pCursor = pTableSort.Rows

  Dim pRow As IRow

  Set pRow = pCursor.NextRow

  Dim lPreviousSignpostID As Double

  lPreviousSignpostID = pRow.Value(lSignpostIDField)

  Dim lPreviousSequence As Long

  lPreviousSequence = pRow.Value(lSequenceField)

  Dim lCurrentSignpostID As Double

  Dim lCurrentSequence As Long

  Set pRow = pCursor.NextRow

  Do Until pRow Is Nothing

    lCurrentSignpostID = pRow.Value(lSignpostIDField)

    lCurrentSequence = pRow.Value(lSequenceField)

    If lCurrentSequence = lPreviousSequence Then MsgBox lPreviousSignpostID

    lPreviousSignpostID = lCurrentSignpostID

    lPreviousSequence = lCurrentSequence

    Set pRow = pCursor.NextRow


  MsgBox "Finished."

End Sub

Use the path to your data in line 05 and the name of your MP table in line 07.  When you run this, you will see a pop-up for every signpost that only has one transportation element.  You will see the "Finished" message when the code completes.

Given that you're using a county-size dataset, you may want to use the above code to check to be sure that the signposts included reference streets only within the county and do not cross the county line.

As far as debugging, you can open this tool in Visual Studio and use the debugger embedded within that.


0 Kudos
Occasional Contributor II


    The script worked and returned 12 items from the MP table.  This is my first foray into routing networks so I am not sure how to correct this issue now that I have identified these 12 items.

Chris M

0 Kudos