Trace vector contours from a scanned map

From GRASS-Wiki
Revision as of 23:32, 11 December 2006 by HamishBowman (talk | contribs) (init)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  1. import scanned map image. to save processing later you might want to mask out
  2. obvious text etc. in a paint program first.
r.in.gdal
  1. georectify map using GUI georectifier or i.points + i.rectify
  1. switch to in target location
  1. we now have a registered raster map containing a 300 dpi scan of our A0 sized map
  1. check how many categories
r.info chart
  1. 8 colors (categories)
  1. zoom to the map's bounds
g.region rast=chart
  1. display map
d.mon x0
d.rast chart
  1. query map values
d.what.rast
  1. black is category 1
  1. make a reclass map, with just the black lines
r.reclass in=chart out=chart_black << EOF
1 = 1 black
EOF
  1. thin the lines to be 1 pixel wide
r.thin in=chart_black out=chart_black.thinned
  1. convert raster lines to vector lines
r.to.vect -s in=chart_black.thinned out=chart_lines
  1. remove any dangles smaller than 1km
v.clean in=chart_lines out=chart_lines_cleaned tool=rmdangle thresh=1000
  1. connect broken lines
v.build.polylines -q in=chart_lines_cleaned out=chart_polyline
  1. add category numbers to lines
v.category in=chart_polyline out=chart_polyline_cat type=line
  1. create a DB table to hold line length values
v.db.addtable chart_polyline_cat columns="length_km DOUBLE PRECISION"
  1. upload line lengths to DB table
v.to.db chart_polyline_cat type=line option=length units=k column=length_km
  1. 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"
  1. display result over raster chart
d.vect chart_lines_5km color=red width=2
  1. export as a shapefile
v.out.ogr in=chart_lines_5km dsn=chart_lines_gt5km
  1. view shape file in QuantumGIS
qgis chart_lines_gt5km/chart_lines_5km_crop.shp