Caribbean Disaster Mitigation Project
Implemented by the Organization of American States
Unit of Sustainable Development and Environment
for the USAID Office of Foreign Disaster Assistance and the Caribbean Regional Program

USAID Logo OAS Logo

Handbook for Geographic Information Systems on Dominica

Note: This handbook was prepared to follow up a GIS training workshop provided for the Government of Dominica. The data files and color plates refered to in this document are not available in the online version of the document.

Contents

Background

The Commonwealth of Dominica maintains modern infrastructure in difficult conditions. All the permanent settlements of the country are on paved roads, and the majority of the population has access to safe drinking water, electricity, and modern telephones. These services are maintained despite frequent landslides and recurrent hurricanes, but they are expensive. The landscape itself adds to the costs, because the population is scattered among plateaux and valleys separated by sheer cliffs. Given these conditions, careful planning is needed to minimize the costs of new installations and emergency repairs.

The Physical Planning Unit (PPU) of the Ministry of Commerce has a modern Geographic Information System (GIS), recently installed under the auspices of Canadian International Development Assistance (CIDA). PPU has been working to add to this digital archive and to use the system for planning at the country and district level. As it happens, a research center at Springfield, Dominica had a similar system, although it did not have a full database. The Geographic Information System-Environmental Planning project (GIS-EP) is funded by USAID and administered by OAS to support environmental planning and to foster the use of modern decision-support technology in the country. The GIS-EP project has supported both the PPU and Springfield GIS with equipment and technical support.

This handbook is a product of three weeks of workshops organized by the GIS-EP on Dominica in October, 1997

The purpose of these workshops was to aid the Dominicans in making the most of their new systems. This required stimulating interest without arousing false hopes. To stimulate interest, it is necessary to get past the graphics screens and colour printers and advance to the mathematical modeling tools that give GIS its true power. The workshops explored some spatial models, and the handbook that follows develops the models further.

On the other hand, false hopes are a danger for novices. There are dozens of GIS software packages on the market, and some of them are especially designed to support facilities maintenance of public utilities. It is easy to watch a prepared GIS demonstration by a team of traveling salesmen without seeing the work and expense that is needed to keep one of these systems going on a day-to-day basis. There are now two general-purpose GIS on Dominica. If some utility on Dominica decides to get its own GIS, it may get a system that is tailored to its special needs, but no organization should miss the opportunity for collaboration and mutual support.

The workshops had a mixture of difficulties and solutions that were typical for this technology. As a result of this experience, the Dominican participants will be better able to judge and use GIS for their particular needs.

Workshop on GIS and Utilities

Following are a series of exercises based on a workshop at Springfield, Dominica in October 1997. The workshop was sponsored by the GIS-EP, with assistance from PPU. The participants were engineers from Dominican utility companies. During the workshop, we identified the following problem for analysis:

This handbook started as a memory aid for the workshop participants who might like to return to Springfield and repeat the exercises on their own. As I wrote, I tried to make the instructions readable for others as well, similar to the Tutorial Exercises provided with IDRISI. I assume that the user is familiar with Dominica and with computers using Windows 95 or Windows NT. There should also be some familiarity with the IDRISI software for GIS (Geographic Information Systems), although we will start with elementary operations. A paper map of the island at a scale of 1:50,000 or larger would be helpful. The digital elevation map and the vector files are to be distributed along with this document.

File names, directory names, and file formats will be in bold. A name for an IDRISI map will be both bold and with an initial Capital. As new concepts are introduced, they will get bold ALLCAPS. Commands to be executed inside a software package will be presented as a sequence of menu names with initial capitals: File/Import/Vector.

Getting Started

  1. Establish a new directory on your hard disk, someplace where you have at least 90 to 100 Mb of space. An empty Zip disk will be fine. Copy the ten files DomDEM.img/doc, Coast.vec/dvh, Streams.vec/dvh, Roads.vec/dvh, and Houses.vec/dvh to the new directory. You may have to uncompress the elevation map using PKunZip or WinZip. Open IDRISI and set the environment path to your data directory using Environment/Environ.

    DISPLAY
    Click on Display/Display Launcher to see the Digital Elevation Model of Dominica (DEM) entitled DomDEM. Use autoscaling and a palette that gives smooth gradations, such as grey256, quant256, or ndvi256. This image will look a little strange with these colours, but we will be making a custom palette later.

DomDEM is a raster image of elevations on Dominica exported from a SPANS map at quadtree 13. The raster has a nominal resolution of 7.933 meters per cell. The SPANS map, in turn, was the product of a Triangulated Irregular Network with 600,770 nodes, produced from a list of point elevations compiled by Darrell Edgett for CIDA in 1996.

If we figure the area of Dominica as 751 square kilometers, division shows that the original point file averaged eight points per hectare, or one point per 1250 m2. So, we know right away that most of the cells on this raster map, averaging one per 63 m2, were created by interpolation.

  1. WINDOW The window button is the icon of a blue rectangle. Use it to window in on the northwest quarter of the island, including at least the Cabrits Peninsula, Prince Rupert Bay, and the peak of Morne Diablotin. This should center your image over the Picard River valley. Use the Cursor Query Operation to find the coordinates for the left, right, top and bottom of this window. I got columns 17 to 1325 and rows 655 to 2050.

    Click on the menu for Reformat/Window and create a new image clipped to the window you just chose from Begging. I used columns 50 to 1249 and rows 700 to 1999 and called the new image Rupert. The result displays automatically at the end of the processing. Examine it to make sure that is includes the whole watershed for the Picard River, Portsmouth, and Pointe Ronde.

    DOCUMENT
    Call up File/Document to look at the parameters of the image Rupert. My choice of window gave me 1200 columns by 1300 rows. The minimum and maximum X and Y were updated automatically for the new image. The values of the image range from 0 (zero, naught) to 4700. That is the same range of values as for the DEM of the whole island, because we included a bit of sea as well as the peak of Morne Diablotin, which is the highest spot on the island. The elevations are in feet, at present, while the reference units are meters, to accord with the UTM projection of the original map.

