Vector topology cleaning: Difference between revisions
No edit summary |
(cleaning of vector networks (based on grass-user mailing list hints by Markus Metz)) |
||
Line 1: | Line 1: | ||
'''Q:''' How can I patch to fitting area maps with have been digitized separately and correct the topology? I observe that the shared polygon boundaries do not perfectly match... I need clean topology. | '''Q:''' How can I speed up topologial cleaning ({{cmd|v.clean}}) for large network datasets (for example OpenStreetMap data)? | ||
'''A:''' The improved {{cmd|v.clean|version=70}} version in GRASS 7 is way faster. Here some hints: | |||
''GRASS 6:'' When '''breaking lines''' it is recommended to | |||
* split the lines first in smaller segments with {{cmd|v.split}} using the vertices option. Then, | |||
* run {{cmd|v.clean}} with 'tool=break'. After that, | |||
* use {{cmd|v.build.polylines}} to merge lines again. | |||
''GRASS 7:'' Here this has become much easier. Use {{cmd|v.clean|version=70}} with the -c flag and 'tool=break' and 'type=line'. The 'rmdupl' tool is then ''automatically'' added, and the splitting and merging is done internally. | |||
---- | |||
'''Q:''' How can I patch to fitting area maps with have been digitized separately and correct the topology? I observe that the shared polygon boundaries do not perfectly match... I need to clean topology. | |||
[[Image:Polygon map topology problems.png|center|thumb|500px|Polygon vector map with topology problems]] | [[Image:Polygon map topology problems.png|center|thumb|500px|Polygon vector map with topology problems]] | ||
Line 11: | Line 24: | ||
Example (Lat-Long): | Example (Lat-Long): | ||
v.in.ogr natural_earth/ne_110m_admin_0_countries.shp out=country_boundaries snap=0.0001 TODO: FIX THIS | v.in.ogr natural_earth/ne_110m_admin_0_countries.shp out=country_boundaries snap=0.0001 TODO: FIX THIS | ||
---- | ---- |
Revision as of 22:27, 19 April 2013
Q: How can I speed up topologial cleaning (v.clean) for large network datasets (for example OpenStreetMap data)?
A: The improved v.clean version in GRASS 7 is way faster. Here some hints:
GRASS 6: When breaking lines it is recommended to
- split the lines first in smaller segments with v.split using the vertices option. Then,
- run v.clean with 'tool=break'. After that,
- use v.build.polylines to merge lines again.
GRASS 7: Here this has become much easier. Use v.clean with the -c flag and 'tool=break' and 'type=line'. The 'rmdupl' tool is then automatically added, and the splitting and merging is done internally.
Q: How can I patch to fitting area maps with have been digitized separately and correct the topology? I observe that the shared polygon boundaries do not perfectly match... I need to clean topology.

A: You can use v.clean for this.
Tools to consider:
- snap,bpol,rmdupl,break,rmdupl,rms
- the threshold (in map units) should be very small
Example (Lat-Long):
v.in.ogr natural_earth/ne_110m_admin_0_countries.shp out=country_boundaries snap=0.0001 TODO: FIX THIS
Q: How about self-intersecting lines and boundaries?
A: In the GRASS topological model self-intersecting lines are allowed, self-intersecting boundaries are not. Self-intersecting lines are ok e.g. for v.net modules, e.g. to represent a bridge of a secondary road over a highway.
Note: There are some modules that do not like self-intersecting lines, e.g with v.buffer problems are expected.
Polygon import from SHAPE file:

v.clean applied:

See also
- Vector topology
- Topology examples (GRASS Programmer's Manual)