API / geotoolkit / seismic / pipeline / SeismicPipeline / SeismicPipeline
pipeline.SeismicPipeline.SeismicPipeline
Description
This class is an implementation of the seismic data processing pipeline that handles seismic traces from the data source to the seismic image generation stage.
The first operation performed by the SeismicPipeline is to read the seismic traces. The users can apply one or more filters, perform gain control, scale data, interpolate the trace samples based on the display scale and finally generate the seismic image (Rasterization process) based on the selected plot type. Moreover, the user may want to create custom operations (filters) and apply them as well. The SeismicPipeline provides a flexible structure for users to insert their own trace processing. The SeismicPipeline is organized as a succession of trace processors working on individual trace data (samples). The output data from one trace process serves as the input data for the next process in pipeline. The base class for the trace processors is "geotoolkit.seismic.pipeline.processor.SeismicTraceProcessor.html" - SeismicTraceProcessor. The default trace processes are data normalization, interpolation and rasterization process, which can be configured using the methods provided in this class.
The first stage of a SeismicPipeline always needs to be a Seismic Reader (geotoolkit.seismic.data.SeismicReader). The last 3 stages of the pipelines are Data Normalization, Data Interpolation and Rasterization in that order. Any additional processor (such as filtering, AGC or any custom processor) are inserted between the Seismic Reader and Data Normalization and applied in the order which they are inserted.
Data Normalization: The data normalization stage is used to normalize the seismic amplitudes before scaling and rasterization. The normalization process applies one constant scalar value across the entire trace. The normalization factor can be the same for all the traces in a dataset or can be calculated on the fly for each trace (trace normalization options). The normalization factor can be calculated based on the dataset min and max values, the average or the RMS value. The user can also provide custom limits to make comparison between datasets easier.
Data Interpolation: The data interpolation stage adjusts the number of samples in the trace to match the height of the display (based on vertical scale settings). This may require interpolation (adding samples) or decimation (removing samples). See methods setSamplesInterpolationType() and setSamplesInterpolationEdge() to control how samples are interpolated.
Rasterization: The rasterization stage generates the seismic image. Usually seismic data is represented as a density plot (based on a colormap), as wiggles (monochrome or colored) or a combination of both. Use method setPlotType() to control the display type and method setColorMap() to specify a colormap if required. These plot types include both density displays, variable area wiggle fill displays and combinations of both. A list of supported plot types is provided below:
- Wiggle - Wiggle display
- NegativeFill - Negative monochrome variable area fill
- PositiveFill - Positive monochrome variable area fill
- NegativeColorFill - Negative color variable area fill. Color varies inside the lobe based on the sample amplitude at each sample location.
- PositiveColorFill - Positive color variable area fil. Color varies inside the lobe based on the sample amplitude at each sample location.
- SimpleDensity - Density color fill
- InterpolatedDensity - Interpolated density color fill (between traces).
The general logic of the pipeline can be presented as: When a seismic image needs to render specific portion of seismic data (range of traces, range of samples) it requests pipeline to provide necessary data trace by trace. Pipeline sends request to the "geotoolkit.seismic.data.SeismicReader.html" - geotoolkit.seismic.data.SeismicReader that provides seismic data and forwards loaded traces to each seismic traces processor. The data are modified by every process in pipeline and then forwarded to rasterizer that produces an image the users see on the output device like screen.
Throws
if reader is null or statistics is null
↳
SeismicPipeline
Constructors
Methods
Css Properties
| Name | Type | Description |
|---|---|---|
clippingmode | ClippingMode | Clipping mode |
colors | ColorMapOptions | Colors |
colors-alpha | number | Alpha value |
colors-colormap | string | Color map, predefined color map name, color map options or color map instance |
colors-colormap | ColorMap | Color map, predefined color map name, color map options or color map instance |
colors-colormap-max | number | |
colors-colormap-min | number | |
colors-colormap-name | string | Color map name |
colors-colormap-negativefillstyle | string | Positive fill style |
colors-colormap-negativefillstyle | FillStyle | Positive fill style |
colors-colormap-negativefillstyle-color | string | Color in CSS form |
colors-colormap-negativefillstyle-evenoddmode | boolean | Even-odd fill mode |
colors-colormap-negativefillstyle-fillpattern | Pattern | Pattern |
colors-colormap-negativefillstyle-fillpattern-containername | string | An optional container name, which creates an image pattern. This parameter is used for serialization if you want to save are reference to pattern instead of the pattern itself |
colors-colormap-negativefillstyle-fillpattern-patternname | string | Name of this pattern for indexing |
colors-colormap-negativefillstyle-fillpattern-scalable | boolean | Flag that sets scalability of the pattern coordinates, or relative to the shape it is filling (It is not supported) |
colors-colormap-negativefillstyle-foreground | string | Foreground color |
colors-colormap-negativefillstyle-pattern | Pattern | Pattern |
colors-colormap-positivefillstyle | string | Positive fill style |
colors-colormap-positivefillstyle | FillStyle | Positive fill style |
colors-colormap-scale | KnownScales | |
colors-colormap-size | number | Color map size |
colors-colormap-tracelinestyle | string | Trace line style |
colors-colormap-tracelinestyle | LineStyle | Trace line style |
colors-colormap-tracelinestyle-color | string | Color in CSS form |
colors-colormap-tracelinestyle-fill | string | Optional fill style to be used to fill lines generated with this style |
colors-colormap-tracelinestyle-fill | FillStyle | Optional fill style to be used to fill lines generated with this style |
colors-colormap-tracelinestyle-linecap | CapStyle | The line cap style |
colors-colormap-tracelinestyle-linedashoffset | number | Line dash offset of dashed line |
colors-colormap-tracelinestyle-linejoin | JoinStyle | The line join style |
colors-colormap-tracelinestyle-pixelsnapmode | boolean | Pixel Snap Mode, default( |
colors-colormap-tracelinestyle-scalable | boolean | True if width should depend on transformation |
colors-colormap-tracelinestyle-unit | string | Optional unit for the width |
colors-colormap-tracelinestyle-width | number | string | The line thickness |
colors-opacity | number | Opacity value |
colors-reversed | boolean | Reversed color map |
maximumtracesperpixel | number | Define maximum traces per pixel, which can be displayed in the image |
name | string | Pipeline name |
normalization | NormalizationOptions | Normalization options |
normalization-bias | number | The bias value defines the start of the VA fill Bias can be null (default - means that fill starts from trace location), in swing model space from -1 to 1, or in normalization limits model space, see biastype option |
normalization-biastype | BiasType | Bias type, default is BiasType.Relative |
normalization-limits | Range | Normalization limits (min,max), which is used for NormalizationType.Limits only |
normalization-limits-high | number | Upper range boundary |
normalization-limits-low | number | Lower range boundary |
normalization-limits-max | number | |
normalization-limits-min | number | |
normalization-scale | number | Scale factor |
normalization-swing | number | The location in trace spacing units where the normalized value of data samples are mapped. This location can be modified by specifying a normalization scale factor |
normalization-type | NormalizationType | Enum of normalization types |
plot | PlotOptions | Plot options |
plot-clippingfactor | number | Clipping factor for traces |
plot-decimationspacing | number | Decimation spacing is the minimum spacing between seismic traces on a seismic image. It is a measured in device units (pixels). Decimation spacing is an important factor when interpreting seismic images, as it affects the resolution of the image. The greater the decimation spacing, the lower the resolution of the image. A higher resolution image will allow for more detail in the interpretation, while a lower resolution image will be less detailed |
plot-densityclippingfactor | number | Clipping factor for density |
plot-densitydecimation | boolean | Decimation for traces in density mode |
plot-sampledecimation | DecimationType | Define samples decimation type |
plot-type | PlotTypeOptions | Plot type |
plot-type-interpolateddensity | boolean | Interpolated density |
plot-type-negativecolorfill | boolean | Negative color fill |
plot-type-negativefill | boolean | Negative fill |
plot-type-positivecolorfill | boolean | Positive color fill |
plot-type-positivefill | boolean | Positive fill |
plot-type-reversed | boolean | Reversed amplitude direction |
plot-type-simpledensity | boolean | Simple density |
plot-type-wiggle | boolean | Wiggle |
plot-wigglesantialiasing | boolean | Wiggles antialiasing flag |
rasterizationlimitstype | RasterizationLimitsType | Rasterization limits type |
renderingside | RenderingSide | Rendering side |
statistics | Statistics | Statistics information |
statistics-average | number | Average |
statistics-max | number | Maximum |
statistics-min | number | Minimum |
statistics-rms | number | Rms |
traceoffset | number | Original trace offset |
version | string | Version |
Constructors
• new SeismicPipeline(options?)
Create a pipeline
| Name | Type | Description |
|---|---|---|
Optional options | Options | object with all props or pipeline name |
EventDispatcher.constructor
Methods
▸ addTraceProcessor(processor): SeismicPipeline
Adds trace processors to the seismic pipeline. The added trace processors should be made active to apply it to the data before rendering to a seismic image.
| Name | Type | Description |
|---|---|---|
processor | SeismicTraceProcessor | processor to apply for seismic trace samples |
this
▸ await(callback): void
Adds a callback method to the trace data fetching process. The callback method is triggered when the seismic pipeline is ready to process the query.
| Name | Type | Description |
|---|---|---|
callback | () => void | Whenever pipeline is ready to process your query, callback function is triggered. |
void
▸ clear(): SeismicPipeline
This method clears the pipeline and processors memory allocations
▸ clearTraceProcessors(): SeismicPipeline
Remove all trace processors
this
▸ clone(): SeismicPipeline
Creates a clone of the seismic pipeline. All inheritors should implement copy constructor or provide custom implementation for this method.
clone
▸ Protected copyConstructor(src): SeismicPipeline
Construct a new seismic pipeline from the specified seismic pipeline.
| Name | Type | Description |
|---|---|---|
src | SeismicPipeline | an instance of the seismic pipeline to make a copy. |
▸ dispose(): void
Disposes this pipeline. Once disposed, the pipeline should not be used anymore.
Please clear all listeners and invalidate handlers to avoid memory leaks.
void
▸ exportToImage(seismicModelBounds, canvas, targetBounds?, offsetX?, offsetY?, fetchCallback?, validationCallback?, targetDeviceBounds?): void
Render seismic model in to the canvas
| Name | Type | Description |
|---|---|---|
seismicModelBounds | Rect | seismic source model bounds |
canvas | HTMLCanvasElement | target image |
Optional targetBounds | Rect | target bounds |
Optional offsetX | number | x position on the canvas |
Optional offsetY | number | y position on the canvas |
Optional fetchCallback | (fetchResult: FetchResult) => void | Callback function which is executed when data (query result) has arrived for the selection. |
Optional validationCallback | ValidationCallback | Callback function which is executed before data requested. |
Optional targetDeviceBounds | Rect | target device bounds |
void
▸ getBias(targetBiasType?): number
Gets the bias value, wich defines the start of the VA fill as a fraction of the swing spacing.
| Name | Type |
|---|---|
Optional targetBiasType | BiasType |
number
▸ getBiasType(): BiasType
Gets the bias value, wich defines the start of the VA fill as a fraction of the swing spacing.
▸ getClassName(): string
string
▸ getClippingMode(): ClippingMode
Get clipping mode
clipping mode
▸ getColorMap(): ColorMap
Returns the color map used to render the seismic image.
▸ getDataLimits(): Rect
Return data limits of traces and samples
▸ getModelLimits(): Rect
Returns the current model limits
▸ getModelToSamplesTransformation(): Transformation
Returns model to sample transformation
transformation
▸ getName(): string
Returns the name of the seismic pipeline.
string
▸ getNormalization(): NormalizationOptionsOut
Return normalization
▸ getNumberOfSamples(): number
Returns the number of samples available from the seismic metadata.
number
▸ getNumberOfTraces(): number
Returns the number of traces available from the seismic metadata.
number
▸ getOptions(): Omit<OptionsOut, "normalization"> & { normalization: NormalizationOptionsOut }
Returns current pipeline settings
Omit<OptionsOut, "normalization"> & { normalization: NormalizationOptionsOut }
▸ getPlotType(): Required<PlotTypeOptions>
Returns the rasterization plot type
Required<PlotTypeOptions>
object containing plot properties
▸ getProperties(): OptionsOut
Gets the pipeline properties
pipeline options
▸ getRasterizationLimitsType(): RasterizationLimitsType
Gets rasterization limits type
rasterization limits type
▸ getReader(): SeismicReader
Returns the seismic reader. The seismic reader is responsible for reading seismic data from various sources and providing it to the seismic pipeline.
▸ getRenderingSide(): RenderingSide
Gets rendering side
rendering side
▸ getSamplesInterpolationEdge(): InterpolationEdge
Returns interpolation edge
▸ getSamplesInterpolationType(): InterpolationType
Returns interpolation type defined under InterpolationType
▸ getScaleFactor(): number
Gets normalization scale
number
▸ getStatistics(): Statistics
Returns a object that has seismic data statistics, namely 'average', 'min', 'max', 'rms'
object
▸ getSwing(): number
Gets the location in trace spacing units where the normalized value of data samples are mapped.
number
swing
▸ getTimeStamp(): number
Gets time stamp
number
timeStamp
▸ getTraceDecimation(): number
Return trace decimation factor if no decimation it returns Number.NaN
number
▸ getTraceMapping(): TraceMapping
returns trace mapping
▸ getTraceOffset(): number
Returns trace offset
number
trace offset
▸ getTraceProcessor(index): SeismicTraceProcessor
Returns the existing trace processor by index.
| Name | Type | Description |
|---|---|---|
index | string | number | Index of the trace process in the collection or its name |
▸ getTraceProcessorsCount(): number
Returns a count of SeismicTraceProcessor[s] applied to the seismic pipeline
number
amount of processes
▸ getTraceStatus(traceId): Status
Returns the trace status by id
| Name | Type | Description |
|---|---|---|
traceId | number | trace id |
▸ getTracesInterpolationEdge(): InterpolationEdge
Returns interpolation edge
▸ getTracesInterpolationType(): InterpolationType
Returns interpolation type defined under InterpolationType
▸ getTransformation(): Transformation
Returns seismic transformation which determines how many traces and samples per unit is displayed on the screen.
▸ hasEventListener(type, callback?): boolean
Check if a list of event listeners for this type contains this listener
| Name | Type | Description |
|---|---|---|
type | string | type of event or property |
Optional callback | Function | to be called, if null, check if any callback is registered |
boolean
EventDispatcher.hasEventListener
▸ invalidate(params?): SeismicPipeline
Invalidate node
| Name | Type | Description |
|---|---|---|
Optional params | InvalidationType | additional invalidate parameters |
▸ isDisposed(): boolean
Returns whether this object has been disposed
boolean
▸ isFetching(): boolean
Returns the current state of trace data fetching process. This method is useful to check if a pipeline is still receiving traces from the data source
boolean
▸ isSilent(): boolean
Return true if the event dispatcher doesn't notify any events
boolean
▸ notify<E>(type, source, args?): SeismicPipeline
Notify listeners
| Name | Type |
|---|---|
E | extends string |
| Name | Type | Description |
|---|---|---|
type | E | event types |
source | SeismicPipeline | of the event |
Optional args | EventMap[E] | arguments of the event |
this
▸ off<E>(type?, callback?): SeismicPipeline
Detach listener on event. Calling .off() with no arguments removes all attached listeners. Calling .off(type) with no callback removes all attached listeners for specific type.
| Name | Type |
|---|---|
E | extends string |
| Name | Type | Description |
|---|---|---|
Optional type | E | type of the event |
Optional callback | (eventType: E, sender: SeismicPipeline, args: EventMap[E]) => void | function to be called |
this
▸ on<E>(type, callback): SeismicPipeline
Attach listener on event that will be called whenever the specified event is delivered to the target
If the callback function is already in the list of event listeners for this target, the function is not added a second time.
If a particular anonymous function is in the list of event listeners registered for a certain target, and then later in the code, an identical anonymous function is given in an "on" call, the second function will also be added to the list of event listeners for that target.
| Name | Type |
|---|---|
E | extends string |
| Name | Type | Description |
|---|---|---|
type | E | type of event or property |
callback | (eventType: E, sender: SeismicPipeline, args: EventMap[E]) => void | to be called |
this
▸ refresh(): SeismicPipeline
This method invalidates the pipeline and any existing trace processors.
▸ removeTraceProcessor(processor): SeismicPipeline
Removes an existing trace processor from the seismic pipeline.
| Name | Type | Description |
|---|---|---|
processor | SeismicTraceProcessor | The Seismic Data Trace Processor |
this
▸ resetModelLimits(): SeismicPipeline
Reset model limits of the seismic pipeline to null.
this
▸ select(condition, fetchCallback?, validationCallback?): void
Executes a query with specified condition. This query result will be applied to all the trace processors active in the seismic pipeline.
Throws
if condition is not specified
| Name | Type | Description |
|---|---|---|
condition | SelectCondition | object Condition to select range of traces based on parameters namely, from and to. |
Optional fetchCallback | (fetchResult: FetchResult) => void | Callback function which is executed when data (query result) has arrived for the selection. |
Optional validationCallback | ValidationCallback | Callback function which is executed before data requested. |
void
▸ setClippingMode(clippingMode): SeismicPipeline
Set clipping mode
| Name | Type | Description |
|---|---|---|
clippingMode | ClippingMode | clipping mode |
this
▸ setColorMap(colorMap, updateColorMapLimits?): SeismicPipeline
Sets color map for rendering the seismic image. if pipeline has option reversed for colors then colormap will be reversed
| Name | Type | Description |
|---|---|---|
colorMap | ColorMap | sets the color map |
Optional updateColorMapLimits | boolean | true to update colormap limits from previous colormap or normalization limits |
▸ setNormalization(normalization, updateColorMapLimits?): SeismicPipeline
Sets data normalization parameters on the seismic pipeline.
Example
import {NormalizationType} from '@int/geotoolkit/seismic/pipeline/NormalizationType';
pipeline.setNormalization({
'type' : NormalizationType.Limits,
'limits' : {
'min': -1,
'max': 1
},
'scale' : 0.4
})| Name | Type | Description |
|---|---|---|
normalization | NormalizationOptions | normalization options |
Optional updateColorMapLimits | boolean | true for update colormap limits from normalization |
this
▸ setOptions(options?): SeismicPipeline
Set pipeline options
| Name | Type | Description |
|---|---|---|
Optional options | Options | pipeline options |
▸ setPlotType(plotType, invalidate?): SeismicPipeline
Sets the rasterization plot type
| Name | Type | Description |
|---|---|---|
plotType | PlotTypeOptions | object that contains combination of flags that specify how to render seismic |
Optional invalidate | boolean | flag set to notify the listener if pipeline changes |
▸ setProperties(props?): SeismicPipeline
Sets the pipeline properties
| Name | Type | Description |
|---|---|---|
Optional props | Options | object with all props |
this
▸ setRasterizationLimitsType(rasterizationLimitsType): SeismicPipeline
Sets rasterization limits type
| Name | Type | Description |
|---|---|---|
rasterizationLimitsType | RasterizationLimitsType | rasterization limits type |
this
▸ setReader(reader?): SeismicPipeline
Sets reader
| Name | Type | Description |
|---|---|---|
Optional reader | SeismicReader | reader |
this
▸ setRenderingSide(renderingSide): SeismicPipeline
Sets rendering side
| Name | Type | Description |
|---|---|---|
renderingSide | RenderingSide | rendering side |
this
▸ setSamplesInterpolationEdge(interpolationEdge): boolean
Sets the interpolation edge.
| Name | Type | Description |
|---|---|---|
interpolationEdge | InterpolationEdge | Specifies how interpolation handles edge (begin and end elements) of data |
boolean
▸ setSamplesInterpolationType(interpolationType): boolean
Sets interpolation type.
| Name | Type | Description |
|---|---|---|
interpolationType | InterpolationType | Enum of seismic pipeline interpolation types |
boolean
▸ setSilent(bool): SeismicPipeline
Set silent mode
| Name | Type | Description |
|---|---|---|
bool | boolean | flag to enable silent mode |
this
▸ setStatistics(statistics): SeismicPipeline
Sets a object that has seismic data statistics, namely 'average', 'min', 'max', 'rms'
Throws
if statistics is null
| Name | Type | Description |
|---|---|---|
statistics | Statistics | object |
this
▸ setTraceDecimation(tracesPerPixel): SeismicPipeline
Sets trace decimation factor
| Name | Type | Description |
|---|---|---|
tracesPerPixel | number | traces per pixel |
▸ setTraceMapping(mapping): SeismicPipeline
Sets trace mapping. If this mapping is set the trace decimation is off.
| Name | Type | Description |
|---|---|---|
mapping | TraceMapping | a new trace mapping |
this
▸ setTraceOffset(offset): SeismicPipeline
Set trace offset
| Name | Type | Description |
|---|---|---|
offset | number | trace offset |
this
▸ setTraceStatus(traceId, status): SeismicPipeline
Sets the trace status by id
| Name | Type | Description |
|---|---|---|
traceId | number | trace id |
status | Status | trace status |
this
▸ setTracesInterpolationEdge(interpolationEdge): boolean
Sets the interpolation edge.
| Name | Type | Description |
|---|---|---|
interpolationEdge | InterpolationEdge | Specifies how interpolation handles edge (begin and end elements) of data |
boolean
▸ setTracesInterpolationType(interpolationType): boolean
Sets interpolation type.
| Name | Type | Description |
|---|---|---|
interpolationType | InterpolationType | Enum of seismic pipeline interpolation types |
boolean
▸ updateTimeStamp(silent?, invalidationType?): SeismicPipeline
Update time stamp to indicate that pipeline has been changed.
| Name | Type | Description |
|---|---|---|
Optional silent | boolean | silent mode. If this parameter equals to true then pipeline doesn't send invalidate event |
Optional invalidationType | InvalidationType | describe a reason of pipeline invalidation |
this
▸ Static getClassName(): string
string