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