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_1…siffer_4are populated sequentially from left. Unused slots are empty strings, neverNULL.Column
parse_ok_s— together withparse_ok_landparse_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 1–4).
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"haveNaNfor clay, silt, and sand. Always checkLXTYPEorROCKbefore summing fractions.Unused layer slots:
Z2–Z4andEST_TXT2–EST_TXT4etc. are0/""(notNaN) whennlayers < n. Checknlayersfirst.
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.