It is time for a little FILE MAINTENANCE. Shrink IDRISI and open Windows Explorer to look at your data directory. The file pair DomDEM.img/doc totals nearly 42 Mb, and Rupert.img/doc is another 3 Mb. Your directory is getting crowded already. You will not need DomDEM again for these exercises, so make sure that you have a copy safe somewhere else, and erase it.

  1. You have two ways to get rid of DomDEM. If you do it in Windows Explorer, you must remember to erase both DomDEM.img and DomDEM.doc. Neither file is usable without the other, and you will only confuse yourself if you leave just one. (You might produce an error message, but you will not crash IDRISI that way.) It is simplest for you to go back to IDRISI, go to File/File Maintenance, and erase the pair with one command there.

You will need to do file maintenance often. If you try to run one of the exercises below without enough storage space, the command will proceed until the disk is full. Then you will have to do file maintenance anyway to remove the temporary files that were not finished.

Customizing a Palette

You probably are not comfortable looking at the elevation map with the palette you have been using. Most people need more intuitive colours, so here is how to get them.

  1. PALETTE Click on the button for Palette Workshop. This is an icon on the menu bar showing diagonal stripes of color. A window appears which shows 15 black squares and some choice buttons.

    Click on the black square numbered "0" and then move down to the blinking button near the word "Red." Drag that button to the right slightly so that the red value is increased to around 100. Now go to the buttons for Green and Blue and drag them to around 225 and 255, respectively. The box number 0 should change colour to a pale blue-green. This is the colour you will be using to indicate the sea on your maps, so adjust it as you please.

    Next, click on the black square numbered "1" and make it into a colour appropriate for low ground near the shore. I favour a pale tan.

    Next to the black boxes are two arrowheads, pointing up and down. Click on the down arrow and change the numbers for the black boxes until you reach number 255. Using the colour buttons, change box number 255 to a deep forest green. This is the colour that will be painted on the top of Morne Diablotin.

    Now go to the area in this window called "palette blend function." Set the lower anchor at 1 and the upper anchor at 255 and click on the Blend button. Suddenly all the boxes that were black get new colours which are linear interpolations of the two anchor colours.

    On the window for Palette Workshop, click on File/Save As and pick a name for your new palette. Save it in your working directory as an *.smp file. Now open the Display Launcher and display Rupert using autoscale and your "user-defined" palette. Overlay the vector Coast to see the exact coastline.

There are three problems:

First, we will finish editing the palette interactively, using simultaneous windows. Then we will address the next two problems in turn.

  1. Open the Palette Workshop again without closing the map you have displayed. Go through File/Open to get the palette you just created. (Remember that when IDRISI gives you a text box to enter a name, you can double click on it to get a list of names available for files that exist already.)

    Now you can modify the palette to create sharper contrasts. I suggest that you break the range 1 to 255 into four or five subranges, with a blending from the low to the high values within each of them. For instance, leave colour 1 as it is, modify colour 50 to be a bright, deep green, and then blend from 1 to 50. Does this make sense for the coastal scrubland?

    To see the results, save the palette on the hard disk again but do not close the Palette Workshop. Go to the Composer window for Rupert, which should still be on-screen. Click on Properties, double click on the text box to get the list of palettes available, and pick the same palette again. IDRISI reads the new palette file which you just saved, and the colours on-screen change.

Modify your palette until you have ranges of colours that suit you. Then, to accentuate the image even more, you can add contrasting lines. For instance, try making colour 51 bright red. When you redisplay, the new red forms a contour line. Figure 2, page 36 shows a palette that accentuates the terrain.

Editing the Map

The crater in the side of Morne Diablotin is obviously wrong. It is also in the watershed of the Picard River, and we do not want it to affect our analysis. On the other hand, it is in a heavily forested, unsettled area, so that we can guess the approximate shape of the ground there without worrying too much about precision.

  1. f) Window in around column 1000, row 1250 again. Make your window small enough that you can see the blockiness of the individual cells, but large enough that you can see the trends of the ground that is well outside of the crater. One hundred cells square is about right.

    The crater distorts the values for a short distance around it. Outside of the crater, we see the steep hillside, elevations around 3000 feet, with a well-defined ravine leading down towards the Picard River

    DIGITIZING
    Click on the icon that looks like a red and yellow wheel. This starts the module for On-Screen Digitizing. You are going to create some vector files to patch the hole in the mountain. Name the vector file Patch1, choose to make a Polygon, and choose a feature ID of 1. Do not forget to type in an explanatory title such as, "Outside: 1st patch for the hole in Diablotin."

    When you click OK and move your cursor over the map, you see that you have a circle with crosshairs. Move to the upper-left corner of your window and click the left button on the mouse. A small dot appears on the map. Move to the lower-left corner and click again. The dot stretches to a line between the two points. Click on the lower-right and upper-right corners to make three sides of a square. Now click on the right button and a line shoots over to your first point and closes the square. Save this square by clicking on the icon that looks like a bent arrow.

    Now digitize another polygon, inside of the first by about ten cells on each side. Take extra care not to cut across the crater. Call this Patch2, value 1, with the title "Inside: 2nd patch for the hole."

    Look at the elevations around the crater. The ravine appears undistorted up to 2800 feet and it resumes a plausible course above 3200 feet. I suggest that we plug the hole with values at 3000. So, digitize a polygon around the crater, Patch3, with ID equal to 3000. My polygon wound up looking like a cucumber. Save the file by clicking the icon of a bent arrow.

    You can check to see if you have saved all three patches by clicking on Composer/Add Layer as if you were going to add a vector to the image. The list of vectors to choose should include your three new creations.

What we are going to do is isolate a part of Rupert using Patch1 and cover the crater with Patch3. Then we are going to smooth over the seams a bit, cut out the part we want, and put it back over the hillside on Rupert.

  1. MAKING A RASTER Go to Data Entry/Initial to create a blank map with the same spatial parameters as Rupert. Name it Maskpat1, with an initial value of 0. Title it, "Mask to take the area to be patched."

    Go to Reformat/Raster-Vector Conversion/Polyras to update your new raster, Maskpat1, with the area enclosed by Patch1.

    This new map does not look like much. It is all zeros except for an area of ones, corresponding to the area we want to edit. Maps like this are called BINARY MASKS, and they are powerful tools.

    MASKING OUT
    Go to Analysis/Mathematical Operators/Overlay and multiply Rupert by Maskpat1. Call the result Patchout, with the title "area of RUPERT to be doctored."

Have a close look at the result. Areas that were zeros on the mask are still zeros; areas that were ones are now the same value that they would be on RUPERT. So, multiplying a map by a binary mask is a sort of Boolean algebra. The mask says no to some areas and yes to others.

  1. SMOOTH FILTER Update this image with Patch3. The crater disappears. Now go to the command Analysis/ Context Operators/Filter. Choose a mean-filter, 7 * 7 and call it Smooth. A mean-filter re-assigns each cell to the average value of the cells surrounding it. (You can read a full description if you click on the Help button) The effect is to smooth out the rough transitions, and we use it to smooth the edges of the patch over the crater.

Unfortunately the mean-filter also rounds the edges where the patch of good values comes up against the zeros of the background. So, using the operations you just learned, make a new initial map of zeros and update it with the polygon Patch2, and use the overlay multiplication to trim off the rounded outside edges of the square in Smooth.

  1. COVER Now go back to Analysis/Mathematical Operators/Overlay. This time, choose "First covers Second except where zero" and put your leveled, smoothed and trimmed patch on top of the crater on the original Rupert. The repair is complete.

Getting a Good Look at the Elevation Map.

We have improved the palette and patched the hole in the mountain. The problem with the coastline requires more thought.

  1. Window in on the south shore of the Cabrits Peninsula. From the cruise ship terminal to Portsmouth, the vector of the coastline looks right, but the colours of the raster seem to show massive flooding. Now do a cursor query, using the button on the menu bar that has the question mark. You will find that points offshore are registered as 0, while points inside the coastline have positive values even if they are blue. So the raster has the right information, but it looks wrong on-screen.

All of this is a result of the "autoscaling" option when you display. There are only 255 colours to allocate to 1400 elevation values in the raster Rupert. The lowest elevations on land get grouped with the sea itself, and the whole group is coloured blue.

After spending time creating a good palette for displaying the elevation data, you probably want to fix this problem in displaying the coastline. We will do that, but in order to make a more presentable picture we will have to distort and destroy some information.

  1. RECLASS First, we will make a map that shows only the coastline. Click on Analysis/Database Query/Reclass. In the window that appears, choose the options "Image" and "User-defined reclass." Double click on the text box for "Input file" and select Rupert. For the output name, type "Bayside." For a title, enter "Binary mask of Prince Rupert Bay coastline." Now go to the right side of the window and assign a new value of 1 to all values from 1 to 4701. Notice that 4701 is one unit more than the maximum value in the map Rupert. Now click "OK." The status bar on the bottom of the screen shows the progress of the program, and a few moments later, a green and black map appears.

    Window in on a distinctive area, such as Cabrits, and overlay the image with the coastline vector. The vector seems to fit this raster much better than it fit Rupert. It is still not a perfect fit, and we will look into that problem when we evaluate the models later. The point for now is that this raster of the coastline was entirely derived from Rupert, so we know that the elevation map did have the information even if it was difficult to display.

    Go to File/Document and look at the parameters for Bayside. Look at the minimum and maximum values. This map has only two values: zero for the ocean and 1 for the land, so it is a binary mask. Obviously, we have destroyed a lot of information to make this simple outline from the elevation map. Look at the data type: "Byte." Close the Document window, shrink IDRISI and use Windows explorer to look at the size of the files in your data space. Bayside, the map of data type "Byte" is only half as big as Rupert.

The elevation map, Rupert, is of data type "integer." Each cell in a raster map of integers requires two bytes of disk space, but the integers can range over tens of thousands of values. When you created a map that only needed to range over two values, 0 and 1, the software chose a more compact data type for you. Rasters of bytes take only half as much disk space, but they can only range from 0 to 255. We will save Bayside and use it many times. Close Explorer and return to IDRISI.

  1. MAP ALGEBRA We still want to find a way to display the elevations so that there is one colour for the ocean, and a series of colours for the different elevations on land. We know that that there are 4700 feet of altitude to be accommodated in 255 colours. We need to change the values of Rupert by some number so that the entire range is less than or equal to the number of colours available. Figure that 4700 feet divided by 255 colours equals 18.43, so that if we use one colour for each twenty feet we will be safe.

    Click on Analysis/Mathematical Operators/Scalar. This is a program that lets you change every cell in a raster by the same operation. Use Rupert as the input file and "Rupby20" as the output name. Choose to divide the map by 20. Enter a long, descriptive title such as, "Elevation map in feet divided by 20 to fit palette." Click "OK" and wait for the program to finish. When the map displays, click on the "Properties" button of Composer to change to the palette you created earlier.

Darn. It looks just the same. What happened?

  1. Window on Cabrits again, overlay the coastline vector, and cursor query the blue area inside the coastline. You get decimal fractions: what was two feet high is now figured as 0.1, and so on. The numbers have changed, but once again the autoscaling feature of Display is grouping the low ground with the sea water.

    Open File/Document and look at the parameters for this newest file. Minimum value is zero, because you divided zero by 20. Maximum value is 235, which equals 4700 divided by 20. That is all as expected. The map is a different data type however, called "real." Close Document and shrink IDRISI again to use Windows Explorer to look at your hard drive. Rupby20.img is twice as big as the file it was derived from.

What is going on? Did you produce twice as much information?

No. The new map, with decimal fractions, has almost exactly the same information as the integer map. If you multiply 20 times Rupby20, you will restore the cell values almost as they were, with two differences. First, the cell values will still be in the data type "Real" with decimals. Second, you will have to think about rounding errors. In this case, since you divided by 20 you did not produce any irrational fractions, so there is no rounding error.

The Real data type takes four bytes for each cell value in the raster. It gives 7 significant figures; far more than we can justify for this data. Besides, right now we are intent on the appearance of the image, rather than precision to five decimal places. In that spirit, we are going to simplify the data and destroy information, but we will get a picture we can really study.

  1. CONVERTING Click on Reformat/Convert. Choose Rupby20 as the input file. The window tells you that you are starting from data type Real and file type Binary. On the right half of the window, click the button to choose output data type Byte. On the bottom of the window, choose to do the conversion by truncation. Click "OK."

    Redisplay Rupby20 and investigate the values again. The truncation made each cell fall into the next whole category downward. That is, a cell that had 35 feet in Rupert had a value of 1.75 as a real number and it truncated to 1 as a byte value. A cell of 40 feet elevation is now classed as 2. That is all well and good, but the low areas are now truncated to zero. What to do?

    Go to Analysis/Mathematical Operators/Overlay. You have already seen how the command "Scalar" can add, subtract, multiply or divide an entire map by a number you choose. Overlay includes operations to add, subtract, multiply or divide one map by another map. Add Bayside to Rupby20, with the title "twenty-foot contour."

When you display this with your special palette, you finally see the shoreline. The elevations look just as detailed as ever, because you are using almost the same number of colours as before. So, the visual impact of the image is definitely improved, even though the data has been distorted. All of the above may seem like a lot of work for very little improvement, but there will be a reward.

  1. Go to Display/Ortho and click on the help button. As you read the description of this command, you will see that Twentyup is just what you need as a "drape image."

    To use Ortho, you must adjust the maps a bit to match the resolution of your video monitor. For instance, Rupert has 1200 columns by 1300 rows, and can not be shown on a monitor with only 1024 by 768 pixels. Use cursor query on either Rupert or Twentyup to see how many columns you can trim off the west edge without cutting into Pointe Ronde, and how many columns you must lose from the mountains to the east. Then, to trim Rupert and Twentyup down to size, use Reformat/Window, choose batch window, and pick a prefix like "ort." Type in the rows and colunms you need. I chose:

Now, use Ortho with Ortert as the surface image and Ortntyup as the drape image. Pick a resolution to suit your monitor and a palette to suit yourself. Run the command several times to experiment with different viewing angles, directions, and vertical factors.

Orthogonal views like this appeal to us because they bear some resemblance to what we see in real life. For instance, we see a high oblique view of Prince Rupert Bay when we fly from Guadeloupe to Canefield. You might want to look at orthogonal views to search for obvious data errors like the crater you just finished filling, or you might want to use the functions in Composer to annotate the image and prepare it for a presentation.

Aside from such applications, the orthogonal viewer is a dead end. It pleases our eyes, but it does not lead us to new knowledge. In the next few exercises, we will finally enter the field of GIS analysis. We will use powerful tools which show us the maps in ways we could not see without help.

  1. So, save your best orthogonal view if you want to. Also, please save

Make sure you have good explanatory titles for each of the maps above, and then use File/File Maintenance to erase all the others.

Surface Analysis

We look at the orthogonal image, and we can see that some areas are level, others are steep. How steep? It is impossible to be precise, since we have shifted the angle of view and the vertical exaggeration factor.

Abandoning orthographic views, we could display the image in plan view again. We could window in and use cursor query to get the elevation value of a point of interest and of its immediate neighbors. If we jotted the numbers down on a piece of paper, we could calculate the slope by figuring the difference in elevation between our point of interest and a cell next to it. But which neighboring cell should we use for comparison? We would take the lowest neighbor for going downhill, the highest neighbor for going uphill, but what if there are neighbors both above and below? Which way do we go? This could take a long time.

Fortunately, IDRISI has a command which will figure this out for you. It will search the entire image, compare each cell to its neighbors, and fit an inclined plane to that location. This is a "best fit" approach, because hillsides are not inclined planes: they are bumpy.

You can think of the inclined plane as being tangent to the surface at the center of the cell, slanted so that it passes as close as possible to the neighboring cells. The slant is specified by the slope and the direction of the slope, the "aspect."

  1. Go to Analysis/Context Operators/Surface. Choose to calculate both slope and aspect on Rupert with output in degrees, and a conversion factor of 0.3048 meters per foot. (Remember Rupert’s elevations are in feet, but the grid coordinates are in meters) Call the outputs Rupslope and Rupaspct. Watch how quickly IDRISI calculates 1.5 million slopes and aspects for you.

    As always, we will use the Cabrits Peninsula to check our output. Display Rupaspct with the grey256 palette and window into Cabrits. Look at the southern half of the Peninsula. The image is a bit strange, but it does have some intuitive appeal as a picture of the surface, lighted from the upper left. The north half of the Peninsula is harder to read. Use Cursor Query and you will find that there are strange values. All the sea is marked "-1" and so is the swamp and the bottom of the valley between the hills. That number is a special value meaning "flat." The rest of the image is in azimuths, degrees measured clockwise from North. That is why the northeast side of the hills is dark (values 0 to 90 degrees), while just a bit around the corner, on the northwest, the hillside is at its brightest (values 270 to 360 degrees, the maximum). You can take the time to design a special palette for viewing the aspect map, if you like.

    Check the slope map, Rupslope, for the same area. Let IDRISI pick its own palette, Idrisi256, and overlay the coast line with the Qual16 line colours. The two hills look like two rings of fire. The sides are bright reds and yellows, while the hilltops are dark. The valley between the hills is dark, too, and so is the swamp.

    Now window out and look over the whole image. You may want to use the coast-line and the hydrology line files to get oriented, but then switch them off temporarily by clicking the check boxes on Composer. You see that the Picard River and the Espagnol River show as dark valleys with bright borders on either side. Some of the ridgelines have the same effect, and they could be mistaken for valleys.

