Hi all,
I noticed some strange behavior when solving a series of OD cost matrices in Network Analyst. The crux of the problem is that some origins and destinations are not being included in the solve. The strange part is that they are already set to be coincident with the network features I'm snapping to, so the search tolerance parameter shouldn't be an issue (I've verified this by running the Near tool, and confirming that NEAR_DISTANCE equals zero). Here's an image of a simplified example with two origin points:
After adding the origins to the network with a search tolerance of 15 meters, I get this:
The origin on the right is unlocated, despite being (seemingly) identically positioned relative to the relevant network features as the origin on the left.
The two ways I've found that I can get the origin on the right to locate are to:
Neither of these two things should have any effect. As I've already mentioned, the origin is located on the feature. Additionally, there are no relevant network restrictions (that I'm aware of ... and I built the network). Besides, when it does locate, the origin gets placed in the correct spot, so that particular link can't be restricted.
Any ideas for getting to the bottom of this? I'd rather not just take one of the "solutions" above without fully understanding what's going on.
Thanks for any help.
OK - I've uploaded a FGDB to Dropbox containing a small network dataset with two origins.
Here are the steps to reproduce the error:
The origin on the right will not locate. Expanding the search tolerance or allowing location on restricted elements will fix the problem.
Thanks for any help.
Hi Sheldon. I see the same behavior as you. It's rather baffling. We're going to look into it further on our end.
However, you might be able to work around the problem on your end. I noticed that you have a junctions source in your network called "origins". Origins should really be part of your network analysis layer and not built into the network itself. When I remove the origins junction source, your origin points load correctly into the OD Matrix.
Thanks for looking.
Ultimately I'm using your Add GTFS to a Network Dataset tool to calculate travel times between transit stops. So, the "origins" in my case are doing double duty - they get created as, and are part of, the network dataset, and I use them again as origins. I have about 7,500 transit stops in my network. Only about 70 - randomly peppered throughout the network - don't locate when I run the OD Cost Matrix. The rest seem fine.
Oh, I see. Is there some reason why you don't want the points to locate directly on the origins? If you're assessing travel time between stops, then having the stop located on the stop junction features wouldn't be a bad thing.
No, I suppose there isn't. I'll try that on the next full run. But still, the origins should snap to the street features. I'll be curious to learn if it's a bona fide bug.
Sheldon,
This does look like an issue that we need to fix. Thanks for reporting it. And just to reiterate, the best way to create/maintain street data is not to include the origins/destination type locations as junctions in the network as they can cause ambiguity with location snapping especially if they are not connected to the street features.
Regards,
Jay Sandhu
Thanks, Jay.
As I mentioned above, in my actual network dataset I don't include the origins and destinations as junctions per se. It just happened the be the case that in the analysis I was conducting, they were coincident.