Stations - how they work
Station setup
A station is the location where an optical instrument is set up to take measurements.
In Survey Core, a station is represented by a set of records in a job database that allow subsequent total station measurements to be converted to accurate grid coordinates. The two fundamental parts of a database station are the station's grid coordinate and its orientation.
The orientation is an angle that must be applied to any measured horizontal angle to convert it to an azimuth relative to grid north. This is required because there is no way to know how the instrument's "zero" horizontal angle was aligned when it was placed on the tripod or other mounting.
There are two basic types of station setup.
Known point. In this situation the station has been placed over a point of known coordinates, and the setup does not need to calculate the position. One or more observations are made to other known points so the orientation of the instrument can be determined.
Free station, or resection. Here the station has been placed at some arbitrary location, and a number of known points are observed so that the instrument's position can be computed. Once this is known, the orientation can also be computed.
For an in-depth description of the mathematics behind the resections, please see the page Standard and Helmert resection calculations.
In order for a complete station (that is, all the required records) to be written to a database, a number of distinct steps have to be followed. Many of these steps are enforced by Survey Core, some because they are accepted surveying practice and others because they conform to General Survey's inbuilt workflow. Plugins will need to follow this workflow in general, although some flexibility is allowed.
A current job must exist. If not, then one is opened or created, typically by the user.
A survey style is selected by the user.
A total station connection is established.
The total station is levelled if not already.
The type of station setup is chosen (known point, free station (resection), etc).
Atmospheric corrections (temperature, pressure) are entered and correction options are selected.
One or more measurements are made to known points (backsights) and stored in the database. Note # below.
For a free station, a computation resolves the position of the station and its orientation.
The station's position is updated (unless it has been set up on a known point).
The station's orientation is computed and the backbearing record is updated.
The previous four steps could be repeated any number of times, until the station's quality is sufficient.
For a free station, the station setup coordinate can be finalized.
The station setup is "completed". This may include writing calculation residuals to the database.
The station is now usable for topo measurements, stakeout, and so forth.
A station remains useful for coordinating newly measured points for as long as the following apply:
The total station remains connected, level, and in the same position.
The job remains open.
No other station setup is started.
The station's position (that is, the coordinate of the point record) remains unchanged (but see *).
The survey is not ended by the user.
# Backsight measurements must be performed by the plugin. SC will be aware that these are part of a station setup and behave accordingly. Note that when requesting a backsight point name from the user, the tsc_PointName field must be used, with the CopyCsvToDatabase option set on. This will ensure the measured point is usable as a backsight if the known point's coordinates comes from a linked job or CSV file. In such a case, the point is automatically copied to the main job to ensure the station remains valid even if the file is unlinked.
* If the position of a station is moved by updating the station's point record, the grid coordinates all observations will also move, however other side effects will occur such as the orientation becoming incorrect, and computed grid coordinates remaining at their old positions. These effects must be fully understood before attempting such a change after the station setup has been completed.
If no new station setup has been started (that is, written to the database), a previous good station may be reinstated by selecting General Survey's "Use last" option. This option can be used after (for instance), the job has been closed and reopened, or the instrument has been reconnected (say, after a battery change).
Station database objects
In brief, the following database objects comprise a station:
Style - A copy of the chosen survey style. Mostly contains instrument configuration details.
Instrument - Details about the total station itself.
Atmosphere - Details of atmospheric conditions, corrections, and options.
Station - Gives the name of the station point, some calculation results, and ties many of the other records to the station.
Station point - A known or computed coordinate giving the station's position.
Backbearing - Contains orientation corrections and related information.
Target - Information about the prism (or direct reflex) target and its height. Another target record is written if any aspect of the target changes.
Backsight observations - One or more raw observations to known points, used to compute the station.
MTAs - Mean turned angle records that average backsight observations.
Residuals - Residual errors computed for backsights and MTAs in a station setup.
Foresights - Measurements whose grid coordinates are computed using the completed station.
Note that there is sample JobXML at the bottom of this page, which illustrates the database records present in a simple resection.
Style
This set of records is simply a copy of the survey style used, and is present only as a record of what was chosen.
The style records are for reporting and are not used for any subsequent calculations; they are not described further.
Instrument
Written when the station is started. For instance, when the plugin calls tsc_StationSetup::Start().
Most fields come from the Instrument itself. Writing this is automatic, there is no user-definable data here.
Atmosphere
Written when the station is started, or when tsc_StationSetup::Start() is called.
Contains the air temperature and pressure, a computed PPM, and some correction options.
Derived entirely from the Atmosphere form, which itself is populated from instrument if possible.
A plugin may write its own atmosphere record. Doing this prevents the automatic appearance of the atmosphere form.
Refraction coefficient - the standard value is 0.142. Should be set to the correct value for the instrument.
Station
Written when tsc_StationSetup::Start() is called.
Station Name - supplied by the plugin. This is also the point name. If no point of this name, one is written.
Instrument height - plugin must supply the corrected height, from the point to the instrument's datum.
Instrument raw (measured) height.
Instrument and atmosphere references - supplied automatically.
Number of backsight points.
Number of backsight measurements.
Scale factor - either supplied by plugin or computed.
Scale type - either free computed by SCAPI) or fixed (supplied by plugin).
Scale factor standard error.
Station Type - set according to the type of station setup performed.
StationType_Unknown = 0,
StationType_SingleBacksight,
StationType_StationSetupPlus,
StationType_StandardResection,
StationType_HelmertResection,
StationType_ReflineStationSetup,
StationType_StationElevationSetup
BackBearing
Written when tsc_StationSetup::Start() is called.
Updated at any time a new resection is computed.
StationRecordID - supplied by internal housekeeping.
Station - name - plugin same as station record.
BackSight name - plugin
Face1HorizontalCircle - Horizontal angle measured on face 1.
Face2HorizontalCircle - Horizontal angle measured on face 2.
OrientationCorrection -
OrientationCorrectionStandardError -
Any number of backsight Points
Written using MeasureForm or written using tsc_Observation.
Type = backsight
May have target records interspersed - automatically written at the start, and any time the target changes.
Use the tsc_PointName field for name entry with the CopyCsvToDatabase option set to true.
Station point
Same name as the station record.
For a known point station setup, this record may be a point of any type, anywhere previous in the job.
For a free station setup, the point may be written (with grid coordinates) as a result of resection calculation.
MTAs
Same name as the backsight observations.
Used to aggregate the individual observations to particular backsights
StationResiduals
Often used for known point stations with a single backsight as there are no residuals to calculate.
Written once to mark the beginning of a set of residuals records for each backsight.
There is no data in this record, it is just a marker for the following records.
Residuals for each backsight point
Written at the end of the station setup.
Not used for known point stations.
Not stored for MTAs.
Pointer to point (obs)
Name of point
ObservationUsedInSolutionFor
GridResidual
AngleResidual
JobXml of a simple resection
<?xml version="1.0" encoding="UTF-8"?>
<JOBFile jobName="NZLC_01" etc="" etc...="">
<FieldBook>
<!-- Many elements that are not relevant to this discussion have been omitted -->
<InstrumentRecord ID="00000037" TimeStamp="2010-09-03T04:17:43">
<Type>Manual</Type>
<RefractiveIndex>279</RefractiveIndex>
<CarrierWavelength>79.4</CarrierWavelength>
<EDMMeasurementMode>Fine</EDMMeasurementMode>
<SetHorizontalCircleMode>DoNothing</SetHorizontalCircleMode>
<Servo>NoServo</Servo>
<AnglesOnlyRate/>
<TurnToZero>false</TurnToZero>
<AverageMeasurements>3</AverageMeasurements>
<HorizontalAnglePrecision/>
<VerticalAnglePrecision/>
<EDMPrecision/>
<EDMppm/>
<InstrumentPrecisionsSource>UserEntered</InstrumentPrecisionsSource>
<CenteringError>0</CenteringError>
</InstrumentRecord>
<AtmosphereRecord ID="0000003e" TimeStamp="2010-09-03T04:17:45">
<Pressure/>
<Temperature/>
<PPM>0</PPM>
<ApplyEarthCurvatureCorrection>false</ApplyEarthCurvatureCorrection>
<ApplyRefractionCorrection>false</ApplyRefractionCorrection>
<RefractionCoefficient>0.142</RefractionCoefficient>
<PressureInputMethod>KeyedIn</PressureInputMethod>
<ApplyPPMToRawDistances>true</ApplyPPMToRawDistances>
</AtmosphereRecord>
<StationRecord ID="0000003f" TimeStamp="2010-09-03T04:17:45">
<StationName>RST01</StationName>
<TheodoliteHeight>1</TheodoliteHeight>
<RawTheodoliteHeight>
<MeasurementMethod>TrueHeight</MeasurementMethod>
<MeasuredHeight>1</MeasuredHeight>
<HorizontalOffset>0</HorizontalOffset>
<VerticalOffset>0</VerticalOffset>
</RawTheodoliteHeight>
<InstrumentID>00000037</InstrumentID>
<AtmosphereID>0000003e</AtmosphereID>
<NumberOfBacksightMeasurements>2</NumberOfBacksightMeasurements>
<NumberOfBacksightPoints>2</NumberOfBacksightPoints>
<ScaleFactor>1.0000156656223</ScaleFactor>
<ScaleType>Free</ScaleType>
<ScaleFactorStandardError/>
<StationType>StandardResection</StationType>
</StationRecord>
<BackBearingRecord ID="00000040" TimeStamp="2010-09-03T04:17:45">
<StationRecordID>0000003f</StationRecordID>
<Station>RST01</Station>
<BackSight>P0</BackSight>
<Face1HorizontalCircle>270</Face1HorizontalCircle>
<Face2HorizontalCircle/>
<OrientationCorrection>0</OrientationCorrection>
<OrientationCorrectionStandardError/>
</BackBearingRecord>
<TargetRecord ID="00000041" TimeStamp="2010-09-03T04:17:46">
<PrismType>UnknownPrism</PrismType>
<PrismConstant>0</PrismConstant>
<TargetHeight>1</TargetHeight>
<RawTargetHeight>
<MeasurementMethod>TrueHeight</MeasurementMethod>
<MeasuredHeight>1</MeasuredHeight>
<HorizontalOffset>0</HorizontalOffset>
<VerticalOffset>0</VerticalOffset>
</RawTargetHeight>
</TargetRecord>
<PointRecord ID="00000042" TimeStamp="2010-09-03T04:17:46">
<Name>P0</Name>
<Code>KP</Code>
<Method>DirectReading</Method>
<SurveyMethod>Fix</SurveyMethod>
<Classification>BackSight</Classification>
<Deleted>false</Deleted>
<Circle>
<HorizontalCircle>270</HorizontalCircle>
<VerticalCircle>90</VerticalCircle>
<EDMDistance>1000</EDMDistance>
<Face>Face1</Face>
<HorizontalCircleStandardError/>
<VerticalCircleStandardError/>
<EDMDistanceStandardError/>
<EDMMeasurementMode>Fine</EDMMeasurementMode>
</Circle>
<StationID>0000003f</StationID>
<BackBearingID>00000040</BackBearingID>
<TargetID>00000041</TargetID>
<Pressure/>
<Temperature/>
<ComputedGrid>
<North>700000.00000233</North>
<East>300000.00000819</East>
<Elevation>100</Elevation>
</ComputedGrid>
</PointRecord>
<PointRecord ID="00000048" TimeStamp="2010-09-03T04:17:47">
<Name>P1</Name>
<Code>KP</Code>
<Method>DirectReading</Method>
<SurveyMethod>Fix</SurveyMethod>
<Classification>BackSight</Classification>
<Deleted>false</Deleted>
<Circle>
<HorizontalCircle>0</HorizontalCircle>
<VerticalCircle>90</VerticalCircle>
<EDMDistance>1000</EDMDistance>
<Face>Face1</Face>
<HorizontalCircleStandardError/>
<VerticalCircleStandardError/>
<EDMDistanceStandardError/>
<EDMMeasurementMode>Fine</EDMMeasurementMode>
</Circle>
<StationID>0000003f</StationID>
<BackBearingID>00000040</BackBearingID>
<TargetID>00000041</TargetID>
<Pressure/>
<Temperature/>
<ComputedGrid>
<North>701000</North>
<East>300999.99999004</East>
<Elevation>100</Elevation>
</ComputedGrid>
</PointRecord>
<PointRecord ID="0000004e" TimeStamp="2010-09-03T04:17:48">
<Name>RST01</Name>
<Code/>
<Method>Resection</Method>
<SurveyMethod>KeyedIn</SurveyMethod>
<Classification>Normal</Classification>
<Deleted>false</Deleted>
<Grid>
<North>700000</North>
<East>301000</East>
<Elevation>100</Elevation>
</Grid>
<ResectionStandardErrors>
<NorthStandardError/>
<EastStandardError/>
<ElevationStandardError>0</ElevationStandardError>
</ResectionStandardErrors>
</PointRecord>
<StationResiduals ID="00000052" TimeStamp="2010-09-03T04:17:48">
<ResidualsRecord>
<ObservationID>00000042</ObservationID>
<PointName>P0</PointName>
<ObservationUsedInSolutionFor>HorizontalAndVertical</ObservationUsedInSolutionFor>
<GridResidual>
<DeltaNorth>-0.00000233482569</DeltaNorth>
<DeltaEast>-0.00000819488196</DeltaEast>
<DeltaElevation>0</DeltaElevation>
</GridResidual>
<AngleResidual>
<HorizontalCircle>0</HorizontalCircle>
<VerticalCircle>0</VerticalCircle>
<SlopeDistance>0.00000819478919</SlopeDistance>
</AngleResidual>
</ResidualsRecord>
<ResidualsRecord>
<ObservationID>00000048</ObservationID>
<PointName>P1</PointName>
<ObservationUsedInSolutionFor>HorizontalAndVertical</ObservationUsedInSolutionFor>
<GridResidual>
<DeltaNorth>-0.00000000093132</DeltaNorth>
<DeltaEast>0.00000995973824</DeltaEast>
<DeltaElevation>0</DeltaElevation>
</GridResidual>
<AngleResidual>
<HorizontalCircle>0</HorizontalCircle>
<VerticalCircle>0</VerticalCircle>
<SlopeDistance>-0.00000000419323</SlopeDistance>
</AngleResidual>
</ResidualsRecord>
</StationResiduals>