NAME
v.distance - Finds the nearest element in vector map 'to' for elements in vector map 'from'.
KEYWORDS
vector, database, attribute table
SYNOPSIS
v.distance
v.distance help
v.distance [-pa] from=name from_layer=string [from_type=string[,string,...]] to=name to_layer=string [to_type=string[,string,...]] [output=name] [dmax=float] [dmin=float] upload=string[,string,...] column=name[,name,...] [to_column=name] [table=name] [--overwrite] [--verbose] [--quiet]
Flags:
- -p
- Print output to stdout, don't update attribute table
- First column is always category of 'from' feature called from_cat
- -a
- Calculate distances to all features within the threshold
- The output is written to stdout but may be uploaded to a new table created by this module. From categories are may be multiple.
- --overwrite
- Allow output files to overwrite existing files
- --verbose
- Verbose module output
- --quiet
- Quiet module output
Parameters:
- from=name
- Name of input vector map
- Name of existing vector map (from)
- from_layer=string
- Layer number or name (from)
- A single vector map can be connected to multiple database tables. This number determines which table to use. Layer name for direct OGR access.
- Default: 1
- from_type=string[,string,...]
- Feature type (from)
- Feature type
- Options: point,centroid
- Default: point
- to=name
- Name of input vector map
- Name of existing vector map (to)
- to_layer=string
- Layer number or name (to)
- A single vector map can be connected to multiple database tables. This number determines which table to use. Layer name for direct OGR access.
- Default: 1
- to_type=string[,string,...]
- Feature type (to)
- Feature type
- Options: point,line,boundary,centroid,area
- Default: point,line,area
- output=name
- Name for output vector map containing lines connecting nearest elements
- dmax=float
- Maximum distance or -1 for no limit
- Default: -1
- dmin=float
- Minimum distance or -1 for no limit
- Default: -1
- upload=string[,string,...]
- Values describing the relation between two nearest features
- Options: cat,dist,to_x,to_y,to_along,to_angle,to_attr
- cat: category of the nearest feature
- dist: minimum distance to nearest feature
- to_x: x coordinate of the nearest point on 'to' feature
- to_y: y coordinate of the nearest point on 'to' feature
- to_along: distance between points/centroids in 'from' map and the linear feature's start point in 'to' map, along this linear feature
- to_angle: angle between the linear feature in 'to' map and the positive x axis, at the location of point/centroid in 'from' map, counterclockwise, in radians, which is between -PI and PI inclusive
- to_attr: attribute of nearest feature given by to_column option
- column=name[,name,...]
- Column name(s) where values specified by 'upload' option will be uploaded
- to_column=name
- Column name of nearest feature (used with upload=to_attr)
- table=name
- Name of table created for output when the distance to all flag is used
DESCRIPTION
v.distance finds the nearest element in vector map
(to) for elements in vector map (from). Various
information about the vectors' relationships (distance, category, etc.) may be uploaded
to the attribute table attached to the first vector map, or printed to
'stdout'. A new vector map may be created where lines connecting
nearest points on features are written. dmin and/or dmax can be used to limit the search radius.
NOTES
If a nearest feature does not have a category, the attribute column is updated
to null. This is true also for areas, which means for example,
that if a point is in an island (area WITHOUT category), v.distance
does not search for the nearest area WITH category; the island is identified
as the nearest and category updated to null.
The upload column(s) must already exist. Create one with v.db.addcolumn.
In lat-long locations v.distance gives distances (dist
and to_along) in meters not in degrees calculated as geodesic
distances on a sphere.
EXAMPLES
Find nearest lines
Find nearest lines in vector map ln for points from
vector map pnt within the given threshold and write related
line categories to column linecat in an attribute table attached
to vector map pnt:
v.distance from=pnt to=ln upload=cat column=linecat
Find nearest area
For each point from vector map pnt, find the nearest area
from map ar within the given threshold and write the related
area categories to column areacat in an attribute table attached
to vector map pnt (in the case that a point falls into a polygon area,
the distance is zero):
v.distance from=pnt to=ar upload=cat column=areacat
Create a new vector map
Create a new vector map which contains lines connecting nearest
features of maps pnt and map ln. The resulting
vector map can be used for example to connect points to a network as
needed for network analysis:
v.distance -p from=pnt to=ln out=connections upload=dist column=dist
Query information
Query information from selected point(s). v.distance takes
points from a vector map as input instead of stdin. A new vector map
with query points has to be created before the map can be analysed.
Create query map (if not present):
echo "123456|654321|1" | v.in.ascii output=pnt
Find nearest features:
v.distance from=pnt to=map_to_query upload=cat col=somecol -p
Point-in-polygon
The option dmax=0 is here important because otherwise for
points not falling into any area, the category of the nearest area is
recorded.
For each point from vector map pnt, find the area from
vector map ar in which the individual point falls, and
write the related area categories to column areacat into
the attribute table attached to vector map pnt:
v.distance from=pnt to=ar dmax=0 upload=cat column=areacat
Univariate statistics on results
Create a vector map containing connecting lines and investigate mean
distance to targets. An alternative solution is to use
the v.distance upload=dist option to upload distances into
the bugs vector directly, then run v.univar on that. Also note
you can upload two columns at a time, e.g. v.distance
upload=cat,dist column=nearest_id,dist_to_nr.
# create working copy
g.copy vect=bugsites,bugs
# add new attribute column to hold nearest archsite category number
v.db.addcolumn map=bugs column="nrst_arch INTEGER"
v.distance from=bugs to=archsites to_type=point upload=to_attr \
to_column=cat column=nrst_arch out=vdistance_vectors_raw
# we need to give the lines category numbers, create a table, and create
# a column in that table to hold the distance data.
v.category vdistance_vectors_raw out=vdistance_vectors type=line op=add
g.remove v=vdistance_vectors_raw
v.db.addtable map=vdistance_vectors column="length DOUBLE"
v.to.db map=vdistance_vectors option=length column=length
# calculcate statistics. Use v.univar.sh for extended statistics.
v.univar vdistance_vectors column=length
Print distance matrix
v.distance -pa from=archsites to=archsites upload=dist col=dist
Note: Matrix-like output is enabled only for flag -a and one
given upload option.
SEE ALSO
r.distance,
v.db.addcolumn,
v.what.vect
AUTHOR
Janne Soimasuo 1994, University of Joensuu, Faculty of Forestry, Finland
Cmd line coordinates support: Markus Neteler, ITC-irst, Trento, Italy
Updated for 5.1: Radim Blazek, ITC-irst, Trento, Italy
Matrix-like output by Martin Landa, FBK-irst, Trento, Italy
Improved processing speed: Markus Metz
Last changed: $Date: 2010-08-11 09:41:36 -0700 (Wed, 11 Aug 2010) $
Main index - vector index - Full index
© 2003-2011 GRASS Development Team