<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="Content-Type">
  <title></title>
</head>
<body text="#000000" bgcolor="#ffffff">
Hi Niko,<br>
<br>
thanks for the patch, great work :-)<br>
<br>
On 31.07.2010 10:42, Niko Sams wrote:
<blockquote
 cite="mid:AANLkTinPgOp1Ac+9n0WbyabE=owh-CSdx1ssvF49_PfZ@mail.gmail.com"
 type="cite">
  <pre wrap="">Hi,

I started writing a router plugin using routino[1], basically it's just
copying the gosmore plugin and adapting a few things.
My motivation behind this is that routino allows defining custom profiles
in an xml file, so I can use my own bicycle specific profiles.
Please review the attached code.

  </pre>
</blockquote>
Looks good, only needs some coding style adjustments.<br>
<br>
<blockquote
 cite="mid:AANLkTinPgOp1Ac+9n0WbyabE=owh-CSdx1ssvF49_PfZ@mail.gmail.com"
 type="cite">
  <pre wrap="">Usage:
copy generated nodes.mem, segments.mem, ways.mem and profiles.xml,into
~/.local/share/marble/maps/earth/routino and make the router binary callable in
PATH trough routino-router.

  </pre>
</blockquote>
Tried it, worked out of the box. Routino seems to be a bit faster than
gosmore (using the same osm data origin).<br>
<br>
<blockquote
 cite="mid:AANLkTinPgOp1Ac+9n0WbyabE=owh-CSdx1ssvF49_PfZ@mail.gmail.com"
 type="cite">
  <pre wrap="">One issue I have now is that with the current interface is that it's
not possible to have
router dependent settings. Like the custom profiles I'd like to
support for routino.
Any ideas how this could be solved?
  </pre>
</blockquote>
I plan to keep the current (user) interface pretty clean: Some
important preferences should be changeable immediately (e.g. major
transport types like it is now). More complex settings (e.g. speed
mappings or seldomly used transport types) should go to a plugin
specific config dialog.<br>
<br>
For routino, you could extend the code like this to support the
currently available transport types and preferences:<br>
<br>
switch( route-&gt;routePreference() ) {<br>
case RouteSkeleton::CarFastest:<br>
&nbsp;&nbsp;&nbsp; params &lt;&lt; "--transport=motorcar";<br>
&nbsp;&nbsp;&nbsp; break;<br>
case RouteSkeleton::CarShortest:<br>
&nbsp;&nbsp;&nbsp; params &lt;&lt; "--transport=motorcar";<br>
&nbsp;&nbsp;&nbsp; params &lt;&lt; "--shortest";<br>
&nbsp;&nbsp;&nbsp; break;<br>
case RouteSkeleton::Bicycle:<br>
&nbsp;&nbsp;&nbsp; params &lt;&lt; "--transport=bicycle";<br>
&nbsp;&nbsp;&nbsp; break;<br>
case RouteSkeleton::Pedestrian:<br>
&nbsp;&nbsp;&nbsp; params &lt;&lt; "--transport=foot";<br>
&nbsp;&nbsp;&nbsp; break;<br>
}<br>
<br>
if ( route-&gt;avoidFeatures() &amp; RouteSkeleton::AvoidHighway ) {<br>
&nbsp;&nbsp;&nbsp; params &lt;&lt; "--highway-motorway=0";<br>
}<br>
<br>
GeoDataLineString* wayPoints = d-&gt;retrieveWaypoints( params );<br>
<br>
The last line shows the entry point to the current code.<br>
<br>
Currently runner plugins can not show a settings dialog in Marble, but
I plan to extend that in the near future. With that implemented, you
could add a settings dialog for the routino plugin where the user can
select mappings between transport types and routino profiles. You might
even add a UI to customize the speed mappings and other preferences
there.<br>
<br>
I had a look at the routino output and was pleasantly surprised by the
amount of information it delivers. There are no direct turn
instructions, but enough information to calculate them. Actually the
problem is very similar to generating turn instructions from gosmore
instructions, which is implemented in [2]. I think I'll incorporate
that in Marble and generalize it such that it can calculate turn
instructions from routino as well. Moving the code into Marble would
also mean free translations, which is a big plus.<br>
<br>
To sum it up, I'd like to<br>
&nbsp; - (1) add your patch with the extension above to Marble<br>
&nbsp; - (2) extend the Marble plugin interface to support configuration
dialogs for all type of plugins<br>
&nbsp; - (3) incorporate gosmore-instructions into Marble to get
translations and be able to use it without adding a dependency<br>
&nbsp; - (4) use it to generate turn instructions for both gosmore and
routino output.<br>
&nbsp;<br>
With (2) done you could work on a settings dialog for the routino
plugin that supports the kind of customization you are looking for.
Sounds like a good plan to me, do you agree? ;-)<br>
<br>
Regards,<br>
Dennis<br>
<br>
[2] <a class="moz-txt-link-freetext" href="http://gitorious.org/gosmore-instructions">http://gitorious.org/gosmore-instructions</a> <br>
<br>
<blockquote
 cite="mid:AANLkTinPgOp1Ac+9n0WbyabE=owh-CSdx1ssvF49_PfZ@mail.gmail.com"
 type="cite">
  <pre wrap="">
Niko

[1] <a class="moz-txt-link-freetext" href="http://www.routino.org/">http://www.routino.org/</a>
  </pre>
  <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
Marble-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Marble-devel@kde.org">Marble-devel@kde.org</a>
<a class="moz-txt-link-freetext" href="https://mail.kde.org/mailman/listinfo/marble-devel">https://mail.kde.org/mailman/listinfo/marble-devel</a>
  </pre>
</blockquote>
<br>
</body>
</html>