-
-
Notifications
You must be signed in to change notification settings - Fork 285
/
v.edit.html
457 lines (334 loc) · 14.8 KB
/
v.edit.html
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
453
454
455
456
457
<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
<tt>label='interstate'</tt>.
<h2>NOTES</h2>
If no vector features are selected or the flag <b>-t</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><b>query</b> - special query (e.g. minimal vector line length)
</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>, <tt>tool=break</tt>).</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><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.
</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
<!--
<p>
<i>Last changed: $Date$</i>
-->