Vector topology cleaning: Difference between revisions

From GRASS-Wiki
Jump to navigation Jump to search
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.

Polygon vector map with topology problems

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:

Overlayed polygons after import from SHAPE file (Simple Features

v.clean applied:

Overlayed polygons topologically cleaned. Note the double categories.

See also