Trace vector contours from a scanned map: Difference between revisions

From GRASS-Wiki
Jump to navigation Jump to search
No edit summary
(text cleanup)
Line 2: Line 2:
  r.in.gdal
  r.in.gdal


* georectify map using GUI georectifier or i.points + i.rectify
* Georectify map using GUI georectifier or i.points + i.rectify
* switch to in target location
* Switch to target location
* we now have a registered raster map containing a 300 dpi scan of our A0 sized map
* We now have a registered raster map containing a 300 dpi scan of our A0 sized paper map


* check how many categories
* Check how many categories (map colors)
  r.info chart
  r.info chart
* 8 colors (categories)
: 8 colors


* zoom to the map's bounds
* Zoom to the map's bounds
  g.region rast=chart
  g.region rast=chart


* display map
* Display map (command line version)
  d.mon x0
  d.mon x0
  d.rast chart
  d.rast chart


* query map values
* Query map values (command line version)
  d.what.rast
  d.what.rast
* black is category 1
* black is category 1


* make a reclass map, with just the black lines
* Create a reclass map, with just the black lines
  r.reclass in=chart out=chart_black << EOF
  r.reclass in=chart out=chart_black << EOF
  1 = 1 black
  1 = 1 black
  EOF
  EOF


* thin the lines to be 1 pixel wide
* Thin the lines to be 1 pixel wide
  r.thin in=chart_black out=chart_black.thinned
  r.thin in=chart_black out=chart_black.thinned


* 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


* 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


* connect broken lines
* 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


* add category numbers to lines
* Add category numbers to lines
  v.category in=chart_polyline out=chart_polyline_cat type=line
  v.category in=chart_polyline out=chart_polyline_cat type=line


* create a DB table to hold line length values
* Create a DB table to hold line length values
  v.db.addtable chart_polyline_cat columns="length_km DOUBLE PRECISION"
  v.db.addtable chart_polyline_cat columns="length_km DOUBLE PRECISION"


* upload line lengths to DB table
* Upload line lengths to DB table
  v.to.db chart_polyline_cat type=line option=length units=k column=length_km
  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)
* 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"


* display result over raster chart
* Display result over raster chart (command line version)
  d.vect chart_lines_5km color=red width=2
  d.vect chart_lines_5km color=red width=2


* export as a shapefile
* Export as a shapefile
  v.out.ogr in=chart_lines_5km dsn=chart_lines_gt5km
  v.out.ogr in=chart_lines_5km dsn=chart_lines_gt5km


* view shape file in [http://qgis.org QuantumGIS]
* View shape file in [http://qgis.org QuantumGIS]
  qgis chart_lines_gt5km/chart_lines_5km_crop.shp
  qgis chart_lines_gt5km/chart_lines_5km_crop.shp

Revision as of 07:41, 12 December 2006

  • 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
  • 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 pixel 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
  • Remove any dangles smaller than 1km
v.clean in=chart_lines out=chart_lines_cleaned tool=rmdangle thresh=1000
  • Connect lines which were broken at dangles
v.build.polylines -q in=chart_lines_cleaned out=chart_polyline
  • 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"
  • 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