openactive / modelling-opportunity-data

OpenActive Modelling Opportunity Data specification
https://www.openactive.io/modelling-opportunity-data/
Other
6 stars 6 forks source link

Proposal: Routes #108

Open ldodds opened 6 years ago

ldodds commented 6 years ago

Proposer

ODI, following discussions with TrainAsONE, Forestry Commission and Ordnance Survey.

Potential users would also include Canal and River Trust and British Cycling

Use Case

As a cyclist, runner or walker I want to find opportunities to run/walk/cycle

Why is this not covered by existing properties?

The data model currently covers events and facilities there is a partially defined "Activity Opportunity" for self-directed activities like walking, running and cycling but this doesn't say how to describe opportunities to run/walk/cycle, including information on the routes.

Please provide a link to example data

Proposal

The requirements we've seen so far cover providing metadata about the opportunity as well as some level of detail around the route. Data includes:

To handle this, suggest we add a new type: Route which provides the metadata to describe the opportunity. We can build on existing vocabulary to describe the majority of features of a Route.

We will also need some new terms to refer to route, elevation, distance, startingPoint, etc

Things still to discuss:

Example

From Forestry Commission data. Uses a custom startingPoint property to indicate start point as detailed route information might not be available?

{
  "@context": "https://www.openactive.io/ns/oa.jsonld",
  "type": "Route",
  "url": "https://www.forestry.gov.uk/forestry/englandeastanglianoforestthetfordforestparkgreathockhamgreenwalk", 
  "title": "Hockham Green Walk",
  "description": "The Green Walk is a pleasant walk through the forest at Hockham. Scots and corsican pine plantations blend with mature oaks stands, rich in insect and bird life.",
  "category": ["Forest Trail"],
  "activity": ["Walking"],
  "level": "Easy",
  "distance": {
     "type": "QuantitativeValue",
     "value": "2.1",
     "unitCode": "KMT"
  },
  "amenityFeature": [
    {
      "type": "Parking",
      "name": "Parking",
      "value": true
    }
  ],
  "startingPoint": {
    "type": "GeoCoordinates",
    "latitude": "",
    "longitude: ""
  }
}

Example from OS data. Uses url of a GeoShape to refer to GPX download

{
  "@context": "https://www.openactive.io/ns/oa.jsonld",
  "type": "Route",
  "url": "https://getoutside.ordnancesurvey.co.uk/adventures/bike-exploring-electric-mountain-bike-adventure/", 
  "title": "BIKE EXPLORING: ELECTRIC MOUNTAIN BIKE ADVENTURE",
  "description": "As part of #BigBikeRevival and #BikeWeek2018, Helen Pollard takes us on an electric mountain bike route from Castle Bolton to Askrigg.",
  "category": ["Cycling", "Helen Pollard", "Yorkshire Dales"],
  "activity": ["Cycling"],
  "level": "Easy",
  "distance": {
     "type": "QuantitativeValue",
     "value": "11.4",
     "unitCode": "KMT"
  },
  "startingPoint": {
    "type": "GeoCoordinates",
    "latitude": "54.322112",
    "longitude": "-1.9490007"
  },
  "route": {
     "type": "GeoShape",
     "url": "...GPX file...",
  }
}

Related

abs0 commented 6 years ago

Following up on the segmentation - on some routes easy access may be at a series of points (canal routes spring to mind)

abs0 commented 6 years ago

Other possible aspects to consider might include

TottenhamT commented 6 years ago

Because it is so subjective, and depends on so many factors (such as who is doing the activity), duration could be left out if other factors were quantified perhaps. If you have a discrete data for distance, climb (perhaps an undulation factor such as @TrainAsOne use), and terrain (graded from 1-5?), then users of the data could add their own factors to generate durations that they were able to present without ambiguity.

abs0 commented 6 years ago

Very much concur with @TottenhamT's comment - a key aspect of using this data should be to personalise for the individual - if I'm looking for a "two hour run" the route requirements will be wildly different from someone else.

What would definitely help would be a reference section which explains the grades & undulation factors and includes some sample routes with distances, undulation, terrain values and their typical expected duration for a reference runner (eg: for a four hour marathon runner this would be about X, for a three hour marathon runner it would be about Y).

Its a chunk of extra work for someone, but otherwise everyone could be flailing around either trying to determine what terrain & undulation values to put in, or conversely how to use the data when presenting to users

blabyboy commented 6 years ago

Agree with @abs0 point, there needs to be some consistency with what constitutes "easy" vs "medium", "hard" etc..

Suggest new property of 'isCircular' for same start/end point routes.

