algorithm to ensure stations at same height Re: use of the network response Re: 'fix' vertical?
Warren Family
warrenfamily at fastmail.com
Thu Nov 3 23:37:30 GMT 2022
I went through the math and one ends up with a neat (IMHO!) algorithm to
solve this problem:
1. Process the survey and measure the vertical distance between the two
stations A and B, call this ∆Z(before) ( = zB − zA). This measurement
can easily be made in aven. Also record the horizontal distances ∆X and
∆Y for use in the fake leg in the next step. Make sure you're measuring
from A to B, in accord with the direction of the fake leg to be added.
2. Now add a fake Cartesian leg between the two stations with the
correct values for the horizontal displacements, but with /zero/ for the
vertical displacement, like this:
*data cartesian from to northing easting altitude
A B ∆X ∆Y 0.0 ; added fake leg with zero vertical displacement
3. Reprocess this modified survey and measure the /new/ vertical
distance between the two stations A and B, call this ∆Z(after).
4. Then, the required vertical displacement in the fake leg to make the
survey stations level in the processed survey is given by 1 / ∆z = 1 /
∆Z(before) − 1 / ∆Z(after).
(If you're familiar with the ancient literature on this problem, this is
related to the 'parallel' rule for combining survey traverses.)
5. Hence to bring about the desired outcome, adjust the added fake leg
to match this calculated displacement, like this
*data cartesian from to northing easting altitude
*flags duplicate ; to stop the fake leg adding to the surveyed length
A B ∆X ∆Y ∆z ; fake leg, where the vertical displacement ∆z is
computed from the above rule
That's it! I tried it out on the Gingling Pot survey, which
conveniently but non-trivially has two sumps which one might presume are
at the same level, and it does indeed work.
PROOF (can be ignored at first reading, second reading, n-th reading ...)
The derivation assumes the least-squares problem is presented in
Cartesian coordinates. This leads to a large set of linear simultaneous
eqations for the (x, y, z) co-ordinates of the stations, which are
/crucially/ also linear in the (∆x, ∆y, ∆z) displacements of the legs.
(The fact that the error model involves variance-covariance matrices in
the Cartesian representation just means that the easting, northing, and
altitude equation sets become coupled; it doesn't change this basic
observation or the subsequent analysis.)
Let's add to this the equation ∆Z = zB − zA, and add a fake leg with a
vertical displacement ∆z. Then we can imagine eliminating all the
station coordinates from the resulting set of linear equations, and
(because everything is linear) we must end up with a single linear
dependency (a straight line):
∆Z = m ∆z + c .
To find the value of ∆z which makes ∆Z vanish (the desired outcome), we
need to calculate the slope m and intercept c. For this we need two
points on the line, as it were.
For the first point, we know that if we make ∆z equal to the
displacement before the fake leg was added, nothing should change. Thus
we must have
∆Z(before) = m ∆Z(before) + c .
For the second point, set ∆z = 0 as in the above algorithm (any choice
of ∆z ≠ ∆Z(before) would do, but this seems the simplest), which gives
∆Z(after) = c .
Now all we have to do is solve the last two equations for m and c,
substitute into the first equation, and solve for the value of ∆z which
makes ∆Z = 0. When the dust settles, the answer is the neat result
given in the above algorithm.
Patrick
On 03/11/2022 17:02, Warren Family wrote:
> I think there's another way to do this which exploits the response of
> the network on being forced to accommodate a fake leg, and avoids the
> clunky [to me :-)] use of a small value of the standard deviation to
> constraint the height difference.
>
> First - solve the network as it stands and calculate ∆X, ∆Y and ∆Z
> between the two stations at the two sumps. I use capital letter here
> to distinguish these values from the fake leg displacements added below.
>
> Next, using *data cartesian, introduce a fake leg between the two
> stations with displacements ∆x = ∆X and ∆y = ∆Y, but with ∆z as yet
> unspecified.
>
> The key idea is that there will be /some/ value of ∆z for the fake leg
> for which, after network is re-solved, the sump stations are level in
> altitude (∆Z = 0). The challenge is to find this value. I think such
> an approach is equivalent to adding a hard constraint z1 = z2 into the
> underlying math problem, and distributing the error optimally (in the
> survex sense).
>
> Also, given the way the underlying problem of distributing the
> misclosure error is set up as a least-squares problem [yes!?], the
> change in the relative sump heights (∆∆Z as it were) is likely to be
> linear in the vertical displacement ∆z of the added leg. Assuming this
> is the case, one only needs one more calculation, for instance at ∆z
> =0, to find the value of ∆z which makes ∆Z = 0. I'll post an answer
> later when I've had a chance to work through the math and perhaps try
> a small example, unless someone beats me to it!
>
> Patrick
>
>
>
> On 01/11/2022 15:54, Andrew Atkinson wrote:
>> Instead of using 0 for clino you can use LEVEL, equivalent to up/down
>> for plumps search for "Deal with Plumbs or Legs Across Static Water" in
>>
>> https://survex.com/docs/manual/svxhowto.htm
>>
>> You'll still need to do the SD part.
>> Andrew
More information about the Survex
mailing list