logo separator

[mkgmap-dev] Curvy routing support: new function?

From GerdP gpetermann_muenchen at hotmail.com on Fri Aug 1 17:14:43 BST 2014

Hi Manfred,

it seems you did not notice the patch which was attached in WanMils 1st
post:
http://gis.19327.n5.nabble.com/attachment/5810047/0/curviness_v1.patch

Gerd


Manfred Brenneisen-2 wrote
> Hi WanMil,
> 
> sorry I did not want to create pressure - it's holiday time :-)
> Just thought it drowned below noise level
> 
> If I can help by looking at the source code, please let me know
> 
> Cheers
> Manfred
> 
>> Hi Manfred,
>> 
>> I do not have time to have a look on it within the next weeks. So please 
>> help yourself or wait... Sorry :-)
>> 
>> WanMil
>> 
>> > Hi WanMil,
>> >
>> > unfortunately the curviness() function does not work as expected yet. I
>> can try to help to analyse it, may I have a look at the source code
>> anywhere? The function alone would be enough
>> >
>> > Thanks and cheers
>> > Manfred
>> >
>> >
>> > PS: please find detailed analysis in my mail from July 3
>> >
>> >
>> >> Gesendet: Donnerstag, 03. Juli 2014 um 20:49 Uhr
>> >> Von: WanMil <

> wmgcnfg@

> >
>> >> An: "Development list for mkgmap" <

> mkgmap-dev at .org

> >
>> >> Betreff: Re: [mkgmap-dev] Curvy routing support: new function?
>> >>
>> >> I forgot to clean before build...
>> >> Here is the new version: http://files.mkgmap.org.uk/detail/216
>> >>
>> >>> Hi WanMil,
>> >>>
>> >>> you are very fast, thank you very much for this!
>> >>> However I'm facing some expectations, log:
>> >>> java.lang.NoSuchMethodError:
>> uk.me.parabola.mkgmap.reader.osm.Way.deleteTag(Ljav
>> >>> a/lang/String;)V
>> >>>           at
>> uk.me.parabola.mkgmap.reader.osm.MultiPolygonFinishHook.end(MultiPoly
>> >>> gonFinishHook.java:50)
>> >>>           at
>> uk.me.parabola.mkgmap.reader.osm.OsmReadingHooksChain.end(OsmReadingH
>> >>> ooksChain.java:79)
>> >>>           at
>> uk.me.parabola.mkgmap.reader.osm.o5m.O5mBinMapDataSource.load(O5mBinM
>> >>> apDataSource.java:49)
>> >>>           at
>> uk.me.parabola.mkgmap.reader.osm.OsmMapDataSource.load(OsmMapDataSour
>> >>> ce.java:127)
>> >>>           at
>> uk.me.parabola.mkgmap.main.MapMaker.loadFromFile(MapMaker.java:167)
>> >>>           at
>> uk.me.parabola.mkgmap.main.MapMaker.makeMap(MapMaker.java:63)
>> >>>           at uk.me.parabola.mkgmap.main.Main$1.call(Main.java:253)
>> >>>           at uk.me.parabola.mkgmap.main.Main$1.call(Main.java:249)
>> >>>           at java.util.concurrent.FutureTask$Sync.innerRun(Unknown
>> Source)
>> >>>           at java.util.concurrent.FutureTask.run(Unknown Source)
>> >>>           at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
>> >>>           at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>> >>>           at java.lang.Thread.run(Unknown Source)
>> >>>
>> >>> (I have installed r3310 which works ok, and then replaced mkgmap.jar
>> by your build)
>> >>>
>> >>> I'm open to any suggestions for other logic. A curviness function can
>> only be a virtual value, not physical. However it may probably sufficient
>> to say, curviness=length()/distance(first_point, last_point)? May be I'm
>> thinking too complex :-)
>> >>>
>> >>> Cheers
>> >>> Manfred
>> >>>
>> >>>
>> >>>
>> >>>> Gesendet: Dienstag, 01. Juli 2014 um 22:32 Uhr
>> >>>> Von: WanMil <

> wmgcnfg@

> >
>> >>>> An: "Development list for mkgmap" <

> mkgmap-dev at .org

