
Ah, thanks a lot, Gerd. And I think I got it: + for (Coord c3 : w.getPoints()) { + if (c1 != null && c2 != null) { + angle += Utils.getAngle(c1, c2, c3); + } + c1 = c2; + c2 = c3; + } The simple addition of angle values cannot work. It needs a) an absolute abs() value. For curviness in its meaning, it does not matter into which direction (left or right turn) the way bends b) a correction for angles that are almost, or alternating around north-south direction due to the fact that a change from 359 degrees to 2 degrees is not a full 357 degreees turn, but a very slight turn. (or, a correction for east-west roads, depending on where the transition from + to - of the Utils.getAngle() function currently is) For both, after several tests I have found a solution which works well, please see my first mail. But I don't know ow the getAngle function works, where the +- transition is. I think we'll wait till WanMil has more time. I don't want to pull more and more people into that. Cheers Manfred
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@.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@.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/prod13827... >> 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@.org
>> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev >> > > _______________________________________________ > mkgmap-dev mailing list >
mkgmap-dev@.org
> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev _______________________________________________ mkgmap-dev mailing list
mkgmap-dev@.org
_______________________________________________ mkgmap-dev mailing list
mkgmap-dev@.org
mkgmap-dev mailing list
mkgmap-dev@.org
_______________________________________________ mkgmap-dev mailing list
mkgmap-dev@.org
mkgmap-dev mailing list
mkgmap-dev@.org
-- View this message in context: http://gis.19327.n5.nabble.com/Curvy-routing-support-new-function-tp5810044p... Sent from the Mkgmap Development mailing list archive at Nabble.com. _______________________________________________ mkgmap-dev mailing list mkgmap-dev@lists.mkgmap.org.uk http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev