I am trying to find a way to calculate the shortest path from one point to another without crossing the boundaries of a polygon. I would like to do it with QGIS as I do not have access to ArcGis.

It thought of a solution using network tools: 1) Fill the polygon with a given number of points 2) Generate all the possible links (figured as line vectors) between every pair of points 3) Suppress all the links that intersect my polygon boundaries 4) Use GRASS to calculate the shortest path between two given points

My problem is that I do not find a way to manage the 2nd step.

I found the "Flow Mapper plugin" in QGIS, but I really can't figure out how I am suppose to use it.

Any help would be more than welcome! :) Thanks a lot


closed as not a real question by underdark Jan 6 '13 at 22:03

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center. If this question can be reworded to fit the rules in the help center, please edit the question.

  • Can you share some detail on what you are trying to model here? Which real-world phenomenon should be represented? – underdark Jun 8 '12 at 14:12
  • 2
    Your proposal sounds like solutions already implemented in GRASS as r.cost or, more generally, in r.spread. Using raster format automatically takes care of steps (1) and (2); step (3) is the result of a simple mask operation. – whuber Jun 8 '12 at 15:33
  • Are you happy with a using a bit of Python? – Nathan W Jun 9 '12 at 2:20
  • How many path segments are likely to be within the polygon? Knowing that is important to knowing whether you can realistically "brute force" this. – BradHards Dec 7 '12 at 22:39

For the 2nd step, generating links between the point pairs, have you looked at the MMQGIS Hub Lines plugin? It seems it can do what you want.

Not the answer you're looking for? Browse other questions tagged or ask your own question.