ruumica documentation

Heights and datums

Why ruumica stores elevations in the national height system, converts GNSS heights itself, and holds a position rather than store it without height.

A delivered height is only useful if everyone agrees what it is measured from. ruumica is strict about this, and the rules below explain the results you may see, such as a position that waits with GRID_ABSENT.

Elevations, never depths

Every height in a delivery is an elevation in the project’s national height system: EH2000 in Estonia, NN2000 in Norway. It is the height above the national reference surface, not a depth below the ground. A depth, such as the cover over a duct, is a separate value. Drawings and data files therefore never mix the two.

Two kinds of height

A GNSS receiver measures heights above the ellipsoid, a smooth mathematical shape of the earth. National height systems measure from the geoid, the shape of mean sea level. The two differ by many metres, and the difference changes from place to place. Converting one into the other needs a geoid model: a grid of that difference, published by the national mapping authority.

Many receivers can apply some geoid model themselves. ruumica does not trust that height, because which model was used, and which version, cannot be checked afterwards, and models differ by decimetres. Instead:

  1. the field device records the ellipsoidal height, together with the receiver’s raw sentences;
  2. the server converts it with the project’s pinned pipeline and the official geoid model, the same way every time;
  3. anyone can repeat the conversion later from the raw sentences, the pipeline and the grid’s fingerprint.

Pinned pipelines

A pipeline is one fixed recipe for turning GNSS coordinates into the delivery coordinate system, written down exactly and never changed in place. Each pipeline has official test points from the national authority; asbuilt crs verify proves on each machine that the pipeline reaches them. Every grid file a pipeline needs is identified by its SHA-256, so a different file is noticed (CRS_GRID_MISMATCH). ruumica never downloads a grid while it works.

The pipelines in use are listed in Units and formats.

Held, never stored flat

When a height cannot be determined properly, the position waits. It is never stored without height, and a height is never guessed or interpolated. The reason is shown with it:

You see Why the position waits What releases it
GRID_ABSENT The geoid model for the project is not installed. The raw height is kept. Installing the model; held positions are then applied.
NO_HEIGHT The position was recorded without a height. Recording it again with its height.
GNSS_NOT_DATUM_VERIFIED The fix was DGPS or autonomous, not accurate enough for delivery. Measuring again with an RTK fix, or recording the node by hand in the office.
GGA_… codes The receiver’s output leaves the height ambiguous or missing. Correcting the receiver or device settings; until then the office records the node by hand.

Estonia today

The Estonian geoid model, EST-GEOID2017, is licensed by the Estonian Land and Spatial Development Board and is not installed yet. Until it is:

  • Estonian positions and drawings are delivered in L-EST97 as stored, and exports say so (CRS_GRID_ABSENT, allowed with --allow-grid-absent);
  • field heights for Estonian projects wait with GRID_ABSENT.

Norwegian projects are not affected: their geoid model is installed.

See also

Last changed 2026-11-14