UNPKG

@webviz/subsurface-viewer

Version:

3D visualization component for subsurface reservoir data

124 lines (123 loc) 5.33 kB
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;