<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Hello Jeremiah<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">suppose the following line segment where 2 is a barrier<br>+------+------+<br>1        2       3<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Add an extra node<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">+------<>------+<br>1        2       3<br></div></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">          4<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">s= source</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">t = target</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">c = cost</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">rc = reverse cost</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">b = barrier</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">The table needed when barrier is open is<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">s t   c  rc b<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">1 2  1 1   f<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">2 4  0 0   t<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">4 3  1 1   f<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">The table needed when barrier is close is<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">s t   c  rc b<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">1 2  1  1  f<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">4 3  1  1  f<br></div></div><div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default"></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">so you need an if statement (pseudocode of what the edges would be)<br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">if  barrier is open then</div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">SELECT * FROM edge_table</div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">else<br>SELECT * FROM edge_table WHERE  b = false<br><br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">Note that, for (most) pgRouting algorithms the geometries are irrelevant.</div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">The process "add extra node" might require geometry operations, that is done with PostGIS.<br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default"><br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">regards</div><br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Feb 10, 2020 at 9:12 AM Stephen Woodbridge <<a href="mailto:stephenwoodbridge37@gmail.com">stephenwoodbridge37@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 2/10/2020 9:53 AM, Feranmi Jeremiah Olowe wrote:<br>
><br>
> Dear Sir,<br>
><br>
> I hope this mail meets you well. My name is Jeremiah, a master’s <br>
> student in Universidade NOVA de Lisboa, Information Management <br>
> School(IMS) currently enrolled in Geospatial Technologies.  I came <br>
> across your guidance on PGrouting for barriers, which has led me to <br>
> seek your assistance and tutelage on how to solve this kind of problem <br>
> for my project.<br>
><br>
> We are trying to find a way on how we can generate an SQL code to make <br>
> our routing network recognize barriers based on the fact that we have <br>
> uploaded the network with source, target, cost , reverse cost, <br>
> coordinate field or column. We are hoping you can give us ideas on the <br>
> algorithm that can help us make the network recognize barriers. Thank <br>
> you Sir for your time and anticipated response.<br>
><br>
> Best Regards,<br>
><br>
> Jeremiah.<br>
><br>
Hi Jeremiah,<br>
<br>
I recommend you contacting the<br>
<br>
<a href="mailto:pgrouting-users@lists.osgeo.org" target="_blank">pgrouting-users@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/pgrouting-users" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/pgrouting-users</a><br>
<br>
for questions on prgrouting as there are lots of experts there and <br>
responses will help other users with same or similar issues.<br>
<br>
To your question, barriers are just breaks in the network if you have <br>
two road segments like AA and BB and a barrier (B):<br>
<br>
o-----AA------o(B)o-----BB-------o<br>
<br>
So if you remove the segments touching AA and BB then that effectively <br>
prevents routing though the barriers.<br>
<br>
If you have a network in say a "roads" table and your barriers in a <br>
"barriers" then the sql would be something like:<br>
<br>
Select r.*<br>
  from roads r, barriers b<br>
where not r.geom && st_expand(b.geom, tol);<br>
<br>
set the value of tol to a small number relative to the size of the road <br>
segments to enlarge the bbox of the barrier point in intersect with the <br>
road segments.<br>
<br>
Other people might have other ideas. For example if each barrier point <br>
coincides with an edge vertex, you could assign vertex id to the barrier <br>
point and then use a where statements like:<br>
<br>
where b.vertexid not in (r.source, r.target)<br>
<br>
-Steve<br>
_______________________________________________<br>
Pgrouting-users mailing list<br>
<a href="mailto:Pgrouting-users@lists.osgeo.org" target="_blank">Pgrouting-users@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/pgrouting-users" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/pgrouting-users</a></blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><pre>Georepublic UG (haftungsbeschränkt)
Salzmannstraße 44, 
81739 München, Germany

Vicky Vergara
Operations Research

eMail: vicky@<a href="http://georepublic.de" target="_blank">georepublic.de</a>
Web: <a href="https://georepublic.info" target="_blank">https://georepublic.info</a>

Tel: +49 (089) 4161 7698-1
Fax: +49 (089) 4161 7698-9

Commercial register: Amtsgericht München, HRB 181428
CEO: Daniel Kastl

<span></span></pre></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>