Closed abyrd closed 3 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?
@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.
@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.
When producing many vector isochrones, I frequenly get ones with missing points and large holes. For example:![isoglitch](https://cloud.githubusercontent.com/assets/112871/3349053/c954027a-f94f-11e3-89b5-3a5891208d02.png)
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!");