Most people have never seen a map like this. It is confusing at first, with the hills and low ground looking the same, but it makes sense if you think about it. Sometimes a ridgeline will lead down to a promontory with cliffs on three sides, and sometimes a river will go over a precipice and form a waterfall. Those are the exceptions that prove the rule, and the rule is that valleys and ridge are the gentlest slopes. That is were our footpaths go. Think of it as a mathematical limit: valleys and ridges are formed by the intersection of opposing slopes, and the slope of an intersection is less than or equal to the lesser of the opposing planes.

  1. HISTOGRAM Ask for a histogram (Analysis/Statistics/Histo) in graphical output. You get a histogram showing the frequency of each range of slopes. Unfortunately, there are a lot of slopes equal to zero, because our image includes Prince Rupert Bay. The average slope with all that flat water included is 16.9 degrees.

    Ask for a histogram again, but this time set the display minimum to 0.01 or some other low number slightly above zero. Now the histogram shows only the values for land. The average slope is 22 degrees. That is low for Dominica, but it is still much higher than most parts of the world. Look at the distribution graph: there is more terrain with slopes between 15 and 25 degrees than there is between 0 and 10 degrees, even with this image which includes the swamps of Cabrits and Indian River.

Context and Distance Operators with Targets

We have seen two commands in IDRISI that do calculations involving the immediate neighborhood of each cell. The first such command was Filter, which we used to smooth the patch on the crater hole. The second command was Surface, which we just used to create slope and aspect maps. These two commands have something in common: they process the whole map, impartially, by operating on each location in turn.

Now we are going to use some commands that we can aim at specific areas. With these commands, we create a "target image" and make the computer organize its calculations around the target.

This next operation may possibly take a long time to run on your computer. You may run it overnight, or skip it altogether.

  1. Display Rupert or Rupaspct or Rupslope and overlay the hydrology lines to help you find your way. Window into the central Picard River. You need to include the cell at column 533, row 589 as well as at least a kilometer of river above that. The cell I mentioned is the approximate location of DOWASCO’s water intake.

    Go to Analysis/Context Operators/ Watrshed and read the help file to learn what a "target image" is. Now digitize a polygon around a portion of the Picard River, from the water intake to about a half kilometer upstream. Avoid Mary Gutter, the side stream that joins the river from the south just a little bit downstream of the waterworks. Convert the polygon to a binary mask using Reformat/Raster-Vector Conversion/Polyras as you did before. Name it Intake.

    Run Watrshed with your new binary mask as a target. The aspect image is Rupaspt, output map will be Picshed. The command will look around the target image, adding any cells facing toward the target in the aspect map. It may take over an hour to run, even at this resolution, and you probably will not like the result.

    When Picshed displays, overlay the hydrology lines, coloured by Qual16 so that you can interpret it. Notice that some side branches of the Picard River are included in the watershed, while others are not. There may even be a portion of the Espagnol River included by accident. These mistakes derive from the elevation map. They can be edited out, or you can re-run the command with new targets for the side streams. Watrshed is a powerful command, but it is only as good as the data you have to put in.

To get the best analysis of surface flow, you would have to edit this elevation file carefully. You could also filter the image in a variety of ways to make it more realistic. It might even be worth while to go back to SPANS and export the elevation map at a higher resolution, or take a chance on the slope and aspect generator in SPANS. The better the source, the more you can do with it.

  1. t) Display the binary mask of the area, Bayside, and overlay the roads. Notice that the roads all look the same this way, even though some of them are no more than tracks through the mountains. Digitize a polygon around the roads that link Portsmouth, the water intake, and Pointe Ronde and turn the polygon into a binary mask. Include the side streets in the area of Picard estate and Petite Baie, but exclude Glanvillia. Name this mask Axis.

    Now convert the roads file into a raster named Allroads using Reformat/Raster-Vector Conversion/Lineras. You can look at Allroads and see that the road lines are now shown as strings of little squares. Check the maximum value of this new raster with File/Document, then Reclass Allroads to a binary mask, Roadall, where all the roads have value equal to 1 and background is zero.

    Do an overlay multiplication, Axis times Roadall, and name the result Access. (You may have to redisplay Access with autoscaling in order to see it.) Now the only roads that show are the ones inside Axis. Because most of the water line and local power lines run parallel to the roads, Access gives you a new target image of the utility corridors along the south side of Prince Rupert Bay.

    Run the commandAnalysis/Distance Operators/Buffer with Access as the feature image and a buffer distance of 50 meters. Let the road itself stay as value 1 and make the buffer equal to 2. Call the image Buffr50 and overlay the coastline to look at it. Fifty meters is about as far from the road as people can build without major expense for power poles, water lines and driveways, so this map shows the area that has "road access."

    Run the command Analysis/Statistics/Histo with buff50 as the input map, class width 1.0 and numeric output.. For my test, there were 2355 cells classed as Road and 26101 classed as Road Access. Since each cell is 7.933 meters on a side, the model has estimated something like 160 to 200 hectares of real estate with road frontage between Portsmouth and Pointe Ronde.

You can easily refine this model by digitizing more carefully, by using buffers of different widths, or by masking out the bay.

  1. Rather than modeling one buffer width at a time, you can model all of them at once. Try the command Analysis/Distance Operators/Distance, using Access as the feature image again. Call the output Fromroad.

    When Fromroad displays, overlay the coast line and change the palette to Qual256. That palette gives contrasting colours to adjacent values, so you can see the bands of same-distance around the target set of roads.

Obviously, the distance rings going out to sea are irrelevant to utility development, so do a multiplication overlay with the binary mask Bayside. Name the result Fromrod2. The overlay operation cuts out the sea and makes a more tidy image. You could also make a binary mask to cut out the bands to the north and south which wrap around the target set of roads.

