Layers and Overlays
Compose images, wiggles, scalar curves, points and annotations using public core providers.
Navigate linked panes
Pan either pane or zoom with the wheel. Both share a Y window; their X windows stay independent.
const unlink = linkAxes([cameraA, cameraB], 'y')
// Call unlink() when the linked group is removed.Choose a data layer, then add axes and annotations to the same pane with pane.add(item).
Match the Layer to the Data
| Data or annotation | Layer | Visual role |
|---|---|---|
| Seismic / array grid | ImageTileLayer |
Color maps each cell’s value |
| Seismic traces | WiggleLayer |
Waveform and variable-area fill |
| Scalar well curve | CurveLayer |
Line with gap handling and min/max envelopes |
| Coordinate arrays | PointsLayer |
Markers with color/size values |
| Formation tops | MarkerLayer |
Labeled horizontal markers |
| Ticks / grid / titles | AxesOverlay |
Coordinate reference |
| Value scale | ColorbarOverlay |
Color-to-value key |
| Pointer position | CrosshairOverlay |
Hover reference |
Draw an In-Memory Image
import { arrayImage, ImageTileLayer, type Pane } from '@bs/outkrop-core'
export function addImage(pane: Pane, values: Float32Array, traces: number, samples: number) {
const image = arrayImage(values, traces, samples)
return pane.add(new ImageTileLayer({ image, colormap: 'Seismic', clip: [-1, 1] }))
}
The array is trace-major: one trace’s samples are consecutive. Set the camera to its trace/sample coordinates and choose a clip range appropriate to your amplitudes. For files, use providers instead of allocating a whole-file array.
Add a Well Curve
import { CurveLayer, wellCurves, type DataSource, type Pane, type WellInfo } from '@bs/outkrop-core'
export function addCurve(
pane: Pane,
source: DataSource,
well: WellInfo,
frameId: string,
mnemonic: string,
) {
return pane.add(
new CurveLayer({
source: wellCurves(source, well, frameId),
curve: mnemonic,
color: '#3e8d70',
width: 1.5,
}),
)
}
Use a frame ID and mnemonic from WellInfo. Align the camera with the frame index and value range. Missing values create gaps; envelopes retain narrow peaks when zoomed out.
Compose and Update
flowchart TD
accTitle: Compose a plot with data and annotations
accDescr: Choose a data provider, add a matching layer, then add axes and markers to the pane.
Data[Data provider] --> Layer[Image, curve or points]
Layer --> Pane[Pane and camera]
Axes[Axes and markers] --> Pane
- Use a curve’s
scalefor independent ranges within a track;fill,crossoveranddashcontrol its presentation. - Image and wiggle layers can share a tiled source. Keep arrays/providers stable while in use.
COLORMAP_NAMESandcolorAtexpose image colors; crossplots use Plotly-style color scales.- Remove a layer with
pane.remove(layer.id), or dispose the engine. Request a frame after direct drawing-state changes.
Local LAS supplies scalar curves, not array-channel tiles. Keep units visible in track headers or axes.