For a basic explanation of Survey Core Stations, see the How Stations Work page.
Before a station setup is performed, the correct kind of tsc_UiTask should be running and hosting this class. It is important to set up this UiTask with the correct parameters. In particular, look at the following:
In tsc_UiTask, override bool SupportsTs() and return true.
In tsc_UiTask, optionally override PreselectStyle() and return the name of a style to be automatically selected without user intervention. Calling tsc_SurveyStyleList::Get(tsst_TotalStation) may be useful for locating a suitable style.
Style filtering can also be achieved by using the PreselectStyles() method in tsc_UiTask.
Also in tsc_UiTask, override RequiredSurveyState() and return the required state to be set up before your station setup routine is run. A good setting is tsc_SurveyStateStyleConnected which will ensure the instrument is set up and connected for you.
Optionally, in tsc_MainMenu, add your survey menu items using SetSurveySubMenu(subMenu, tsc_SurveyStyleType) and specify which devices are supported. This will insert of sub-menu of survey styles between the item being added and the supplied sub-menu. Using this method allows greater control of the styles that are presented to the user.
tsc_StationSetup (class tsc_Job& job, class tsc_Instrument& instrument);
Constructs a station setup instance to work with the supplied job and total station.
void WriteAtmosphereRecord (const double& pressure, ///< The atmospheric pressure in hPa (millibars)
const double& temperature, ///< The temperature in Celsius.
const double& ppm, ///< PPM correction (double_Null will compute it).
const double& refraction, ///< The refraction coefficient.
bool applyCurvature, ///< Whether to apply correction for curvature.
bool applyRefraction); ///< Whether to apply correction for refraction.
Writes an atmosphere record with the supplied parameters. Calling this method is optional; and may only be called before Start(). If not called, then during the Start() processing SC will display an atmospheric setup form and write an Atmosphere record based on the values entered on the form and/or obtained automatically.
void WriteStationRecord (const char* stationName, // Required - the station and point name.
const double& scaleFactor,
const double& scaleFactorStdError,
bool scaleFactorIsFixed,
const double& instrumentHeight,
int backsightObservationCount, // No. backsight observations used.
int uniqueBacksightCount, // No. unique backsight points used.
tsc_StationSetupType type);
Writes a station record with the supplied parameters. Calling this method is required before calling Start(), but only the station name is necessary at this time. This method may also be called after Start() but before End() to update the station record.
void WriteBackBearingRecord (const char* backsightName, // Name of a known backsight point.
const double& f1HorzAngle, // Face 1 horiz angle (observed or calc).
const double& f2HorzAngle, // Face 2 horiz angle (observed or calc).
const double& horzAngleStdError); // Standard error of the horiz angle values.
Writes a backbearing (a.k.a. backsight) record for the named point with the supplied corrections. Calling this method is optional.
This method may also be called after Start() - but before End() - to update the backbearing record.
bool Start ();
Starts a station setup using the previously written records.
Any required records (Instrument, Atmosphere, Station, BackBearing) which were not previously written will be written with standard values - which may involve user interaction.
Returns true if successfully started. Returns false if the user cancelled a dialog or form, if the class is in an incorrect state to start, or if some error occurred (of which the user will have been informed).
bool UpdateStationCoordinate (const tsc_Grid& grid);
bool UpdateStationCoordinate (const tsc_Grid& grid, const tsc_GridDeltas& stdError);
Updates the position in the station's point record. Returns false if the station is not currently in progress, or the station type is not a free station type (eg, resection). Note that this coordinate is given a 'free station in progress' quality and will not be visible in the JXL output, use FinalizeStationCoordinate when calculations are complete.
bool FinalizeStationCoordinate (const tsc_Grid& grid);
bool FinalizeStationCoordinate (const tsc_Grid& grid, const tsc_GridDeltas& stdError);
Finalizes the position in the station's point record. Returns false if the station is not currently in progress, or the station type is not a free station type (eg, resection), or if FinalizeStationCoordinate has already been called. This will cause a station point with resection quality to be written and is useful to place the free coordiante in the desired place in output JXL.
bool WriteResiduals (const class tsc_StationResults& results);
Writes the computed residuals to the database. Use this only after Start() has been called, and before calling End().
bool WriteMtas (const class tsc_StationResults& results);
Writes the computed MTAs to the database. Use this only after Start() has been called, and before calling End(). If you want the residuals to reference the MTAs, write the residuals first.
bool End();
Ends a Station setup and leaves SC in a state ready for surveying (topo, stakeout, etc).
Returns true on success, false if this instance is not in the correct state.
bool Abort();
Aborts a station setup and cleans up both the database and this class.
Returns true on success, false if this instance is not in the correct state.
bool InProgress () const;
Returns true if this instance of tsc_StationSetup is currently in progress. That is, Start()
has been called, but not End() or Abort().
bool IsComplete () const;
Returns true if this instance of tsc_StationSetup has completed. That is, there has been a successful call to Start() and progression all the way to the call to End().
tsc_Station Station();
Obtains the last station placed in the database by this instance - may be empty.
tsc_Job Parent() const;
A reference to the job within which this station setup exists.