dm_rts Module

Parameters and procedures for processing of measurement data obtained from a robotic total station (RTS) by Leica Geosystems.

The EDM distance correction functions use the default mean refraction coefficient 0.13, unless argument k is passed. The earth radius is assumed to be 6.389 * 10e6 m.

The following code calculates scale correction values for the measured slope distance slope_dist from air temperature temperature [°C], air pressure pressure [mbar], relative humidity humidity, and instrument EDM height height [m]. The horizontal distance hz_dist [m] is determined using the corrected slope distance corr_dist [m] and the vertical angle v [rad]:

real(kind=r8) :: temperature, pressure, humidity, height
real(kind=r8) :: ppm, ppm1, ppm2
real(kind=r8) :: corr_dist, hz_dist, slope_dist, v

temperature =   15.0_r8               ! Air temperature [°C].
pressure    = 1010.0_r8               ! Air pressure [mbar].
humidity    =    0.6_r8               ! Relative humidity [none].
height      =  100.0_r8               ! Instrument height [m].
slope_dist  =   42.0_r8               ! Slope distance [m].
v           = dm_gon_to_rad(101.5_r8) ! Vertical angle [rad].

ppm1 = dm_rts_correction_atmospheric(temperature, pressure, humidity)
ppm2 = dm_rts_correction_sea_level(height)
ppm  = ppm1 + ppm2

corr_dist = dm_rts_correction_distance(slope_dist, ppm, RTS_PRISM_LEICA_STANDARD)
hz_dist   = dm_rts_distance_horizontal(corr_dist, v)

Formulas are taken from the Leica TM30/TS30 User Manual.


Uses

  • module~~dm_rts~~UsesGraph module~dm_rts dm_rts module~dm_kind dm_kind module~dm_rts->module~dm_kind iso_fortran_env iso_fortran_env module~dm_kind->iso_fortran_env

Used by

  • module~~dm_rts~~UsedByGraph module~dm_rts dm_rts module~dmpack dmpack module~dmpack->module~dm_rts

Variables

Type Visibility Attributes Name Initial
real(kind=r8), public, parameter :: RTS_PRISM_LEICA_STANDARD = 0.0_r8

Leica Standard Prism, GPR1 [mm].

real(kind=r8), public, parameter :: RTS_PRISM_LEICA_MINI = 17.5_r8

Leica Mini Prism, GMP101 [mm].

real(kind=r8), public, parameter :: RTS_PRISM_LEICA_360 = 23.1_r8

Leica 360° Prism, GRZ4/GRZ122 [mm].

real(kind=r8), public, parameter :: RTS_PRISM_LEICA_360_MINI = 30.0_r8

Leica 360° Mini Prism, GRZ101 [mm].

real(kind=r8), public, parameter :: RTS_PRISM_LEICA_TAPE = 34.4_r8

Leica Reflector Tape S, M, L [mm].

real(kind=r8), public, parameter :: RTS_PRISM_LEICA_REFLECTORLESS = 34.4_r8

Reflectorless [mm].

real(kind=r8), public, parameter :: RTS_PRISM_LEICA_MACHINE_AUTO = 28.1_r8

Machine Automation Power Prism, MPR122 [mm].


Interfaces

public interface dm_rts_distance_std_dev

Generic interface to standard deviation functions.

  • public function dm_rts_distance_std_dev_array(dists) result(std_dev)

    Returns standard deviation of a single slope distance measurement.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=r8), intent(inout) :: dists(:)

    Array of (slope) distances [m].

    Return Value real(kind=r8)

  • public pure elemental function dm_rts_distance_std_dev_mean(s, n) result(std_dev)

    Returns the standard deviation of the arithmetic mean of the distance.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=r8), intent(in) :: s

    Standard deviation of a single measurement.

    integer(kind=i8), intent(in) :: n

    Number of measurements.

    Return Value real(kind=r8)


Functions

public pure elemental function dm_rts_correction_atmospheric(temperature, pressure, humidity) result(ppm)

Returns atmospheric correction value [ppm]. Multiply by 10e-6 before applying the correction value to a slope distance [m]. If no relative humidity is passed, the default 60 % of the instrument is used instead.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=r8), intent(in) :: temperature

Air temperature [°C].

real(kind=r8), intent(in) :: pressure

Air pressure [mbar, hPa].

real(kind=r8), intent(in), optional :: humidity

Relative humidity from 0.0 to 1.0.

Return Value real(kind=r8)

public pure elemental function dm_rts_correction_distance(slope_dist, ppm, prism) result(corrected)

Applied atmospheric correction [ppm] and prism constant [mmm] to uncorrected slope distance [m].

Arguments

Type IntentOptional Attributes Name
real(kind=r8), intent(in) :: slope_dist

Uncorrected slope distance [m].

real(kind=r8), intent(in) :: ppm

Atmospheric scale correction [ppm, mm/km].

real(kind=r8), intent(in) :: prism

Additive constant of the reflector [mm].

Return Value real(kind=r8)

public pure elemental function dm_rts_correction_projection(east) result(ppm)

The magnitude of the projection distortion is in accordance with the projection system used in a particular country, for which official tables are generally available. The used formula is valid for cylindrical projections such as that of Gauss-Krüger.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=r8), intent(in) :: east

Easting, distance from projection zero line with the scale factor 1 [km].

Return Value real(kind=r8)

public pure elemental function dm_rts_correction_sea_level(height) result(ppm)

Returns sea level correction value [ppm] for an EDM of the given height above sea level [m]. The value of the result is always negative. Multiply by 10e-6 before applying the correction value to a slope distance [m].

Arguments

Type IntentOptional Attributes Name
real(kind=r8), intent(in) :: height

Height of EDM above sea level [m].

Return Value real(kind=r8)

public pure elemental function dm_rts_distance_horizontal(slope_dist, v, k) result(hz_dist)

Returns horizontal distance [m] from slope distance slope_dist [m] and vertical angle v [rad]. The default mean refraction coefficient k is 0.13.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=r8), intent(in) :: slope_dist

Slope distance [m].

real(kind=r8), intent(in) :: v

Vertical cycle reading [rad].

real(kind=r8), intent(in), optional :: k

Mean refraction coefficient.

Return Value real(kind=r8)

public function dm_rts_distance_mean(dists) result(mean)

Returns (slope) distance as arithmetic mean of all measurements.

Arguments

Type IntentOptional Attributes Name
real(kind=r8), intent(inout) :: dists(:)

Array of (slope) distances [m].

Return Value real(kind=r8)

public function dm_rts_distance_std_dev_array(dists) result(std_dev)

Returns standard deviation of a single slope distance measurement.

Arguments

Type IntentOptional Attributes Name
real(kind=r8), intent(inout) :: dists(:)

Array of (slope) distances [m].

Return Value real(kind=r8)

public pure elemental function dm_rts_distance_std_dev_mean(s, n) result(std_dev)

Returns the standard deviation of the arithmetic mean of the distance.

Arguments

Type IntentOptional Attributes Name
real(kind=r8), intent(in) :: s

Standard deviation of a single measurement.

integer(kind=i8), intent(in) :: n

Number of measurements.

Return Value real(kind=r8)

public pure elemental function dm_rts_height_difference(slope_dist, v, k) result(diff)

Returns height difference [m] from slope distance slope_dist [m] and vertical angle v [rad]. The default mean refraction coefficient k is 0.13.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=r8), intent(in) :: slope_dist

Slope distance [m].

real(kind=r8), intent(in) :: v

Vertical cycle reading [rad].

real(kind=r8), intent(in), optional :: k

Mean refraction coefficient.

Return Value real(kind=r8)