Additionally, I would suggest a property of 'Waypoints' that can be comprised of a GeoJSON object (https://tools.ietf.org/html/rfc7946) that would sit under a route, this would allow meaningful routes to still exist without necessarily having a full LineString to describe it if not available, but meaningful data can be provided for each waypoint e.g. is it an egress/ingress, condition under foot, direction to next waypoint, facilities at waypoint and so on.

For people with various disabilities/impairments you may need to consider things such 'pinch points' on a route e.g. where a wheelchair may not pass through, or a radar key may be needed. Condition under foot would be important for those with motor impairments potentially.

nickevansuk commented 6 years ago

Just to make this explicit here, we're using distance as a type QuantitativeValue which is different to schema.org. I agree with this wholeheartedly, just thought it was worth noting for clarity.

This being the case, I assume we're bundling in a definition of the property "distance" to Event too or creating a "route" property of Event @ldodds ? See https://github.com/openactive/modelling-opportunity-data/issues/104 and beta issue https://github.com/openactive/ns-beta/issues/3 (which was blocked on resolving this)

          "distance": {
            "type": "QuantitativeValue",
            "value": "2.1",
            "unitCode": "KMT"
          }
nickevansuk commented 6 years ago

On the "easy" vs "medium", "hard" @blabyboy @abs0 check out https://github.com/openactive/modelling-opportunity-data/issues/82 - any thoughts on @dolkensp's comment (https://github.com/openactive/modelling-opportunity-data/issues/82#issuecomment-383767975)?

abs0 commented 6 years ago

Another issue with routes is variation in terrain, undulation and suchlike over the entire route - there may be significant flat sections, then a hill, then flat again. Terrain could vary from a flat paved section to a very rough one (without any significant variation in undulation). Only some parts may be suitable for cycles or wheelchairs, etc.

I think the long term goal should be to break routes down into segments with specific characteristics, but initially it is probably better to just note that the issue is there, not yet addressed, and go for overall characteristics - though I like @nickevansuk comment in #82 regarding directly expressing as a list - in this case it would be so any route can naturally be indicated as both flat and not :)

blabyboy commented 6 years ago

@nickevansuk, I do think @dolkensp's comment is a good idea, and gives flexibility to the consuming agent, but it doesn't get away from the fundamental problem of qualifying what a 'level' would be i.e. one org's level 30 route could be equivalent to another org's level 50 - I hope you see the point. Perhaps suggesting the banding of levels as @dolkensp has done is the best way at present, until such time as standardised way to qualify a level is created (if ever).

AUM3RLE commented 6 years ago

Hello from the Ramblers, yes those ones. We are just in the process of consolidating our differing walk/route standards and would welcome the opportunity to be part of any consortium moving this forward

nickevansuk commented 6 years ago

Would also be great to have an example of a route inside an event

nickevansuk commented 6 years ago

Also suggest we have consistency of language, the "route" property should refer to a "Route" object as we've done elsewhere (e.g. "event"). Suggest the below should be a "geoShape" property, to make this really clear.

{
  "@context": "https://www.openactive.io/ns/oa.jsonld",
  "type": "Route",
  "route": {
     "type": "GeoShape",
     "url": "...GPX file...",
  }
}
blabyboy commented 6 years ago

Apologies, I missed the Routes call. I have referenced my responses against the Youtube recording at https://youtu.be/3m2_S8IFeZY

28:00. With regards to shared routes on the towpaths, I'd be minded to publish them separately, partly due to H&S considerations, but also because the actual lines may vary due to the path under foot/wheel and the routes become specifically shareable with other routes of the same 'type'

32:45. Suggest StoppingPoints becomes WayPoints as that feels more in-keeping with the lexicon of Routing and Navigation. You may not always stop at a WayPoint but it can provide useful pointers that you are on the correct route overall.

34:20 We have an internal format but we publish as GeoJSON - an established standard and easily readable.

~40:00 For 'advanced' routes it would be good to have a Segments or Sections property and allow GeoShape objects to be assigned to those. You can then have a GeoShape property for the whole Route, but also pick out specific sections within a route for highlighting against the overall route on a map for instance, or to mix and match with other Routes or Sections available.

This would allow a consumer to create a bespoke Route of a specific activity from various datasets e.g. a walking route that transgresses a park segment onto a canal towpath segment and then onto a NT segment. We record various types of asset along a towpath such as toilets (whether they are key-based or public) which could be published as amenities if publicly accessible.

jnicho02 commented 5 years ago

I like to look at existing cases and see whether they would fit the model:

I adopted a greyhound and want to know where I could/should walk her, whether there is a car park, and if I can safely let her off the lead. I get personal recommendations from a Facebook Group and ask locals. Sites like https://walkiees.co.uk/walks/sussex-east help, and i am able to submit walks as well. It has the lowest common denominator of a geolocation for the start of the walk and a textual description. I would have liked to have seen a rough route of waypoints. The single geolocation of the walk could have been a centroid but people probably want to know where the start point is.

I also use walking books, which are an age-old model for sharing a route. They have a simplified map plus a more detailed textual description of waypoints. So, i'm now thinking, "could I generate both 'views' from the same data?"

HTH

blabyboy commented 5 years ago

They have a simplified map plus a more detailed textual description of waypoints. So, i'm now thinking, "could I generate both 'views' from the same data?"

@jnicho02 Have you got a link to an example simplified map? For me, I do not think you could generate both 'views' as the depth of data is not there in the spec at present i.e. waypoints/segments/sections. If there were waypoints/segments/sections you could choose to leave some out based on an algorithm of your own definition and the same could be applied to Linestring geodata (if it was included) - the trick being to know which parts of the line should be simplified ;)

You are the one reading the data in from a feed and then transposing it as you best see fit for your requirements. So, as long as the data exists in the feed then you can pick and choose what you take and how you display to a User. My gut feeling is that the Route data would/should be enough to provide you with a dataset to generate your simplified map view and if there were segments/waypoints/sections then these could provide a more detailed view. You could even take properties of these segments to add nuance to the simplified view if needed.

It might be worth you jumping on the next call for Routes on 23rd May so you can contribute.