pycsamt.iot.station#

Field-station configuration for IoT-enabled AMT/CSAMT acquisition.

A DeviceConfig describes an IoT node (its transport, channels, and role). A StationConfig describes the ground location that one or more nodes occupy: coordinates, profile/line membership, electrode geometry, and sensor orientation. Separating the two mirrors real field practice, where a recorder may be redeployed across several stations.

Functions

station_table(stations, *[, api])

Return one row per station describing its acquisition metadata.

Classes

StationConfig(station_id[, lat, lon, ...])

Geospatial and acquisition metadata for one field station.

class pycsamt.iot.station.StationConfig(station_id, lat=None, lon=None, elevation=None, profile=None, position_m=None, channels=<factory>, dipole_length_m=None, ex_azimuth_deg=None, ey_azimuth_deg=None, device_ids=<factory>, operator=None, notes='', metadata=<factory>)[source]#

Bases: PyCSAMTObject, MetadataMixin

Geospatial and acquisition metadata for one field station.

Parameters:
  • station_id (str) – Stable station identifier (e.g. "S01"). Used as the join key across telemetry, QC, and provenance records.

  • lat (float, optional) – Geographic coordinates in decimal degrees. Latitude is validated to [-90, 90]; longitude accepts both [-180, 180] and [0, 360] conventions.

  • lon (float, optional) – Geographic coordinates in decimal degrees. Latitude is validated to [-90, 90]; longitude accepts both [-180, 180] and [0, 360] conventions.

  • elevation (float, optional) – Ground elevation in metres.

  • profile (str, optional) – Survey line/profile label the station belongs to (e.g. "L1").

  • position_m (float, optional) – Chainage (distance along the profile) in metres. Enables ordering of stations into a 2D section.

  • channels (list of str, optional) – Acquisition channels recorded at the station (e.g. ["ex", "ey", "hx", "hy"]).

  • dipole_length_m (float, optional) – Electric dipole length in metres, used for E-field scaling and contact-resistance checks.

  • ex_azimuth_deg (float, optional) – Orientation of the Ex/Ey electric dipoles, degrees clockwise from geographic north.

  • ey_azimuth_deg (float, optional) – Orientation of the Ex/Ey electric dipoles, degrees clockwise from geographic north.

  • device_ids (list of str, optional) – Identifiers of the IoT nodes occupying this station.

  • operator (str, optional) – Field operator responsible for the occupation.

  • notes (str) – Free-form field notes.

  • metadata (dict) – Free-form structured metadata.

station_id: str#
lat: float | None = None#
lon: float | None = None#
elevation: float | None = None#
profile: str | None = None#
position_m: float | None = None#
channels: list[str]#
dipole_length_m: float | None = None#
ex_azimuth_deg: float | None = None#
ey_azimuth_deg: float | None = None#
device_ids: list[str]#
operator: str | None = None#
notes: str = ''#
metadata: dict[str, Any]#
validate()[source]#

Validate and normalise station fields.

Return type:

None

property has_location: bool[source]#

Return whether latitude and longitude are both known.

property coords: tuple[float, float, float] | None[source]#

Return (lat, lon, elevation) if a location is set.

property n_channels: int[source]#

Number of declared acquisition channels.

attach_device(device_id)[source]#

Associate an IoT node with this station (idempotent).

Parameters:

device_id (str)

Return type:

StationConfig

as_dict()[source]#

Return a serialisable station dictionary.

Return type:

dict[str, Any]

classmethod from_mapping(data)[source]#

Build a station config from a mapping, ignoring unknown keys.

Parameters:

data (Mapping[str, Any])

Return type:

StationConfig

pycsamt.iot.station.station_table(stations, *, api=None)[source]#

Return one row per station describing its acquisition metadata.

Parameters:
Return type:

Any