In this part of the lab I want you to modify your library from Lab 2 so that it can help you carry out a preanalysis of the situation described below.


Imagine that you just landed a summer job as a geomatics engineer, and that your boss comes to you in the first week and tells you that the company needs to extend a primary geodetic network in the area of the town of Exshaw, which is not too far from Calgary, Alberta, Canada. Having heard that you took a class in geomatics networks, she wants you to do a preanalysis of the proposed extension to avoid excessive or inadequate field observations. And she’d like you to use a trial and error method based on the propagation of errors in different possible network configurations.

Below is part of a 1:50,000 scale topographic map you downloaded from Natural Resources Canada depicting the planned extension. The new stations 3, 4, 5, and 6 will be positioned by conventional terrestrial methods using the control stations 1 and 2.

The UTM coordinates of stations 1 and 2 are as follows and can be considered to be known:

  • E_1 = 625774.134 \text{ m} \text{  and  } N_1 = 5654459.397 \text{ m}
  • E_2 = 624676.199 \text{ m} \text{  and  } N_2 = 5661431.497 \text{ m}

All stations are inter-visible except for stations 3 and 5, i.e. there’s a clear line of sight from all of the stations to all of the others except between 3 and 5.

To be clear: you will need all of these stations. The question is how many distance measurements are needed between them in order the meet the specs published below.

Click the image above to enlarge. Or here to open the full image in a new window » for downloading

Required survey specifications and measurement accuracy

Your boss tells you that the client has told her that the semi-major axis of each 95% relative confidence region between new stations must be less than:

    \begin{equation*} d\text{ x }3.0\text{ x }10^{-6}\text{ + }0.05\text{ m } \end{equation*}

where d is the distance between the two stations in metres and can be approximated using the initial approximate coordinates of the stations.

She tells you that there are no specifications for the point confidence regions.

Further, you learn that the distance measurements will have the following standard deviation:

    \begin{equation*} \sigma_{l}\text{ = }\pm\text{ ( }4\text{ mm }+2\text{ ppm }\text{ ) } \end{equation*}

And you’re told that you can assume the measurements that are going to be made will be uncorrelated, meaning that there will be no off-diagonal elements in the variance-covariance matrix \mathbf{C}_l.

Step 1: Summarize the situation in your report

Your boss has asked you to submit a report to her outlining the situation, the results of your preanalysis, and your recommendations. Begin that report by summarizing the situation provided here.

Step 2: Get approximate coordinates from the map

Use the map provided to get approximate values for the coordinates of stations 3, 4, 5, and 6. Use the grid lines to get the scale and, in order to ensure a reliable preanalysis, make sure you’re accurate to about 30-50 m. Include these approximate coordinates in your report.

Step 3: Document the linearized form of the functional model

In Lab 2 you already did the work to derive the linearized functional model needed here, and to code it. Which of the models from Lab 2 is / are required in this case? Include this in your report in the full form \mathbf{A}\boldsymbol{\delta} - \mathbf{e} + \mathbf{w} =\mathbf{0}. As has been our practice, it might help you to think through:

  • A quick accounting for what are the values u, n, and r
  • An explicit statement of what are the vectors \mathbf{x}, \mathbf{x}_0, \boldsymbol{\delta}, and \mathbf{l}_{measured} in terms of the variables they represent, and what sizes they are going to be

Step 4: Create an appropriate input file type

You’re going to run your application many times in this lab and to do that you’re going to need a practical input file format. There are several ways to do this but the following will work:

<start of file>
unknown_station_ID_1       Northing_1      Easting_1
unknown_station_ID_2       Northing_2      Easting_2

known_station_ID_1           Northing_1      Easting_1
known_station_ID_2           Northing_2      Easting_2

from_station_leg_1       to_station_leg_1
from_station_leg_2       to_station_leg_2

<end of file>

Be sure to add the required format of the input file to your report and to the comments in your code.

Step 5: Consider all of the possible legs

Use a sketch and some basic logic to map out the possible legs between stations that might be observed. Remember that there’s no point in observing between stations 1 and 2, and that you can’t see between stations 3 and 5. Give the legs a number and include those along with your sketch in the report.

Step 6: Consider all of the possible network configurations

The whole point of this preanalysis is to determine the optimal network configuration, i.e. the minimum number of stations needed to meet the stated survey requirements.

Now consider what are the possible network configurations. You’re doing to do a preanalysis of each of them and check whether the requirements are met. But first, how many configurations are there, and what are they? Include this in your report too.

Step 7: Derive the relative error ellipse equations

We have looked at the notion of a point error ellipse and the equations for the semi-major and semi-minor axes. Yet in this lab (see above) you’ve been given a requirement that relates to the semi-major axis of each 95% relative confidence region between new stations.

To do this you will need to derive the equations for the semi-major and semi-minor axes of the error ellipse. Use what you know about propagation of errors, and include this in your report.

You do not need to derive the bearing of the semi-major axis, \beta. It is as follows:

    \begin{equation*} \beta=tan^{-1}(\dfrac{\sigma_{\Delta E\Delta N}}{\lambda_1-\sigma_{\Delta E}^2}}) \end{equation*}


    \begin{equation*} \lambda_1=\dfrac{1}{2}(\sigma_{\Delta E}^2+\sigma_{\Delta N}^2+\begin{bmatrix} (\sigma_{\Delta E}^2+\sigma_{\Delta N}^2)^2+4\sigma_{\Delta E\Delta N}^2 \end{bmatrix}^\frac{1}{2}) \end{equation*}

Step 8: Update your geomatics networks C++ library

Next you need to update your application and your C++ library from the last lab so that it can help you do the preanalysis in the second part of the lab. As you will see there, your code is going to need to output at least the following to a file each time it is run, i.e. for each possible network configuration:

  • The elements of the design matrix, \mathbf{A}
  • The elements of the variance-covariance matrix of the observations, \mathbf{C}_l
  • The variance-covariance matrix of the estimated parameters, \mathbf{C}_\hat{x}
  • A table with a row for each leg in the configuration, containing:
    • The leg number
    • The “from” station
    • The “to” station
    • The 95% point confidence region parameters (a, b, and \beta) for new stations (and an indication that it is a point confidence region), i.e. in cases where the new station is to be tied in from one of the control points
    • The 95% relative confidence region parameters (a, b, and \beta) between each pair of new stations (and an indication that it is a relative confidence region), i.e. for measurements between new stations
    • The spec (in terms of allowable a) for that leg (if applicable)
    • An indication of whether the leg beat the spec, i.e. whether it passes or fails
  • A summary of the accounting for this configuration, i.e. the values u and n

It might also be useful to output some of this to the screen so you know what’s going on.

Step 9: Set up a project for a new console-based application

Like you have done in other labs, I want you to create a Windows-based console application using Microsoft Visual Studio, and using the Eigen matrix.

When doing this, be sure to:

  • give your application an appropriate name, e.g. YourName-Lab3
  • include and use the Eigen template library in your project – I want you to use / get used to this now because it’s going to be so important to us in later labs
  • include your updated library from above
  • properly document and organize your code
  • create an executable that can be run on any Windows computer (although this time I’m not going to ask you to submit this – only to have it on hand in case we ask for it)

Step 10: Move to Part 2 of this lab when you’re ready

Once you’ve finished all of this you can proceed to Part 2 in the next lesson using the buttons below.

You can do this at any time and will need to press “Unlock the next lesson” in order to do this.