@equinor/esv-intersection 3.0.1 → 3.0.4

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 (109) hide show
  1. package/dist/index.cjs +2 -2
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.mjs +2241 -1938
  4. package/dist/index.mjs.map +1 -1
  5. package/dist/index.umd.js +2 -2
  6. package/dist/index.umd.js.map +1 -1
  7. package/package.json +21 -22
  8. package/dist/components/axis.d.ts +0 -47
  9. package/dist/components/index.d.ts +0 -1
  10. package/dist/control/ExtendedCurveInterpolator.d.ts +0 -58
  11. package/dist/control/IntersectionReferenceSystem.d.ts +0 -96
  12. package/dist/control/LayerManager.d.ts +0 -76
  13. package/dist/control/MainController.d.ts +0 -154
  14. package/dist/control/ZoomPanHandler.d.ts +0 -158
  15. package/dist/control/index.d.ts +0 -5
  16. package/dist/control/interfaces.d.ts +0 -37
  17. package/dist/control/overlay.d.ts +0 -20
  18. package/dist/datautils/colortable.d.ts +0 -1
  19. package/dist/datautils/findsample.d.ts +0 -2
  20. package/dist/datautils/index.d.ts +0 -6
  21. package/dist/datautils/interfaces.d.ts +0 -63
  22. package/dist/datautils/picks.d.ts +0 -74
  23. package/dist/datautils/schematicShapeGenerator.d.ts +0 -59
  24. package/dist/datautils/seismicimage.d.ts +0 -45
  25. package/dist/datautils/surfacedata.d.ts +0 -10
  26. package/dist/datautils/trajectory.d.ts +0 -14
  27. package/dist/layers/CalloutCanvasLayer.d.ts +0 -60
  28. package/dist/layers/CustomDisplayObjects/ComplexRope.d.ts +0 -22
  29. package/dist/layers/CustomDisplayObjects/ComplexRopeGeometry.d.ts +0 -27
  30. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRope.d.ts +0 -20
  31. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.d.ts +0 -26
  32. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRope.d.ts +0 -17
  33. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRopeGeometry.d.ts +0 -24
  34. package/dist/layers/GeomodelCanvasLayer.d.ts +0 -28
  35. package/dist/layers/GeomodelLabelsLayer.d.ts +0 -49
  36. package/dist/layers/GeomodelLayerV2.d.ts +0 -12
  37. package/dist/layers/GridLayer.d.ts +0 -29
  38. package/dist/layers/ImageCanvasLayer.d.ts +0 -20
  39. package/dist/layers/ReferenceLineLayer.d.ts +0 -29
  40. package/dist/layers/SchematicLayer.d.ts +0 -113
  41. package/dist/layers/SeismicCanvasLayer.d.ts +0 -18
  42. package/dist/layers/WellborePathLayer.d.ts +0 -17
  43. package/dist/layers/base/CanvasLayer.d.ts +0 -19
  44. package/dist/layers/base/HTMLLayer.d.ts +0 -13
  45. package/dist/layers/base/Layer.d.ts +0 -69
  46. package/dist/layers/base/PixiLayer.d.ts +0 -32
  47. package/dist/layers/base/SVGLayer.d.ts +0 -13
  48. package/dist/layers/base/index.d.ts +0 -5
  49. package/dist/layers/index.d.ts +0 -16
  50. package/dist/layers/schematicInterfaces.d.ts +0 -208
  51. package/dist/utils/arc-length.d.ts +0 -23
  52. package/dist/utils/binary-search.d.ts +0 -8
  53. package/dist/utils/color.d.ts +0 -5
  54. package/dist/utils/index.d.ts +0 -1
  55. package/dist/utils/root-finder.d.ts +0 -34
  56. package/dist/utils/text.d.ts +0 -14
  57. package/dist/utils/vectorUtils.d.ts +0 -15
  58. package/dist/vendor/pixi-dashed-line/index.d.ts +0 -57
  59. package/src/components/axis.ts +0 -247
  60. package/src/components/index.ts +0 -1
  61. package/src/control/ExtendedCurveInterpolator.ts +0 -155
  62. package/src/control/IntersectionReferenceSystem.ts +0 -391
  63. package/src/control/LayerManager.ts +0 -294
  64. package/src/control/MainController.ts +0 -296
  65. package/src/control/ZoomPanHandler.ts +0 -436
  66. package/src/control/index.ts +0 -5
  67. package/src/control/interfaces.ts +0 -42
  68. package/src/control/overlay.ts +0 -118
  69. package/src/datautils/colortable.ts +0 -14
  70. package/src/datautils/findsample.ts +0 -64
  71. package/src/datautils/index.ts +0 -6
  72. package/src/datautils/interfaces.ts +0 -68
  73. package/src/datautils/picks.ts +0 -328
  74. package/src/datautils/schematicShapeGenerator.ts +0 -1007
  75. package/src/datautils/seismicimage.ts +0 -180
  76. package/src/datautils/surfacedata.ts +0 -318
  77. package/src/datautils/trajectory.ts +0 -206
  78. package/src/layers/CalloutCanvasLayer.ts +0 -338
  79. package/src/layers/CustomDisplayObjects/ComplexRope.ts +0 -45
  80. package/src/layers/CustomDisplayObjects/ComplexRopeGeometry.ts +0 -190
  81. package/src/layers/CustomDisplayObjects/FixedWidthSimpleRope.ts +0 -41
  82. package/src/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.ts +0 -149
  83. package/src/layers/CustomDisplayObjects/UniformTextureStretchRope.ts +0 -39
  84. package/src/layers/CustomDisplayObjects/UniformTextureStretchRopeGeometry.ts +0 -174
  85. package/src/layers/GeomodelCanvasLayer.ts +0 -176
  86. package/src/layers/GeomodelLabelsLayer.ts +0 -619
  87. package/src/layers/GeomodelLayerV2.ts +0 -110
  88. package/src/layers/GridLayer.ts +0 -145
  89. package/src/layers/ImageCanvasLayer.ts +0 -55
  90. package/src/layers/ReferenceLineLayer.ts +0 -185
  91. package/src/layers/SchematicLayer.ts +0 -871
  92. package/src/layers/SeismicCanvasLayer.ts +0 -46
  93. package/src/layers/WellborePathLayer.ts +0 -129
  94. package/src/layers/base/CanvasLayer.ts +0 -102
  95. package/src/layers/base/HTMLLayer.ts +0 -70
  96. package/src/layers/base/Layer.ts +0 -217
  97. package/src/layers/base/PixiLayer.ts +0 -190
  98. package/src/layers/base/SVGLayer.ts +0 -63
  99. package/src/layers/base/index.ts +0 -5
  100. package/src/layers/index.ts +0 -16
  101. package/src/layers/schematicInterfaces.ts +0 -470
  102. package/src/utils/arc-length.ts +0 -66
  103. package/src/utils/binary-search.ts +0 -26
  104. package/src/utils/color.ts +0 -22
  105. package/src/utils/index.ts +0 -1
  106. package/src/utils/root-finder.ts +0 -78
  107. package/src/utils/text.ts +0 -88
  108. package/src/utils/vectorUtils.ts +0 -67
  109. package/src/vendor/pixi-dashed-line/index.ts +0 -394