Window in on Fromrod2 and look at how the distance rings interact in the places between adjacent roads. There are areas where a new street could connect two roads and open more area for development. It looks easy on this map.

  1. Dominica is not easy, however. Two roads separated by 100 meters of horizontal distance may be separated by 100 meters of vertical distance as well. Go to Analysis/Distance Operators/Cost and read the help files. This command allows you to combine distance calculations with "friction." Friction can include cost factors such as terrain, soil type, real estate prices, or whatever you wish.

    Terrain is the major factor on Dominica. Call up Analysis/Database Query/Reclass and use the slopes map to create a new map of land suitability classes, Landsuit.

Use Analysis/Database Query/Overlay and multiply Landsuit by Bayside to cut out the sea, again. Call the result Landsui2, but stop to think: if steep terrain is Class 5 because it is difficult to build on, should the sea be Class zero? That implies that it is no effort to build on at all. Obviously not. Reclass the sea from zero to 100.

Now use Landsui2 with Access as the feature file for Analysis/Distance Operators/Cost. Use the Cost Push option to save time. When the program finishes, use an overlay with Bayside to mask away the high values out to sea. Display with the quant256 palette and overlay the coast and roads. Window into Pointe Ronde.

Notice how the high cost values form a "ridge" around column 325, row 660. The area has roads on three sides, but it is difficult to access because of the steep ravine on the Lamoins River. A similar ridge is visible on the high ground above Pointe Ronde. By contrast, the flat areas along the lower Picard River, the old Picard Estate, are easy access.

  1. The friction surface only showed five classes. For a more subtle model, try calculating friction as a trigonometric function of the slope. Look at Analysis/Mathematical Operators/Image Calculator.

This calculator lets you do scalar operations, overlays, and a variety of transformations simultaneously. You can enter the name of an image just as easily as a number. (Note: The Calculator will only work on images with names in the form *.img and *.doc, the defaults for IDRISI.)

With Calculator, you can save many steps in any analysis. Try the formula

TANFRICT = 1 + 2*(TAN(RAD([RUSLOPE])))

That is, calculate the new image Tanfrict by converting Ruslope to radians, figuring the tangent of each slope, doubling it, and adding 1 to it. The friction will never be less than 1, on flat land, and it will range to infinity at sheer cliffs. Luckily, we know that the maximum slope registered is around 88 degrees, so the tangents will range up to 28 or so, and Tanfrict should not go above 57.

If you run Analysis/Distance Operators/Cost on this new friction model, the "ridgelines" between access roads are much sharper, where the slopes are steep. Keep Tanfrict.

This is as far was the workshop progressed before leaving the next day to visit the Picard River intake. The exercises presented below are a continuation of the same line of investigation, for the reader to pursue independently.

An Engineering Problem

Let us return to the problem of distributing water from the intake on the Picard River to the new houses that might be built at Pointe Ronde. Suppose that you work for Dowasco, the Dominican water utility. You find out, late on a Friday, that there are fifty new luxury homes being built at Pointe Ronde. Somehow, you acquire a plat of the house sites and digitize their locations as the vector point file Houses. You want to figure if there is any hope of supplying the new houses with water by simply extending the 4-inch water main you already have at Petite Baie.

Caution: These figures and calculations are only presented for the purposes of this exercise and do NOT represent official findings of DOWASCO or any other agency whatsoever.

We will use English Units, and the Hazen-Williams equation for head loss due to friction of liquid flow:

hL = V1.85 L
(1.318 C H )1.85 R1.17

Where

hL = head loss, ft.
V = average velocity, (flow/ x-sectional area) ft./sec.
L = length, ft
CH = Hazen-Williams coefficient
R = hydraulic radius (flow area/ wetted perimeter; pipe diameter/4) ft.

Here are some relevant numbers gathered from discussions during the workshop, from textbooks, and made up, where necessary:

There are three nodes in the pipe network of concern to us:

Node Column Row Elevation, feet
Intake on Picard River 536 596 366
Junction w/ Main Road 370 484 36
Pipe End at Petite Baie 270 636 49

  We will also need some dimensions for standard pipes:

Nominal Diameter, inches Hydraulic Radius, feet Area, ft.2
10 0.2083 0.545
4 0.0833 0.0873
2 0.0417 0.0218
1 0.0208 0.0054
  1. To start on this problem, look at the help file for Analysis/Distance Operators/Cost, and re-read the help file. We are going to use the Cost Grow algorithm this time, and force the program to measure its way along the road lines leading away from the junction.

    You need a friction Surface that forces the program to stay on the roads. To get this, you will need to reclass Access so that the non-road areas change from a value of zero to a value of minus one (-1). This is a special flag value that tells the algorithm that those areas are barriers.

    You also need to digitize a point at the junction (column 370, row 484), and make it into a source image by Reformat/Raster-Vector Conversion/Pointras. These preparations are all similar to the exercises in the previous pages.

    When you have the source image and the friction surface ready, run the Cost Grow program and name the result Roadist. The output is a raster with -1 in most places and distance values assigned to the cells with roads in them.

The distances on Roadist are expressed in cell units. You can use these cell distance units to model completely different scenarios. Each cell is 7.933 meters across, or 26.03 feet. That stays constant. What changes is the head loss per unit of distance, because friction head loss are a power function of flow rate, as shown in the Hazen-Williams formula above.

WORST CASE First, we will model to see if we can supply the new houses with adequate pressure during the hour of heaviest use, during the day of heaviest use.

We will assume that all of that flow comes down the hill as far as the junction, and plug the numbers into the Hazen-Williams equation. Express the result as head loss per foot of run:

Display the map Roadist and check the value at the intake. It should be 237.1372 cell distances. The number is fractional because of diagonal movements along the line. To figure the head loss at the junction multiply,

(237.13 cells) X (26.06 ft./cell) X ( 0.04326 ft./ft.) = 267 feet.

