NAME
v.edit - Edits a vector map, allows adding, deleting and modifying selected vector features.
KEYWORDS
vector,
geometry,
editing,
line,
node,
point,
vertex,
level1
SYNOPSIS
v.edit
v.edit --help
v.edit [-rcnb1p] map=name [layer=string] [type=string[,string,...]] tool=string [input=name] [move=x,y,z] [threshold=float[,float,...]] [ids=range] [cats=range] [coords=x,y[,x,y,...]] [bbox=x1,y1,x2,y2] [polygon=x,y[,x,y,...]] [where=sql_query] [query=string] [bgmap=name[,name,...]] [snap=string] [zbulk=value,step] [--overwrite] [--help] [--verbose] [--quiet] [--ui]
Flags:
- -r
- Reverse selection
- -c
- Close added boundaries (using threshold distance)
- -n
- Do not expect header of input data
- -b
- Do not build topology
- Advantageous when handling a large number of points
- -1
- Modify only first found feature in bounding box
- -p
- Connect parallel lines (using extend tools and threshold distance)
- --overwrite
- Allow output files to overwrite existing files
- --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 to edit
- Or data source for direct OGR access
- layer=string
- 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
- type=string[,string,...]
- Input feature type
- Options: point, line, boundary, centroid
- Default: point,line,boundary,centroid
- tool=string [required]
- Tool
- Options: create, add, delete, copy, move, flip, catadd, catdel, merge, break, snap, connect, extend, extendstart, extendend, chtype, vertexadd, vertexdel, vertexmove, areadel, zbulk, select
- create: Create new (empty) vector map
- add: Add new features to existing vector map
- delete: Delete selected features from vector map
- copy: Copy selected features
- move: Move selected features in vector map
- flip: Flip direction of selected vector lines
- catadd: Set new categories to selected vector features for defined layer
- catdel: Delete categories from selected vector features for defined layer
- merge: Merge selected vector lines
- break: Break/split vector lines
- snap: Snap vector features in given threshold
- connect: Connect two lines
- extend: Extend lines
- extendstart: Extend start nodes
- extendend: Extend end nodes
- chtype: Change feature type (point<->centroid, line<->boundary)
- vertexadd: Add new vertex to selected vector lines
- vertexdel: Remove vertex from selected vector lines
- vertexmove: Move vertex of selected vector lines
- areadel: Delete selected areas from vector map (based on selected centroids)
- zbulk: Z bulk-labeling (automated assignment of z coordinate to vector lines)
- select: Select lines and print their ID's
- input=name
- Name of file containing data in GRASS ASCII vector format
- '-' for standard input
- move=x,y,z
- Difference in x,y,z direction for moving feature or vertex
- threshold=float[,float,...]
- Threshold distance (coords,snap,query)
- '-1' for threshold based on the current resolution settings
- Default: -1,0,0
- ids=range
- Feature ids
- Example: 1,3,7-9,13
- cats=range
- Category values
- Example: 1,3,7-9,13
- coords=x,y[,x,y,...]
- List of point coordinates
- bbox=x1,y1,x2,y2
- Bounding box for selecting features
- polygon=x,y[,x,y,...]
- Polygon for selecting features
- where=sql_query
- WHERE conditions of SQL statement without 'where' keyword
- Example: income < 1000 and population >= 10000
- query=string
- Query tool
- For 'shorter' use negative threshold value, positive value for 'longer'
- Options: length, dangle
- length: Select only lines or boundaries shorter/longer than threshold distance
- dangle: Select dangles shorter/longer than threshold distance
- bgmap=name[,name,...]
- Name of background vector map(s)
- snap=string
- Snap added or modified features in the given threshold to the nearest existing feature
- Options: no, node, vertex
- Default: no
- no: Not apply snapping
- node: Snap only to node
- vertex: Allow snapping also to vertex
- zbulk=value,step
- Starting value and step for z bulk-labeling
- Pair: value,step (e.g. 1100,10)
The module
v.edit allows the user to edit a vector map
via command line interface.
v.edit supports only "simple" vector features: points,
centroids, lines and boundaries. Currently, only 2D vector features
(except of tool=zbulk) are supported.
Provides editing features' geometry. Attribute data connected to the
vector map are not modified at all.
Vector features can be selected either by internal id, category
number cats, coordinates coords, bounding
box bbox, polygon, where statement (attribute
data) or by query. Selecting features by coordinates is
affected by the current 2D resolution or by the threshold distance
given by threshold. The options are orthogonal, i.e. can
be used in various combinations. For example:
v.edit map=roads tool=select \
coord=599505,4921010,603389.0625,4918292.1875 \
threshold=10000 where="label='interstate'"
selects all features (and prints their id's to standard output)
covered by two bounding boxes (center at 599505,4921010 and
603389.0625,4918292.1875, size 2*10000) with attribute
label='interstate'.
If no vector features are selected or the flag
-b is
used, topology is not build at the end.
Vector features can be selected in several ways:
- ids - using internal (unique) feature id's
- cats - using category numbers
- coords - using x,y coordinate pairs (center of bounding
box, size defined by threshold)
- bbox - using bounding box
- polygon - using polygon (at least 3 coordinate pairs have to be set)
- where - using where statement (attribute data)
- query - special query (e.g. minimal vector line length)
Additional parameters for vector feature specification are:
- layer - layer number (currently used only
with cats or where option)
- threshold - threshold distance used for selecting vector
features by coordinates
- create - Create new (empty) vector map (see
also v.in.ascii). Optionally
vector features (in GRASS ASCII vector
format) can be read from standard input (input=-) or
from the text file given by the input option.
- add - Add new vector features (defined
in GRASS ASCII vector format) to
existing vector map. Features can be read from standard input or
from the given text file (input option). If no header is
given, the -n flag must be used. Added features can be
snapped (defined by snap parameter) to nodes or vertices
based on threshold distance threshold.
- delete - Delete selected vector features from existing
vector map.
- copy - Make identical copy of selected vector
features. If background map bgmap is given copy features
from background map, not from currently modified vector map.
- move - Move selected features of existing vector map
relatively to their current location. This tool requires
move option. The option defines coordinates of the movement
direction. Moved features can be snapped (defined by snap
parameter) to nodes or vertices based on threshold
distance threshold.
- flip - Flip direction of selected vector lines
(lines or boundaries).
- catadd - Add new layer category(ies) to selected vector
feature(s). Category can be later used for new database
entry.
- catdel - Delete layer category(ies) of selected vector
feature(s).
- merge - Merge (at least two) selected vector lines or
boundaries. The geometry of the merged vector lines can be
changed. If the second line from two selected lines is in opposite
direction to the first, it will be flipped. See also
module v.build.polylines.
- break - Split given vector line or boundary into two
lines on location given by coords. If coords not
given, breaks all selected lines at each intersection (based
on v.clean, tool=break).
- snap - Snap vector features in given threshold. See
also module v.clean. Note that this
tool supports only snapping to nodes. Parameters snap and
bgmap are ignored.
- connect - Connect selected lines or boundaries, the
first given line is connected to the second one. The second line
is broken if necessary. The lines are connected only if distance
between them is not greater than snapping threshold
distance threshold.
- extend - Extend selected lines or boundaries without changing
the current shape. Similar to connect, but the first and second
lines are both extended until they intersect. The second line is broken if
necessary. The lines are extended only if distance between them is not
greater than snapping threshold distance threshold. If the first and
second lines are parallel and do not intersect, no lines are extended. Use
the -p flag to extend the first line across the parallel gap.
- extendstart - Similar to extend, but extend at start
nodes only. Start nodes are used to select the second line and the end node
of that line can also be extended if it is within the snapping threshold
distance given by threshold.
- extendend - Similar to extend, but extend at end nodes
only.
- chtype - Change feature type of selected geometry
objects. Points are converted to centroids, centroids to points,
lines to boundaries and boundaries to lines.
- vertexadd - Add vertex(ces) to the given vector lines
or boundaries. Location of the new vertex is given by coord
option. If -1 is given only first found line or boundary in bounding
box is modified.
- vertexdel - Remove vertex(ces) specified by
coords option. If -1 is given only first found line or
boundary in bounding box is modified.
- vertexmove - Move vertex(ces) specified
by coords option. Direction of the movement is specified by
the move option. If -1 is given only first found
line or boundary in bounding box is modified. Moved vertex can be
snapped (defined snap) to nodes or vertices based on
threshold distance threshold.
- zbulk - Assign z coordinate to 3D vector lines in given
bounding box. The first found line will get z coordinate based on
value given by zbulk parameter. Z coordinate of other
selected lines will be increased by step given by zbulk
parameter. This tool strictly requires bbox
and zbulk parameter. Also input vector map must be 3D.
- select - Print comma separated list of selected line
id's. No editing is done.
Create new (empty) vector map:
v.edit tool=create map=vectmap
Create new vector map and read data from file 'roads.txt':
v.out.ascii in=roads format=standard > roads.txt;
v.edit tool=create map=vectmap input=roads.txt
or alternatively
cat roads.txt | v.edit tool=create map=vectmap input=-
Add a new point to the vector map (without header):
echo "P 1 1
640794 214874
1 1" | v.edit -n tool=add map=vectmap input=-
# insert new row for each category in attribute table if doesn't exist yet
v.to.db map=vectmap option=cat
The input must be in
GRASS ASCII vector
format.
Add new features read from standard input:
v.out.ascii in=railroads format=standard | v.edit tool=add map=vectmap input=-
Remove all vector features with category number 1 or 2:
v.edit tool=delete map=roads cats=1,2
Remove all vector features except of those with category number 1 or 2
(reverse selection):
v.edit -r tool=delete map=roads cats=1,2
Remove features with category 1 or 2 located on coordinates
600952.625,4926107 (bounding box based on the current 2D resolution):
g.region -d;
v.edit tool=delete map=roads cats=1,2 coords=600952.625,4926107
Remove all features with category 1 and 2 covered by two bounding boxes
(center coordinates 592542.892,4924766.996 and 603389.062,4918292.187,
size 1000 map units):
v.edit map=roads tool=delete \
coord=592542.892,4924766.996,603389.062,4918292.187 \
threshold=1000 cat=1,2
Copy all features with category number 1 from background map:
v.edit map=roads tool=copy bgmap=archsites cat=1
Move feature (vector point) located on coordinates 602580,4918480 to
coordinates 603580,4919480:
v.edit tool=move map=archsites coord=602580,4918480 th=1e-2 move=1000,1000
Move all features with category 1 1000 map units to the west and 1000
map units to the south. Moved features snap to nodes in threshold
distance 10 map units:
v.edit tool=move map=roads cat=1 move=1000,-1000 snap=node threshold=-1,10
Move all features defined by bounding box
601530,4921560,602520,4922310 (W,S,E,N) 1000 map units to the
east and 1000 map units to the north:
v.edit tool=move map=roads bbox=601530,4921560,602520,4922310 move=-1000,1000
Flip direction of all vector lines:
v.edit tool=flip map=streams cats=1-9999 type=line
Add new layer/category 2/1, 2/3, 2/4, 2/5 to features covered by given polygon:
v.edit tool=catadd map=roads \
polygon=599877.75,4925088.375,597164.812,4922524.5,601338.562,4920914.625 \
layer=2 cat=1,3-5
Delete layer/category 1/1, line id 1:
v.edit tool=catdel map=roads id=1 cats=5
Merge two lines with given category number:
v.edit map=roads tool=merge cat=4
Split line id 810 on coordinates 604268,4923570 in threshold 50 map units:
v.edit map=roads tool=break coords=604268,4923570 id=810 threshold=50
Break selected lines (with category number 1) at each intersection:
v.edit map=roads tool=break cat=1
Snap all lines using threshold distance 20 map units:
v.edit map=roads id=1-9999 tool=snap threshold=-1,20 type=line
Connect line id 48 to line id 565:
v.edit map=roads tool=connect id=48,565
Connect line id 48 to line id 565; line id 60 to line id
50. Maximum threshold distance is 700 map units:
v.edit map=roads tool=connect id=48,565,60,50 threshold=-1,700
Add new vertex to the line located at 600952,4926107, threshold is
set to 1 map unit:
v.edit tool=vertexadd map=roads coords=600952,4926107 threshold=1
Delete vertex located at 593191.608,4925684.849 (threshold set to 0.1 map units).
Modify only lines with category 1:
v.edit tool=vertexdel map=roads coord=593191.608,4925684.849 \
threshold=1-e1 cats=1
Move vertices located at 604441,4921088 (threshold set to 100 map units).
Modify only lines with categories 1-10:
v.edit tool=vertexmove map=roads cats=1-10 coord=604441,4921088 \
threshold=100 move=1000,1000
Print id's of selected features, e.g.:
v.edit map=soils@PERMANENT tool=select \
bbox=595733.8125,4919781.75,598536.1875,4917396.75 --q
Example with
d.vect:
d.erase;
d.vect roads;
d.vect -i map=roads cats=`v.edit map=roads tool=select \
coord=592542.89243878,4924766.99622811,603389.0625,4918292.1875 \
threshold=1000 --q` col=red
Select all lines shorter (or equal) than 10 map units:
v.edit map=roads tool=select query=length threshold=-1,0,-10
Select from given bounding box all lines longer then 200 map units:
v.edit map=roads tool=select bbox=598260,4919730,605100,4926240 query=length threshold=-1,0,200
Input vector map contains 2D lines representing contours. Height can
be assign to the contours using
tool=zbulk. First of all 2D
lines need to be converted to 3D lines:
v.extrude input=line2 output=line3 height=0 type=line
All lines which intersect with the line given by coordinates will be
modified. First found line will get height 1000 map units, height of
other selected lines will be increased by 10 map units.
v.edit a2 tool=zbulk bbox=586121.25049368,4911970.21547109,603092.60466035,4927071.25713776 \
zbulk=1000,10
v.in.ascii,
v.info,
v.build,
v.build.polylines,
v.clean,
v.extrude,
v.split
See also wxGUI vector digitizer.
Original author: Wolf Bergenheim - independent developer
Initial updates: Jachym Cepicky, Mendel University of Agriculture and Forestry in Brno, Czech Republic
Major update by Martin Landa, FBK-irst (formerly ITC-irst), Trento, Italy
Extend tools by Huidae Cho
SOURCE CODE
Available at:
v.edit source code
(history)
Latest change: Monday Feb 27 13:45:25 2023 in commit: a82501dc85294207e8e58437c3ec7f1056465ed4
Main index |
Vector index |
Topics index |
Keywords index |
Graphical index |
Full index
© 2003-2024
GRASS Development Team,
GRASS GIS 8.3.3dev Reference Manual