Well, I've made a fair bit of progress, and learned quite a bit about GRASS on the way. It's probably a good time to do an assessment of where I am and what I'll tackle next.
I've got DEM maps for Vancouver Island from GeoBase which are free usage. I've merged them into a single large DEM raster for the southern half of the island. Playing with the display region shows that this is a pretty slow-loading way to go even if it's convenient to have all of the rasters combined into one.
Task 1: Figure out how to reduce raster resolution for different display region sizes and create a layer collection that changes the loaded raster resolution depending on the scale of the displayed region.
I'm also a little put off by having to think of the resolution and size of the region in terms of degrees. To me it's more natural to think in terms of map scales (e.g. 1:50,000).
Task 2: Figure out how to display/work with the scale instead of the region size. I don't even know if this is possible in GRASS.
While still in the raster layer work, I need to change the display scale so that instead of an arbitrary color scale for altitude, the map displays in a conventional altitude scale color scheme.
Task 1: Change scale colors for the display rasters.
I've figured out how to generate vector layers for the contours from the DEM rasters. One problem I ran into is that the r.contours routine that does the contour extraction uses a lot of memory. Over a certain region size, the operating system will just kill the extraction because it uses more memory than is available on my system. The solution is to do partial regions or to add more memory or more swap space. The last two solutions cost money, so I'm working on partial regions.
Just as there are appropriate levels of detail for each resolution in the rasters, there are the same for vector contours. I'm figuring out whether it's better to have multiple vector layers with different contour levels, or one vector layer with all of them, but display only the appropriate number for the resolution. I'm suspecting the first is better because it would mean that the display tools would have less to load when the resolution is low.
Task 4: Figure out the best method for displaying vector contour layers.
I'm thinking that the automatic extraction of the contours is likely creating vectors with more nodes than are necessary, and that simplifying the curves would make for smaller files. However, initial attempts to do this with v.clean has generated files nearly double the size of the originals.
Task 5: Learn more about simplifying vector layers to reduce their size.
Once I've got contours, I need to have some of the more obvious features like lakes and rivers identified. The only method I've figured out for lakes by themselves is to locate them on some other map, and then extract the contour around the flat surface in the DEM. However, there are some watershed analysis tools in GRASS that seem to me have the potential to do some of this automatically.
Task 6: Learn about extracting watershed information to see if it can aid in identifying lakes and streams.
Whew. That's enough to keep me going for a while. I still have to add the road network from GeoBase as a layer, and play a bit with what to display at differing resolutions. Once I've got that, there should be enough data in my system to be worth creating maps. At that point, I'll have to figure out how to serve maps online, and how to symbolize and display them. Since it will be a while before I get there, I haven't given that much thought yet.
Before ending this entry, let me say that the folks on the GRASS users listserv have been very helpful with their responses to my questions. The documentation for this product is somewhat lacking in my opinion, probably due to the sheer size of the project, but the listserv folks have more than made up for the shortcoming. Well done, folks!