But wait, the intake is at 366 feet, the junction is at 36 feet, so figure the net head,

(366 - 36) elevation difference - 267 feet, friction head loss = 63 feet.

So the junction would have 63 feet of head, or 27 psi in the worst case scenario. Things do not look good, but let us continue down the line to Petite Baie.

We will do this next stretch graphically. We assume that 2% of the flow turns south at the junction Once again we assume that all the flow goes to the end of the link. That may be unrealistic, but it is a conservative estimate which will over-estimate head losses rather than under-estimating them. The link is a 4-inch pipe all the way. We need one head loss factor for the whole link.

  1. Local head, at any point along the 4-inch pipe, equals the head at the junction, plus any head due to changes in elevation, minus the head loss due to distance times friction. Make sure you have plenty of space on your hard disk and then use Analysis/Mathematical Operations/Image Calculator to combine everything in one step. And, while you are doing that, do a multiplication overlay with Access to mask out the off-road areas. Call the new map Hloss4in:

[Hloss4in] = (63 + (36 - [Rupert]) - (0.002692 * 26.03 * [Roadist])) * [Access]

Display the result and window in on the coast road. Remember that the result is ONLY valid along the road that has this flow and this pipe diameter, the road from the junction to the pipe end at Petite Baie.

You have a variety of tricks to help you see this image clearly. You can switch palettes, you can overlay the line file for the coastline, the rivers, or the roads. You can even digitize around the coastal highway and make a binary mask to isolate the area where the values are valid. I use an overlay of the road lines, window in to a large scale, and do a cursor query cell-by-cell along the road.

It does not matter that this image looks strange. It is full of information just the same. The pressure head, during the worst case scenario, is 60 feet at the pipe end. That is better than we expected when we found that the pressure at the junction was only 63 feet. You could have figured that with a calculator and a ruler. Be careful not to dismiss this problem to quickly, however. Work back along the road from the pipe end. There is a small hill a quarter mile north of the Lamoins River, that rises to 120 feet. Pressure there goes negative, to -25 feet. Not only would those people be without water, there would be danger of contaminants being sucked in.

There is no point going further towards Pointe Ronde with the Worst Case Scenario. We are already discovering places where pressure would fail, on the pipeline that exists already. Some of the houses at the new development would be higher than this, so a simple gravity feed through a 4-inch pipe would not do.

Unique Solution

The problem area near Lamoines River , which was revealed by the model above, is served by storage tanks during peak demand. Our next model will show how to locate and supply a storage tank for Pointe Ronde.

We have shown that a four-inch pipe could not deliver water directly to the new development, by gravity, during peak demand. The rapid flow of water in other parts of the system would deplete the energy too much. On the other hand, remember that the water intake on the Picard River is at 360 feet elevation, and the highest house in the new development is at 200 feet. There is, indeed, a difference in energy level, and that energy gradient could drive some flow.

  1. Now digitize the obvious route for a pipeline, from (column 270, row 636) at Petite Baie, along the coast road as far as (column 137, row 781) at Pointe Ronde, and up the track on the hillside to (column 184 row 759). Create a raster of that and create a buffer map of it where the buffer is 50 meters wide, the buffer and the road have a value of 5, and the off-road areas have a value of 1. Do not let any areas have a value of zero. Call it Buffat5.

    We are going to elaborate the friction map based on tangents of the slopes, Tanfrict. Reclass Bayside to Bayout so sea water is -1, and use Bayout to Overlay/Multiply Tanfrict and make the sea water a barrier. Call this Frict2. Divide Frict2 by Buffat5 to make Frict3 where friction factors are 1/5 as great near the road. (Now you see why no part of Buffat5 may be zero.) Dispose of Frict2, Frict3, Buffat5.

    Frict3
    is a friction map that is weighted to give heavy penalties for building across slopes, forbids building across the sea, and factors in that it should cost about 1/5 as much to build along an existing alignment.

    Digitize the pipe end at Petite Baie, (column 270, row 636). Make it into a source feature with just the one cell as the target, called Pipend.

    Caution: This next command takes a lot of time: run it overnight. If you do not have time, you can find a copy of the result in the data base provided with this handbook.


    Use Cost Grow to create a cost surface centered on the pipe head at Petite Baie, with Frict3 as the friction surface. Call it Progress.

So now you have a complex model of cost factors and a map of the cost surface grown outward from the pipe end at Petite Baie. You can clearly see the corridor of low cost along the road to the south. The off-road areas are much higher cost, but only the sea is an absolute barrier.

  1. You have a vector point file of the locations for the new houses. Make a raster map of them and create a buffer map with a buffer distance of 100 meters, where the buffer and the houses are all value 1. Reclass Rupert to Min250 so that areas below 250 feet are zero. Overlay the elevation mask with the 100 meter buffer to create an image of areas that can hold a storage tank for Pointe Ronde. Call it Localhi.

That creates a target image of the area on the hill above Pointe Ronde where you could site a storage tank to supply the new houses. The area is at least 50 feet higher than the highest house, but no more than 100 meters distant from the nearest part of the new development. You can see that the road goes around three sides of that hill. But it is hard to tell, just by looking, whether you should run the water line along the road or take a shortcut south across the Cario River.

  1. Call up Analysis/Distance Operators/Pathway. Use Progress as the cost surface and Localhi as the target surface. Call the output Shortcut. The result is a raster map of the least-cost path from the pipe end at Petite Baie to the area where you could put a storage tank.

    Spend some time looking at this result. The first step might be to overlay the road alignment Obvious and see how the least-cost path cuts across the loops of the road twice before leaving the road corridor altogether and heading straight southwest. Next, you might want to digitize the pathway to produce a vector version of it that you can overlay on raster images like Rupert, Rupslope, or Progress.

There are two directions you can go from this model. First, you can modify the model and run it again, if it does not suit you. For instance, we modeled the roadway as being five times more economical than building cross-country. Perhaps that was not high enough. What would happen to the pathway if we figures the road as ten times easier? Perhaps you have some other engineering rule-of-thumb you would like to apply. Your experience and judgment are keys to a good model.

