Sample and Specimen Model
GeoDin's data model for samples, specimens, and the parent-child relationships between them
The Sample Data section holds every sample associated with a location. Each sample carries a reference, a depth interval, and the sampling metadata that links it back to the field operation; specimens (subsamples) reference their parent sample for hierarchical tracking.
For the related concepts, see also:
Borehole and Location Model — the location these samples belong to.
Layer and Stratigraphy — ground descriptions at the depths these samples cover.
Sample fields
Each sample has:
Sample reference — sample name, often just a number; user-defined and advised to be unique within a location.
Recovery from / to depth and penetration from / to depth.
Sample condition — disturbed / undisturbed / etc., from a dictionary.
Sampling method — grab sample, auger, etc., from a dictionary.
Sample type — bag, etc., from a dictionary.
Date, comments, blow count.
Sample condition for specific tests (e.g. undisturbed / remoulded on a UU triaxial test) is stored inside the test parameters, not directly on the sample record. The sample-record condition refers to the sample as collected; per-test conditions vary across the laboratory program.
Parent samples and specimens
Subsamples and specimens reference their parent sample via the Parent Sample Reference column. This produces a clean parent-child structure in the sample table: a single parent (e.g. a 4-inch liner tube) with multiple specimens taken from it for individual lab tests.
Onsite sample workflow
In GeoDin Onsite, the sample workflow on a drilling form is:
Select sampling method (e.g. liner tube, 4-inch).
Select condition (e.g. undisturbed).
Enter recovery percentage (e.g. 95 %+).
Select sample type.
Set depth reference.
Print a QR-coded label that can be stuck on the physical sample.
Onsite sample IDs
Onsite assigns each soil sample a unique ID with a fixed structure:
Prefix letter(s)
1–3 chars
Configurable
Timestamp
6 chars
Encodes the moment of sampling
Random
4 chars (default)
Shrinks if prefix grows so that prefix + random always totals 5 chars
The timestamp portion changes every second, so collisions only happen if more than ~20–100 samples are generated in the exact same second.
Last updated
Was this helpful?