1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452
|
<h2>DESCRIPTION</h2>
The module <em>v.edit</em> allows the user to edit a vector map
via command line interface.
<p><em>v.edit</em> supports only "simple" vector features: points,
centroids, lines and boundaries. Currently, only 2D vector features
(except of <b>tool=zbulk</b>) are supported.
<p>Provides editing features' geometry. Attribute data connected to the
vector map are not modified at all.
<p>Vector features can be selected either by internal <b>id</b>, category
number <b>cats</b>, coordinates <b>coords</b>, bounding
box <b>bbox</b>, <b>polygon</b>, <b>where</b> statement (attribute
data) or by <b>query</b>. Selecting features by coordinates is
affected by the current 2D resolution or by the threshold distance
given by <b>threshold</b>. The options are <em>orthogonal</em>, i.e. can
be used in various combinations. For example:
<div class="code"><pre>
v.edit map=roads tool=select \
coord=599505,4921010,603389.0625,4918292.1875 \
threshold=10000 where="label='interstate'"
</pre></div>
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
<code>label='interstate'</code>.
<h2>NOTES</h2>
If no vector features are selected or the flag <b>-b</b> is
used, topology is not build at the end.
<h2>USAGE</h2>
<h3>Feature selection</h3>
Vector features can be selected in several ways:
<ul>
<li><b>ids</b> - using internal (unique) feature id's</li>
<li><b>cats</b> - using category numbers</li>
<li><b>coords</b> - using x,y coordinate pairs (center of bounding
box, size defined by <b>threshold</b>)</li>
<li><b>bbox</b> - using bounding box</li>
<li><b>polygon</b> - using polygon (at least 3 coordinate pairs have to be set)</li>
<li><b>where</b> - using where statement (attribute data)</li>
<li><b>query</b> - special query (e.g. minimal vector line length)</li>
</ul>
Additional parameters for vector feature specification are:
<ul>
<li><b>layer</b> - layer number (currently used only
with <b>cats</b> or <b>where</b> option)</li>
<li><b>threshold</b> - threshold distance used for selecting vector
features by coordinates</li>
</ul>
<h3>Tool description</h3>
<ul>
<li><b>create</b> - Create new (empty) vector map (see
also <em><a href="v.in.ascii.html">v.in.ascii</a></em>). Optionally
vector features (in <a href="vectorascii.html">GRASS ASCII vector
format</a>) can be read from standard input (<b>input=-</b>) or
from the text file given by the <b>input</b> option.</li>
<li><b>add</b> - Add new vector features (defined
in <a href="vectorascii.html">GRASS ASCII vector format</a>) to
existing vector map. Features can be read from standard input or
from the given text file (<b>input</b> option). If no header is
given, the <b>-n</b> flag must be used. Added features can be
snapped (defined by <b>snap</b> parameter) to nodes or vertices
based on threshold distance <b>threshold</b>.</li>
<li><b>delete</b> - Delete selected vector features from existing
vector map.</li>
<li><b>copy</b> - Make identical copy of selected vector
features. If background map <b>bgmap</b> is given copy features
from background map, not from currently modified vector map.</li>
<li><b>move</b> - Move selected features of existing vector map
relatively to their current location. This tool requires
<b>move</b> option. The option defines coordinates of the movement
direction. Moved features can be snapped (defined by <b>snap</b>
parameter) to nodes or vertices based on threshold
distance <b>threshold</b>.</li>
<li><b>flip</b> - Flip direction of selected vector lines
(lines or boundaries).</li>
<li><b>catadd</b> - Add new layer category(ies) to selected vector
feature(s). Category can be later used for new database
entry.</li>
<li><b>catdel</b> - Delete layer category(ies) of selected vector
feature(s).</li>
<li><b>merge</b> - 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 <em><a href="v.build.polylines.html">v.build.polylines</a></em>.</li>
<li><b>break</b> - Split given vector line or boundary into two
lines on location given by <b>coords</b>. If <b>coords</b> not
given, breaks all selected lines at each intersection (based
on <em><a href="v.clean.html">v.clean</a></em>, <code>tool=break</code>).</li>
<li><b>snap</b> - Snap vector features in given threshold. See
also module <em><a href="v.clean.html">v.clean</a></em>. Note that this
tool supports only snapping to nodes. Parameters <b>snap</b> and
<b>bgmap</b> are ignored.</li>
<li><b>connect</b> - 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 <b>threshold</b>.</li>
<li><b>extend</b> - Extend selected lines or boundaries without changing
the current shape. Similar to <b>connect</b>, 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 <b>threshold</b>. If the first and
second lines are parallel and do not intersect, no lines are extended. Use
the <b>-p</b> flag to extend the first line across the parallel gap.</li>
<li><b>extendstart</b> - Similar to <b>extend</b>, 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 <b>threshold</b>.</li>
<li><b>extendend</b> - Similar to <b>extend</b>, but extend at end nodes
only.</li>
<li><b>chtype</b> - Change feature type of selected geometry
objects. Points are converted to centroids, centroids to points,
lines to boundaries and boundaries to lines.</li>
<li><b>vertexadd</b> - Add vertex(ces) to the given vector lines
or boundaries. Location of the new vertex is given by <b>coord</b>
option. If -1 is given only first found line or boundary in bounding
box is modified.</li>
<li><b>vertexdel</b> - Remove vertex(ces) specified by
<b>coords</b> option. If -1 is given only first found line or
boundary in bounding box is modified.</li>
<li><b>vertexmove</b> - Move vertex(ces) specified
by <b>coords</b> option. Direction of the movement is specified by
the <b>move</b> option. If -1 is given only first found
line or boundary in bounding box is modified. Moved vertex can be
snapped (defined <b>snap</b>) to nodes or vertices based on
threshold distance <b>threshold</b>.</li>
<li><b>zbulk</b> - Assign z coordinate to 3D vector lines in given
bounding box. The first found line will get z coordinate based on
value given by <b>zbulk</b> parameter. Z coordinate of other
selected lines will be increased by step given by <b>zbulk</b>
parameter. This tool strictly requires <b>bbox</b>
and <b>zbulk</b> parameter. Also input vector map must be 3D.</li>
<li><b>select</b> - Print comma separated list of selected line
id's. No editing is done.</li>
</ul>
<h2>EXAMPLES</h2>
<h3>Create new vector map</h3>
Create new (empty) vector map:
<div class="code"><pre>
v.edit tool=create map=vectmap
</pre></div>
Create new vector map and read data from file 'roads.txt':
<div class="code"><pre>
v.out.ascii in=roads format=standard > roads.txt;
v.edit tool=create map=vectmap input=roads.txt
</pre></div>
or alternatively
<div class="code"><pre>
cat roads.txt | v.edit tool=create map=vectmap input=-
</pre></div>
<h3>Add new features to existing vector map</h3>
Add a new point to the vector map (without header):
<div class="code"><pre>
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
</pre></div>
The input must be in <a href="vectorascii.html">GRASS ASCII vector
format</a>.
<p>
Add new features read from standard input:
<div class="code"><pre>
v.out.ascii in=railroads format=standard | v.edit tool=add map=vectmap input=-
</pre></div>
<h3>Delete selected features from vector map layer</h3>
Remove all vector features with category number 1 or 2:
<div class="code"><pre>
v.edit tool=delete map=roads cats=1,2
</pre></div>
Remove all vector features except of those with category number 1 or 2
(reverse selection):
<div class="code"><pre>
v.edit -r tool=delete map=roads cats=1,2
</pre></div>
Remove features with category 1 or 2 located on coordinates
600952.625,4926107 (bounding box based on the current 2D resolution):
<div class="code"><pre>
g.region -d;
v.edit tool=delete map=roads cats=1,2 coords=600952.625,4926107
</pre></div>
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):
<div class="code"><pre>
v.edit map=roads tool=delete \
coord=592542.892,4924766.996,603389.062,4918292.187 \
threshold=1000 cat=1,2
</pre></div>
<h3>Copy selected features from background map</h3>
Copy all features with category number 1 from background map:
<div class="code"><pre>
v.edit map=roads tool=copy bgmap=archsites cat=1
</pre></div>
<h3>Move features</h3>
Move feature (vector point) located on coordinates 602580,4918480 to
coordinates 603580,4919480:
<div class="code"><pre>
v.edit tool=move map=archsites coord=602580,4918480 th=1e-2 move=1000,1000
</pre></div>
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:
<div class="code"><pre>
v.edit tool=move map=roads cat=1 move=1000,-1000 snap=node threshold=-1,10
</pre></div>
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:
<div class="code"><pre>
v.edit tool=move map=roads bbox=601530,4921560,602520,4922310 move=-1000,1000
</pre></div>
<h3>Flip direction of vector lines</h3>
Flip direction of all vector lines:
<div class="code"><pre>
v.edit tool=flip map=streams cats=1-9999 type=line
</pre></div>
<h3>Add / delete layer category number</h3>
Add new layer/category 2/1, 2/3, 2/4, 2/5 to features covered by given polygon:
<div class="code"><pre>
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
</pre></div>
Delete layer/category 1/1, line id 1:
<div class="code"><pre>
v.edit tool=catdel map=roads id=1 cats=5
</pre></div>
<h3>Merge lines</h3>
Merge two lines with given category number:
<div class="code"><pre>
v.edit map=roads tool=merge cat=4
</pre></div>
<h3>Split line on given point</h3>
Split line id 810 on coordinates 604268,4923570 in threshold 50 map units:
<div class="code"><pre>
v.edit map=roads tool=break coords=604268,4923570 id=810 threshold=50
</pre></div>
<h3>Break selected lines at each intersection</h3>
Break selected lines (with category number 1) at each intersection:
<div class="code"><pre>
v.edit map=roads tool=break cat=1
</pre></div>
<h3>Snap lines</h3>
Snap all lines using threshold distance 20 map units:
<div class="code"><pre>
v.edit map=roads id=1-9999 tool=snap threshold=-1,20 type=line
</pre></div>
<h3>Connect lines</h3>
Connect line id 48 to line id 565:
<div class="code"><pre>
v.edit map=roads tool=connect id=48,565
</pre></div>
Connect line id 48 to line id 565; line id 60 to line id
50. Maximum threshold distance is 700 map units:
<div class="code"><pre>
v.edit map=roads tool=connect id=48,565,60,50 threshold=-1,700
</pre></div>
<h3>Add vertex</h3>
Add new vertex to the line located at 600952,4926107, threshold is
set to 1 map unit:
<div class="code"><pre>
v.edit tool=vertexadd map=roads coords=600952,4926107 threshold=1
</pre></div>
<h3>Delete vertices</h3>
Delete vertex located at 593191.608,4925684.849 (threshold set to 0.1 map units).
Modify only lines with category 1:
<div class="code"><pre>
v.edit tool=vertexdel map=roads coord=593191.608,4925684.849 \
threshold=1-e1 cats=1
</pre></div>
<h3>Move vertices</h3>
Move vertices located at 604441,4921088 (threshold set to 100 map units).
Modify only lines with categories 1-10:
<div class="code"><pre>
v.edit tool=vertexmove map=roads cats=1-10 coord=604441,4921088 \
threshold=100 move=1000,1000
</pre></div>
<h3>Select features and print their id's</h3>
Print id's of selected features, e.g.:
<div class="code"><pre>
v.edit map=soils@PERMANENT tool=select \
bbox=595733.8125,4919781.75,598536.1875,4917396.75 --q
</pre></div>
Example with <em><a href="d.vect.html">d.vect</a></em>:
<div class="code"><pre>
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
</pre></div>
Select all lines shorter (or equal) than 10 map units:
<div class="code"><pre>
v.edit map=roads tool=select query=length threshold=-1,0,-10
</pre></div>
Select from given bounding box all lines longer then 200 map units:
<div class="code"><pre>
v.edit map=roads tool=select bbox=598260,4919730,605100,4926240 query=length threshold=-1,0,200
</pre></div>
<h3>Fix height of contours</h3>
Input vector map contains 2D lines representing contours. Height can
be assign to the contours using <b>tool=zbulk</b>. First of all 2D
lines need to be converted to 3D lines:
<div class="code"><pre>
v.extrude input=line2 output=line3 height=0 type=line
</pre></div>
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.
<div class="code"><pre>
v.edit a2 tool=zbulk bbox=586121.25049368,4911970.21547109,603092.60466035,4927071.25713776 \
zbulk=1000,10
</pre></div>
<h2>SEE ALSO</h2>
<em>
<a href="v.in.ascii.html">v.in.ascii</a>,
<a href="v.info.html">v.info</a>,
<a href="v.build.html">v.build</a>,
<a href="v.build.polylines.html">v.build.polylines</a>,
<a href="v.clean.html">v.clean</a>,
<a href="v.extrude.html">v.extrude</a>,
<a href="v.split.html">v.split</a>
</em>
<p>See also <em><a href="wxGUI.vdigit.html">wxGUI vector digitizer</a></em>.
<h2>AUTHORS</h2>
Original author: Wolf Bergenheim - independent developer<br>
Initial updates: Jachym Cepicky, Mendel University of Agriculture and Forestry in Brno, Czech Republic<br>
Major update by Martin Landa, FBK-irst (formerly ITC-irst), Trento, Italy<br>
Extend tools by Huidae Cho
|