NAME
v.db.update - Updates a column in the attribute table connected to a vector map.
KEYWORDS
vector,
attribute table,
database,
attribute update,
type casting
SYNOPSIS
v.db.update
v.db.update --help
v.db.update map=name layer=string column=name [value=string] [query_column=name] [where=sql_query] [sqliteextra=name] [--help] [--verbose] [--quiet] [--ui]
Flags:
- --help
- Print usage summary
- --verbose
- Verbose module output
- --quiet
- Quiet module output
- --ui
- Force launching GUI dialog
Parameters:
- map=name [required]
- Name of vector map
- Or data source for direct OGR access
- layer=string [required]
- Layer number or name
- Vector features can have category values in different layers. This number determines which layer to use. When used with direct OGR access this is the layer name.
- Default: 1
- column=name [required]
- Name of attribute column to update
- value=string
- Literal value to update the column with
- query_column=name
- Name of other attribute column to query, can be combination of columns (e.g. co1+col2)
- where=sql_query
- WHERE conditions of SQL statement without 'where' keyword
- Example: income < 1000 and population >= 10000
- sqliteextra=name
- Name of SQLite extension file for extra functions (SQLite backend only)
v.db.update assigns a new value to a column in the attribute
table connected to a given map. The
value parameter allows
updating with a literal value. Alternatively, with the
qcol
parameter values can be copied from another column in the table or be
the result of a combination or transformation of other columns.
v.db.update is just a front-end to
db.execute to
allow easier usage.
For complex SQL UPDATE statements, db.execute should be used.
In this example, selectively display lakes without (blue) and with
NULL (red) are shown to find out which type is undefined. In the
original map there are lakes missing FTYPE attribute which are
wetlands along streams. These NULL attributes are replaced with the
landuse type WETLAND:
g.copy vect=lakes,mylakes
v.db.select mylakes
v.db.select mylakes where="FTYPE IS NULL"
# display the lakes, show undefined FTYPE lakes in red
g.region vector=mylakes
d.mon wx0
d.vect mylakes where="FTYPE NOT NULL" type=area col=blue
d.vect mylakes where="FTYPE IS NULL" type=area col=red
# replace NULL with FTYPE WETLAND
v.db.update mylakes col=FTYPE value=WETLAND \
where="FTYPE IS NULL"
v.db.select mylakes
Spearfish example: adding new column, copying values from another table
column with on the fly calculation:
g.copy vect=fields,myfields
v.db.addcolumn myfields col="polynum integer"
v.db.update myfields col=polynum qcol="cat*2"
v.db.select myfields
Type cast (type conversion) of strings to double precision
(unsupported by DBF driver):
g.copy vect=geodetic_pts,mygeodetic_pts
v.db.update mygeodetic_pts col=zval qcol="CAST(z_value AS double precision)" \
where="z_value <> 'N/A'"
Note: this requires SQLite extended functions. For details see the GRASS GIS Wiki
(compilation of
libsqlitefunctions.so
and
libsqlitefunctions.dll).
North Carolina data set example: adding new column, copying values from
another table column with on the fly calculation:
g.copy vect=precip_30ynormals,myprecip_30ynormals
v.db.addcolumn myprecip_30ynormals column="logjuly double precision"
v.db.update myprecip_30ynormals column="logjuly" query_column="log(jul)" \
sqliteextra=$HOME/sqlite_extensions/libsqlitefunctions.so
v.db.select myprecip_30ynormals columns=jul,logjuly
jul|logjuly
132.842|4.88916045210132
127|4.84418708645859
124.206|4.82194147751127
104.648|4.65060233738593
98.298|4.58800368106618
...
db.execute,
v.db.addcolumn,
v.db.addtable,
v.db.connect,
v.db.droptable,
v.db.join,
v.db.select
GRASS SQL interface
Moritz Lennert (mlennert@club.worldonline.be)
SOURCE CODE
Available at:
v.db.update source code
(history)
Latest change: Thursday Feb 03 11:10:06 2022 in commit: 547ff44e6aecfb4c9cbf6a4717fc14e521bec0be
Main index |
Vector index |
Topics index |
Keywords index |
Graphical index |
Full index
© 2003-2023
GRASS Development Team,
GRASS GIS 8.2.2dev Reference Manual