<br><br><div class="gmail_quote">On Tue, Jan 10, 2012 at 10:26 AM, Steve Horn <span dir="ltr">&lt;steve@stevehorn.cc&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
&gt; Hello all!<br>
&gt;<br>
&gt; I am creating drive time radii (or isochrones) by allowing the user to<br>
&gt; click on a map surface and entering a number of minutes.<br>
&gt;<br>
&gt; Using the driving_distance function in pgrouting I am able to get very<br>
&gt; close to a good solution, but it is somewhat limited in that you can<br>
&gt; only route from node to node (vertex to vertex). In order to improve the<br>
&gt; accuracy, I thought I would try to insert a new node/vertex as close as<br>
&gt; possible to the coordinates that my user clicked. That way my start node<br>
&gt; would always be as accurate as it can be.<br>
&gt;<br>
&gt; Has anyone done this? I&#39;m not sure I understand the assign_vertex_id<br>
&gt; function and how the graph is constructed well enough to come up with a<br>
&gt; solution myself.<br>
&gt;<br>
&gt; Any help or direction is appreciated!<br>
<br>
What you would want to do in this case is:<br>
<br>
1. take you position and find the nearest edge to that location (EID,<br>
ESOURCE, ETARGET, ECOST, EREVERSE_COST)<br>
2. compute the ratio of distance along that edge (RATIO)<br>
3. then add a create a temporary node at that location (NEWNODE)<br>
4. then add edges from the temp node to each of the end points to that<br>
edge, paying attention to oneway-ness of that edge and assigning costs<br>
as a ratio of the original cost.<br>
<br>
So select edges for your query might look like and you would pass<br>
NEWNODE as the starting node.<br>
<br>
select gid, source, target, cost, reverse_cost from roads<br>
union all<br>
select maxgid+1, ESOURCE, NEWNODE, ECOST*RATIO, EREVERSE_COST*(1-RATIO)<br>
union all<br>
select maxgid+2, NEWNODE, ETARGET, ECOST*(1-RATIO), EREVERSE_COST*RATIO<br>
<br>
-Steve<br>
<br></blockquote><div><br></div><div>I get lost on your 3rd step: &quot;Create a temporary node&quot;</div><div>How do you insert just a node? The &quot;roads&quot; table is made up of edges, so wouldn&#39;t I need to insert an edge?</div>

</div></blockquote><div><br></div><div><br></div><div>You &quot;create&quot; a node, that you know the &quot;source&quot; and &quot;target&quot; ID of the edge. This ID may not exist yet.</div><div><br></div><div>Daniel</div>

</div><br clear="all"><div><br></div>-- <br><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse">Georepublic UG &amp; Georepublic Japan<br>eMail: <a href="mailto:daniel.kastl@georepublic.de" style="color:rgb(66,99,171)" target="_blank">daniel.kastl@georepublic.de</a><br>

Web: <a href="http://georepublic.de/" style="color:rgb(66,99,171)" target="_blank">http://georepublic.de</a></span><br>