Read measurements
This tutorial shows how to inspect measurements, verify metadata, and validate soil survey inputs before running analytics.
Physical background
Not applicable for pure data inspection. This tutorial focuses on data integrity and validation.
Function overview
read_measurements_byloads measurements and nested items.read_items_byfilters items by type, frequency, and distance.distance_profile_valueprovides a quick validation check for impedance data.soil_resistivity_curveexposes spacing and apparent resistivity points for surveys.
Inputs and outputs
| Function | Input | Output | Description |
|---|---|---|---|
read_measurements_by |
filters | list of measurements | Load measurements with items and location. |
read_items_by |
filters | list of items | Filter items by type or frequency. |
distance_profile_value |
measurement id, algorithm | dict | Quick impedance sanity check. |
soil_resistivity_curve |
measurement id, method | list of points | View spacing vs apparent resistivity. |
General workflow
Scenario A: staged fault test QA
- List measurements and identify the staged fault test.
- Filter impedance items by frequency.
- Verify distances and units.
- Run a distance-profile reduction to check the curve.
Scenario B: soil survey QA
- List soil survey measurements.
- Read soil resistivity items.
- Verify spacings and units.
- Build a spacing curve for review.
Python API examples
Scenario A: staged fault test QA
from groundmeas.db import connect_db, read_measurements_by, read_items_by
from groundmeas.analytics import distance_profile_value
connect_db("groundmeas.db")
meas, _ = read_measurements_by(method="staged_fault_test")
mid = meas[0]["id"]
items, _ = read_items_by(
measurement_id=mid,
measurement_type="earthing_impedance",
frequency_hz=50.0,
)
print([it["measurement_distance_m"] for it in items])
check = distance_profile_value(mid, algorithm="minimum_gradient")
print(check["result_value"], check["result_distance_m"])
Scenario B: soil survey QA
from groundmeas.db import connect_db, read_measurements_by
from groundmeas.analytics import soil_resistivity_curve
connect_db("groundmeas.db")
meas, _ = read_measurements_by(method="wenner")
soil_id = meas[0]["id"]
curve = soil_resistivity_curve(soil_id, method="wenner")
print(curve)
CLI examples
Scenario A: staged fault test QA
gm-cli list-measurements
gm-cli list-items MEAS_ID --type earthing_impedance
gm-cli distance-profile MEAS_ID --type earthing_impedance --algorithm minimum_gradient
Scenario B: soil survey QA
gm-cli list-measurements
gm-cli list-items SOIL_MEAS_ID --type soil_resistivity
gm-cli soil-profile SOIL_MEAS_ID --method wenner
Additional notes
- Missing
measurement_distance_mcauses distance-based analytics to skip items. - If units are inconsistent,
value_kind="auto"can misclassify resistance vs resistivity. - For Schlumberger, confirm whether spacing is AB or AB/2 before interpreting results.
- For QA, compare multiple reduction algorithms (maximum, 62_percent, minimum_gradient, minimum_stddev, inverse); see Distance profile reduction.