<div dir="ltr">Hi everybody,<div style>thank you very much for the work you are doing with pgrouting. I can't wait for the upcoming 2.0.</div><div style><br></div><div style>My experience with the wrapper functions is fairly identical to Worth Lutz:</div>

<div style>I'm also using one of the 'smart' wrapper functions that enable edge to edge with the A* algorithm. I also chose just because <span style="font-size:13px;font-family:arial,sans-serif">the wrapper let me choose a point and it split the </span><span style="font-size:13px;font-family:arial,sans-serif">nearest edge for routing. </span><span style="font-size:13px;font-family:arial,sans-serif">I heavily modified the wrapper to provide all the fields I need from the edges table, to join it with other tables, to return the edges in the correct order and to reverse the two-way edges that were used in the opposite direction.</span></div>

<div><font face="arial, sans-serif">I also thank you for the suggestion to look into TRSP, I've been wanting to reevaluate the different algorithms once the GSOC get merged (if they will), and TRSP seems like a good match, even if I don't actually use turn restrictions. (OT: Any idea on the performance in relation to bidirectional A* and two_q?</font><span style="font-family:arial,sans-serif">)</span></div>

<div><span style="font-family:arial,sans-serif"><br></span></div><div style><span style="font-family:arial,sans-serif">I also learned what I know of </span><span style="font-family:arial,sans-serif;font-size:13px">PL/pgSQL by modifying the wrappers and I would have had a really hard time implementing the 'edge splitting' on my own. So I'm really grateful I found the wrappers. On the other hand the wrapper I used wasn't even included in pgrouting, so I guess we'd be safe to have them outside the distribution, either in the docs or as an external download.</span></div>