> >
>> >>>> Betreff: Re: [mkgmap-dev] Curvy routing support: new function?
>> >>>>
>> >>>> Hi,
>> >>>>
>> >>>> I remember that it is on my Todo-List :-)
>> >>>>
>> >>>> So I performed a quick implementation following your suggestion. You
>> can
>> >>>> find in the attached patch so that you can play a little bit with
>> it.
>> >>>> (Attention: it is completely untested!!)
>> >>>> You can find a patched mkgmap.jar at
>> http://files.mkgmap.org.uk/detail/215.
>> >>>>
>> >>>> I think curviness should to be defined in a different way.
>> >>>> 1. Calculate the distance of each point Dmiddle to the virtual line
>> from
>> >>>> first to the last point.
>> >>>> 2. curviness()=standard mean(Dmiddle/(length to next point + length
>> to
>> >>>> previous point)
>> >>>>
>> >>>> I think this gives a better indication how curviness a road is. But
>> it
>> >>>> need to be implemented and tested later on :-)
>> >>>>
>> >>>> WanMil
>> >>>>
>> >>>>> Hi all,
>> >>>>>
>> >>>>> Garmin offers "curvy roads" preferences for their zümo 390 and 590
>> devices.
>> >>>>>
>> https://buy.garmin.com/en-US/US/on-the-road/motorcycles/zumo-390lm/prod138275.html
>> >>>>> I'm thinking about creating motorcycle maps for old 200 series.
>> >>>>> Might it be useful to integrate a curviness() function so that
>> mkgmap can optimize for curvy roads too? It might also help do determine
>> a better default speed for curvy roads for use with car routing.
>> >>>>>
>> >>>>> The curviness() value might be the overall absolute turning angle
>> (in degrees) of a road segment divided by the segment's length.
>> >>>>>
>> >>>>> What's your opinion?
>> >>>>>
>> >>>>> Cheers
>> >>>>> Manfred
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> Pseudo code might look like this:
>> >>>>>
>> >>>>> function curviness()
>> >>>>> {
>> >>>>> oldpoint=points(0)
>> >>>>> foreach (point of a way segment as newpoint)
>> >>>>>      {
>> >>>>>     
>> d_x=(newpoint.x-oldpoint.x)/360*40000000*COS(newpoint.x*PI()/180) //in
>> meters
>> >>>>>      d_y=(newpoint.y-oldpoint.y)/360*40000000 //in meters
>> >>>>>      length+=sqrt(d_x**2+d_y**2)
>> >>>>>      angle=arctan(d_y/d_x)
>> >>>>>      d_angle=abs(angle-old_angle)
>> >>>>>      sgn_x=sgn(d_x)
>> >>>>>      sgn_y=sgn(d_y)
>> >>>>>      if ((sgn_x*sgn_y*old_sgn_x*old_sgn_y)=-1 &&
>> (sgn_x!=old_sgn_x))  d_angle=pi-d_angle  // 180 degrees correction,
>> otherwise north-south roads show strange results
>> >>>>>      if (point>1) sum_angle+=d_angle
>> >>>>>      old_angle=angle
>> >>>>>      oldpoint=newpoint
>> >>>>>      old_sgn_x=sgn_x
>> >>>>>      old_sgn_y=sgn_y
>> >>>>>      }
>> >>>>> return sum_angle/length
>> >>>>> }
>> >>>>>
>> >>>>> // perhaps simple multiplication is faster than 4 times sgn()
>> functions?
>> >>>>> _______________________________________________
>> >>>>> mkgmap-dev mailing list
>> >>>>> 

> mkgmap-dev at .org

>> >>>>> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
>> >>>>>
>> >>>>
>> >>>> _______________________________________________
>> >>>> mkgmap-dev mailing list
>> >>>> 

> mkgmap-dev at .org

>> >>>> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
>> >>> _______________________________________________
>> >>> mkgmap-dev mailing list
>> >>> 

> mkgmap-dev at .org

>> >>> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
>> >>>
>> >>
>> >> _______________________________________________
>> >> mkgmap-dev mailing list
>> >> 

> mkgmap-dev at .org

>> >> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
>> > _______________________________________________
>> > mkgmap-dev mailing list
>> > 

> mkgmap-dev at .org

>> > http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
>> >
>> 
>> _______________________________________________
>> mkgmap-dev mailing list
>> 

> mkgmap-dev at .org

>> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
> _______________________________________________
> mkgmap-dev mailing list

> mkgmap-dev at .org

> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev





--
View this message in context: http://gis.19327.n5.nabble.com/Curvy-routing-support-new-function-tp5810044p5813421.html
Sent from the Mkgmap Development mailing list archive at Nabble.com.


More information about the mkgmap-dev mailing list