final comment on SD (Re: algorithm to ensure stations at same height Re: use of the network response Re: 'fix' vertical?)

Warren Family warrenfamily at fastmail.com
Fri Nov 4 20:32:40 GMT 2022


Just a footnote to all this:
Adding a fake leg even of the right length can still perturb the survey, 
since it can affect the redistribution of the misclosure error.
(Think of adding (duplicating) a leg in parallel with an existing leg; 
this creates a mini-loop which redirects the misclosure error away from 
this pair.)
To reduce this effect, for the fake leg one should use large values of 
the SD in the horizontal direction whilst retaining a smaller value in 
the vertical direction, for example:
*sd dx 100 metres
*sd dy 100 metres
*sd dz 1 metre
(The smaller SD in the vertical direction ensures the before and after 
vertical separations remain sufficiently distinct to do the calculation 
alluded to below.)

Of course once one is into this 'game' one might just as well set ∆z = 0 
for the fake leg, and shrink the vertical SD to a very small value, ...
and then we're back to the original proposal :-).

Patrick


On 03/11/2022 23:37, Warren Family wrote:
> 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