Download Map
Another version which is updated more frequently is
available
here.
Map is a program designed to do simple mapping tasks needed by primatologists in the field (or perhaps other field researchers). It takes input in the form of GPS readings or compass data to produce both a map of the local trail system (or grid system) and ranging data for troops of animals. It will provide information on home range area, mean daily path, also related things such as the aspect and slope of transects or quadrats.
Caveat: Map is designed for small (relative to the earth's surface) areas where euclidian geometry can be used. Do not attempt to get ranging data for whales out of it, or anything else whose migration covers a significant chunk of the earth.
Map will do least squares error correction.
The lowest level datum is a point. A point may have a name, it must have a location, and it may have an altitude. A location may be specified by:
A point's name may be pretty much anything. It may not contain a tab or newline character nor an equal sign, and if it contains either of the strings ", " or " -> " the program may get confused. Pretty much anything else is fair game. There are three, well four types of name.
A point may have more than one name.
A point may have various other attributes. Probably the most useful is a map scale above which the name of the point will not appear (this keeps the map from looking cluttered when you zoom out).
A trail is an ordered collection of points. All trails have a type which might be something like "River", "Road", "Trail", "Border", "Group I", etc. Most trails also have names, some have dates and focal animals instead. Special provisions are made for trails with names like "F" and whose points are named "F0", "F100", etc. It is assumed that these points are at locations approximately 0 and 100 meters along F trail.
When drawing a trail if two points on that trail are too close together (so that drawing both names would lead to gibberish) then one of the names will not be drawn. Thus if a trail appears to be missing a named point, you may find that zooming in will display that point.
Trails may have a width, since they do take up space in the forest. Trails may be drawn as dotted or dashed lines and in various colours. In addition, if a trail is closed (ie. if its first and last points are the same) the interior of the trail may be filled instead. Thus a trail can be used to outline things like lakes, patches of bamboo, or continents. The points on a trail may be marked by symbols (small circles, or crosses) or by nothing.
There are really two types of trails, as reflected by there being two types of trail names. The first, named trails where the points are normally named, is assumed to specify the underlying state of the study area. The second, dated trails where the points are named with times, is assumed to specify the ranging behavior of a troup of animals. A dated trail is specified by the name of a group of animals, the date of the observation, and (optionally) the focal animal. The points on the trail should consist of times or durations and indicate that at the given time the animal was at a certain location. The entire trail is assumed to be a day's path, and when put into a range things like mean daily path and total home range area may be computed. There are facilities in the program for extracting these data from a spreadsheet.
A range is a collection of trails, presumably dated trails though that is not a requirement. The easiest way to make a range is to select the desired trails (or trail clumps) from the trail list and drag them to the line that says "New" in the range list. It is also possible to get more control of things by double clicking on the New item itself.
A range may be described as all trails:
A range may include more than one such specification (ie. you can see the range of two animals in the group).
A range may also be defined as a list of points. To do this you must press the New item in the Range pane. From there, under the misleading header of "Trail Type" you may type in a point name as: "Point: Pde1 12/31/99 07:30", this will include the point named "Pde1 12/31/99 07:30". Obviously that will get rather tedious. You may also type in a series of points as "Points: Pde1*" which means all points that begin with Pde1 (You may use any of the standard unix wildcard characters where '*' will match any number (including 0) of arbitrary characters, '?' will match exactly one arbitrary character, and '[0-9a-gjl-z]' would match all digits, and all letters except h, i, and k.
A range is drawn as a shaded area on the map. It is computed by taking the minimum convex polygon of all the locations found in all the trails that make up the range. This obviously can provide a rather misleading view of the range (for instance if the animals actually range in an anulus, this algorithm gives them a full circle) but it is the common one in the literature and therefore should provide for comparable results, if nothing else.
The program also calculates "Cluster Contours" (See Wildlife Radio Tagging, pp. 175-178) which can be useful when looking at animals with several different core areas. Finally it will display little squares around the areas in which the animals have spent the most time.
Finally the program will calculate the range based on the number of grid squares the animals spent time in (or travelled through). This is only available if a grid has been imposed on the map. (Flaw: The program assumes that when animals travel in a straight line when given no better data).
You may select which of these methods is displayed by selecting a range and choosing View->Range View Control.
Some study areas are marked out with grids. A grid is an array of squares and may be used to identify locations.
One file defines a map, and it contains a collection of trails, points, ranges and grids. However each file may be based on another map. For example the map of the Talatakely Trail System at Ranomafana is based on a rough map of the continents. In turn a map showing the home ranges of the lemurs will be based on the talatakely map.
Remember: compasses only rarely point to true north. In a small area the difference between magnetic north and true north will often be constant. This difference is call the magnetic deviation, it can be quite large (in Madagascar it is about 20°). You can find the deviation on naval charts or maps, but the most accurate way is to compute the deviation yourself. Find two points where GPS readings can be taken, some distance apart, yet within line-of-sight. Find the bearing between the two with the GPS software, then find the bearing with a compass. The difference is the magnetic deviation.
Remember that at the moment, and for the near future the US government perturbs the GPS signal (in the quaint belief that this will keep terrorists from blowing up the pentagon) so that normal hand held units have a 100m inaccuracy on top of the stated error of the unit. To avoid this problem, in the US or Europe it is possible to subscribe to a differential service which provides correction information. In the third world this is not available, but the same effect may be achieved by buying two special units one of which acts as a base unit which will store up corrections that can be applied to the mobile unit for later post-processing.
Even after the US stops distorting the signals using a two unit (differential) setup will provide more accurate relative readings than a one unit system.
The program is designed to display the map, it will also print it out if that be desired. There are several advantages to having the map on line:
You can also rotate the map on the display by setting the orientation (ie. what direction is up). Normally the map is drawn with absolute north up.
If the trail pane on the left of the screen takes up too much space you may resize it by depressing the mouse on the bar that separates the map pane from the trail pane, and dragging the bar to a new position.
You can get a graphical display of the elevation of a trail, ie. see the altitude of a trail at any point on the trail. Select a trail from the trail list and then select View->Elevation. You may print this graph. You may also zoom in or out on bits that are of interest (just as you zoom in and out on the map). The vertical scale is fixed though (sorry).
You can control the way the trail is displayed by double clicking with the right button on the trail.
You can get a summary of various pieces of information on a trail by selecting one (or several) trails from the trail list and select View->Summary. The summary displays:
This information can be useful when mapping transects.
You may print or save this list.
You can get a list of all the points in your map, their latitudes, longitudes and altitudes and their grid locations by View->Point Index. If your map has an origin, the distance (north, east) of each point to the origin will be displayed. If you double click on a name in the index, that point will be located on the map. You may also search (either with View->Find, or by typing a string of characters with less than a second between them) for a point's name, and the list will scroll to display it. You may print or save this list.
This list only shows the points in the current map. If you want those in the base map as well you must open the base map (and any of its bases in tern) and look at the point information from each of them.
The range pane (to the left of the map pane and underneath the trail pane) contains a list of all the ranges defined on the map. It also contains all range intersections, so if the minimum convex polygons of two ranges intersect then there will be an entry for their intersection. I do not currently attempt to intersect all of the clusters generated by the cluster contouring algorithm.
If you move the mouse cursor to one of the ranges you will be given a popup showing:
If you select a group of ranges and choose View->Range Stats you will get a window which shows:
If you select a range intersection, you get
To enter ranging data probably the easiest thing to do is to take your spreadsheet and save your data as text (tab delimited) and then use the File->Import Spreadsheet command. You need to specify the file in which your spreadsheet data was stored as text. Then another dialogue pops up asking for:
Once you have imported your data you should drag each group of trails entered down to the "New" button in the Range pane. (if there is already a range for this group, and you are just entering more data for it, then you should not need to do this, the range should update itself to reflect the new data.
You can create a more complicated definition of a range by double clicking on the "New" button in the Range pane, or indeed double clicking on any existing range if you wish to change its definition.
Um. Well. There's supposed to be a way to do this inside the program, but it doesn't work too well (to be blunt, it sometimes fails utterly). So the best way to enter data is to use WordPad and open the .map file and edit it directly.
The map file consists of a collection of trails each of which begins with a header line which identifies the trail, and is followed by a list of points. For instance:
T CC Trail 0.5 C CC0 _CC1 9.78 217 -15 C _CC1 _CC2 14.73 228 -18
The above defines a trail called CC whose width is .5 meters. The trail contains 2 points one named "CC0" (the name will print), and one named "_CC1" which will not print. These points both have a compass specification to define their location. The second line should be read as: The distance between CC0 and _CC1 is 9.78m, the compass bearing when looking from CC0 towards _CC1 is 217 and the inclination is -15. NOTE: The distance is assumed to be taken parallel to the ground, not on a level (as is the convention in real surveying).
T Zoo Cut Cut 1,red G _Zoo2 S25.0077026 W313.6962457 G _Zoo2 S25.0076332 W313.6962208 G S25.0076474 W313.6954287
This defines a trail with two points, one of which has two locations and the other has no name. The two locations will be averaged to find the correct location.
A species trail will look more like
T H.a. 2 female,0 1999-2-25 ,#000000 N 15:05 FIF550 N 15:15 FIF560
This trail is the range of the female in "Hapalemur aureus group 2" on 2/25/1999. It contains two points, one at 15:05 which is near FIF550, and the other at 15:15 near FIF560. When you use this format you may specify that the new point is near a point which does not exist but which can be interpolated. (Compass bearings have to be to exact points).
To triangulate a point, use a standard compass specification and a distance of 0, the program will triangulate it for you. So assume you have a bearing from a point called Base1 of 60° and another bearing from Base2 140°, then if you say:
C Point Base1 0 60 C Point Base2 0 140 C Point Base3 0 20
You can generate a range from a bunch of triangulated points by creating a trail:
T FossaFosana 1 RangePoints C 23:00 13-1-99 A400 0 40 C 23:00 13-1-99 B500 0 60 C 03:40 1-2-99 A1200 0 80 C 03:40 1-2-99 B1100 0 120 C 03:40 1-2-99 C1400 0 170 ...
And then dragging this trail to make a new range. (Note: the mean daily path length will be meaningless here (that calculation assumes each trail is a day's travel), but the area should be correct).
A grid may be specified by
H _GridBase 25 130 130 -20 1-26 A-26
This grid starts at a point called "_GridBase" which must be defined elsewhere.
Each grid element is 25m to a side. There are 130 squares in each direction.
The grid is oriented at -20° from north. The north-south axis is identified
by arabic numerals (1) beginning with -26. The east-west axis is identified
with capital letters, also beginning with -26 (ZA).
For a more complete description see BNF of Map File Format.
I recommend that you put your ranging data in a separate file from your trail data. This will:
At the top of a map file you may place a line like:
M world.map
Which says that the current file is based on world.map and can reference any point declared therein and will display any points or trails of it.
So you might create a hierarchy with ranges.map based on trail.map
based on world.map
.
Creates a new map which is absolutely blank.
He had brought a large map representing the sea,
Without the least vestige of land:
And the crew were much pleased when they found it to be
A map they could all understand.
`What's the good of Mercator's, North Poles, and Equators,
Tropics, Zones and Meridian lines?'
So the Bellman would cry; and the crew would reply,
`They are merely conventional signs!'
`Other maps are such shapes with their islands and capes!
But we've got our brave captain to thank.'
(So the crew would protest) `that he's brought us the best,
A perfect and absolute blank!'
-- The Hunting of the
Snark, Lewis Carroll
Brings up a normal file picker dialog and allows you to open a map file.
Most maps are based on other maps. This command opens the basis map in a separate window.
Allows you to set the basis of a map which has no basis map yet.
Closes the window.
Saves the map. If the map is new, Save As will be invoked instead.
Saves the map with a new name.
Allows you to import spreadsheet data and turn it into a set of daily paths and into a home range. This is described in more detail at Entering data.
Allows you to merge another map file into this one. I doubt this command is useful.
Imports GPS data from a TopCon base/handheld combination. Only useful if you have two of these gizmos.
for printing.
Prints the page. The default action is to print what is displayed on the screen (possibly with a little extra if the aspect ratio of the sheet of paper and the computer screen aren't quite the same).
Guess.
Adds a new trail or range (depending on the context).
Deletes an old one.
Checks to see that the points of the selected trails (or all the trails in the map) have names that follow one of the following conventions:
Points whose name begins with an underscore or an at sign (ie. non-printing points) are ignored. The program will complain if
This is designed to catch typos in data entry. If only one trail is selected, a more intense search for potential errors is done.
When creating a new (or editing an old) trail which is in GPS format, you may add new points just by clicking on the map. This will insert the lat lon spec of the cursor into the trail.
Magnetic deviation has already been described. This sets the deviation of the topmost map.
Allows you to control how the selected ranges or trails are displayed. You may also get this dialog by double clicking with the right mouse button on the desired trail or range.
Allows you to change which direction is up. Normally this is true North, but you may change it to be compass north, or south or what have you.
Toggles whether or not grids are displayed on the screen (if the cursor is within a grid, the fact will always be displayed in the info region in the top right corner).
Brings up an elevation window showing the currently selected trail. It is also supposed to be possible to drag out a transect (on the map) when no trail is selected and get an elevation of that, but I haven't finished working on that yet.
Gives statistics on all selected trails.
Gives statistics on all named points in the map.
Done better by double clicking.
Done better by right button double clicking.
Allows you to set the scale of the display. (Note the scale is in meters per pixel. I can't tell how large the pixels are so I can't give a ratio like 1:10000).
Allows you to look for points, trails, ranges, grid squares, or complicated expressions like "3 meters north of F200". The display will be recentered on the thing found, and the zoom factor may be adjusted to display all of a trail or range. If the name entered is ambiguous (ie. if you have both a point and a trail named Ranomafana) you may identify which you want by preceding the thing searched for with "Point:", "Range:", "Trail:", or "Grid:", as "Trail:Ranomafana" to specify a trail named Ranomafana.
Toggles whether the info pane (in upper right corner of the screen) is present or not.
Lat lon information in the info pane is displayed in degrees.
Lat lon information in the info pane is displayed in degrees and minutes.
Lat lon information in the info pane is displayed in degrees, minutes and seconds.
If you read a surveying text you will find a lot of stuff about how to make very precise measurements, how to deal with tapes which contract and expand with temperature changes, how to find a meridian, how to find a geodetic survey marker. Probably you don't need to know all this, probably your map does not need to be that accurate, probably you won't be able to find a survey marker anywhere near your study site.
My program likes for at least one point to have a latitude/longitude so that it can position you on the globe. Depending on what you want to do this need not be exact (indeed, it need not be present at all, if it is absent, the program will complain, but proceed and place you on the equator).
If you are in an open area then GPS units are an attractive possibility. They are much easier and less error prone to use than taking lots of compass measurements. However, remember that now and for the near future, the US government distorts the GPS satalites' signal to increase the inaccuracy of the system. To get around this I used an unit from Topcon, the Turbo-G1. I had two units, one which I used as a base unit, the other was mobile. I believe the Magellan ProMark series are comparable. I did my research in 1998, I hope better units have appeared since then, neither of these performed as well under forest canopy as my cheap hand-held, but they were quite useful in the open and for establishing the one fix I needed to locate my map when working in a forest.
When using a differential GPS setup (both the above machines come with the software needed to do differential GPS calculations on your laptop) you should put the base unit in a fixed spot and have it take data there for a long time (hours, but days would be even better) to get a good location for that spot. Having done that you again leave your base unit at that spot while traveling around with the mobile unit (With both the Turbo-G1 and the Promark the units are interchangeable, but in more expensive setups the base unit is special). When taking a differential reading you should stand in one spot for as long as you can, the accuracy of your reading depends on: How long you stand, How good your reception is, How well positioned the satellites are that you can receive. Assuming reasonable reception 1-5 minutes should give you 5m accuracy when taking one sample per second.
My compass was a Brunton International which is balanced to work in any area of the globe (Be careful! If you aren't familiar with compasses, all compasses readily available in the US only work well in the northern hemisphere). I had a normal clinometer (one which was measured in degrees. careful again, many clinometers have two scales inside and you have to make sure you are reading the right one). I used a nylon tape and I did not correct for temperature changes.
I believe the errors I got in making my map were between 1 and 2% with this set up (that is the discrepancy I observed between a position measured by compass and tape from my base and the same position measured by differential GPS: 7.5m to a point 450m away).
I purchased my equipment from Forestry Suppliers.