Second, you can use this pathway to predict the flow. There would be no flow during the Worst Case Scenario, but there is 110 feet of elevation difference to drive a gentle flow at night. Most of the assumptions you need are listed at the beginning of this section.

Points to Remember in Evaluating the Models

The exercises above moved from the more common and trivial GIS operations and reached the edge of true spatial modeling. I hope the reader has developed a feel for just how powerful these systems are. Unfortunately, with power comes responsibility, and a GIS modeler must develop judgment.

First, we must remember where the data came from. For instance, the elevation map Rupert models the surface of the land quite directly. It is a rectangular grid of cells, columns and rows, with an elevation value for each cell. This is the format that you would get for a rigourous and direct sampling such as a radar image from an airplane. Rupert is not that good; it has a long and troubled past. In fact, it is

  1. bc) Display Bayside and window into the Cabrits Peninsula. You derived Bayside from Rupert in an exercise above, so the zero elevation line of Rupert is the coast of Bayside. Overlay the coast line vector. Window in even closer, a little east of the cruise ship terminal, and you see that the fit is not perfect.

I have found places where the coastline vector is 15 meters from the coast shown by the raster. That is nearly two raster cells difference, and it serves to remind us that this data has come through different mathematical models.

The coast vector was digitized from a line on a plastic sheet that served as a master copy for producing the paper maps we use. This does not necessarily mean that the vector line for the coast is perfect. The shore on the south side of Cabrits is rocky. Waves rise and fall. The vector coastline generalizes all of this to a series of points, called "nodes," and the lines between them. Although the nodes are registered with precision, that does not mean that we can know the coastline with precision along the segment between any two adjacent nodes. Maybe the coastline passes inside of the straight line, maybe it passes outside. Indeed, there is so much generalization that the cruise ship terminal does not show at all.

In these digital files which we are using, we rely on the interpretation done by the original cartographers. The paper maps were produced with high professional standards, but interpretation was necessary, and interpretation means simplification. A common standard of precision is that a line on a paper map should not be misplaced by more than one-half of a millimeter. For a map at the scale of 1/25,000 that comes to 12.5 meters on the ground.

The vector of the coastline is in two dimensions. The three-dimensional equivalent is a TIN, which models the land surface as a set of nodes in X,Y, and Z, with little flat triangular facets stretched between them. Now, we know that our elevation data derives from mechanical digitizing of the contour lines, the same process that produced the coastline vector. But the elevation data passed through a TIN model before being enquadded in SPANS and exported as a raster.

  1. Display the map of slopes, Rupslope And window in over the central Picard River. The texture of the slope map is distinctly angular. If you look closely, you can see echoes of the triangle of the TIN. They are blurred, because the process of enquading the elevation data and exporting it as a raster caused the computer to interpolate values.

It is common practice to run a smoothing filter over DEMs to remove the angularities of the TIN. Is that really an improvement? The triangles look artificial, but a smoothed surface is artificial too. After several smoothings, the triangles will be hard to distinguish, but the DEM has been altered.

The second element of judgment is flexibility. Despite the name of the exercise in the previous section, there are no "unique solutions" in modeling. The modeler makes approximations, assumptions and guesses from the very start. It is important to remember that.

We do not model to get a single answer. We model to see how a system behaves under differing conditions. Each model is a trial; the computer makes it possible to do more trials so that we have alternative plans ready when they are needed.

The next section, SPANS and IDRISI: Special Workshop, has been extracted to a separate file.

This document was prepared for the CDMP and the workshop was presented by Ross Wagenseil, [email protected]

References

These two workshops were organized around the SPANS and IDRISI software packages, which are distributed under license. For licenses or manuals, contact:

Parameters and rules-of-thumb for water works were garnered from:

Colour Illustrations

Figure 1. The town of Portsmouth on the northwest corner of Dominica has room to expand and a ready source of fresh water. Water supply is by gravity flow from an elevation of 360 feet on the Picard River. Place names on this map are referred to in the exercises.

 

Figure 2. This elevation map is the same as the one used for the background of Figure 1, but it is rendered with a different palette. As a result, the image comes close to overwhelming our ability to interpret it visually. The elevation data is in the Geographic Information System whether we see it or not; contours and colour keys are not needed except for exhibition. This dense data field is a first requirement of many GIS models.

 

Figure 3. The colours shown range from green (easy construction) to magenta (nearly impossible). The light blue of the bay represents a special value that forbids the program from routing through those cells. The surface analysis of the elevation data is the primary source of this model of friction factors for civil works. Construction difficulty is modeled as a constant plus a factor figured on the tangent of the slope. Other considerations are sea water, an absolute barrier, and the existing road, which is figured to be one-fifth as difficult as undeveloped ground of the same slope. By visual inspection, it appears plausible that the cheapest route for a pipe line would be parallel to the road, passing around the south side of the hill.

 

Figure 4. Cool green is low cost; yellow, red, and magenta are progressively expensive. Relative costs are figured by working outward from the end of the existing water pipe, doing a summation of the distance, multiplied by the factors from the friction map. The corridor along the highway shows a relative advantage, but it is not as great as expected. Once the cost surface has been calculated, it is a simple matter for the computer to search backwards. If a water tank were to be sited on the hilltop above the possible house sites, the best path for a water line might be down the back side of the hill.

 

Figure 5. Returning to the elevation map and overlaying the results from the model, we might not be convinced. It appears that the pipe line would cut across the road twice, pass over two ridges and valleys without turning, and climb quite a steep slope. Perhaps the slopes were not weighted heavily enough, or perhaps the road corridor is cheaper than the model allowed. No matter: it is easy to alter the assumptions and run the model again.

CDMP home page: http://www.oas.org/en/cdmp/ Project Contacts Page Last Updated: 20 April 2001