Vector remove small lines: Difference between revisions
Jump to navigation
Jump to search
(New) |
(expanded) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
'''Q:''' How to remove small vector lines? I want | '''Q:''' How to remove small vector lines? I want only delete spurious lines. | ||
''' | '''A:''' You may choose from the following approach (please read all of them before starting): | ||
'''Approach 1:''' | |||
To delete isolated lines which are not connected to the main "network", use: | |||
{{cmd|v.net.alloc}} in={your input vector} out={output vector} ... (TBD) | |||
'''Approach 2:''' | |||
To globally delete short vector segments, considering them as dangles, use: | |||
{{cmd|v.clean}} in={your input vector} tool=rmdangle thresh={your threshold} out={output vector} | |||
'''Approach 3:''' | |||
* use {{cmd|v.build.polylines}} to join broken vector segments into longer segments | * use {{cmd|v.build.polylines}} to join broken vector segments into longer segments | ||
Line 10: | Line 22: | ||
{{cmd|v.extract}} in=mypolyline out=mypolyline_over5km type=line where="length_km > 5.0" | {{cmd|v.extract}} in=mypolyline out=mypolyline_over5km type=line where="length_km > 5.0" | ||
''' | '''Approach 4:''' | ||
To remove all lines with a length shorter than 50 map units (thresh: threshold distance (coords,snap,query)) globally: | |||
{{cmd|v.edit}} mymap tool=delete query=length thresh=-1,0,-50 type=line | |||
You can also define a bounding box in v.edit to limit the operation to a subset of the map. | |||
== See also == | |||
* http://gis.stackexchange.com/questions/48265/how-to-find-dead-ends-in-a-road-network | |||
[[Category:FAQ]] | [[Category:FAQ]] | ||
[[Category:Vector]] | [[Category:Vector]] |
Latest revision as of 10:52, 5 November 2014
Q: How to remove small vector lines? I want only delete spurious lines.
A: You may choose from the following approach (please read all of them before starting):
Approach 1:
To delete isolated lines which are not connected to the main "network", use:
v.net.alloc in={your input vector} out={output vector} ... (TBD)
Approach 2:
To globally delete short vector segments, considering them as dangles, use:
v.clean in={your input vector} tool=rmdangle thresh={your threshold} out={output vector}
Approach 3:
- use v.build.polylines to join broken vector segments into longer segments
- then use v.to.db with option=length (line length) to upload the vector segment lengths to the attribute table
v.db.addcol mypolyline column="length_km double precision" v.to.db mypolyline type=line option=length units=k column=length_km
- now use v.extract to extract the longer vector segments into a new map according to a threshold you need. Example: Extract line features longer than 5km (cleans out the noise):
v.extract in=mypolyline out=mypolyline_over5km type=line where="length_km > 5.0"
Approach 4:
To remove all lines with a length shorter than 50 map units (thresh: threshold distance (coords,snap,query)) globally:
v.edit mymap tool=delete query=length thresh=-1,0,-50 type=line
You can also define a bounding box in v.edit to limit the operation to a subset of the map.