Skip to content

Field Reference

Complete listing of every output column produced by the three parsers. Fields are written to the output_review PostgreSQL table and are also returned by the REST API endpoints.


Siffer — Soil Type Codes

These 7 columns are produced by the Siffer parser for every polygon row.

Field Type Values / range Meaning Example
siffer_1 str Any valid siffer code or "" First (dominant) soil-type code, standardised "Ko"
siffer_2 str Any valid siffer code or "" Second soil-type code "LP"
siffer_3 str Any valid siffer code or "" Third soil-type code "D"
siffer_4 str Any valid siffer code or "" Fourth soil-type code ""
n_siffers int 0–4 Number of soil-type codes found in this polygon 3
parse_ok_s bool True / False True if all codes were recognised by the grammar True
parse_error str Error text or "" Description of unrecognised tokens; empty on success ""

Codes siffer_1siffer_4 are populated sequentially from left. Unused slots are empty strings, never NULL.

Column parse_ok_s — together with parse_ok_l and parse_ok_h — drives the map viewer error-review style (SLD), determining which polygons are coloured as errors or successes.


Loimis — Soil Texture Layers

These columns are produced by the Loimis parser. Texture properties are repeated for up to 4 depth layers (suffix 14).

Layer boundaries

Field Type Unit Meaning Example
nlayers int Number of distinct texture layers described (1–4) 2
ZMX float cm Maximum depth of the described profile 70.0
Z1 float cm Lower boundary of layer 1 40.0
Z2 float cm Lower boundary of layer 2; 0 if < 2 layers 70.0
Z3 float cm Lower boundary of layer 3; 0 if < 3 layers 0.0
Z4 float cm Lower boundary of layer 4; 0 if < 4 layers 0.0

Per-layer texture (n = 1 to 4)

Field Type Values Meaning Example
EST_TXTn str l, pl, sl, ls, s, tsl, tls, dk, … Estonian texture classification code for layer n "sl"
EST_CRSn str r, v, k, kb, p, lu, ck, or "" Coarse fraction (skeleton) type for layer n; empty if no skeleton "r"
LXTYPEn str SAND, FINE_SAND, LOAM, SANDY_CLAY, CLAY, PEAT, GRAVELS, … International / WRB texture class for layer n "LOAM"
CLAYn float or NaN 0–100 % Clay fraction for layer n. NaN for GRAVELS layers. 15.0
SILTn float or NaN 0–100 % Silt fraction for layer n. NaN for GRAVELS layers. 20.0
SANDn float or NaN 0–100 % Sand fraction for layer n. NaN for GRAVELS layers. 65.0
ROCKn float or NaN 0–100 % Rock / skeleton fragment fraction for layer n 0.0

Diagnostic fields

Field Type Values Meaning
parse_ok_l bool True / False True if all layers were parsed; used by the map viewer error-review style
parse_info str "successful", "empty_loimis", "partial_no_info", "parse_error" Detailed parse outcome
has_no_info bool True / False True if ≥ 1 layer could not be parsed
loimis_grammar dict Nested dict Full structured parse result (stored in DB but excluded from map viewer popup)
loimis_search dict Nested dict Internal search-parameter snapshot (stored in DB but excluded from map viewer popup)

NaN in texture fractions: Gravel-/rock-dominated layers where LXTYPE = "GRAVELS" have NaN for clay, silt, and sand. Always check LXTYPE or ROCK before summing fractions.

Unused layer slots: Z2Z4 and EST_TXT2EST_TXT4 etc. are 0 / "" (not NaN) when nlayers < n. Check nlayers first.


Huumus — Organic Horizon

These ~96 columns are produced by the Huumus parser. Per-unit fields are repeated for up to 4 soil units (suffix _1_4).

Quality and provenance

Field Type Values Meaning Example
n_siffers int 0–4 Number of space-separated soil units in this polygon 2
parse_ok_h bool True / False True if every token in all units was recognised; used by the map viewer error-review style True
parse_error str Error text or "" Semicolon-separated unrecognised tokens; empty on success ""

Backward-compatible per-unit fields (n = 1 to 4)

