hi, please beware of osm dialects...

at least in slovakia (and probably czech republic) highway=track is
considered to have motor_vehicle=private (or motor_vehicle=no) implicit tag. 

which opens the question of country/region wide default values for eg
maxspeed, ...

michal
On Sun, Mar 16, 2014 at 09:13:57PM -0300, Fernando Trebien wrote:
> I investigated on this idea a bit further. I tried to arrive at
> numbers that when multiplied would make sense to me, but in the end
> your suggestion of speed limits for each tag made more sense. So,
> instead I would now agree with taking the minimum of the following
> speeds: default, max, tracktype limit, smoothness limit, and other
> things. And I have a new suggestion: we can try to guess tracktype and
> smoothness from surface, but only do so when these tags are missing.
> 
> I've come to this conclusion after learning what tracktype means
> exactly: 
> https://lists.openstreetmap.org/pipermail/tagging/2014-March/016904.html
> 
> I've also asked the opinion of the community on this idea:
> https://lists.openstreetmap.org/pipermail/tagging/2014-March/016935.html
> 
> I'd like to hear your opinion about adding the following code to
> https://github.com/DennisOSRM/Project-OSRM/blob/master/profiles/car.lua:
> 
> 
> 1. Just after the definition of speed_profile (line 34):
> 
> -----
> tracktype_profile = {
>   ["grade1"] = math.huge,
>   ["grade2"] = 45,
>   ["grade3"] = 30,
>   ["grade4"] = 20,
>   ["grade5"] = 15,
>   ["grade6"] = 9,
>   ["grade7"] = 6,
>   ["grade8"] = 3
> }
> 
> surface_tracktype_profile = {
>   ["asphalt"] = tracktype_profile["grade1"],
>   ["concrete"] = tracktype_profile["grade1"],
>   ["tartan"] = tracktype_profile["grade1"],
>   ["paved"] = tracktype_profile["grade1"],
>   ["paving_stones"] = tracktype_profile["grade1"],
>   ["concrete:plates"] = tracktype_profile["grade1"],
>   ["metal"] = tracktype_profile["grade1"],
>   ["compacted"] = tracktype_profile["grade1"],
>   ["sett"] = tracktype_profile["grade1"],
>   ["concrete:lanes"] = tracktype_profile["grade1"],
>   ["bricks"] = tracktype_profile["grade1"],
>   ["cement"] = tracktype_profile["grade1"],
>   ["cobblestone"] = tracktype_profile["grade1"],
>   ["wood"] = tracktype_profile["grade1"],
>   ["stone"] = tracktype_profile["grade1"],
>   ["rocky"] = tracktype_profile["grade1"],
>   ["gravel"] = tracktype_profile["grade2"],
>   ["fine_gravel"] = tracktype_profile["grade2"],
>   ["grass_paver"] = tracktype_profile["grade2"],
>   ["unpaved"] = tracktype_profile["grade3"],
>   ["ground"] = tracktype_profile["grade3"],
>   ["dirt"] = tracktype_profile["grade3"],
>   ["grass"] = tracktype_profile["grade3"],
>   ["pebblestone"] = tracktype_profile["grade3"],
>   ["clay"] = tracktype_profile["grade4"],
>   ["sand"] = tracktype_profile["grade5"],
>   ["earth"] = tracktype_profile["grade5"],
>   ["mud"] = tracktype_profile["grade5"]
> }
> 
> smoothness_profile = {
>   ["excellent"] = math.huge,
>   ["thin_rollers"] = math.huge,
>   ["good"] = 60,
>   ["thin_wheels"] = 60,
>   ["intermediate"] = 45,
>   ["wheels"] = 45,
>   ["bad"] = 30,
>   ["robust_wheels"] = 30,
>   ["very_bad"] = 15,
>   ["high_clearance"] = 15,
>   ["horrible"] = 3,
>   ["off_road_wheels"] = 3
> }
> 
> surface_smoothness_profile = {
>   ["asphalt"] = smoothness_profile["excellent"],
>   ["concrete"] = smoothness_profile["excellent"],
>   ["tartan"] = smoothness_profile["excellent"],
>   ["paved"] = smoothness_profile["good"],
>   ["paving_stones"] = smoothness_profile["good"],
>   ["concrete:plates"] = smoothness_profile["good"],
>   ["metal"] = smoothness_profile["good"],
>   ["compacted"] = smoothness_profile["intermediate"],
>   ["sett"] = smoothness_profile["intermediate"],
>   ["concrete:lanes"] = smoothness_profile["intermediate"],
>   ["bricks"] = smoothness_profile["intermediate"],
>   ["cement"] = smoothness_profile["intermediate"],
>   ["grass_paver"] = smoothness_profile["intermediate"],
>   ["cobblestone"] = smoothness_profile["bad"],
>   ["wood"] = smoothness_profile["bad"],
>   ["stone"] = smoothness_profile["bad"],
>   ["rocky"] = smoothness_profile["bad"],
>   ["gravel"] = smoothness_profile["bad"],
>   ["fine_gravel"] = smoothness_profile["bad"],
>   ["unpaved"] = smoothness_profile["bad"],
>   ["ground"] = smoothness_profile["bad"],
>   ["dirt"] = smoothness_profile["bad"],
>   ["grass"] = smoothness_profile["bad"],
>   ["pebblestone"] = smoothness_profile["bad"],
>   ["clay"] = smoothness_profile["bad"],
>   ["sand"] = smoothness_profile["bad"],
>   ["earth"] = smoothness_profile["bad"],
>   ["mud"] = smoothness_profile["very_bad"]
> }
> -----
> 
> 
> 2. At the beginning of way_function(), just after checking for access
> (line 119):
> 
> 
> -----
> -- we dont route over extremely difficult surfaces
> local surface = way.tags:Find("surface")
> local tracktype = way.tags:Find("tracktype")
> local smoothness = way.tags:Find("smoothness")
> 
> -- accept only widely used tracktype values (typos result in inaccessible 
> ways)
> if tracktype ~= "" then
>   if tracktype_profile[tracktype] == nil then
>     return
>   end
> end
> 
> -- accept only widely used smoothness values (typos result in inaccessible 
> ways)
> if smoothness ~= "" then
>   if smoothness_profile[tracktype] == nil then
>     return
>   end
> end
> -----
> 
> 
> 3. Just before handling forward/backward maxpeeds (line 206):
> 
> 
> -----
> -- Set the avg speed on ways with difficult surfaces
> if tracktype ~= "" then
>   way.speed = math.min(way.speed, tracktype_profile[tracktype])
> else
>   if surface ~= "" then
>     if surface_tracktype_profile[surface] ~= nil then
>       way.speed = math.min(way.speed, surface_tracktype_profile[surface])
>     end
>   end
> end
> 
> if smoothness ~= "" then
>   way.speed = math.min(way.speed, smoothness_profile[smoothness])
> else
>   if surface ~= "" then
>     if surface_smoothness_profile[surface] ~= nil then
>       way.speed = math.min(way.speed, surface_smoothness_profile[surface])
>     end
>   end
> end
> -----
> 
> On Mon, Mar 10, 2014 at 11:11 PM, Fernando Trebien
> <fernando.treb...@gmail.com> wrote:
> > "But if we do want to handle combinations"
> >
> > Shouldn't we handle them if the community thinks that surface is only
> > fully described after adding the 3 tags? Nowhere it is said "use one
> > or the other but not both".
> >
> > The very fact that people don't often combine them means to me that
> > one is simply a rough copy of the other and each is adopted by a
> > different community.
> >
> > "maybe use surface (the most used tag), multiplied by a factor if
> > tracktype or smoothness is set as well?"
> >
> > What if both are present? If we multiply by both factors, the final
> > result would be lower than expected. In that case, at least averaging
> > them would be better (if you're looking for a very simple method).
> >
> > "In essense, take minimium of:
> > - default speed
> > - max speed
> > - surface speed * tracktype or smoothness factor
> > - other things that lower the speed"
> >
> > Makes sense to me.
> >
> > On Mon, Mar 10, 2014 at 3:10 PM, Emil Tin <e...@tin.dk> wrote:
> >> The tags are not used so often together (from
> >> http://taginfo.openstreetmap.org/keys/surface#combinations):
> >>
> >> Surface (8 077 811 occurences) combinations:
> >> 1 087 838 13.47% tracktype
> >> 175 011 2.17% smoothness
> >>
> >> Tracktype combinations:
> >> 46 144 1.44% smoothness
> >>
> >> But if we do want to handle combinations, maybe use surface (the most used
> >> tag), multiplied by a factor if tracktype or smoothness is set as well?
> >>
> >> In essense, take minimium of:
> >> - default speed
> >> - max speed
> >> - surface speed * tracktype or smoothness factor
> >> - other things that lower the speed
> >>
> >>
> >>
> >> On 10 Mar 2014, at 17:30 , Fernando Trebien <fernando.treb...@gmail.com>
> >> wrote:
> >>
> >> For each tag+value combination, we could assign:
> >> - a preference value
> >> - a weight value or a priority value
> >>
> >> When using weights, the final preference value would be a weighed
> >> average of the preference values corresponding to each tag.
> >>
> >> When using priorities, the final preference would be that of the
> >> highest priority tag+value combination.
> >>
> >> Contradictions are an issue, for example:
> >> - tracktype=grade1 + smoothness=very_horrible: is it good or is it bad?
> >> - tracktype=grade5 + surface=asphalt: is it paved or not?
> >> - smoothness=impassable + surface=concrete: maybe the concrete path
> >> was very badly built, or maybe we just had an earthquake
> >>
> >> Weighting would "blur" the contradiction, opting for an average
> >> preference of the conflicting values. The greater the contradiction,
> >> the greater the risk of poor routing decisions.
> >>
> >> A pessimist approach (probably "safer" for the user) is to select the
> >> lowest preference value assigned for tag+value combinations present in
> >> a way. But then, we lose the ability to use one tag as a refinement
> >> for the other (for example: tracktype=grade2/3/4/5 when
> >> smoothness=bad).
> >>
> >> A remedy would be a more complex approach which practically encodes
> >> the class system that I proposed:
> >> - given 3 tag+value combinations, pick the combination with lowest
> >> preference value (let's call this tag A)
> >> - for the remaining 2 combinations, select those that are considered
> >> similar to A (according to some equivalence table) and discard the
> >> others
> >> - if there are 2 left, also pick the one with lowest preference value (tag
> >> B)
> >> - possibly pick tag C if it's similar to both A and B
> >>
> >> The result would be from 1 to 3 tags (A,B,C) from which you'd choose
> >> the one with highest priority. That's the most accurate preference
> >> value within pessimist choices.
> >>
> >> A single classification system would eliminate these problems, and it
> >> can be introduced in the community (not necessarily in OSRM)
> >> simultaneously with a more temporary solution in OSRM using multiple
> >> tags and some sort of contradiction handling. I just wouldn't go ahead
> >> and propose it if there's no interest in adopting such a thing in the
> >> long term.
> >>
> >> On Mon, Mar 10, 2014 at 11:19 AM, Emil Tin <e...@tin.dk> wrote:
> >>
> >>
> >> OSRM focuses on tags that are already in widespread use. From tag info:
> >>
> >> surface  8077811
> >> tracktype  3212051
> >> smoothness  208379
> >>
> >> Even if a new tagging scheme is agreed on (by whom?) it would probably take
> >> quite a while before it's in common use worldwide. So for now I think the
> >> question is how OSRM should handle these 3 tags.
> >>
> >>
> >>
> >> On 10 Mar 2014, at 14:41 , Fernando Trebien <fernando.treb...@gmail.com>
> >> wrote:
> >>
> >> My personal point of view is: they mostly do, but in a needlessly
> >> complicated way. I think you'd be surprised at how far the discussion
> >> went (over 150 messages, many of which were quite long) to reach a
> >> simple agreement: deciding which tags/values to use in order to decide
> >> which roads are possibly in poor state, as to deserve special
> >> rendering. In this agreement, we settled on 3 tags (tracktype,
> >> smoothness and surface) to make such a decision. So it is clear that
> >> the community views the 3 tags as "necessary" for reasonable routing
> >> choices when reading the map visually. Trying to take any of the 3 out
> >> caused strong disagreement from certain people during that discussion.
> >>
> >> I tried to condensate my line of thought below, but it yielded a long
> >> text anyway. To encourage your reading, below is a link to the result
> >> at which I arrived after brainstorming. It establishes similarities
> >> with current tags and associating a subjective level of preference to
> >> each. This level was called "trafficability" during the other debate,
> >> but since then this name may be inadequate (it was used in a tag
> >> proposal).
> >>
> >> http://i.imgur.com/HUoE1iD.png
> >>
> >> In the beginning, I was almost convinced that the "surface" tag would
> >> be sufficient, but as other opinions came in, I was convinced that
> >> some of its values are too imprecise. "surface=unpaved", for instance,
> >> may refer to roads in excellent condition (specially if they'd be
> >> better described as "surface=compacted"), but also to roads likely in
> >> poor state (such as in "surface=dirt").
> >>
> >> The Australian community seems to be recommending the use of
> >> "tracktype" for any road type besides highway=track which is what it
> >> was originally intended for, particularly within the German community.
> >> But then, many people use the "smoothness" tag for very similar
> >> reasons. It's easy to establish some rough correspondence between the
> >> two tags by reading the description of their values. It's easy to
> >> notice that smoothness provides more granularity at the "good" end of
> >> the spectrum (3 values representing the best conditions roughly
> >> correspond to a single value of tracktype) whereas tracktype has
> >> better precision at the other end (all of its other values correspond
> >> to a single value of smoothness).
> >>
> >> At the same time, the Australian community was trying to introduce new
> >> values for "tracktype" that correspond to other values of smoothness
> >> at the "bad" end of the spectrum. If these would not be accepted, they
> >> would pursue a new tag, "4wd_only=yes/no", that would correspond to
> >> those values and would be used for special rendering. Nobody seemed to
> >> be thinking of various transport modes, but some existing tags seemed
> >> to be doing this: mtb:scale for bikes, sac_scale for pedestrians,
> >> wheelchair for disabled people.
> >>
> >> So I thought: "if there was a single tag to represent all of this,
> >> would I be able to associate a level of preference to its values, with
> >> little doubt?" In other words, would the new classification system
> >> leave less, if any, doubts at all? Would it be sufficiently
> >> descriptive? It would in my experience, which includes: driving,
> >> cycling, walking and public transport in Brazil; driving, walking and
> >> public transport in North America; walking and public transport in
> >> Australia/NZ; cycling, walking and public transport in various places
> >> in Europe (England, France, Germany, Netherlands, Austria, Spain). I
> >> tested myself by associating such values comparatively, after having
> >> assigned each of the other tags a "class", producing the result I
> >> provided in the beginning.
> >>
> >> The question that I asked myself was: if I had to travel from A to B
> >> and there were two choices, a 100km-long perfectly flat asphalt road,
> >> and a shortcut with [surface characteristics here], how many km could
> >> this shortcut have at maximum to still look like a better choice?
> >>
> >> This measure would essentially mean a level of preference and directly
> >> translate into a coefficient multiplied to velocity in OSRM and other
> >> routers. Its inverse (1/value) would represent the level of effort.
> >>
> >> The obvious problem with this result: these values are my own opinion.
> >> For a public routing app (such as OSRM), one would have to sample more
> >> opinions, from people of different nations. But this is easier when
> >> you have a single tag than with various tag combinations. A single tag
> >> is also easier to teach and to map (which would encourage more people
> >> to describe the surface). And it solves well the rendering issues. It
> >> seems like a win for all involved sides: app developers, mappers, and
> >> users.
> >>
> >> Another little problem: only for class "5-grade2-pebblestone", I've
> >> forced the value up for thin-wheeled vehicles (bikes and wheelchair).
> >> The change was less than 10%, but still significant. I did this
> >> because I believed it would make more sense to have the preference
> >> curves asymptotically decrease for all vehicle types from one class to
> >> the next. (This actually suggests that thin-wheeled vehicles might
> >> require some slightly different classification system.)
> >>
> >> Of course I am open to suggestions on how these observations can be
> >> synthesized into a simpler tagging system.
> >>
> >> On Wed, Mar 5, 2014 at 5:17 AM, Emil Tin <z...@tmf.kk.dk> wrote:
> >>
> >> DO you mean a new osm tag? Doesn't the existing tags you mention cover
> >> surface quality?
> >>
> >> Med venlig hilsen
> >>
> >> Emil Tin
> >> IT- og Processpecialist
> >> Trafik
> >> _______________________________
> >> KØBENHAVNS KOMMUNE
> >> Teknik- og Miljøforvaltningen
> >> Byens Anvendelse
> >>
> >> Njalsgade 13 Vær. 118
> >> Postboks 380
> >> 2300 København S
> >>
> >> Direkte 2369 5986
> >> Mobil 2369 5986
> >> Email z...@tmf.kk.dk
> >> EAN 5798009493149
> >> -----Oprindelig meddelelse-----
> >> Fra: Fernando Trebien [mailto:fernando.treb...@gmail.com]
> >> Sendt: 28. februar 2014 17:35
> >> Til: Emil Tin
> >> Cc: osrm-talk
> >> Emne: Re: [OSRM-talk] Beginner question: default car profile and
> >> tracktype/smoothness/surface
> >>
> >> Thank you Emil and Hans. I didn't know about the biking profile. Even 
> >> though
> >> I'm a cyclist as well, I've been using the website mostly for car routing,
> >> and that's what OSRM is most known for here in Brazil.
> >>
> >> A while ago, I participated in a debate about making OSM-Carto use a
> >> different visual style to display roads in "worse than usually expected"
> >> state. As the debate developed, I made up a surface classification system
> >> that captures similarities among tags that represent "transit effort"
> >> (tracktype, smoothness, mtb:scale, sac_scale, wheelchair, 4wd_only, and
> >> surface) for various modes of transportation. I wonder if you'd be
> >> interested in something along this line, then I would go ahead and propose
> >> an official tag for it.
> >>
> >> On Fri, Feb 28, 2014 at 5:26 AM, Emil Tin <z...@tmf.kk.dk> wrote:
> >>
> >>
> >>
> >> Surface is already taken into account for bicycles in the OSRM main repo:
> >>
> >> https://github.com/DennisOSRM/Project-OSRM/blob/master/profiles/bicycl
> >> e.lua
> >>
> >> However, instead of multiplying, I found it more realistic to simply use 
> >> the
> >> surface speed, instead of multiplying:
> >>
> >> surface_speeds = {
> >>       ["asphalt"] = default_speed,
> >>       ["cobblestone:flattened"] = 10,
> >>       ["paving_stones"] = 10,
> >>       ["compacted"] = 10,
> >>       ["cobblestone"] = 6,
> >>       ["unpaved"] = 6,
> >>       ["fine_gravel"] = 6,
> >>       ["gravel"] = 6,
> >>       ["fine_gravel"] = 6,
> >>       ["pebbelstone"] = 6,
> >>       ["ground"] = 6,
> >>       ["dirt"] = 6,
> >>       ["earth"] = 6,
> >>       ["grass"] = 6,
> >>       ["mud"] = 3,
> >>       ["sand"] = 3
> >> }
> >>
> >>
> >>   -- surfaces
> >>   if surface then
> >>       surface_speed = surface_speeds[surface]
> >>       if surface_speed then
> >>           if way.speed > 0 then
> >>               way.speed = surface_speed
> >>           end
> >>           if way.backward_speed > 0 then
> >>             way.backward_speed  = surface_speed
> >>           end
> >>       end
> >>   end
> >>
> >> Both approaches might have merit.
> >>
> >>
> >>
> >> Kind regards,
> >>
> >> Emil Tin
> >> IT- and Process Specialist
> >> Traffic Design
> >> ________________________________
> >> CITY OF COPENHAGEN
> >> The Technical and Environmental Administration Traffic Department
> >>
> >> Islands Brygge 37 Vær. 118
> >> Postboks 450
> >> 2300 København S
> >>
> >> Telefon +45 2369 5986
> >> Email z...@tmf.kk.dk
> >> EAN 5798009493149
> >>
> >>
> >> -----Oprindelig meddelelse-----
> >> Fra: Hans Gregers Petersen [mailto:greg...@septima.dk]
> >> Sendt: 28. februar 2014 09:16
> >> Til: osrm-talk@openstreetmap.org
> >> Emne: Re: [OSRM-talk] Beginner question: default car profile and
> >> tracktype/smoothness/surface
> >>
> >> Hi Fernando,
> >>
> >> I've always wondered if there are any plans taking surface
> >> type/quality into account in the default profiles. I live in a
> >> developing country (Brazil) with poorly maintained roads and these
> >> conditions make a big difference at the beginning and at the end of
> >> many routes if ignored.
> >>
> >>
> >> I do not know about the plans regarding the default profile, but I
> >> successfully used a simple "factor approach" to surfaces when doing our
> >> routing on bicycle paths here in Denmark.
> >> For instance setting the following in the LUA profile:
> >>
> >> -- How much does speed depreciate by surface surface_factors = {
> >> ["unpaved"] = 0.8, ["gravel"] = 0.8, ["cobblestone"] = 0.8, ["dirt"] =
> >> 0.8, ["earth"] = 0.8, ["sand"] = 0.8, ["cobblestone:flattened"] = 0.9,
> >> ["compacted"] = 0.9, ["fine_gravel"] = 0.9, ["wood"] = 0.9 }
> >>
> >> and then later adjuste the speed accordingly:
> >>
> >> -- Surface tag
> >> local surfacetag = way.tags:Find("surface")
> >>
> >> -- Surface factor
> >> if surface_factors[surfacetag] then
> >> way.speed = way.speed * surface_factors[surfacetag] way.backward_speed
> >> = way.backward_speed * surface_factors[surfacetag] end
> >>
> >>
> >>
> >> Best regards,
> >>
> >> Greg
> >>
> >>
> >>
> >> Hans Gregers Petersen
> >> Partner, Senior Consultant
> >> www.septima.dk
> >>
> >> _______________________________________________
> >> OSRM-talk mailing list
> >> OSRM-talk@openstreetmap.org
> >> https://lists.openstreetmap.org/listinfo/osrm-talk
> >>
> >> _______________________________________________
> >> OSRM-talk mailing list
> >> OSRM-talk@openstreetmap.org
> >> https://lists.openstreetmap.org/listinfo/osrm-talk
> >>
> >>
> >>
> >>
> >> --
> >> Fernando Trebien
> >> +55 (51) 9962-5409
> >>
> >> "The speed of computer chips doubles every 18 months." (Moore's law)
> >> "The speed of software halves every 18 months." (Gates' law)
> >>
> >> _______________________________________________
> >> OSRM-talk mailing list
> >> OSRM-talk@openstreetmap.org
> >> https://lists.openstreetmap.org/listinfo/osrm-talk
> >>
> >>
> >>
> >>
> >> --
> >> Fernando Trebien
> >> +55 (51) 9962-5409
> >>
> >> "The speed of computer chips doubles every 18 months." (Moore's law)
> >> "The speed of software halves every 18 months." (Gates' law)
> >>
> >> _______________________________________________
> >> OSRM-talk mailing list
> >> OSRM-talk@openstreetmap.org
> >> https://lists.openstreetmap.org/listinfo/osrm-talk
> >>
> >>
> >>
> >> _______________________________________________
> >> OSRM-talk mailing list
> >> OSRM-talk@openstreetmap.org
> >> https://lists.openstreetmap.org/listinfo/osrm-talk
> >>
> >>
> >>
> >>
> >> --
> >> Fernando Trebien
> >> +55 (51) 9962-5409
> >>
> >> "The speed of computer chips doubles every 18 months." (Moore's law)
> >> "The speed of software halves every 18 months." (Gates' law)
> >>
> >>
> >>
> >> _______________________________________________
> >> OSRM-talk mailing list
> >> OSRM-talk@openstreetmap.org
> >> https://lists.openstreetmap.org/listinfo/osrm-talk
> >>
> >
> >
> >
> > --
> > Fernando Trebien
> > +55 (51) 9962-5409
> >
> > "The speed of computer chips doubles every 18 months." (Moore's law)
> > "The speed of software halves every 18 months." (Gates' law)
> 
> 
> 
> -- 
> Fernando Trebien
> +55 (51) 9962-5409
> 
> "The speed of computer chips doubles every 18 months." (Moore's law)
> "The speed of software halves every 18 months." (Gates' law)
> 
> _______________________________________________
> OSRM-talk mailing list
> OSRM-talk@openstreetmap.org
> https://lists.openstreetmap.org/listinfo/osrm-talk

-- 
michal palenik
www.freemap.sk
www.oma.sk

_______________________________________________
OSRM-talk mailing list
OSRM-talk@openstreetmap.org
https://lists.openstreetmap.org/listinfo/osrm-talk

Reply via email to