-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unsupported Operation on single point with decay function #907
Comments
The The log warnings and assertions introduced in 9a1d114 and 3b3d4ff of PR #896 caught the fact that destination PointSet objects are not always set on the destinations field of single point requests before processing (i.e. TravelTimeSurfaceTask.destinationPointSets may be null or empty). I was thrown off by the local variable The fact that we can hit this code path in normal usage, and the fact that the local destinations variable is set to a different PointSet than the one on the request, implies it's possible to cause problems analogous to the one observed in the Simpson Desert tests (which led me to create this code path and assertions): a mismatch between the number of actual destination points and the number of destinations for which travel times are computed, which can fail silently if the latter is smaller than the former. The intended interface and behavior needs to be clarified, and assumptions about aligned grids need to be validated with assertions. A check to this effect is already in place at |
Addresses #907, follow up to #896. Regional tasks already allow freeform destinations. Removed special code path required to do this with single point tasks. Comments added to better explain the constraints and expectations around single point and regional tasks, and how destinations are validated. Assertions added pending better general validation on TravelTimeReducer. Geographic dimensions and/or number of target points should be checked.
The check at The expectations and invariants around the destinations attached to single point TravelTimeSurfaceTasks and RegionalTasks are not obvious. I added some documentation in the initial fix PR, but this should all be spelled out in more detail. Single point tasks (TravelTimeSurfaceTasks) may or may not have attached destination PointSets. Attached PointSets are used for calculating accessibility at the same time as travel times. Travel time is always being calculated to a grid, and any attached PointSets for accessibility must exactly match that grid. To see how this is managed, see GridTransformWrapper usage in AnalysisWorkerTask#loadAndValidateDestinationPointSets. |
Using UI and project at https://analysis-a2ezz7l8s-conveyal.vercel.app/regions/63a95f7328b9ff8f79b276ee/analysis?projectId=63a968e7e94bbb2013007634&_shouldResolveHref=true&scenarioId=baseline
Using destinations
z9 gaussian west gridded frac
and logistic decay function with SD=2.Using backend and worker from
2023-fall-release
cluster branch (v6.9-10-gfbd1062
).Exception is as follows:
The
UnsupportedOperationException
is from the base class (non-)implementation ofPointSet#getPointsInEnvelope
. The subclasses WebMercatorGridPointSet and FreeFormPointSet implement it, but Grid and GridTransformWrapper do not. This code path is calling an unimplemented method on a Grid. This must have worked previously because we could calculate accessibility results with decay functions during single point requests.The text was updated successfully, but these errors were encountered: