@webviz/subsurface-viewer 1.15.7 → 1.15.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/SubsurfaceViewer.d.ts +10 -14
  2. package/dist/SubsurfaceViewer.js.map +1 -1
  3. package/dist/components/Map.js +1 -1
  4. package/dist/components/Map.js.map +1 -1
  5. package/dist/layers/BoxSelectionLayer/boxSelectionLayer.d.ts +2 -18
  6. package/dist/layers/BoxSelectionLayer/boxSelectionLayer.js +2 -2
  7. package/dist/layers/BoxSelectionLayer/boxSelectionLayer.js.map +1 -1
  8. package/dist/layers/types.d.ts +2 -2
  9. package/dist/layers/utils/layerTools.d.ts +9 -1
  10. package/dist/layers/utils/layerTools.js +15 -0
  11. package/dist/layers/utils/layerTools.js.map +1 -1
  12. package/dist/layers/wells/layers/logCurveLayer.d.ts +56 -0
  13. package/dist/layers/wells/layers/logCurveLayer.js +286 -0
  14. package/dist/layers/wells/layers/logCurveLayer.js.map +1 -0
  15. package/dist/layers/wells/layers/wellLabelLayer.js +5 -4
  16. package/dist/layers/wells/layers/wellLabelLayer.js.map +1 -1
  17. package/dist/layers/wells/types.d.ts +10 -7
  18. package/dist/layers/wells/utils/features.d.ts +21 -0
  19. package/dist/layers/wells/utils/features.js +52 -0
  20. package/dist/layers/wells/utils/features.js.map +1 -0
  21. package/dist/layers/wells/utils/log.d.ts +31 -0
  22. package/dist/layers/wells/utils/log.js +307 -0
  23. package/dist/layers/wells/utils/log.js.map +1 -0
  24. package/dist/layers/wells/utils/trajectory.d.ts +8 -6
  25. package/dist/layers/wells/utils/trajectory.js +115 -1
  26. package/dist/layers/wells/utils/trajectory.js.map +1 -1
  27. package/dist/layers/wells/utils/wells.d.ts +30 -0
  28. package/dist/layers/wells/utils/wells.js +55 -0
  29. package/dist/layers/wells/utils/wells.js.map +1 -0
  30. package/dist/layers/wells/wellsLayer.d.ts +10 -13
  31. package/dist/layers/wells/wellsLayer.js +71 -594
  32. package/dist/layers/wells/wellsLayer.js.map +1 -1
  33. package/dist/utils/arrays.d.ts +7 -0
  34. package/dist/utils/arrays.js +10 -0
  35. package/dist/utils/arrays.js.map +1 -0
  36. package/dist/utils/measurement.d.ts +16 -0
  37. package/dist/utils/measurement.js +37 -0
  38. package/dist/utils/measurement.js.map +1 -1
  39. package/package.json +2 -2
@@ -0,0 +1,307 @@
1
+ import { rgbValues, getColors, } from "@emerson-eps/color-tables/";
2
+ import { createPropertyData, } from "../../utils/layerTools";
3
+ import { getSegmentIndex } from "./trajectory";
4
+ import { getPositionByMD, getWellMds, getWellObjectByName } from "./wells";
5
+ import { getTrajectory } from "./trajectory";
6
+ const MD_CURVE_NAMES = ["DEPTH::", "DEPT", "MD", "TDEP", "MD_RKB"]; // aliases for MD
7
+ export function getLogForWellbore(logs, logRunName, wellName) {
8
+ for (const log of logs) {
9
+ const { name, well } = log.header;
10
+ if (name === logRunName && well == wellName) {
11
+ return log;
12
+ }
13
+ }
14
+ return undefined;
15
+ }
16
+ export function getLogIndexByName(d, log_name) {
17
+ const name = log_name.toLowerCase();
18
+ return d.curves.findIndex((item) => item.name.toLowerCase() === name);
19
+ }
20
+ export function getLogIndexByNames(d, names) {
21
+ for (const name of names) {
22
+ const index = getLogIndexByName(d, name);
23
+ if (index >= 0)
24
+ return index;
25
+ }
26
+ return -1;
27
+ }
28
+ export function isSelectedLogRun(d, logrun_name) {
29
+ return d.header.name.toLowerCase() === logrun_name.toLowerCase();
30
+ }
31
+ export function getLogValues(d, logrun_name, log_name) {
32
+ if (!isSelectedLogRun(d, logrun_name))
33
+ return [];
34
+ const log_id = getLogIndexByName(d, log_name);
35
+ return log_id >= 0 ? getColumn(d.data, log_id) : [];
36
+ }
37
+ export function getLogInfo(d, logrun_name, log_name) {
38
+ if (!isSelectedLogRun(d, logrun_name))
39
+ return undefined;
40
+ const log_id = getLogIndexByName(d, log_name);
41
+ return d.curves[log_id];
42
+ }
43
+ export function getDiscreteLogMetadata(d, log_name) {
44
+ return d === null || d === void 0 ? void 0 : d.metadata_discrete[log_name];
45
+ }
46
+ export function getLogSegmentIndexForMd(log, md) {
47
+ const mdCurveIndex = getLogIndexByNames(log, MD_CURVE_NAMES);
48
+ if (md < log.data[0][mdCurveIndex])
49
+ return -1;
50
+ if (md > log.data.at(-1)[mdCurveIndex])
51
+ return -1;
52
+ // Special case to include the last md within the last segment
53
+ if (md === log.data.at(-1)[mdCurveIndex])
54
+ return log.data.length - 2;
55
+ for (let segmentIndex = 0; segmentIndex < log.data.length - 1; segmentIndex++) {
56
+ const segmentStart = log.data[segmentIndex][mdCurveIndex];
57
+ const segmentEnd = log.data[segmentIndex + 1][mdCurveIndex];
58
+ if (md < segmentStart)
59
+ continue;
60
+ if (md >= segmentStart && md < segmentEnd)
61
+ return segmentIndex;
62
+ }
63
+ return -1;
64
+ }
65
+ // Returns segment index of discrete logs
66
+ function getLogSegmentIndex(coord, wells_data, log_data, logrun_name) {
67
+ const trajectory = getLogPath(wells_data, log_data, logrun_name);
68
+ return getSegmentIndex(coord, trajectory);
69
+ }
70
+ export function getLogProperty(coord, wells_data, log_data, logrun_name, log_name) {
71
+ var _a, _b, _c;
72
+ if (!log_data.data)
73
+ return null;
74
+ const segment_index = getLogSegmentIndex(coord, wells_data, log_data, logrun_name);
75
+ let log_value = getLogValues(log_data, logrun_name, log_name)[segment_index];
76
+ let dl_attrs = undefined;
77
+ const dl_metadata = (_a = getDiscreteLogMetadata(log_data, log_name)) === null || _a === void 0 ? void 0 : _a.objects;
78
+ if (dl_metadata) {
79
+ dl_attrs = Object.entries(dl_metadata).find(([, value]) => value[1] == log_value);
80
+ }
81
+ const log = (_b = getLogInfo(log_data, logrun_name, log_name)) === null || _b === void 0 ? void 0 : _b.name;
82
+ const prop_name = log + " " + log_data.header.well;
83
+ log_value = dl_attrs ? dl_attrs[0] + " (" + log_value + ")" : log_value;
84
+ if (log_value) {
85
+ const well_object = getWellObjectByName(wells_data, log_data.header.well);
86
+ return createPropertyData(prop_name, log_value, (_c = well_object === null || well_object === void 0 ? void 0 : well_object.properties) === null || _c === void 0 ? void 0 : _c["color"]);
87
+ }
88
+ else
89
+ return null;
90
+ }
91
+ export function getLogWidth(d, logrun_name, log_name) {
92
+ return getLogValues(d, logrun_name, log_name);
93
+ }
94
+ // Return data required to build well layer legend
95
+ export function getLegendData(logs, wellName, logName, logColor) {
96
+ if (!logs)
97
+ return null;
98
+ const log = wellName
99
+ ? logs.find((log) => log.header.well == wellName)
100
+ : logs[0];
101
+ const logInfo = !log
102
+ ? undefined
103
+ : getLogInfo(log, log.header.name, logName);
104
+ const title = "Wells / " + logName;
105
+ if (log && (logInfo === null || logInfo === void 0 ? void 0 : logInfo.description) == "discrete") {
106
+ const meta = log["metadata_discrete"];
107
+ const metadataDiscrete = meta[logName].objects;
108
+ return {
109
+ title: title,
110
+ colorName: logColor,
111
+ discrete: true,
112
+ metadata: metadataDiscrete,
113
+ };
114
+ }
115
+ else {
116
+ const minArray = [];
117
+ const maxArray = [];
118
+ logs.forEach(function (log) {
119
+ const logValues = getLogValues(log, log.header.name, logName);
120
+ minArray.push(Math.min(...logValues));
121
+ maxArray.push(Math.max(...logValues));
122
+ });
123
+ return {
124
+ title: title,
125
+ colorName: logColor,
126
+ discrete: false,
127
+ valueRange: [Math.min(...minArray), Math.max(...maxArray)],
128
+ };
129
+ }
130
+ }
131
+ export function getLogMd(d, logrun_name) {
132
+ if (!isSelectedLogRun(d, logrun_name))
133
+ return [];
134
+ const log_id = getLogIndexByNames(d, MD_CURVE_NAMES);
135
+ return log_id >= 0 ? getColumn(d.data, log_id) : [];
136
+ }
137
+ export function getCurveValueAtRow(log, curveName, rowIndex) {
138
+ const curveIndex = getLogIndexByName(log, curveName);
139
+ return log.data[rowIndex][curveIndex];
140
+ }
141
+ export function getCurveValueAtMd(log, curveName, md) {
142
+ const mdCurveIndex = getLogIndexByNames(log, MD_CURVE_NAMES);
143
+ const curveIndex = getLogIndexByName(log, curveName);
144
+ if (mdCurveIndex < 0 || curveIndex < 0)
145
+ return null;
146
+ if (md < log.data[0][mdCurveIndex])
147
+ return null;
148
+ if (md > log.data[log.data.length - 1][mdCurveIndex])
149
+ return null;
150
+ const segmentIndex = log.data.findIndex((row) => row[mdCurveIndex] > md);
151
+ if (segmentIndex === -1)
152
+ return null;
153
+ const mdBelow = log.data[segmentIndex - 1][mdCurveIndex];
154
+ const mdAbove = log.data[segmentIndex][mdCurveIndex];
155
+ const interpolatedT = (md - mdBelow) / (mdAbove - mdBelow);
156
+ if (log.curves[curveIndex].description === "continuous") {
157
+ const valueBelow = log.data[segmentIndex - 1][curveIndex];
158
+ const valueAbove = log.data[segmentIndex][curveIndex];
159
+ return valueBelow + interpolatedT * (valueAbove - valueBelow);
160
+ }
161
+ else {
162
+ const valueBelow = log.data[segmentIndex - 1][curveIndex];
163
+ return valueBelow;
164
+ }
165
+ }
166
+ export function injectMdRows(log, ...mdValues) {
167
+ const newData = [...log.data];
168
+ const mdCurveIndex = getLogIndexByNames(log, MD_CURVE_NAMES);
169
+ let currentDataRowIdx = 0;
170
+ let spliceCount = 0;
171
+ for (let i = 0; i < mdValues.length; i++) {
172
+ const mdValue = mdValues[i];
173
+ if (mdValue < log.data[0][mdCurveIndex])
174
+ continue;
175
+ if (mdValue > log.data[log.data.length - 1][mdCurveIndex])
176
+ break;
177
+ // Increase until we go over or find the value
178
+ while (log.data[currentDataRowIdx][mdCurveIndex] < mdValue &&
179
+ currentDataRowIdx < log.data.length) {
180
+ currentDataRowIdx++;
181
+ }
182
+ if (currentDataRowIdx >= log.data.length)
183
+ break;
184
+ // Data already in array, so we can skip
185
+ if (log.data[currentDataRowIdx][mdCurveIndex] === mdValue)
186
+ continue;
187
+ const mdBelow = log.data[currentDataRowIdx - 1][mdCurveIndex];
188
+ const mdAbove = log.data[currentDataRowIdx][mdCurveIndex];
189
+ const interpolatedT = (mdValue - mdBelow) / (mdAbove - mdBelow);
190
+ const interpolatedRow = [];
191
+ for (let colIdx = 0; colIdx < log.data[currentDataRowIdx].length; colIdx++) {
192
+ if (colIdx === mdCurveIndex) {
193
+ interpolatedRow.push(mdValue);
194
+ }
195
+ else if (log.curves[colIdx].description === "continuous") {
196
+ const valueBelow = log.data[currentDataRowIdx - 1][colIdx];
197
+ const valueAbove = log.data[currentDataRowIdx][colIdx];
198
+ const interpolatedValue = valueBelow + interpolatedT * (valueAbove - valueBelow);
199
+ interpolatedRow.push(interpolatedValue);
200
+ }
201
+ else {
202
+ const valueBelow = log.data[currentDataRowIdx - 1][colIdx];
203
+ interpolatedRow.push(valueBelow);
204
+ }
205
+ }
206
+ newData.splice(currentDataRowIdx + spliceCount, 0, interpolatedRow);
207
+ spliceCount++;
208
+ }
209
+ return Object.assign(Object.assign({}, log), { data: newData });
210
+ }
211
+ export function getLogColor(d, logrun_name, log_name, logColor, colorTables, colorMappingFunction, isLog) {
212
+ var _a;
213
+ const log_data = getLogValues(d, logrun_name, log_name);
214
+ const log_info = getLogInfo(d, logrun_name, log_name);
215
+ if (log_data.length == 0 || log_info == undefined)
216
+ return [];
217
+ const log_color = [];
218
+ if (log_info.description == "continuous") {
219
+ const min = Math.min(...log_data);
220
+ const max = Math.max(...log_data);
221
+ const max_delta = max - min;
222
+ log_data.forEach((value) => {
223
+ const adjustedVal = (value - min) / max_delta;
224
+ const rgb = colorMappingFunction
225
+ ? colorMappingFunction(adjustedVal)
226
+ : rgbValues(adjustedVal, logColor, colorTables, isLog);
227
+ if (rgb) {
228
+ log_color.push([rgb[0], rgb[1], rgb[2]]);
229
+ }
230
+ else {
231
+ log_color.push([0, 0, 0, 0]); // push transparent for null/undefined log values
232
+ }
233
+ });
234
+ }
235
+ else {
236
+ // well log data set for ex : H1: Array(2)0: (4) [255, 26, 202, 255] 1: 13
237
+ const log_attributes = (_a = getDiscreteLogMetadata(d, log_name)) === null || _a === void 0 ? void 0 : _a.objects;
238
+ const logLength = Object.keys(log_attributes).length;
239
+ const attributesObject = {};
240
+ const categorical = true;
241
+ Object.keys(log_attributes).forEach((key) => {
242
+ // get the point from log_attributes
243
+ const point = log_attributes[key][1];
244
+ const categoricalMin = 0;
245
+ const categoricalMax = logLength - 1;
246
+ let rgb;
247
+ if (colorMappingFunction) {
248
+ rgb = colorMappingFunction(point, categorical, categoricalMin, categoricalMax);
249
+ }
250
+ else {
251
+ // if color-map function is not defined
252
+ const arrayOfColors = getColors(logColor, colorTables, point);
253
+ if (!arrayOfColors.length)
254
+ console.error(`Empty or missed '${logColor}' color table`);
255
+ else {
256
+ rgb = arrayOfColors;
257
+ }
258
+ }
259
+ if (rgb) {
260
+ if (rgb.length === 3) {
261
+ attributesObject[key] = [[rgb[0], rgb[1], rgb[2]], point];
262
+ }
263
+ else {
264
+ // ? What is the point of this? Why do we offset the index in this case, isn't the fourth value the opacity?
265
+ // (@anders2303)
266
+ attributesObject[key] = [[rgb[1], rgb[2], rgb[3]], point];
267
+ }
268
+ }
269
+ });
270
+ log_data.forEach((log_value) => {
271
+ var _a;
272
+ const dl_attrs = (_a = Object.entries(attributesObject).find(([, value]) => value[1] == log_value)) === null || _a === void 0 ? void 0 : _a[1];
273
+ if (dl_attrs)
274
+ log_color.push(dl_attrs[0]);
275
+ else
276
+ log_color.push([0, 0, 0, 0]); // use transparent for undefined/null log values
277
+ });
278
+ }
279
+ return log_color;
280
+ }
281
+ export function getLogPath(wells_data, d, logrun_name, trajectory_line_color) {
282
+ const well_object = getWellObjectByName(wells_data, d.header.well);
283
+ if (!well_object)
284
+ return [];
285
+ const well_xyz = getTrajectory(well_object, trajectory_line_color);
286
+ const well_mds = getWellMds(well_object);
287
+ if (well_xyz == undefined ||
288
+ well_mds == undefined ||
289
+ well_xyz.length == 0 ||
290
+ well_mds.length == 0)
291
+ return [];
292
+ const log_xyz = [];
293
+ const log_mds = getLogMd(d, logrun_name);
294
+ log_mds.forEach((md) => {
295
+ const xyz = getPositionByMD(well_xyz, well_mds, md);
296
+ log_xyz.push(xyz);
297
+ });
298
+ return log_xyz;
299
+ }
300
+ export function getColumn(data, col) {
301
+ const column = [];
302
+ for (let i = 0; i < data.length; i++) {
303
+ column.push(data[i][col]);
304
+ }
305
+ return column;
306
+ }
307
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../../src/layers/wells/utils/log.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
- import type { Color } from "@deck.gl/core";
1
+ import type { AccessorContext, Color } from "@deck.gl/core";
2
2
  import type { Position } from "geojson";
3
- import type { StyleAccessorFunction } from "../../types";
4
- import type { WellFeature } from "../types";
5
- type ColorAccessor = Color | StyleAccessorFunction | undefined;
6
- export declare function getColor(accessor: ColorAccessor): Color | ((object: WellFeature, objectInfo?: Record<string, unknown>) => Color | undefined);
3
+ import type { ColorAccessor, WellFeature } from "../types";
4
+ export declare function getColor(accessor: ColorAccessor): Color | ((object: WellFeature, objectInfo?: AccessorContext<WellFeature>) => Color | undefined);
7
5
  /**
8
6
  * Get trajectory data from LineString Geometry if it's visible (checking
9
7
  * trajectory visiblity based on line color)
10
8
  */
11
9
  export declare function getTrajectory(well_object: WellFeature, color_accessor: ColorAccessor): Position[] | undefined;
12
- export {};
10
+ export declare function getMdsInRange(mdArray: number[], mdStart: number, mdEnd: number): number[];
11
+ export declare function interpolateDataOnTrajectory(coord: Position, data: number[], trajectory: Position[]): number | null;
12
+ export declare function getMd(coord: Position, feature: WellFeature, accessor: ColorAccessor): number | null;
13
+ export declare function getTvd(coord: Position, feature: WellFeature, accessor: ColorAccessor): number | null;
14
+ export declare function getSegmentIndex(coord: Position, path: Position[]): number;
@@ -1,15 +1,20 @@
1
+ import { distance, subtract, dot } from "mathjs";
2
+ import { distToSegmentSquared, isPointAwayFromLineEnd, } from "../../../utils/measurement";
3
+ import { getWellHeadPosition } from "./features";
1
4
  function getLineStringGeometry(well_object) {
2
5
  const geometries = well_object.geometry.geometries;
3
6
  return geometries.find((item) => item.type === "LineString");
4
7
  }
5
8
  export function getColor(accessor) {
6
- if (accessor) {
9
+ if (Array.isArray(accessor)) {
7
10
  return accessor;
8
11
  }
9
12
  return (object, objectInfo) => {
10
13
  var _a;
11
14
  if (typeof accessor === "function") {
12
15
  const colorFunc = accessor;
16
+ // info object is arguably required, but there's too many spots that don't pass it along atm
17
+ // @ts-expect-error -- @ander2303
13
18
  const color = colorFunc(object, objectInfo);
14
19
  if (color) {
15
20
  return color;
@@ -44,4 +49,113 @@ export function getTrajectory(well_object, color_accessor) {
44
49
  else
45
50
  return undefined;
46
51
  }
52
+ export function getMdsInRange(mdArray,
53
+ // We assume the range is already sanitized (aka: mdStart < mdEnd)
54
+ mdStart, mdEnd) {
55
+ const mdSection = [];
56
+ mdSection.push(mdStart);
57
+ for (let index = 0; index < mdArray.length; index++) {
58
+ const md = mdArray[index];
59
+ // Equal mds are skipped, since they're added at the end
60
+ if (md <= mdStart)
61
+ continue;
62
+ if (md >= mdEnd)
63
+ break;
64
+ mdSection.push(md);
65
+ }
66
+ mdSection.push(mdEnd);
67
+ return mdSection;
68
+ }
69
+ // Interpolates point closest to the coords on trajectory
70
+ export function interpolateDataOnTrajectory(coord, data, trajectory) {
71
+ // if number of data points in less than 1 or
72
+ // length of data and trajectory are different we cannot interpolate.
73
+ if (data.length <= 1 || data.length != trajectory.length)
74
+ return null;
75
+ // Identify closest well path leg to coord.
76
+ const segment_index = getSegmentIndex(coord, trajectory);
77
+ const index0 = segment_index;
78
+ const index1 = index0 + 1;
79
+ // Get the nearest data.
80
+ const data0 = data[index0];
81
+ const data1 = data[index1];
82
+ // Get the nearest survey points.
83
+ const survey0 = trajectory[index0];
84
+ const survey1 = trajectory[index1];
85
+ // To avoid interpolating longer than the actual wellbore path we ignore the coordinate if it's moved beyond the last line
86
+ if (index1 === trajectory.length - 1 &&
87
+ isPointAwayFromLineEnd(coord, [survey0, survey1])) {
88
+ coord = survey1;
89
+ }
90
+ const dv = distance(survey0, survey1);
91
+ if (dv === 0) {
92
+ return null;
93
+ }
94
+ // Calculate the scalar projection onto segment.
95
+ const v0 = subtract(coord, survey0);
96
+ const v1 = subtract(survey1, survey0);
97
+ // scalar_projection in interval [0,1]
98
+ const scalar_projection = dot(v0, v1) / (dv * dv);
99
+ // Interpolate data.
100
+ return data0 * (1.0 - scalar_projection) + data1 * scalar_projection;
101
+ }
102
+ export function getMd(coord, feature, accessor) {
103
+ var _a, _b;
104
+ if (!((_b = (_a = feature.properties) === null || _a === void 0 ? void 0 : _a["md"]) === null || _b === void 0 ? void 0 : _b[0]) || !feature.geometry)
105
+ return null;
106
+ const measured_depths = feature.properties.md[0];
107
+ const trajectory3D = getTrajectory(feature, accessor);
108
+ if (trajectory3D == undefined)
109
+ return null;
110
+ let trajectory;
111
+ // In 2D view coord is of type Point2D and in 3D view it is Point3D,
112
+ // so use appropriate trajectory for interpolation
113
+ if (coord.length == 2) {
114
+ const trajectory2D = trajectory3D.map((v) => {
115
+ return v.slice(0, 2);
116
+ });
117
+ trajectory = trajectory2D;
118
+ }
119
+ else {
120
+ trajectory = trajectory3D;
121
+ }
122
+ return interpolateDataOnTrajectory(coord, measured_depths, trajectory);
123
+ }
124
+ export function getTvd(coord, feature, accessor) {
125
+ var _a;
126
+ const trajectory3D = getTrajectory(feature, accessor);
127
+ // if trajectory is not found or if it has a data single point then get tvd from well head
128
+ if (trajectory3D == undefined || (trajectory3D === null || trajectory3D === void 0 ? void 0 : trajectory3D.length) <= 1) {
129
+ const wellhead_xyz = getWellHeadPosition(feature);
130
+ return (_a = wellhead_xyz === null || wellhead_xyz === void 0 ? void 0 : wellhead_xyz[2]) !== null && _a !== void 0 ? _a : null;
131
+ }
132
+ let trajectory;
133
+ // For 2D view coord is Point2D and for 3D view it is Point3D
134
+ if (coord.length == 2) {
135
+ const trajectory2D = trajectory3D === null || trajectory3D === void 0 ? void 0 : trajectory3D.map((v) => {
136
+ return v.slice(0, 2);
137
+ });
138
+ trajectory = trajectory2D;
139
+ }
140
+ else {
141
+ trajectory = trajectory3D;
142
+ }
143
+ const tvds = trajectory3D.map((v) => {
144
+ return v[2];
145
+ });
146
+ // TVD goes downwards, so it's reversed
147
+ return interpolateDataOnTrajectory(coord, tvds, trajectory);
148
+ } // Identify closest path leg to coord.
149
+ export function getSegmentIndex(coord, path) {
150
+ let min_d = Number.MAX_VALUE;
151
+ let segment_index = 0;
152
+ for (let i = 0; i < (path === null || path === void 0 ? void 0 : path.length) - 1; i++) {
153
+ const d = distToSegmentSquared(path[i], path[i + 1], coord);
154
+ if (d > min_d)
155
+ continue;
156
+ segment_index = i;
157
+ min_d = d;
158
+ }
159
+ return segment_index;
160
+ }
47
161
  //# sourceMappingURL=trajectory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"trajectory.js","sourceRoot":"","sources":["../../../../src/layers/wells/utils/trajectory.ts"],"names":[],"mappings":"AAOA,SAAS,qBAAqB,CAC1B,WAAwB;IAExB,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;IACnD,OAAO,UAAU,CAAC,IAAI,CAClB,CAAC,IAAI,EAAsB,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAC3D,CAAC;AACN,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,QAAuB;IAC5C,IAAI,QAAiB,EAAE,CAAC;QACpB,OAAO,QAAiB,CAAC;IAC7B,CAAC;IAED,OAAO,CACH,MAAmB,EACnB,UAAoC,EACnB,EAAE;;QACnB,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,QAAiC,CAAC;YAEpD,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,UAAU,CAAU,CAAC;YACrD,IAAI,KAAK,EAAE,CAAC;gBACR,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QACD,OAAO,MAAA,MAAM,CAAC,UAAU,0CAAE,KAAK,CAAC;IACpC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC5B,WAAwB,EACxB,cAA6B;;IAE7B,IAAI,KAAK,CAAC;IACV,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC1C,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QACjC,KAAK,GAAG,MAAA,QAAQ,CAAC,WAAW,CAAC,0CAAG,CAAC,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACJ,KAAK,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CACzB,WAAwB,EACxB,cAA6B;;IAE7B,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,cAAc,CAAC;QACrD,OAAO,MAAA,qBAAqB,CAAC,WAAW,CAAC,0CAAE,WAAW,CAAC;;QACtD,OAAO,SAAS,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"trajectory.js","sourceRoot":"","sources":["../../../../src/layers/wells/utils/trajectory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { Position } from "geojson";
2
+ import type { WellFeature } from "../types";
3
+ /**
4
+ * Gets a well feature object based on it's name
5
+ * @param wells_data A list of data features
6
+ * @param name The name of the well. Case insensitive
7
+ * @returns Returns the well if found
8
+ */
9
+ export declare function getWellObjectByName(wells_data: WellFeature[], name: string): WellFeature | undefined;
10
+ /**
11
+ * Gets multiple well feature objects based on their names
12
+ * @param wells_data A list of data features
13
+ * @param name The names of the wells to find. Case insensitive
14
+ * @returns Returns a list of all wells who's name was found
15
+ */
16
+ export declare function getWellObjectsByName(wells_data: WellFeature[], name: string[]): WellFeature[];
17
+ /**
18
+ * Get measured depths array from well feature object
19
+ * @param well_object A well feature object
20
+ * @returns An array of measured depths for the well
21
+ */
22
+ export declare function getWellMds(well_object: WellFeature): number[];
23
+ /**
24
+ * Gets an interpolated world position along a well trajectory based on measured depth
25
+ * @param well_xyz A wells trajectory positions
26
+ * @param well_mds A wells trajectory measured depths
27
+ * @param md The measured depth to get the position for
28
+ * @returns The interpolated world position at the given measured depth
29
+ */
30
+ export declare function getPositionByMD(well_xyz: Position[], well_mds: number[], md: number): Position;
@@ -0,0 +1,55 @@
1
+ import { interpolateNumberArray } from "d3-interpolate";
2
+ /**
3
+ * Gets a well feature object based on it's name
4
+ * @param wells_data A list of data features
5
+ * @param name The name of the well. Case insensitive
6
+ * @returns Returns the well if found
7
+ */
8
+ export function getWellObjectByName(wells_data, name) {
9
+ return wells_data.find((item) => { var _a, _b; return ((_b = (_a = item.properties) === null || _a === void 0 ? void 0 : _a.name) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === (name === null || name === void 0 ? void 0 : name.toLowerCase()); });
10
+ }
11
+ /**
12
+ * Gets multiple well feature objects based on their names
13
+ * @param wells_data A list of data features
14
+ * @param name The names of the wells to find. Case insensitive
15
+ * @returns Returns a list of all wells who's name was found
16
+ */
17
+ export function getWellObjectsByName(wells_data, name) {
18
+ const res = [];
19
+ for (let i = 0; i < (name === null || name === void 0 ? void 0 : name.length); i++) {
20
+ wells_data.find((item) => {
21
+ var _a, _b, _c;
22
+ if (((_b = (_a = item.properties) === null || _a === void 0 ? void 0 : _a.name) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === ((_c = name[i]) === null || _c === void 0 ? void 0 : _c.toLowerCase()))
23
+ res.push(item);
24
+ });
25
+ }
26
+ return res;
27
+ }
28
+ /**
29
+ * Get measured depths array from well feature object
30
+ * @param well_object A well feature object
31
+ * @returns An array of measured depths for the well
32
+ */
33
+ export function getWellMds(well_object) {
34
+ return well_object.properties.md[0];
35
+ }
36
+ /**
37
+ * Gets an interpolated world position along a well trajectory based on measured depth
38
+ * @param well_xyz A wells trajectory positions
39
+ * @param well_mds A wells trajectory measured depths
40
+ * @param md The measured depth to get the position for
41
+ * @returns The interpolated world position at the given measured depth
42
+ */
43
+ export function getPositionByMD(well_xyz, well_mds, md) {
44
+ const [l_idx, h_idx] = getNeighboringMdIndices(well_mds, md);
45
+ const md_low = well_mds[l_idx];
46
+ const md_normalized = (md - md_low) / (well_mds[h_idx] - md_low);
47
+ return interpolateNumberArray(well_xyz[l_idx], well_xyz[h_idx])(md_normalized);
48
+ }
49
+ function getNeighboringMdIndices(mds, md) {
50
+ const idx = mds.findIndex((x) => x >= md);
51
+ if (idx === -1)
52
+ return [];
53
+ return idx === 0 ? [idx, idx + 1] : [idx - 1, idx];
54
+ }
55
+ //# sourceMappingURL=wells.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wells.js","sourceRoot":"","sources":["../../../../src/layers/wells/utils/wells.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAKxD;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAC/B,UAAyB,EACzB,IAAY;IAEZ,OAAO,UAAU,CAAC,IAAI,CAClB,CAAC,IAAI,EAAE,EAAE,eAAC,OAAA,CAAA,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,0CAAE,WAAW,EAAE,OAAK,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,EAAE,CAAA,CAAA,EAAA,CACzE,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAChC,UAAyB,EACzB,IAAc;IAEd,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAA,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;;YACrB,IAAI,CAAA,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,0CAAE,WAAW,EAAE,OAAK,MAAA,IAAI,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAE,CAAA;gBAC/D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,WAAwB;IAC/C,OAAO,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC3B,QAAoB,EACpB,QAAkB,EAClB,EAAU;IAEV,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,uBAAuB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,aAAa,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;IACjE,OAAO,sBAAsB,CACzB,QAAQ,CAAC,KAAK,CAAC,EACf,QAAQ,CAAC,KAAK,CAAC,CAClB,CAAC,aAAa,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAa,EAAE,EAAU;IACtD,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAE1C,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1B,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACvD,CAAC"}
@@ -4,10 +4,10 @@ import type { BinaryFeatureCollection } from "@loaders.gl/schema";
4
4
  import type { Feature } from "geojson";
5
5
  import type { ColormapFunctionType } from "../utils/colormapTools";
6
6
  import type { ExtendedLayerProps, ReportBoundingBoxAction } from "../utils/layerTools";
7
- import type { ContinuousLegendDataType, DiscreteLegendDataType } from "../../components/ColorLegend";
8
7
  import type { WellLabelLayerProps } from "./layers/wellLabelLayer";
9
8
  import { WellLabelLayer } from "./layers/wellLabelLayer";
10
- import type { AbscissaTransform, LineStyleAccessor, LogCurveDataType, SizeAccessor, WellFeature, WellFeatureCollection, WellHeadStyleAccessor, WellsPickInfo } from "./types";
9
+ import type { AbscissaTransform, LineStyleAccessor, LogCurveDataType, WellFeature, WellFeatureCollection, WellHeadStyleAccessor, WellsPickInfo } from "./types";
10
+ import type { ContinuousLegendDataType, DiscreteLegendDataType } from "../../components/ColorLegend";
11
11
  export declare enum SubLayerId {
12
12
  COLORS = "colors",
13
13
  SIMPLE = "simple",
@@ -88,26 +88,28 @@ export interface WellsLayerProps extends ExtendedLayerProps {
88
88
  reportBoundingBox?: React.Dispatch<ReportBoundingBoxAction>;
89
89
  wellLabel?: Partial<WellLabelLayerProps>;
90
90
  }
91
- export declare function getSize(type: string, accessor: SizeAccessor, offset?: number): number | ((object: Feature) => number);
92
91
  export default class WellsLayer extends CompositeLayer<WellsLayerProps> {
93
92
  state: {
94
93
  data: WellFeatureCollection | undefined;
95
- well: string;
94
+ logData: LogCurveDataType[] | undefined;
96
95
  selectedMultiWells: string[];
97
- selection: [number, number];
96
+ logDomainSelection: {
97
+ well: string;
98
+ selection: number[];
99
+ } | undefined;
98
100
  sectionData?: WellFeatureCollection;
99
101
  };
100
102
  private recomputeDataState;
101
103
  shouldUpdateState({ changeFlags }: UpdateParameters<this>): boolean;
102
104
  updateState({ props, oldProps }: UpdateParameters<WellsLayer>): void;
103
105
  onClick(info: WellsPickInfo): boolean;
104
- setSelection(well: string | undefined, _selection?: [number | undefined, number | undefined]): void;
106
+ setSelection(well: string | undefined, selection?: [number | undefined, number | undefined]): void;
105
107
  setMultiSelection(wells: string[] | undefined): void;
106
108
  getWellDataState(): WellFeatureCollection | undefined;
107
109
  getLegendData(value: LogCurveDataType[]): ContinuousLegendDataType | DiscreteLegendDataType | null;
108
110
  setLegend(value: LogCurveDataType[]): void;
109
- getLogLayer(): Layer;
110
- getSelectionLayer(): Layer;
111
+ getLogLayer(): Layer | undefined;
112
+ getSelectionLayer(): Layer | undefined;
111
113
  getLogCurveData(): LogCurveDataType[] | undefined;
112
114
  setupLegend(): void;
113
115
  protected getWellLabelPosition(): number | ((d: Feature) => number);
@@ -117,8 +119,3 @@ export default class WellsLayer extends CompositeLayer<WellsLayerProps> {
117
119
  info: PickingInfo;
118
120
  }): WellsPickInfo;
119
121
  }
120
- export declare function getLogValues(d: LogCurveDataType, logrun_name: string, log_name: string): number[];
121
- export declare function getLogInfo(d: LogCurveDataType, logrun_name: string, log_name: string): {
122
- name: string;
123
- description: string;
124
- } | undefined;