Note
Go to the end to download the full example code.
3-D fence diagrams#
The fence diagram is the natural first step into 3-D: each survey line is drawn as a vertical cross-section (“fence panel”) hanging at its true map position, so you see all five WILLY_DATA lines together in one rotatable scene. It is the most faithful 3-D view of raw survey data — no volumetric interpolation between lines, just the real per-line pseudo-sections placed in space.
Drag to orbit the scene, scroll to zoom, and hover any panel for its resistivity and depth.
Load the survey#
import os
from pycsamt.map import MapView
DATA = os.path.join(
os.environ.get("PYCSAMT_DOCS_REPO_ROOT", "."), "data", "AMT", "WILLY_DATA"
)
mv = MapView.from_folder(DATA, recursive=True)
print(f"{mv.n_stations} stations across {len(mv.lines)} lines")
53 stations across 2 lines
The fence#
MapView.map3d with mode="fence"
builds one panel per line. Colour is apparent resistivity; the vertical
axis is pseudo-depth from the period-to-depth transform.
fig = mv.map3d(mode="fence")
fig.update_layout(height=640, scene_aspectmode="cube")
fig
Add the stations#
show_stations=True drops a marker at every station on top of the
panels, tying the 3-D fence back to the plan-view survey geometry.
fig = mv.map3d(mode="fence", show_stations=True, station_size=3)
fig.update_layout(height=640, scene_aspectmode="cube")
fig
Phase fence#
The same fence keyed on phase rather than resistivity — useful for
cross-checking conductor positions between the two quantities in 3-D.
fig = mv.map3d(mode="fence", quantity="phase")
fig.update_layout(height=640, scene_aspectmode="cube")
fig
Constrain the colour range#
Passing an explicit rho_range fixes the colour scale across a survey,
so several fences (or several surveys) are directly comparable rather than
each auto-scaling to its own extremes.
fig = mv.map3d(mode="fence", rho_range=(1.0, 1000.0))
fig.update_layout(height=640, scene_aspectmode="cube")
fig
Next. A fence shows the measured lines only. The volume, block, and depth views interpolate between the lines to fill a continuous 3-D resistivity body.
Total running time of the script: (0 minutes 0.507 seconds)