ols-router
ols-router copied to clipboard
in route planner, add resources that represents isochrones and isodistances
@mraross commented on Tue Mar 21 2017
isochrones is a resource that represents a sequence of concentric polygons representing boundaries of equal travel time from the point of origin
isodistances is a resource that represents a sequence of concentric polygons representing boundaries of equal distance from the point of origin
&point - point of origin &zoneSize - size of zone. Units are minutes for isochrones and metres for isodistances. &zoneCount - number of zones (polygons) &inbound - if true, set travel direction inward to &point ; if false, set direction outward from &point
For zoneCount=3 and zoneSize=10, three polygons will be generated and total route time will be 30 minutes.
For a nice demo, see https://www.iso4app.net/
@cmhodgson commented on Fri Apr 28 2017
We still need to develop the algorithm for polygonizing the segments - if you look at graphoppers example carefully you will see it does an awful job of this, with segments of roads which are not reachable from the other segments in the isochrone being included accidentally. This may be non-trivial and is complicated by working on the graphopper "black box" network - it can probably do what we need but I need to figure out how to get it to.
@mraross commented on Mon Sep 25 2017
Here's a promising paper on how to polygonize the segments: Scalable Isocontour Visualization in Road Networks via Minimum-Link Paths https://arxiv.org/pdf/1602.01777.pdf
@mraross commented on Wed Jan 17 2018
If we restrict the use of this resource to display on a map that already has a DRA road layer, perhaps we can get away with returning only the points on the boundary of each time zone. If these points are displayed on the map, can a user fuse them into a boundary in their mind's eye?
Each point can have a few properties to help with the visualization:
-
Time interval (.e.g., 5 means this point is five minutes from service centre)
-
Degree (e.g., 1 means a dead-end, 2 means a two-way intersection, etc.)
-
intersectionID - DRA intersection id if point is at an intersection, null otherwise
We can also return the bbox of the boundary points that the app can use to set the map extent.
@mraross commented on Tue Jan 30 2018
Could we optionally or additionally return an isoline that connected the boundary points? Could we get away with a convex hull? The beauty of this scheme is that when you display the points as well as the isoline, you can see that the false crossings aren't part of the boundary.
@cmhodgson commented on Wed Mar 14 2018
Some questions about the params:
- Rather than using "point", should we reuse either "fromPoints" or "points", with an initial limit of only one (but possibly supporting multiple in the future)
- Do we also want to support distance-based isoContours, using ie. travelDist parameter as an alternative to travelTime? Should we integrate these parameters, eg. reuse the criteria param (criteria=fastest|shortest) and instead of travelTime/Dist use "limit" or "isoLimit" or "contourSize"? Also should we rename the service from isochrone to isocontour in this case?
- not sure about the word "zone"... contourCount? numContours?
@cmhodgson commented on Wed Mar 14 2018
Do we need configurable limits to this resource? Maximum number of zones/contours? Total maximum time/distance? Really, there shouldn't be a problem with the size of the total coverage, but I expect that calculating the contours will be the expensive part that we might want to limit to at most 10?