NAME¶
v.to.db - Populates database values from vector features.
KEYWORDS¶
vector, database, attribute table
SYNOPSIS¶
v.to.db
v.to.db help
v.to.db [-
psc]
map=
name
[
type=
string[,
string,...]] [
layer=
integer]
[
qlayer=
integer]
option=
string
[
units=
string] [
columns=
name[,
name,...]]
[
qcolumn=
name] [--
verbose] [--
quiet]
Flags:¶
- -p
-
Print only
- -s
-
Only print SQL statements
- -c
-
In print mode prints totals for options: length,area,count
- --verbose
-
Verbose module output
- --quiet
-
Quiet module output
Parameters:¶
- map=name
-
Name of input vector map
- type=string[,string,...]
-
Feature type
For coor valid point/centroid, for length valid line/boundary
Options: point,line,boundary,centroid
Default: point,line,boundary,centroid
- layer=integer
-
Layer number (write to)
A single vector map can be connected to multiple database tables. This
number determines which table to use.
Default: 1
- qlayer=integer
-
Query layer number (read from)
A single vector map can be connected to multiple database tables. This
number determines which table to use.
Default: 1
- option=string
-
Value to upload
Options:
cat,area,compact,fd,perimeter,length,count,coor,start,end,sides,query,slope,sinuous,azimuth
cat: insert new row for each category if doesn't exist yet
area: area size
compact: compactness of an area, calculated as compactness =
perimeter / (2 * sqrt(PI * area))
fd: fractal dimension of boundary defining a polygon, calculated as
fd = 2 * (log(perimeter) / log(area))
perimeter: perimeter length of an area
length: line length
count: number of features for each category
coor: point coordinates, X,Y or X,Y,Z
start: line/boundary starting point coordinates, X,Y or X,Y,Z
end: line/boundary end point coordinates, X,Y or X,Y,Z
sides: categories of areas on the left and right side of the
boundary, 'qlayer' is used for area category
query: result of a database query for all records of the geometry(or
geometries) from table specified by 'qlayer' option
slope: slope steepness of vector line or boundary
sinuous: line sinuousity, calculated as line length / distance
between end points
azimuth: line azimuth, calculated as angle between North direction
and endnode direction at startnode
- units=string
-
Units
mi(les),f(eet),me(ters),k(ilometers),a(cres),h(ectares),r(adians),d(egrees)
Options:
mi,miles,f,feet,me,meters,k,kilometers,a,acres,h,hectares,r,radians,d,degrees
- columns=name[,name,...]
-
Name of attribute column(s)
- qcolumn=name
-
Name of attribute column used for 'query' option
E.g. 'cat', 'count(*)', 'sum(val)'
DESCRIPTION¶
v.to.db loads vector map features or metrics into a database table, or
prints them (or the SQL queries used to obtain them) in a form of a
human-readable report. For uploaded/printed category values ’-1' is
used for 'no category' and 'null'/'-' if category cannot be found or multiple
categories were found. For line azimuths '-1' is used for closed lines (start
equals end).
NOTES¶
The units
miles,
feet,
meters and
kilometers are
square for
option=area.
Feet and acre units are always reported in their common versions (i.e. the
International Foot, exactly 5280 feet in a mile), even when the location's
standard map unit is the US Survey foot.
When calculating perimeters in Latitude-Longitude locations, the geodesic
distance between the vertices is used.
When using
option=coor on a vector area map, only coordinates of
centroids with unique category will be reported.
Line azimuth is calculated as angle from the North direction to the line endnode
direction at the line statnode. By default it's reported in decimal degrees
(0-360, CW) but it also may be repored in radians with
unit=radians.
Azimuth value
-1 is used to report closed line with it's startnode and
endnode being in same place. Azimuth values make sense only if every vector
line has only one entry in database (unique CAT value).
If the module is apparently slow
and the map attributes are stored in an
external DBMS such as PostgreSQL, it is highly recommended to create an index
on the key (category) column.
Uploading the vector map attributes to a database requires a table attached to a
given input vector
layer. The
print only (
-p) mode
doesn't require a table. Use
db.execute or
v.db.addtable to
create a table if needed.
Updating the table has to be done column-wise. The
column must be present
in the table, except when using the
print only (
-p) mode. Use
db.execute or
v.db.addcol to add new columns if needed.
EXAMPLES¶
Updating attribute tables¶
Upload category numbers to attribute table (used for new map):
v.to.db map=soils type=centroid option=cat
Upload polygon areas to corresponding centroid record in the attribute table:
v.to.db map=soils type=centroid option=area col=area_size unit=h
Upload line lengths (in meters) of each vector line to attribute table (use
v.category in case of missing categories):
v.to.db map=roads option=length type=line col=linelength units=me
Upload x and y coordinates from vector geometry to attribute table:
v.to.db map=pointsmap option=coor col=x,y
Upload x, y and z coordinates from vector geometry to attribute table:
v.to.db map=pointsmap option=coor col=x,y,z
Transfer attributes from a character column (with numeric contents) to a new
integer column:
v.db.addcol usa_income_employment2002 col="FIPS_NUM integer"
v.to.db usa_income_employment2002 option=query col=FIPS_NUM qcol=STATE_FIPS
Upload category numbers of left and right area, to an attribute table of
boundaries common for the areas:
# add categories for boundaries of the input vector map, in layer 2:
v.category soils out=mysoils layer=2 type=boundary option=add
# add a table with columns named "left" and "right" to layer
2 of the input
# vector map:
v.db.addtable mysoils layer=2 col="left integer,right integer"
# upload categories of left and right areas:
v.to.db mysoils option=sides col=left,right layer=2
# display the result:
v.db.select mysoils layer=2
Compute DL, the Fractal Dimension (Mandelbrot, 1982), of the boundary defining a
polygon based on the formula:
D = 2 * (log perimeter) / (log area):
g.copy vect=soils,mysoils
v.db.addcol mysoils col="d double precision"
v.to.db mysoils option=fd column="d"
g.region vect=mysoils res=50
v.to.rast in=mysoils out=soils_fd type=area use=attr column=d
r.colors map=soils_fd color=gyr
d.mon x0
d.rast.leg soils_fd
d.vect mysoils type=boundary
Printing reports¶
Report x,y,z coordinates of points in the input vector map:
v.to.db -p bugsites option=coor type=point
Report all area sizes of the input vector map:
v.to.db -p soils option=area type=boundary units=h
Report all area sizes of the input vector map, in hectares, sorted by category
number (requires GNU
sort utility installed):
v.to.db -p soils option=area type=boundary units=h | sort -n
Report all line lengths of the input vector map, in kilometers:
v.to.db -p roads option=length type=line units=k
Report number of features for each category in the input vector map:
v.to.db -p roads option=count type=line
SEE ALSO¶
d.what.vect, db.execute, v.category,
v.db.addtable, v.db.addcol, v.db.connect,
v.distance, v.report, v.univar, v.what
REFERENCES¶
Mandelbrot, B. B. (1982). The fractal geometry of nature. New York: W. H.
Freeman. Xu, Y. F. & Sun, D. A. (2005). Geotechnique 55, No. 9, 691-695
AUTHOR¶
Radim Blazek, ITC-irst, Trento, Italy
Line sinuousity implemented by Wolf Bergenheim
Last changed: $Date: 2011-11-08 12:29:50 +0100 (Tue, 08 Nov 2011) $
Full index
© 2003-2014 GRASS Development Team