v.edit(1)
π v.edit(1) π
GRASS GIS User's Manual, bestie! This is the page for v.edit, and it's giving vector editing main character energy. No cap.
πΈ 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 π
okay so here's the synopsis, bestie:
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 accesslayer=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:1type=string[,string,...]β Input feature type. Options:point,line,boundary,centroid. Default:point,line,boundary,centroidtool=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,selectcreate: Create new (empty) vector mapadd: Add new features to existing vector mapdelete: Delete selected features from vector mapcopy: Copy selected featuresmove: Move selected features in vector mapflip: Flip direction of selected vector linescatadd: Set new categories to selected vector features for defined layercatdel: Delete categories from selected vector features for defined layermerge: Merge selected vector linesbreak: Break/split vector linessnap: Snap vector features in given thresholdconnect: Connect two linesextend: Extend linesextendstart: Extend start nodesextendend: Extend end nodeschtype: Change feature type (point<->centroid,line<->boundary)vertexadd: Add new vertex to selected vector linesvertexdel: Remove vertex from selected vector linesvertexmove: Move vertex of selected vector linesareadel: 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 inputmove=x,y,zβ Difference in x,y,z direction for moving feature or vertexthreshold=float[,float,...]β Threshold distance (coords,snap,query).β-1βfor threshold based on the current resolution settings. Default:-1,0,0ids=rangeβ Feature ids. Example:1,3,7-9,13cats=rangeβ Category values. Example:1,3,7-9,13coords=x,y[,x,y,...]β List of point coordinatesbbox=x1,y1,x2,y2β Bounding box for selecting featurespolygon=x,y[,x,y,...]β Polygon for selecting featureswhere=sql_queryβ WHERE conditions of SQL statement withoutβwhereβkeyword. Example:income < 1000 and population >= 10000query=stringβ Query tool. Forβshorterβuse negative threshold value, positive value forβlongerβ. Options:length,danglelength: Select only lines or boundaries shorter/longer than threshold distancedangle: 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:nono: Not apply snappingnode: Snap only to nodevertex: Allow snapping also to vertex
zbulk=value,stepβ Starting value and step for z bulk-labeling. Pair:value,step(e.g.1100,10)
π¦ DESCRIPTION π¦
The module v.edit allows the user to edit a vector map via command line interface. No GUI required, bestie β command line all the way. But careful: v.edit supports only "simple" vector features: points, centroids, lines and boundaries. Currently, only 2D vector features (except of tool=zbulk) are supported.
It provides editing featuresβ geometry. Attribute data connected to the vector map are not modified at all. So your attributes are safe, periodt.
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β.
π NOTES π
If no vector features are selected or the flag -b is used, topology is not build at the end.
β¨ USAGE β¨
π Feature selection π
okay so bestie, before you can edit ANYTHING you gotta tell GRASS which features you're talking about. There's a whole menu of ways to do that:
idsβ you pick them by internal (unique) feature id's πcatsβ you pick them by category numbers π·οΈcoordsβ you pick them with x,y coordinate pairs (that's the center of the bounding box, and the size is defined bythreshold) πbboxβ you pick them with a bounding box π¦polygonβ you pick them with a polygon (ngl you have to set at least 3 coordinate pairs for this one) πΊwhereβ you pick them with awherestatement, aka the attribute data route ποΈqueryβ that's the special query vibe (think minimal vector line length, iykyk) π
and then there's the extra supporting cast for specifying vector features:
layerβ layer number (rn it's only used withcatsor thewhereoption) π§thresholdβ the threshold distance used for selecting vector features by coordinates π
π οΈ Tool description π οΈ
this is the moment, the main character list of everything v.edit can do to your map. periodt.
createβ Create a brand new (empty) vector map π (see alsov.in.ascii). If you want, vector features can also be read in (in GRASS ASCII vector format) from standard input (input=-) or from the text file you name with theinputoption.addβ Add new vector features (defined in GRASS ASCII vector format) onto an existing vector map. Features can be read from standard input or from the text file given by theinputoption. If there's no header, you MUST use the-nflag. Added features can be snapped (defined by thesnapparameter) to nodes or vertices based on threshold distancethreshold.deleteβ Delete the selected vector features from an existing vector map ποΈcopyβ Make an identical copy of the selected vector features. If a background mapbgmapis given, it copies features from the background map, not from the vector map you're currently modifying.moveβ Move the selected features of an existing vector map relative to their current location. This tool requires themoveoption. That option defines the coordinates of the movement direction. Moved features can be snapped (defined bysnapparameter) to nodes or vertices based on threshold distancethreshold.flipβ Flip the direction of selected vector lines (lines or boundaries) πcataddβ Add new layer category(ies) to the selected vector feature(s). That category can be used later for a new database entry.catdelβ Delete layer category(ies) of the 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 out of the two selected lines is going in the opposite direction to the first, it will be flipped. See also modulev.build.polylines.breakβ Split a given vector line or boundary into two lines at the location given bycoords. Ifcoordsis not given, it breaks all selected lines at each intersection (based onv.clean,tool=break).snapβ Snap vector features within a giventhreshold. See also modulev.clean. Heads up: this tool supports only snapping to nodes. Parameterssnapandbgmapare ignored. πconnectβ Connect selected lines or boundaries; the first given line gets connected to the second one. The second line is broken if necessary. The lines are only connected if the distance between them is not greater than the snapping threshold distancethreshold.extendβ Extend selected lines or boundaries without changing the current shape. Similar toconnect, but here the first AND second lines are both extended until they intersect. The second line is broken if necessary. The lines are only extended if the distance between them is not greater than the snapping threshold distancethreshold. If the first and second lines are parallel and don't intersect, no lines are extended. Use the-pflag to extend the first line across the parallel gap.extendstartβ Similar toextend, but it extends 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's within the snapping threshold distance given bythreshold.extendendβ Similar toextend, but it extends at end nodes only.chtypeβ Change the 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. The location of the new vertex is given by thecoordoption. If-1is given, only the first found line or boundary in the bounding box is modified.vertexdelβ Remove vertex(ces) specified by thecoordsoption. If-1is given, only the first found line or boundary in the bounding box is modified.vertexmoveβ Move vertex(ces) specified by thecoordsoption. The direction of the movement is specified by themoveoption. If-1is given, only the first found line or boundary in the bounding box is modified. A moved vertex can be snapped (definedsnap) to nodes or vertices based on threshold distancethreshold.zbulkβ Assign a z coordinate to 3D vector lines in a given bounding box. The first found line will get a z coordinate based on the value given by thezbulkparameter. The z coordinate of other selected lines will be increased by the step given by thezbulkparameter. This tool strictly requires thebboxandzbulkparameters. Also, the input vector map MUST be 3D. no cap. π§selectβ Print a comma separated list of selected line id's. No editing is done. Just vibes and a list. π
β¨ EXAMPLES β¨
Okay bestie, this is the part where we actually do stuff π . Every command below is a real snack, and you can copy-paste them. No cap.
π± Create new vector map
Create a brand-new empty vector map:
v.edit tool=create map=vectmap
Want to create one and slurp data from roads.txt? Do this:
v.out.ascii in=roads format=standard > roads.txt;
v.edit tool=create map=vectmap input=roads.txt
Or alternatively, pipe it in like a boss:
cat roads.txt | v.edit tool=create map=vectmap input=-
π«Ά Add new features to existing vector map
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=-
Then insert a new row for each category in the attribute table if it doesnβt exist yet:
# 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. Periodt.
Add new features read from standard input:
v.out.ascii in=railroads format=standard | v.edit tool=add map=vectmap input=-
π Delete selected features from vector map layer
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 selected features from background map
Copy all features with category number 1 from background map:
v.edit map=roads tool=copy bgmap=archsites cat=1
β¨ Move features
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 vector lines
Flip direction of all vector lines:
v.edit tool=flip map=streams cats=1-9999 type=line
π Add / delete layer category number
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 lines
Merge two lines with given category number:
v.edit map=roads tool=merge cat=4
π Split line on given point
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 at each intersection
Break selected lines (with category number 1) at each intersection:
v.edit map=roads tool=break cat=1
π Snap lines
Snap all lines using threshold distance 20 map units:
v.edit map=roads id=1-9999 tool=snap threshold=-1,20 type=line
π Connect lines
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 vertex
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 vertices
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
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
π Select features and print their idβs
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
ποΈ Fix height of contours
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
π SEE ALSO
v.in.asciiv.infov.buildv.build.polylinesv.cleanv.extrudev.split
See also wxGUI vector digitizer.
π AUTHORS
- 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)
Accessed: Saturday Jan 17 05:41:21 2026
Main index | Vector index | Topics index | Keywords index | Graphical index | Full index
Β© 2003-2025 GRASS Development Team, GRASS GIS 8.4.2 Reference Manual
Thatβs the whole manual, bestie. This page is GRASS 8.4.2 and the footer says v.edit(1) β so you know itβs official. Accessed Saturday Jan 17 05:41:21 2026. Slay π
β¨
π¦ where this page comes from
- fedora 44: grass 8.4.2-4.fc44 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms