On 2/10/2020 9:53 AM, Feranmi Jeremiah Olowe wrote:
Dear Sir,
I hope this mail meets you well. My name is Jeremiah, a master’s student in Universidade NOVA de Lisboa, Information Management School(IMS) currently enrolled in Geospatial Technologies. I came across your guidance on PGrouting for barriers, which has led me to seek your assistance and tutelage on how to solve this kind of problem for my project.
We are trying to find a way on how we can generate an SQL code to make our routing network recognize barriers based on the fact that we have uploaded the network with source, target, cost , reverse cost, coordinate field or column. We are hoping you can give us ideas on the algorithm that can help us make the network recognize barriers. Thank you Sir for your time and anticipated response.
Best Regards,
Jeremiah.
Hi Jeremiah,
I recommend you contacting the
pgrouting-users@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/pgrouting-users
for questions on prgrouting as there are lots of experts there and responses will help other users with same or similar issues.
To your question, barriers are just breaks in the network if you have two road segments like AA and BB and a barrier (B):
o-----AA------o(B)o-----BB-------o
So if you remove the segments touching AA and BB then that effectively prevents routing though the barriers.
If you have a network in say a "roads" table and your barriers in a "barriers" then the sql would be something like:
Select r.*
from roads r, barriers b
where not r.geom && st_expand(b.geom, tol);
set the value of tol to a small number relative to the size of the road segments to enlarge the bbox of the barrier point in intersect with the road segments.
Other people might have other ideas. For example if each barrier point coincides with an edge vertex, you could assign vertex id to the barrier point and then use a where statements like:
where b.vertexid not in (r.source, r.target)
-Steve