@webviz/subsurface-viewer
Version:
3D visualization component for subsurface reservoir data
124 lines (123 loc) • 5.33 kB
TypeScript
import type { Color, Layer, LayersList, PickingInfo, UpdateParameters } from "@deck.gl/core";
import { CompositeLayer } from "@deck.gl/core";
import type { BinaryFeatureCollection } from "@loaders.gl/schema";
import type { Feature } from "geojson";
import type { ReportBoundingBoxAction, ExtendedLayerProps } from "../utils/layerTools";
import type { ColormapFunctionType } from "../utils/colormapTools";
import type { ContinuousLegendDataType, DiscreteLegendDataType } from "../../components/ColorLegend";
import type { WellLabelLayerProps } from "./layers/wellLabelLayer";
import { WellLabelLayer } from "./layers/wellLabelLayer";
import type { WellFeatureCollection, WellsPickInfo, WellFeature, WellHeadStyleAccessor, LineStyleAccessor, SizeAccessor, LogCurveDataType } from "./types";
export declare enum SubLayerId {
COLORS = "colors",
SIMPLE = "simple",
OUTLINE = "outline",
HIGHLIGHT = "highlight",
HIGHLIGHT_2 = "highlight2",
LOG_CURVE = "log_curve",
SELECTION = "selection",
LABELS = "labels"
}
export interface WellsLayerProps extends ExtendedLayerProps {
/**
* Well data to render; described as a single GeoJSON feature collection, which each individual well as a distinct feature.
*
* Accepted data formats:
* * A javascript object.
* * A binary/flat GeoJSON object
* * A url string pointing to external GeoJSON data.
* * A promise returning GeoJSON data.
*/
data: string | WellFeatureCollection | BinaryFeatureCollection | Promise<WellFeatureCollection | BinaryFeatureCollection>;
pointRadiusScale: number;
lineWidthScale: number;
outline: boolean;
selectedWell: string;
logData: string | LogCurveDataType[];
logName: string;
logColor: string;
logrunName: string;
logRadius: number;
logCurves: boolean;
/** Control to refine the well path by super sampling it using a spline interpolation.
* The well path between each pair of original vertices is split into sub-segments along the spline
* interpolation.
* The number of new sub-segments between each pair of original vertices is specified by refine
* and defaults to 5 if refine is true.
*/
refine: boolean | number;
wellHeadStyle: WellHeadStyleAccessor;
colorMappingFunction: ColormapFunctionType;
lineStyle: LineStyleAccessor;
/**
* @deprecated use wellLabel instead
*/
wellNameVisible?: boolean;
/**
* @deprecated use wellLabel instead
* It true place name at top, if false at bottom.
* If given as a number between 0 and 100, will place name at this percentage of trajectory from top.
*/
wellNameAtTop?: boolean | number;
/**
* @deprecated use wellLabel instead
*/
wellNameSize?: number;
/**
* @deprecated use wellLabel instead
*/
wellNameColor?: Color;
/**
* If true will prevent well name cluttering by not displaying overlapping names.
* default false.
* @deprecated use wellLabel instead
*/
hideOverlappingWellNames?: boolean;
isLog: boolean;
depthTest: boolean;
/** If true means that input z values are interpreted as depths.
* For example depth of z = 1000 corresponds to -1000 on the z axis. Default true.
*/
ZIncreasingDownwards: boolean;
/** If true means that a simplified representation of the wells will be drawn.
* Useful for example during panning and rotation to gain speed.
*/
simplifiedRendering: boolean;
/** Sectional projection of data */
section?: boolean;
reportBoundingBox?: React.Dispatch<ReportBoundingBoxAction>;
wellLabel?: Partial<WellLabelLayerProps>;
}
export declare function getSize(type: string, accessor: SizeAccessor, offset?: number): number | ((object: Feature) => number);
export default class WellsLayer extends CompositeLayer<WellsLayerProps> {
state: {
data: WellFeatureCollection | undefined;
well: string;
selectedMultiWells: string[];
selection: [number, number];
};
private recomputeDataState;
shouldUpdateState({ changeFlags }: UpdateParameters<this>): boolean;
updateState({ props, oldProps }: UpdateParameters<WellsLayer>): void;
onClick(info: WellsPickInfo): boolean;
setSelection(well: string | undefined, _selection?: [number | undefined, number | undefined]): void;
setMultiSelection(wells: string[] | undefined): void;
getWellDataState(): WellFeatureCollection | undefined;
getLegendData(value: LogCurveDataType[]): ContinuousLegendDataType | DiscreteLegendDataType | null;
setLegend(value: LogCurveDataType[]): void;
getLogLayer(): Layer;
getSelectionLayer(): Layer;
getLogCurveData(): LogCurveDataType[] | undefined;
setupLegend(): void;
protected getWellLabelPosition(): number | ((d: Feature) => number);
protected createWellLabelLayer(data: WellFeature[]): WellLabelLayer | null;
renderLayers(): LayersList;
getPickingInfo({ info }: {
info: PickingInfo;
}): WellsPickInfo;
}
export declare function getLogValues(d: LogCurveDataType, logrun_name: string, log_name: string): number[];
export declare function getLogInfo(d: LogCurveDataType, logrun_name: string, log_name: string): {
name: string;
description: string;
} | undefined;