opentripplanner / OpenTripPlanner

An open source multi-modal trip planner
http://www.opentripplanner.org
Other
2.13k stars 1.01k forks source link

Vector isochrone fail #1436

Closed abyrd closed 3 years ago

abyrd commented 10 years ago

When producing many vector isochrones, I frequenly get ones with missing points and large holes. For example: isoglitch

This particular example is coming from a remote server, but when I've seen this locally it's accompanied by a message from DelaunayIsolineBuilder L199 LOG.error("Cannot find fitting shell for a hole!");

laurentg commented 10 years ago

@abyrd Do we have a reproducible scenario? The error in the DelaunayIsolineBuilder means that the polygon hierarchy is broken. According to the screenshot, the polyline building is wrong, most probably due to an incomplete or invalid sample grid. Did you modify the offroad distance / grid precision ratio? (This can have an impact). Also can you check if incrementing the 2 constant in AccumulativeGridSampler::close() method L108 solve the issue?

abyrd commented 10 years ago

@laurentg we did not modify the ratio found in SampleGridRenderer, which remains at 0.8. We have modified the grid size but have been careful to change it in both places (the sample grid renderer and the WTWDs).

@kpwebb reports that incrementing the constant in AccumulativeGridSampler::close() to 3 does seem to improve the situation.

I do notice that in org.opentripplanner.analyst.request.SampleGridRenderer#getSampleGrid D0 is set to 0.8gridsize via a call to getOffRoadDistanceMeters, then later in the function the value (gridSizeMeters \ 0.7) is used in a call to sampleSPT. This discrepancy has been reproduced in our own code.

laurentg commented 10 years ago

@abyrd https://github.com/opentripplanner/OpenTripPlanner/pull/1440 should solve this. Concerning the discrepancy between the 0.8 and 0.7 factors, those two magic values where unrelated. (This was not the cause of the issue.) Both are now removed (the first one is a new parameter given by the client -- offRoadDistanceMeters), and the second has been split and replaced by two other constants: 1) the "SPTWalker" split distance, now reduced to 0.5 x grid cell size, and 2) the w=1/(d+d0)^2 weight computation, simply using the grid cell size itself.