<div style><span style="font-family:arial,sans-serif;font-size:13px">On the other hand it would be great to have some solutions for the fairly common request to have the result of the routing returned with a 'order_id' to be able to join it easily without losing order information (see </span><a href="http://lists.osgeo.org/pipermail/pgrouting-dev/2013-May/000924.html">http://lists.osgeo.org/pipermail/pgrouting-dev/2013-May/000924.html</a>) and to reverse the edges that have been visited in reverse (to be able to draw them, etc.). I don't know where this fits best, if in a basic wrapper to be customized, or in the core functions themselves.</div>

<div style><br></div><div style>Thanks again for you work.</div><div style><br></div><div style>Marco Quaggiotto (<a href="http://bikedistrict.org">bikedistrict.org</a>)</div><div style><br></div><div style><br></div><div>

<div><span style="font-family:arial,sans-serif;font-size:13px"> </span></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, May 12, 2013 at 3:41 PM, Stephen Woodbridge <span dir="ltr"><<a href="mailto:woodbri@swoodbridge.com" target="_blank">woodbri@swoodbridge.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Worth,<br>
<br>
Thanks, this is good to know and validates our thoughts on the need for a chapter in the doc on how to write wrapper functions.<br>
<br>
I write a lot code in plpgsql for the same reasons. It also tends to be much faster to process stuff in the database. I write trivial 10-20 lines PHP scripts the do nothing more than:<br>
<br>
1. take user input<br>
2. connect to the database<br>
3. issue a query to a stored procedure<br>
4. format the results as XML or JSON<br>
<br>
to then access these functions from web clients and other client scripts and programs.<br>
<br>
We actually will be adding some new plpgsql function as part of 2.0 for example you might find these interesting:<br>
<br>
pgr_analyzeGraph    - analyze a topology and mark dead ends<br>
pgr_analyzeOneway   - analyze a topology and look for impossible oneways<br>
pgr_nodeNetwork     - utility that will node all intersections<br>
<br>
Those can be useful determining issues with a road network that might cause problems when routing and nodeNetwork is a tool to potentally solve one class of problem where the road segments are not split at intersections.<br>


<br>
pgr_isColumnInTable - utility to see if a column exists in a table<br>
pgr_isColumnIndexed - utility to see if a column is indexed<br>
<br>
And I'm sure there will be a few others as the release progresses.<br>
<br>
Thanks,<br>
  -Steve<div class="HOEnZb"><div class="h5"><br>
<br>
On 5/12/2013 7:52 AM, Worth Lutz wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Steve,<br>
<br>
Thanks for the suggestion on TSRP. I'll look at it as soon as I finish my<br>
current project.<br>
<br>
I'll like to add that I learned to write PL/pgSQl from reading the pgRouting<br>
wrappers. I usually write in PHP but find that moving stuff to SQL and<br>
PL/pgSQl can simplify my application. At least once I figure out the<br>
intricacies of the particular query.<br>
<br>
Having the wrapper examples is helpful to someone learning. I found that you<br>
have to figure out how they work though because as you pointed out there<br>
were problems and hard-coded stuff which may cause problems.  I had a type<br>
problem when I was figuring out my application.<br>
<br>
Simple wrappers as examples to explain to someone how to set up their own<br>
wrapper are helpful.<br>
<br>
Worth<br>
<br>
-----Original Message-----<br>
From: <a href="mailto:pgrouting-dev-bounces@lists.osgeo.org" target="_blank">pgrouting-dev-bounces@lists.<u></u>osgeo.org</a><br>
[mailto:<a href="mailto:pgrouting-dev-bounces@lists.osgeo.org" target="_blank">pgrouting-dev-bounces@<u></u>lists.osgeo.org</a>] On Behalf Of Stephen<br>
Woodbridge<br>
Sent: Saturday, May 11, 2013 10:00 PM<br>
To: pgRouting developers mailing list<br>
Subject: Re: [pgrouting-dev] How many people use the wrapper functions?<br>
<br>
Hi Worth,<br>
<br>
Thank you for the feedback. It is really important the people speak up<br>
on this because our current thinking is that we will probably take most<br>
of the wrapper functions and dump them into a depreciated<br>
pgrouting-legacy.sql file that will get copied to the server, but not<br>
installed when you CREATE EXTENSION pgrouting;<br>
<br>
I have talked with Daniel about improving the documentation and may be<br>
adding a chapter that explains how to write your own wrapper function.<br>
Our thought is that if we had fewer functions that were better<br>
documented that it would be easier for people to make sense of how to<br>
use from the beginning.<br>
<br>
Regarding shooting star, you should just start using TRSP. In fact it<br>
has the ability to specify an edge and a percentage along the edge for<br>
the start and end locations. It also about 5 times faster than shooting<br>
start.<br>
<br>
With regards to the parallel edge problem. We have this in dijkstra and<br>
astar and it is on my list of things to fix before the release. I am not<br>
sure if trsp has this or not, but if you can make a test for it I would<br>
be interested in the results.<br>
<br>
Thanks,<br>
    -Steve<br>
<br>
On 5/11/2013 7:51 PM, Worth Lutz wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Steve,<br>
<br>
I used one of the wrappers, shootingstar_sp_smart I think, but had to<br>
</blockquote>
modify<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
it due to problems. I think that it is the one which uses shooting star<br>
which I've since heard doesn't work.<br>
<br>
I think that it works for us as all we are using is length as cost to find<br>
the length from a to b. No turn restrictions or anything.<br>
<br>
I chose it because the wrapper let me choose a point and it split the<br>
nearest edge and hooked up the point to that edge at the split.<br>
<br>
Another reason I chose it was that it worked for the following situation:<br>
<br>
            ----------\<br>
           /           \<br>
          /             \<br>
A -----/               B<br>
|_____________________/<br>
<br>
<br>
Other algorithms would choose the upper edge because that is what was<br>
</blockquote>
found<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
first as they tried to go from A to B. I was just learning about routing<br>
</blockquote>
and<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
did not want to go figure out how to modify my network to split the long<br>
path where there were multiple paths between nodes.<br>
<br>
I've been following your work lately as I will be upgrading our situation<br>
</blockquote>
to<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Postgres 9 and PostGIS 2 at some point. I was waiting for you to get<br>
</blockquote>
things<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
settled out before asking which algorithm I should look at to replace<br>
shootingstar.<br>
<br>
Thanks for your work on this project.<br>
<br>
Worth Lutz<br>
<br>
<br>
-----Original Message-----<br>
From: <a href="mailto:pgrouting-dev-bounces@lists.osgeo.org" target="_blank">pgrouting-dev-bounces@lists.<u></u>osgeo.org</a><br>
[mailto:<a href="mailto:pgrouting-dev-bounces@lists.osgeo.org" target="_blank">pgrouting-dev-bounces@<u></u>lists.osgeo.org</a>] On Behalf Of Stephen<br>
Woodbridge<br>
Sent: Saturday, May 11, 2013 4:21 PM<br>
To: pgRouting Users List; pgRouting Dev List<br>
Subject: [pgrouting-dev] How many people use the wrapper functions?<br>
<br>
Hi all,<br>
<br>
Daniel and I have been wondering if people use the wrapper function<br>
versus the core functions directly? Or if you have written your own<br>
wrapper functions? etc.<br>
<br>
The core functions are the low level function that directly call the<br>
internal library functions.<br>
<br>
The wrapper functions are all the additional plpgsql convenience<br>
functions that generate more complex SQL queries and then call the core<br>
functions.<br>
<br>
I know that I never use the wrapper functions because I found them to<br>
messy and inconsistent and have hard coded values in them, etc. So I<br>
wrote my own high level wrapper functions that made it easy for me to<br>
work with the core functions.<br>
<br>
So I thought it would be wise to ask our users what they use? and how<br>
they use pgRouting, so we do not may a decision like "Throw out the<br>
wrapper functions" without some input from the user community.<br>
<br>
PLEASE TAKE ACTION and let us know!<br>
<br>
Thanks,<br>
     -Steve<br>
______________________________<u></u>_________________<br>
pgrouting-dev mailing list<br>
<a href="mailto:pgrouting-dev@lists.osgeo.org" target="_blank">pgrouting-dev@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/pgrouting-dev" target="_blank">http://lists.osgeo.org/<u></u>mailman/listinfo/pgrouting-dev</a><br>
-----<br>
No virus found in this message.<br>
Checked by AVG - <a href="http://www.avg.com" target="_blank">www.avg.com</a><br>
Version: 2013.0.3336 / Virus Database: 3162/6317 - Release Date: 05/11/13<br>
<br>
______________________________<u></u>_________________<br>
pgrouting-dev mailing list<br>
<a href="mailto:pgrouting-dev@lists.osgeo.org" target="_blank">pgrouting-dev@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/pgrouting-dev" target="_blank">http://lists.osgeo.org/<u></u>mailman/listinfo/pgrouting-dev</a><br>
<br>
</blockquote>
<br>
______________________________<u></u>_________________<br>
pgrouting-dev mailing list<br>
<a href="mailto:pgrouting-dev@lists.osgeo.org" target="_blank">pgrouting-dev@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/pgrouting-dev" target="_blank">http://lists.osgeo.org/<u></u>mailman/listinfo/pgrouting-dev</a><br>
-----<br>
No virus found in this message.<br>
Checked by AVG - <a href="http://www.avg.com" target="_blank">www.avg.com</a><br>
Version: 2013.0.3336 / Virus Database: 3162/6317 - Release Date: 05/11/13<br>
<br>
______________________________<u></u>_________________<br>
pgrouting-dev mailing list<br>
<a href="mailto:pgrouting-dev@lists.osgeo.org" target="_blank">pgrouting-dev@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/pgrouting-dev" target="_blank">http://lists.osgeo.org/<u></u>mailman/listinfo/pgrouting-dev</a><br>
<br>
</blockquote>
<br>
______________________________<u></u>_________________<br>
pgrouting-dev mailing list<br>
<a href="mailto:pgrouting-dev@lists.osgeo.org" target="_blank">pgrouting-dev@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/pgrouting-dev" target="_blank">http://lists.osgeo.org/<u></u>mailman/listinfo/pgrouting-dev</a><br>
</div></div></blockquote></div><br></div>