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 http://www.arcgis.com/home/item.html?id=755f96fcde454ece8f790fecb3e031c7). 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
Brick Township MUA
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.
Alan
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?
Thanks,
Chris M
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
Loop
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.
Alan
Alan,
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