qgis-tem-loader

qgis plugin for loading TEM geophysical inversion XYZ files as 3D objects
git clone git://src.adamsgaard.dk/qgis-tem-loader # fast
git clone https://src.adamsgaard.dk/qgis-tem-loader.git # slow
Log | Files | Refs | README | LICENSE Back to index

commit af100bd9257b2d4316f1e553cdb3a0835b16a873
parent 9ef05d0deeffa67eae3205ba62f20c98f5b8d2a1
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date:   Wed,  8 Apr 2026 16:34:38 +0200

docs(readme): fix usage and install instructions

Diffstat:
AREADME.md | 63+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 63 insertions(+), 0 deletions(-)

diff --git a/README.md b/README.md @@ -0,0 +1,63 @@ +# TEM Loader + +A QGIS 3.40+ plugin for loading Time-Domain Electromagnetic (TEM) geophysical inversion XYZ files as styled 3D vector layers. + +## Overview + +TEM Loader parses XYZ inversion model files and loads them into QGIS as three layer types: + +- **Points** — surface terrain positions with survey line labels +- **DOI** — depth-of-investigation points at depth +- **Layers** — resistivity model layers as vertical 3D line segments + +Each file gets its own layer group. Layers are styled with pre-built QML styles and support the QGIS Elevation Profile tool for profile visualization. + +## Requirements + +- QGIS 3.40.0 or later (up to 4.1.0) +- Python 3 (bundled with QGIS) + +## Installation + +1. Download `tem_loader.zip` from the [releases page](https://gitlab.com/qgeomodel/qgis-tem-loader/-/releases) or build it yourself (see below). +2. In QGIS: **Plugins > Manage and Install Plugins > Install from ZIP**. +3. Select the zip file and click **Install Plugin**. + +## Usage + +1. Open a QGIS project and set the project CRS (falls back to EPSG:4326 if unset). +2. Go to **Plugins > TEM Loader > Load TEM XYZ files…**. +3. Select one or more `.xyz` inversion files. +4. Three CSV files (`.points.csv`, `.doi.csv`, `.layers.csv`) are written beside each source file, and the corresponding layers are added to the project. + +## XYZ File Format + +Input files are whitespace-delimited with optional `/`-prefixed comment header lines. The first non-comment line is the column header row. Required columns: + +| Column | Description | +|---|---| +| `X`, `Y`, `Z` | Easting, northing, elevation | +| `Line`, `StationNo` | Survey line and station identifiers | +| `DOI` | Depth of investigation (metres below surface) | +| `DataResidual` | Data residual | +| `NumLayers` | Number of valid resistivity layers | +| `Res_1` … `Res_N` | Layer resistivities (Ohm·m) | +| `Thick_1` … `Thick_N` | Layer thicknesses (m) | + +Legacy files with an extra leading index column are handled automatically. + +## Development + +```sh +make test # run the unittest suite +make package # build tem_loader.zip for installation +make clean # remove the zip +``` + +`core.py` (XYZ parsing and CSV writing) has no QGIS dependency and is fully unit-testable. `tem_loader.py` (layer loading) requires a running QGIS instance and is verified manually. + +## Repository + +- Source: <https://gitlab.com/qgeomodel/qgis-tem-loader> +- Issues: <https://gitlab.com/qgeomodel/qgis-tem-loader/issues> +- Author: Anders Damsgaard (<andam@geus.dk>)