Field Type Values Meaning Example
h_raw_n str Any string or "" Verbatim input string for unit n, exactly as in the soil map "th15/h5"
h_has_split_n bool True / False True if this unit contains a / split True
h_type_n str see below Dominant organic horizon type for unit n (pooled across all depth layers) "th"
h_depth_min_n float cm or NaN Shallowest horizon boundary in cm; NaN if no depth recorded 15.0
h_depth_max_n float cm or NaN Deepest horizon boundary in cm; equals h_depth_min for single values 15.0

h_type values:

Value Meaning
"th" Toorhuumus — raw/mor humus; strongly acidic, poorly decomposed
"peat" Turvas — peat, any decomposition degree (I–III)
"humus" Mineral humus horizon (mull)
"litter" Metsakõdu — forest litter (≤ 10 cm)
"none" No organic layer encoded (0)
"mixed" Multiple types in this unit; dominant type by priority th > peat > humus > litter
"unknown" Unrecognised token — see parse_error
"" Slot not populated (fewer than n units in this row)

Primary humus — phu (n = 1 to 4)

Right side of / (lower depth layer), or whole expression if no /.

Field Type Values Meaning Example
h_phu_type_n str "th", "peat", "humus", "none", "unknown", "" Primary humus type "humus"
h_phu_min_n float cm or NaN Minimum depth for primary humus 5.0
h_phu_max_n float cm or NaN Maximum depth for primary humus 10.0

Secondary humus — lhu (n = 1 to 4)

Left side of / (upper depth layer), if a second humus type is present.

Field Type Values Meaning Example
h_lhu_type_n str same as phu Secondary humus type; "" when absent "th"
h_lhu_min_n float cm or NaN Minimum depth for secondary humus 15.0
h_lhu_max_n float cm or NaN Maximum depth for secondary humus 15.0

Litter layers O1–O3 (n = 1 to 4)

From left side of / in bottom-to-top order: O1 = bottom litter layer (most decomposed), O3 = top litter layer (freshest).

Field Type Values Meaning Example
h_o1_deg_n str "₁", "₂", "₃", "" Decomposition degree for O1 (bottom) "₂"
h_o1_min_n float cm or NaN Minimum depth for O1 1.0
h_o1_max_n float cm or NaN Maximum depth for O1 1.0
h_o2_deg_n str same as O1 Decomposition degree for O2 (middle) "₁"
h_o2_min_n float cm or NaN Minimum depth for O2 2.0
h_o2_max_n float cm or NaN Maximum depth for O2 2.0
h_o3_deg_n str same as O1 Decomposition degree for O3 (top) "₃"
h_o3_min_n float cm or NaN Minimum depth for O3 4.0
h_o3_max_n float cm or NaN Maximum depth for O3 4.0

Per-unit flags (n = 1 to 4)

Field Type Values Meaning
h_has_depth_split_n bool True / False True when / is present — depth-layer split
h_is_agri_forest_n bool True / False True when / (space-slash-space) legacy agri-vs-forest pattern detected
h_depth_total_n float cm or NaN Sum of phu + lhu depth midpoints; > 40 cm flagged for manual review

Structured detail

Field Type Meaning
huumus_json dict Full structured parse: per-unit, per-layer detail with decomposition degree, depth bounds, depth-layer split, agri-forest flag, and structured phu/lhu/O data. Stored in DB but excluded from map viewer popup.

Notes on joining the three output tables

All three parsers operate on the same set of polygon rows. The outputs are joined by the polygon's unique identifier (unique_id). A full per-polygon record combines columns from all three parsers:

SELECT s.unique_id,
       s.siffer_1, s.siffer_2, s.n_siffers,
       l.EST_TXT1, l.CLAY1, l.Z1, l.nlayers,
       h.h_type_1, h.h_depth_max_1
FROM   siffer_parsed  s
JOIN   loimis_parsed  l USING (unique_id)
JOIN   huumus_parsed  h USING (unique_id);

The materialised view mv_mullakaart_parsed in PostgreSQL already combines all three outputs and is what the map viewer queries.