[GRASS-user] NEWBIE: Help with simple network analysis

M S mseibel at gmail.com
Wed Aug 2 13:21:21 EDT 2006


wow.  i'll have to sort through this.  i have been working on network
analysis too.  i'll be glad to help where i can, but i'll have to digest all
the info first.

one of the big problems i ran into was running v.clean with a tolerance.
apparently that would not split at the lines after doing a v.distance to the
streets.  so i had to go to each street connection and verify that there was
in fact a node for the connectors (v.distance) out put to the streets.  in
many instances there were not, so i had to split the street line there and
v.clean again.  I talked with Markus about this, and the only difference was
that he had run his without specifying a threshold for v.clean while using
the tool=break,snap.  it looks like you did the same thing.

i would spot check some connections and make sure that nodes exist and that
the connectors are infact connected via nodes for proper topology.

On 8/2/06, andrew.haywood at poyry.com <andrew.haywood at poyry.com> wrote:
>
>
> Dear all,
>
> I am a new person to grass and am having some problems with running a
> simple network analysis. If anybody can help me it would be greatly
> appreciated.  I am running grass 6.0 on debian.
> I have imported a shapefile representing 5km grid polygons across a large
> area. I have also imported a road shapefile within this grid. And have
> imported a point shapefile with town locations close to this road (network).
>
> What I would like to do for each centroid of my 5km grid polygon layer is
> to calculate the nearest straight line distance to the road feature. Once
> having calculated this distance - calculate the distance along the road
> network to each town. Below is my attempt at doing this. Any
> help/suggestions on improvement would be greatly appreciated.
>
> I am having problems making sure that my town locations are on my road
> network and that the road network is complete. I think that the road network
> is made up of line segments that are not quite connected so I have tried
> v.clean to "buffer the roads toegther". Any suggestions on how to ensure
> that the lines are connected would be greatly appreciated. The following are
> a list of commands that I am currently using. My problem is that my network
> is not connected.
>
> #v.in.ogr dsn=/home/andrew/rast.shp output=rast min_area=0.0001 snap=-1
> #v.in.ogr dsn=/home/andrew/road_seg.shp output=road_seg min_area=0.0001snap=-1
> #v.in.ogr dsn=/home/andrew/towns.shp output=towns min_area=0.0001 snap=-1
>
> I then try and convert the road segments into connected lines
> v.build.polylines input=road_seg output=road
>
> I then try and intersect the towns and the roads together
> v.patch in=road,towns out=road_towns
>
> I then connect the towns and the roads
> v.distance -p from=towns to=road output=road_towns_connect upload=dist
> column=dist
>
> #patch connecting line with roads and towns
> v.patch in=road_towns_connect,road_towns out=pre_network_road_towns
> v.db.connect road_towns dr=dbf
> data='$GISDBASE/$LOCATION_NAME/$MAPSET/dbf/' table=road layer=1 key=cat
> v.db.connect road_towns dr=dbf
> data='$GISDBASE/$LOCATION_NAME/$MAPSET/dbf/' table=towns layer=2 key=cat
> v.clean in=pre_network_road_towns out=network_road_towns tool=break,snap
>
> #add columns to rast polygon
> echo "ALTER TABLE rast ADD COLUMN from_cat integer" | db.execute
> echo "ALTER TABLE rast ADD COLUMN dist double" | db.execute
> echo "ALTER TABLE rast ADD COLUMN to_x double" | db.execute
> echo "ALTER TABLE rast ADD COLUMN to_y double" | db.execute
>
> #need to run distance command
> v.distance from=rast to=network_road_towns from_type=centroid to_type=line
> from_layer=1 to_layer=1 dmax=-1 upload=cat,dist,to_x,to_y
> column=from_cat,dist,to_x,to_y
>
> #spit out to_x to_y coordinates of intersection with network_towns_points
> v.db.select map=rast layer=1 fs="|" -c > xy_info_on_network
> #spit x and y corrdinates of intersection to a flatfile
> awk < xy_info_on_network -F"|" '{ print $9,$10}' > xy_on_network
> #remove duplicates in file (I think there are ??? points in the
> intersection)
> sort xy_on_network > xy_on_network_sort
> uniq xy_on_network_sort > xy_on_network_uniq
> v.out.ascii input=towns output=xy_towns format=point
>
>
>
> I then sucked the points of intersection with the road network
> (xy_on_network_uniw) and the town locations  (xy_towns) into a perl script
> and spat out a big file that looked like this to loop through each raster
> centroid intersection with the network and the location of the town.
>
> echo "1 574705.304072 9192756.736556 574705.30421218 9192756.73643771 " |
> v.net.path network_road_points  out=mypath nlayer=1
> v.db.select map=mypath layer=1 fs='|' >>fun
> g.remove vect=mypath
> echo "2 574705.304212 9192756.736438 574705.30421218 9192756.73643771 " |
> v.net.path network_road_points  out=mypath nlayer=1
> v.db.select map=mypath layer=1 fs='|' >>fun
> g.remove vect=mypath
> ...
> ...
> ...
>
> when I run this i get errors (on some but not all v.net.path calls)
> basically saying that the node cannot be found and reports a very big
> distance as a default. I have started to look at the network and i think it
> is because I havent closed it properly. Any help with regard to this. Also
> im thinking that it may be the accuracy of the xy locations in ascii dumps.
> Im not sure if I could use node id's and that would be better. Again any
> suggestions would be appreciated.
>
> cheers
>
> Andy
>
>
>
> This email and any files transmitted with it are confidential, may be
> legally privileged and are intended solely for the use of the individual or
> entity to whom they are addressed. If you are not the intended recipient,
> you are hereby notified that any use, distribution, or reproduction of the
> contents of this email is strictly prohibited and may be unlawful. If you
> are not the intended recipient, please notify the sender by return email and
> destroy all copies of the original message including any attachments
> thereto.
> Thank you.
>
> _______________________________________________
> grassuser mailing list
> grassuser at grass.itc.it
> http://grass.itc.it/mailman/listinfo/grassuser
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/grass-user/attachments/20060802/ec768a07/attachment.html


More information about the grass-user mailing list