@@ -1,68 +0,0 @@
1
- /**
2
- * Survey data from SDMA
3
- */
4
- export interface SurveySample {
5
- md: number;
6
- tvd: number;
7
- easting: number;
8
- northing: number;
9
- }
10
-
11
- /**
12
- * Strat unit element as retrieved from SDMA
13
- */
14
- export interface StratUnit {
15
- identifier: string;
16
- stratUnitParent: string;
17
- colorR: null | number;
18
- colorG: null | number;
19
- colorB: null | number;
20
- topAge: number;
21
- baseAge: number;
22
- stratUnitLevel: number;
23
- }
24
-
25
- /**
26
- * Surfaces meta data as received from surface API with surface values injected
27
- */
28
- export interface SurfaceMetaAndValues {
29
- data: {
30
- values: number[];
31
- };
32
- visualSettings: {
33
- displayName: string;
34
- crossSection: string;
35
- colors: {
36
- crossSection: string;
37
- };
38
- };
39
- }
40
-
41
- /**
42
- * Surfaces lines ready for drawing by geomodel layer
43
- */
44
- export interface SurfaceLine {
45
- id?: string;
46
- label: string;
47
- color: number | string; // Color is passed to pixi.js and accepts both CSS color strings and hex color value
48
- data: number[][];
49
- }
50
-
51
- /**
52
- * Surfaces areas ready for drawing by geomodel layer
53
- */
54
- export interface SurfaceArea {
55
- id?: string;
56
- label: string;
57
- color: number | string; // Color is passed to pixi.js and accepts both CSS color strings and hex color value
58
- data: number[][];
59
- exclude?: boolean;
60
- }
61
-
62
- /**
63
- * Surfaces lines and areas ready for drawing by geomodel layer
64
- */
65
- export interface SurfaceData {
66
- lines: SurfaceLine[];
67
- areas: SurfaceArea[];
68
- }
@@ -1,328 +0,0 @@
1
- import { Annotation } from '../interfaces';
2
-
3
- type Pick = {
4
- pickIdentifier?: string;
5
- confidence: string | null;
6
- depthReferencePoint: string;
7
- md: number;
8
- mdUnit: string;
9
- tvd: number;
10
- };
11
-
12
- type PickWithId = {
13
- identifier: string;
14
- } & Pick;
15
-
16
- type Unit = {
17
- identifier: string;
18
- top: string;
19
- base: string;
20
- baseAge: number;
21
- topAge: number;
22
- colorR: number;
23
- colorG: number;
24
- colorB: number;
25
- stratUnitLevel: number;
26
- lithologyType: number;
27
- stratUnitParent: number;
28
- };
29
-
30
- type UnitDto = {
31
- unitName: string;
32
- topSurface: string;
33
- baseSurface: string;
34
- ageBase: number;
35
- ageTop: number;
36
- color: {
37
- r: number;
38
- g: number;
39
- b: number;
40
- };
41
- level: number;
42
- lithType: number;
43
- parent: number;
44
- };
45
-
46
- type PickAndUnit = PickWithId & UnitDto;
47
-
48
- type PairedPickAndUnit = {
49
- name: string;
50
- mdEntry: number;
51
- tvdEntry: number;
52
- color: { r: number; g: number; b: number };
53
- level: number;
54
- entryPick: PickAndUnit;
55
- mdExit: number;
56
- tvdExit: number;
57
- exitPick: PickAndUnit;
58
- confidenceEntry: string;
59
- confidenceExit: string;
60
- from?: number;
61
- to?: number;
62
- };
63
-
64
- const mapPick = (p: PickWithId, groupName: string): Annotation => ({
65
- title: p.pickIdentifier || p.identifier,
66
- group: groupName,
67
- label: `${p.md} ${p.mdUnit} ${p.depthReferencePoint}`,
68
- color: groupName === 'strat-picks' ? '#227' : 'rgba(0,0,0,0.8)',
69
- md: p.md,
70
- });
71
-
72
- function getReferencePicks(picks: PickWithId[]): Annotation[] {
73
- if (!picks) {
74
- return [];
75
- }
76
-
77
- return picks.map((p: PickWithId) => mapPick(p, 'ref-picks'));
78
- }
79
-
80
- function getEntryPicks(formationPicks: PairedPickAndUnit[]): Annotation[] {
81
- if (!formationPicks) {
82
- return [];
83
- }
84
-
85
- return formationPicks
86
- .filter((d: PairedPickAndUnit) => d.entryPick.md === d.from)
87
- .map((p: PairedPickAndUnit) => mapPick(p.entryPick, 'strat-picks'));
88
- }
89
-
90
- function getFilteredExitPicks(formationPicks: PairedPickAndUnit[]): Annotation[] {
91
- if (!formationPicks) {
92
- return [];
93
- }
94
-
95
- return (
96
- formationPicks
97
- .filter((d: PairedPickAndUnit) => formationPicks.findIndex((p: PairedPickAndUnit) => Math.abs(p.entryPick.md - d.exitPick.md) < 0.5) === -1)
98
- .map((p: PairedPickAndUnit) => mapPick(p.exitPick, 'strat-picks'))
99
- // Remove duplicates from unitpicks filling in gaps in formation
100
- .filter((obj: Annotation, i: number, array: Annotation[]) => i === array.findIndex((v: Annotation) => v.title === obj.title && v.md === obj.md))
101
- );
102
- }
103
-
104
- export const getPicksData = (picksData: { unitPicks: PairedPickAndUnit[]; nonUnitPicks: PickWithId[] }): Annotation[] =>
105
- [...getReferencePicks(picksData.nonUnitPicks), ...getEntryPicks(picksData.unitPicks), ...getFilteredExitPicks(picksData.unitPicks)].sort(
106
- (a, b) => a.md - b.md,
107
- );
108
-
109
- /**
110
- * @param {Unit} u
111
- */
112
- const unitDto = (u: Unit): UnitDto => ({
113
- unitName: u.identifier,
114
- topSurface: u.top,
115
- baseSurface: u.base,
116
- ageBase: u.baseAge,
117
- ageTop: u.topAge,
118
- color: {
119
- r: u.colorR === null ? 255 : u.colorR,
120
- g: u.colorG === null ? 255 : u.colorG,
121
- b: u.colorB === null ? 255 : u.colorB,
122
- },
123
- level: u.stratUnitLevel,
124
- lithType: u.lithologyType,
125
- parent: u.stratUnitParent,
126
- });
127
-
128
- /**
129
- *
130
- * @param {number} from
131
- * @param {number} to
132
- * @param {{ from: number; to: number; itm: PairedPickAndUnit }[]} arr
133
- * @param {number} arr.to
134
- * @param {number} arr.from
135
- * @returns {[number, number][]}
136
- */
137
- function findGaps(from: number, to: number, arr: { from: number; to: number; itm: PairedPickAndUnit }[]): [number, number][] {
138
- if (arr.length === 0) {
139
- return [[from, to]];
140
- }
141
- const gaps: [number, number][] = [];
142
- let d = from;
143
- let i = 0;
144
- while (d < to && i < arr.length) {
145
- const itm = arr[i];
146
- if (itm.from > d) {
147
- gaps.push([d, Math.min(itm.from, to)]);
148
- }
149
- d = Math.min(to, Math.max(from, itm.to));
150
- i += 1;
151
- }
152
- if (d < to) {
153
- gaps.push([d, to]);
154
- }
155
- return gaps;
156
- }
157
-
158
- /**
159
- * @param {Unit[]} units
160
- * @returns {UnitDto[]}
161
- */
162
- const transformStratColumn = (units: Unit[]): UnitDto[] => units.map(unitDto);
163
-
164
- /**
165
- * Join picks data with strat column units
166
- * @param {Pick[]} picks picks
167
- * @param {Unit[]} stratColumn strat column
168
- */
169
- function joinPicksAndStratColumn(picks: Pick[], stratColumn: Unit[]): { joined: PickAndUnit[]; nonUnitPicks: PickWithId[] } {
170
- const transformed = transformStratColumn(stratColumn);
171
- const nonUnitPicks: PickWithId[] = [];
172
- const joined: PickAndUnit[] = [];
173
- picks.forEach((p: Pick) => {
174
- const matches = transformed.filter((u: UnitDto) => p.pickIdentifier.search(new RegExp(`(${u.topSurface}|${u.baseSurface})`, 'i')) !== -1);
175
- if (matches.length > 0) {
176
- matches.forEach((u: UnitDto) =>
177
- joined.push({
178
- md: p.md,
179
- tvd: p.tvd,
180
- identifier: p.pickIdentifier,
181
- confidence: p.confidence,
182
- mdUnit: p.mdUnit,
183
- depthReferencePoint: p.depthReferencePoint,
184
- ...u,
185
- }),
186
- );
187
- } else {
188
- nonUnitPicks.push({ identifier: p.pickIdentifier, ...p });
189
- }
190
- });
191
-
192
- return { joined, nonUnitPicks };
193
- }
194
-
195
- /**
196
- * Find matching pairs of entry/exit picks
197
- * @param {PickAndUnit[]} joined picks joined with strat column units
198
- */
199
- function pairJoinedPicks(joined: PickAndUnit[]): PairedPickAndUnit[] {
200
- // pair picks by unit name
201
- const pairs = [];
202
- let current = null;
203
-
204
- const sorted = joined
205
- .filter((d: PickAndUnit) => d.level)
206
- .sort((a: PickAndUnit, b: PickAndUnit) => a.unitName.localeCompare(b.unitName) || a.md - b.md || a.ageTop - b.ageTop);
207
-
208
- while (sorted.length > 0) {
209
- current = sorted.shift();
210
- const name = current.identifier;
211
- let pairWithName: string;
212
-
213
- const isTop = name === current.topSurface;
214
- const isBase = name === current.baseSurface;
215
-
216
- if (isTop) {
217
- pairWithName = current.baseSurface;
218
- } else if (isBase) {
219
- pairWithName = current.topSurface;
220
- } else {
221
- console.warn(`Unable to match ${name} with top or base surface, ignored`);
222
- continue;
223
- }
224
-
225
- let top: PickAndUnit;
226
- let base: PickAndUnit;
227
-
228
- const pairWith = sorted.find((p: PickAndUnit) => p.identifier === pairWithName);
229
- if (!pairWith) {
230
- console.warn(`Unable to find ${pairWithName} pick for ${name}`);
231
- if (isTop) {
232
- top = current;
233
- base = joined
234
- .filter((d: PickAndUnit) => d.level)
235
- .sort((a: PickAndUnit, b: PickAndUnit) => a.md - b.md)
236
- .find((p: PickAndUnit) => p.md > top.md);
237
- if (base) {
238
- console.warn(`Using ${base.identifier} as base for ${name}`);
239
- } else {
240
- console.warn(`Unable to find a base pick for ${name} pick at ${top.md}, ignored`);
241
- continue;
242
- }
243
- } else if (isBase) {
244
- base = current;
245
- top = joined
246
- .filter((d: PickAndUnit) => d.level)
247
- .sort((a: PickAndUnit, b: PickAndUnit) => b.md - a.md)
248
- .find((p: PickAndUnit) => p.md < base.md);
249
- if (top) {
250
- console.warn(`Using ${top.identifier} as top for ${name}`);
251
- } else {
252
- console.warn(`Unable to find a top pick for ${name} pick at ${base.md}, ignored`);
253
- continue;
254
- }
255
- } else {
256
- console.warn(`${name} ignored`);
257
- continue;
258
- }
259
- } else {
260
- top = isTop ? current : pairWith;
261
- base = isTop ? pairWith : current;
262
-
263
- if (top.md > base.md) {
264
- [top, base] = [base, top];
265
- }
266
-
267
- sorted.splice(sorted.indexOf(pairWith), 1);
268
- }
269
-
270
- pairs.push(<PairedPickAndUnit>{
271
- name: top.unitName,
272
- mdEntry: top.md,
273
- tvdEntry: top.tvd,
274
- color: top.color,
275
- level: top.level,
276
- entryPick: top,
277
- mdExit: base.md,
278
- tvdExit: base.tvd,
279
- exitPick: base,
280
- confidenceEntry: top.confidence,
281
- confidenceExit: base.confidence,
282
- });
283
- }
284
-
285
- return pairs;
286
- }
287
-
288
- /**
289
- * Transform data for formation track
290
- * @param {Pick[]} picks picks
291
- * @param {Unit[]} stratColumn strat column
292
- */
293
- export function transformFormationData(picks: Pick[], stratColumn: Unit[]): { unitPicks: PairedPickAndUnit[]; nonUnitPicks: PickWithId[] } {
294
- const { joined, nonUnitPicks } = joinPicksAndStratColumn(picks, stratColumn);
295
- const pairs = pairJoinedPicks(joined);
296
-
297
- const itemstack = pairs
298
- .filter((d: PairedPickAndUnit) => d.mdEntry < d.mdExit)
299
- .sort((a, b) => a.mdEntry - b.mdEntry || a.level - b.level)
300
- .reverse();
301
-
302
- // flatten groups of unit picks, so that the highest level is
303
- // given presedence over lower levels for overlapping picks.
304
- const unitPicks = [];
305
- while (itemstack.length > 0) {
306
- const first = itemstack.pop();
307
- const group: PairedPickAndUnit[] = [];
308
- while (itemstack.length > 0 && itemstack[itemstack.length - 1].level > first.level) {
309
- group.push(itemstack.pop());
310
- }
311
- group.reverse();
312
- group.push(first);
313
- const arr: { from: number; to: number; itm: PairedPickAndUnit }[] = [];
314
- group.forEach((itm: PairedPickAndUnit) => {
315
- const gaps = findGaps(itm.mdEntry, itm.mdExit, arr);
316
- arr.push(...gaps.map((g) => ({ from: g[0], to: g[1], itm })));
317
- });
318
- arr.sort((a, b) => a.from - b.from);
319
- unitPicks.push(
320
- ...arr.map((d) => ({
321
- from: d.from,
322
- to: d.to,
323
- ...d.itm,
324
- })),
325
- );
326
- }
327
- return { unitPicks, nonUnitPicks };
328
- }