This is a very simple to use macro written in Excel VBA for calculating and redistributing the error vector to close a traverse.
Background
I wrote this program for my geologic field methods class. A traverse is a simple way to plot points of interest on a 2D map. When in the field, you may not have, or want to carry, appropriate surveying equipment or may not need that level of accuracy, so you can pace from point to point measuring the compass bearing and counting number of paces. You must close the traverse by returning to the original (starting) station or point. You will need to have your conversion factor calculated to feet per pace. One way of doing this is measuring out a known distance, say 100 feet, and count the number of paces. Then take 100 feet divided by your count. A pace is two steps. Start with your left and count every time your right foot makes contact with the ground. Also, bearings must be in azimuth (0 to 360 degrees). Refer to any geologic field book for more information.
Using the Code
Download the batch file (SimpleTravCalc1.bas). Open Excel and enable the developer tab in excel options. Click the visual basic button. Right click "This Workbook" and import file.
Once the file is loaded, return to Excel. Click macros and run SimpleTravCalc1. Make sure you start with a blank excel file.
It is easiest to use if you have your notes setup in the same order as the input boxes arise. Below is a summary:
For all traverses
- Title of your project
- Total number of traverses (each traverse creates a new sheet)
- Conversion factor
- There is no conversion calculator here. That should be done before entering field.
For each traverse (for next loop)
- Number of vectors in traverse, or number of stations would be the same.
- Station occupied (only for first station, this is the point you will close to).
- Station sighted
- Forward bearing
- Reverse bearing
- Paces
Below is a sample of a 21 station traverse I recently did and how is set up in my field book.
occupied |
sighted |
forward |
reverse |
paces |
16 |
101 |
48 |
228 |
12.5 |
101 |
14 |
196 |
8 |
8 |
14 |
8 |
355 |
178 |
10 |
8 |
13 |
20 |
197 |
2.5 |
13 |
11 |
265 |
79 |
6.5 |
11 |
17 |
297 |
112 |
10.5 |
17 |
7 |
135 |
315 |
4.5 |
7 |
6 |
71 |
250 |
5.5 |
6 |
sd1 |
310 |
130 |
12.5 |
sd1 |
19 |
79 |
259 |
6 |
19 |
105 |
285 |
105 |
12 |
105 |
4 |
229 |
49 |
8.5 |
4 |
1 |
165 |
345 |
2.5 |
1 |
5 |
75 |
249 |
8.5 |
5 |
lp1 |
201 |
18 |
10.5 |
lp1 |
18 |
227 |
36 |
11.5 |
18 |
3 |
90 |
270 |
13.5 |
3 |
15 |
283 |
96 |
5 |
15 |
20 |
155 |
332 |
10 |
20 |
mh1 |
36 |
219 |
14.5 |
mh1 |
16 |
182 |
359 |
6 |
Here is how to use it for those less inclined to code. If you set up your notes is this manner, you just need to read across from left to right, ignoring the occupied station after the first entry. It will automatically copy down. The angle given, theta_A, is the average of the forward bearing and the reverse bearing in the quadrant of the forward bearing. The next value given is the distance, r, in feet (or whatever your conversion factor was) based on the number of paces; r = (conversion factor)*(number of paces). You will see X and Y components of the vector calculated which necessary for error vector calculation, but will be removed later. After you have typed in all values, you’re done. Let the program continue to work through and the output is a corrected bearing, theat_C, and corrected distance, r_C, after error vector distribution. Now you have a closure error of zero. The most important thing is the percent error. If your error is high, you may want to go traverse your points again and check your bearings. Also, check that your forward bearing minus your reverse bearing is approximately plus or minus 180 degrees. Below is an example of the final product from the data given above.
Occupied |
Sighted |
theta_A |
r |
theta_C |
r_C |
16 |
101 |
48 |
61.275 |
48.0394 |
61.29694 |
101 |
14 |
192 |
39.216 |
191.8628 |
39.23018 |
14 |
8 |
356.5 |
49.02 |
356.6523 |
48.96217 |
8 |
13 |
18.5 |
12.255 |
19.38834 |
12.24979 |
13 |
11 |
262 |
31.863 |
261.7947 |
31.65447 |
11 |
17 |
294.5 |
51.471 |
294.5222 |
51.18664 |
17 |
7 |
135 |
22.059 |
134.6468 |
22.36208 |
7 |
6 |
70.5 |
26.961 |
71.01378 |
27.25318 |
6 |
sd1 |
310 |
61.275 |
310.1342 |
60.87207 |
sd1 |
19 |
79 |
29.412 |
79.4772 |
29.81805 |
19 |
105 |
285 |
58.824 |
284.9506 |
58.30384 |
105 |
4 |
229 |
41.667 |
228.3065 |
41.39813 |
4 |
1 |
165 |
12.255 |
162.7177 |
12.6238 |
1 |
5 |
72 |
41.667 |
72.5625 |
42.18946 |
5 |
lp1 |
199.5 |
51.471 |
198.7071 |
51.48856 |
lp1 |
18 |
221.5 |
56.373 |
220.7752 |
56.10527 |
18 |
3 |
90 |
66.177 |
90.24229 |
66.93403 |
3 |
15 |
279.5 |
24.51 |
279.1045 |
23.67116 |
15 |
20 |
153.5 |
49.02 |
152.7902 |
49.68415 |
20 |
mh1 |
37.5 |
71.079 |
38.22963 |
71.36235 |
mh1 |
16 |
180.5 |
29.412 |
178.6954 |
29.76824 |
|
|
|
887.262 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Excercise 4 |
|
|
|
|
traverse1 |
|
|
|
|
|
Conversion Factor |
4.902 |
|
|
|
Error Vector Magnitude |
10.97458 |
|
|
|
Error Vector Direction |
110.5151 |
|
|
|
Error Percent |
1.236904 |
|
|
|
Important!!! This is a very simple macro and still needs much work, especially in error handling and handling user input error. If you screw up, start over. I will do my best to keep developing it until it is something more user friendly and a nicer GUI.
In the future, I will update this page to include code snippets and how they work, especially in error vector calculation and error vector distribution.
Points of Interest
The macro is very simple and not very "pretty." Future developments include a more comprehensive dialog box to include the options for paces or distance (if using a measuring tape). Two other calculators are yet to be written: one to convert from quadrant bearings to azimuthal and one for calculating conversion factor if not yet calculated.
Future development projects hope to include creating false X and false Y coordinates, searching through all traverse worksheets and averaging X Y coordinates for repeated stations in multiple traverses. After false X and false Y coordinates are calculated relative to some (0,0) reference point, inputing GIS coordinates from a GPS receiver, recalculating new coordinates that would fit the GIS. I also hope to rebuild in Python for direct integration with GIS applications.
The overall objective is use statistics to make the best possible map, or locate points as accurately as possible.