[postgis-users] number all houses on branch roads first

Stephen Woodbridge woodbri at swoodbridge.com
Tue Jul 12 18:56:22 PDT 2016


Sounds like you want a "graph" based on the road network topology like 
what is used in pgRouting. Then given the graph do a depth first 
traversal of the topology, labeling the edges as you go.

If you build the graph topology (not the postgis topology), the you can 
probably write a recursive query to do the traversal and labeling. I 
think I would probably write a pgsql function(s) to traverse the graph 
and label the edges.

Unfortunately, pgRouting does not have depth first search function built 
into it, hence the need to code one in pgsql.

-Steve

On 7/12/2016 5:16 PM, Dan Jacobson wrote:
> I want to go down the (all unnamed) roads in my future mountain
> community assigning house numbers every 50 meters.
>
>    50-100   170-200
>     /         /
> 1  / 107 147 /  213
> +-+---+---+-+----+--240--main-road--
> 2 48   \   168
>         \
>       120-140
>
> I stay on my main road, but whenever encountering a fork, first go down it.
> "Depth first pre-order ordered labeled rooted binary tree traversal but with central path"?
> http://math.stackexchange.com/questions/1856814/binary-tree-traversal-with-fixed-final-node
>
> OK for PostGIS, given a few linestrings, I suppose I first (somehow)
> connect them to form a network, then ride my virtual car down it. And
> whenever my odometer reaches another 50m, make a mark on the centerline.
> (Assume a strict binary tree (mountain roads with no 4-way junctions))
> At each road junction I first choose a side road, and if already on a
> side road, first choose the left road, before choosing the right road.
> When backtracking turn off my odometer, until finally back on to my main
> road.
>
> Holy smokes, sounds tough. Can I do this with PostGIS or should I go
> back to GRASS or what?
>
> (I am thinking instead of using ST_OffsetCurve (previous project, thanks
> Sandro) to put odd on the left even on the right, down the centerline
> I'll just put odd numbers at 25, 75m, padded "1 ", and even at 50, 100m
> reverse padded " 2".) These points and their labels are what I want for output.
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/postgis-users
>


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus



More information about the postgis-users mailing list