Difference between revisions of "Trace vector contours from a scanned map"

From GRASS-Wiki
Jump to: navigation, search
(docs)
(v.digit, grid lines)
Line 1: Line 1:
 +
== Import ==
 +
 
* Import a scanned map image. To save processing later you might want to mask out obvious text and other noise in a paint program first.
 
* Import a scanned map image. To save processing later you might want to mask out obvious text and other noise in a paint program first.
 
  r.in.gdal
 
  r.in.gdal
Line 5: Line 7:
 
* Switch to target location
 
* Switch to target location
 
* We now have a registered raster map containing a 300 dpi scan of our A0 sized paper map
 
* We now have a registered raster map containing a 300 dpi scan of our A0 sized paper map
 +
 +
== Convert to vector map ==
  
 
* Check how many categories (map colors)
 
* Check how many categories (map colors)
Line 31: Line 35:
 
* Convert raster lines to vector lines
 
* Convert raster lines to vector lines
 
  r.to.vect -s in=chart_black.thinned out=chart_lines
 
  r.to.vect -s in=chart_black.thinned out=chart_lines
 +
 +
== Clean vector map ==
  
 
* Remove any dangles smaller than 1km
 
* Remove any dangles smaller than 1km
 
  v.clean in=chart_lines out=chart_lines_cleaned tool=rmdangle thresh=1000
 
  v.clean in=chart_lines out=chart_lines_cleaned tool=rmdangle thresh=1000
 +
 +
* Remove known grid lines
 +
v.mkgrid
 +
v.buffer
 +
v.overlay
 +
 +
* Clean by hand in with the digitizing tool
 +
v.digit
 +
:or the [http://qgis.org QGIS] GRASS vector editor
  
 
* Connect lines which were broken at dangles
 
* Connect lines which were broken at dangles
 
  v.build.polylines -q in=chart_lines_cleaned out=chart_polyline
 
  v.build.polylines -q in=chart_lines_cleaned out=chart_polyline
 +
 +
== Remove short line segments ==
  
 
* Add category numbers to lines
 
* Add category numbers to lines
Line 49: Line 66:
 
* Extract line features longer than 5km (cleans out the noise)
 
* Extract line features longer than 5km (cleans out the noise)
 
  v.extract in=chart_polyline_cat out=chart_lines_5km type=line where="length_km > 5"
 
  v.extract in=chart_polyline_cat out=chart_lines_5km type=line where="length_km > 5"
 +
 +
== View ==
  
 
* Display result over raster chart (command line version)
 
* Display result over raster chart (command line version)

Revision as of 19:40, 12 December 2006

Import

  • Import a scanned map image. To save processing later you might want to mask out obvious text and other noise in a paint program first.
r.in.gdal
  • Georectify map using GUI georectifier or i.points + i.rectify
  • Switch to target location
  • We now have a registered raster map containing a 300 dpi scan of our A0 sized paper map

Convert to vector map

  • Check how many categories (map colors)
r.info chart
8 colors
  • Zoom to the map's bounds
g.region rast=chart
  • Display map (command line version)
d.mon x0
d.rast chart
  • Query map values (command line version)
d.what.rast
black is category 1
  • Create a reclass map, with just the black lines
r.reclass in=chart out=chart_black << EOF
1 = 1 black
EOF
  • Thin the lines to be 1 raster cell wide
r.thin in=chart_black out=chart_black.thinned
  • Convert raster lines to vector lines
r.to.vect -s in=chart_black.thinned out=chart_lines

Clean vector map

  • Remove any dangles smaller than 1km
v.clean in=chart_lines out=chart_lines_cleaned tool=rmdangle thresh=1000
  • Remove known grid lines
v.mkgrid
v.buffer
v.overlay
  • Clean by hand in with the digitizing tool
v.digit
or the QGIS GRASS vector editor
  • Connect lines which were broken at dangles
v.build.polylines -q in=chart_lines_cleaned out=chart_polyline

Remove short line segments

  • Add category numbers to lines
v.category in=chart_polyline out=chart_polyline_cat type=line
  • Create a DB table to hold line length values
v.db.addtable chart_polyline_cat columns="length_km DOUBLE PRECISION"
  • Upload line lengths to DB table
v.to.db chart_polyline_cat type=line option=length units=k column=length_km
  • Extract line features longer than 5km (cleans out the noise)
v.extract in=chart_polyline_cat out=chart_lines_5km type=line where="length_km > 5"

View

  • Display result over raster chart (command line version)
d.vect chart_lines_5km color=red width=2
  • Export as a shapefile
v.out.ogr in=chart_lines_5km dsn=chart_lines_gt5km
qgis chart_lines_gt5km/chart_lines_5km_crop.shp


Done!