
NAME
v.transform - Performs an affine transformation (shift, scale and rotate, or GPCs) on vector map.
KEYWORDS
vector, transformation
SYNOPSIS
v.transform
v.transform help
v.transform [-tmwb] input=name layer=string output=name [xshift=float] [yshift=float] [zshift=float] [xscale=float] [yscale=float] [zscale=float] [zrot=float] [table=name] [columns=name[,name,...]] [--overwrite] [--verbose] [--quiet]
Flags:
- -t
- Shift all z values to bottom=0
- -m
- Print the transformation matrix to stdout
- -w
- Swap coordinates x, y and then apply other parameters
- -b
- Do not build topology for output
- --overwrite
- Allow output files to overwrite existing files
- --verbose
- Verbose module output
- --quiet
- Quiet module output
Parameters:
- input=name [required]
- Name of input vector map
- Or data source for direct OGR access
- layer=string [required]
- Layer number or name ('-1' for all layers)
- A single vector map can be connected to multiple database tables. This number determines which table to use. When used with direct OGR access this is the layer name.
- Default: -1
- output=name [required]
- Name for output vector map
- xshift=float
- Shifting value for x coordinates
- Default: 0.0
- yshift=float
- Shifting value for y coordinates
- Default: 0.0
- zshift=float
- Shifting value for z coordinates
- Default: 0.0
- xscale=float
- Scaling factor for x coordinates
- Default: 1.0
- yscale=float
- Scaling factor for y coordinates
- Default: 1.0
- zscale=float
- Scaling factor for z coordinates
- Default: 1.0
- zrot=float
- Rotation around z axis in degrees counterclockwise
- Default: 0.0
- table=name
- Name of table containing transformation parameters
- columns=name[,name,...]
- Name of attribute column(s) used as transformation parameters
- Format: parameter:column, e.g. xshift:xs,yshift:ys,zrot:zr
DESCRIPTION
v.transform performs an affine transformation (translate and rotate) of a
vector map. An affine transform includes one or several linear transformations
(scaling, rotation) and translation (shifting). Several linear transformations
can be combined in a single operation. The command can be used to georeference
unreferenced vector maps or to modify existing geocoded maps.
NOTES
Coordinate transformation based on Ground Control Points (GCPs) is done
by v.rectify and not supported by
v.transform.
Transformation parameters (i.e. xshift, yshift,
etc.) can be fetched from attribute table connected to the vector
map. In this case vector objects can be transformed with different
parameters based on their category number. If the parameter cannot be
fetched from the table, default value is used instead.
Affine Transformation Matrix
The affine transfomation matrix can optionally be printed with the '-m'
flag. The format of the matrix is:
| x_offset a b |
| y_offset d e |
This format can be used in the Affine() function of PostGIS
[Affine(geom, a, b, d, e, xoff, yoff)], or directly compared to the
output of a similar operation performed in R.
EXAMPLE
DXF/DWG drawings
Most DXF/DWG drawings are done within XY coordinate space. To transform
them to a national grid, we can use v.transform together with
v.rectify and a first-order 4 point transformation.
v.transform -t in=watertowerXY out=watertower_z zscale=0.04 zshift=1320
v.rectify in=watertower_z out=watertowerUTM points=wt.points order=1
Extrude 2D vector points to 3D based on attribute column values
Spearfish example with manual table editing for vertical shift:
# create table containing transformation parameters:
echo "create table archsites_t (cat int, zs double)" | db.execute
# insert transformation parameters for category 1:
echo "insert into archsites_t values (1, 1000)" | db.execute
# insert transformation parameters for category 2 (and so forth):
echo "insert into archsites_t values (2, 2000)" | db.execute
# perform z transformation:
v.transform -t input=archsites output=myarchsites3d column="zshift:zs" table="archsites_t"
# drop table containing transformation parameters:
echo "drop table archsites_t" | db.execute
The resulting map is a 3D vector map.
Extrude 2D vector points to 3D based on attribute column values
Spearfish example with automated elevation extraction for vertical shift:
# work on own map copy:
g.copy vect=archsites@PERMANENT,myarchsites
# add new 'zs' column to later store height of each site:
v.db.addcolumn myarchsites col="zs double precision"
# set region to elevation map and fetch individual heights:
g.region rast=elevation.10m -p
v.what.rast myarchsites rast=elevation.10m col=zs
# verify:
v.db.select myarchsites
# perform transformation to 3D
v.transform -t myarchsites output=myarchsites3d column="zshift:zs" table=myarchsites
# drop table containing transformation parameters
v.db.dropcolumn myarchsites3d col=zs
The resulting map is a 3D vector map.
SEE ALSO
v.rectify,
v.in.ogr
AUTHOR
Radim Blazek, ITC-irst, Trento, Italy,
Column support added by Martin Landa, FBK-irst (formerly ITC-irst), Trento, Italy (2007/09)
Last changed: $Date: 2011-12-28 12:38:12 -0800 (Wed, 28 Dec 2011) $
Main index - Vector index - Full index
© 2003-2012 GRASS Development Team