@bedrock-engineer/bro-xml-parser 0.2.0 → 0.4.0
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.
- package/README.md +21 -12
- package/dist/browser.d.ts +15 -5
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +7 -5
- package/dist/browser.js.map +1 -1
- package/dist/core/columns.d.ts +80 -0
- package/dist/core/columns.d.ts.map +1 -0
- package/dist/core/columns.js +100 -0
- package/dist/core/columns.js.map +1 -0
- package/dist/core/producer.d.ts +216 -0
- package/dist/core/producer.d.ts.map +1 -0
- package/dist/core/producer.js +85 -0
- package/dist/core/producer.js.map +1 -0
- package/dist/core/schema-parser.d.ts +41 -17
- package/dist/core/schema-parser.d.ts.map +1 -1
- package/dist/core/schema-parser.js +178 -73
- package/dist/core/schema-parser.js.map +1 -1
- package/dist/core/version-detector.d.ts +3 -1
- package/dist/core/version-detector.d.ts.map +1 -1
- package/dist/core/version-detector.js +37 -0
- package/dist/core/version-detector.js.map +1 -1
- package/dist/decoders/constants.d.ts +2 -0
- package/dist/decoders/constants.d.ts.map +1 -0
- package/dist/decoders/constants.js +2 -0
- package/dist/decoders/constants.js.map +1 -0
- package/dist/decoders/type-decoders.d.ts +38 -0
- package/dist/decoders/type-decoders.d.ts.map +1 -0
- package/dist/decoders/type-decoders.js +134 -0
- package/dist/decoders/type-decoders.js.map +1 -0
- package/dist/namespaces.d.ts.map +1 -1
- package/dist/namespaces.js +16 -0
- package/dist/namespaces.js.map +1 -1
- package/dist/node.d.ts +15 -5
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +7 -5
- package/dist/node.js.map +1 -1
- package/dist/parser.d.ts +69 -19
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +103 -29
- package/dist/parser.js.map +1 -1
- package/dist/producers.d.ts +36 -0
- package/dist/producers.d.ts.map +1 -0
- package/dist/producers.js +35 -0
- package/dist/producers.js.map +1 -0
- package/dist/resolvers/bhrg-resolvers.d.ts +3 -18
- package/dist/resolvers/bhrg-resolvers.d.ts.map +1 -1
- package/dist/resolvers/bhrg-resolvers.js +294 -41
- package/dist/resolvers/bhrg-resolvers.js.map +1 -1
- package/dist/resolvers/bore-resolver-utils.d.ts +21 -2
- package/dist/resolvers/bore-resolver-utils.d.ts.map +1 -1
- package/dist/resolvers/bore-resolver-utils.js +69 -22
- package/dist/resolvers/bore-resolver-utils.js.map +1 -1
- package/dist/resolvers/bore-resolvers.d.ts +34 -17
- package/dist/resolvers/bore-resolvers.d.ts.map +1 -1
- package/dist/resolvers/bore-resolvers.js +342 -175
- package/dist/resolvers/bore-resolvers.js.map +1 -1
- package/dist/resolvers/cpt-resolvers.d.ts +1 -8
- package/dist/resolvers/cpt-resolvers.d.ts.map +1 -1
- package/dist/resolvers/cpt-resolvers.js +2 -29
- package/dist/resolvers/cpt-resolvers.js.map +1 -1
- package/dist/resolvers/gld-resolvers.d.ts +30 -0
- package/dist/resolvers/gld-resolvers.d.ts.map +1 -0
- package/dist/resolvers/gld-resolvers.js +76 -0
- package/dist/resolvers/gld-resolvers.js.map +1 -0
- package/dist/resolvers/gmw-resolvers.d.ts +37 -0
- package/dist/resolvers/gmw-resolvers.d.ts.map +1 -0
- package/dist/resolvers/gmw-resolvers.js +101 -0
- package/dist/resolvers/gmw-resolvers.js.map +1 -0
- package/dist/resolvers/type-resolvers.d.ts +12 -4
- package/dist/resolvers/type-resolvers.d.ts.map +1 -1
- package/dist/resolvers/type-resolvers.js +12 -4
- package/dist/resolvers/type-resolvers.js.map +1 -1
- package/dist/resolvers.d.ts +5 -2
- package/dist/resolvers.d.ts.map +1 -1
- package/dist/resolvers.js +8 -2
- package/dist/resolvers.js.map +1 -1
- package/dist/schema-presets.d.ts +67 -16
- package/dist/schema-presets.d.ts.map +1 -1
- package/dist/schema-presets.js +51 -114
- package/dist/schema-presets.js.map +1 -1
- package/dist/schemas/bhrg-schema.d.ts +528 -9
- package/dist/schemas/bhrg-schema.d.ts.map +1 -1
- package/dist/schemas/bhrg-schema.js +330 -162
- package/dist/schemas/bhrg-schema.js.map +1 -1
- package/dist/schemas/bhrgt-analysis.d.ts +1057 -0
- package/dist/schemas/bhrgt-analysis.d.ts.map +1 -0
- package/dist/schemas/bhrgt-analysis.js +454 -0
- package/dist/schemas/bhrgt-analysis.js.map +1 -0
- package/dist/schemas/bore-schema.d.ts +773 -9
- package/dist/schemas/bore-schema.d.ts.map +1 -1
- package/dist/schemas/bore-schema.js +344 -257
- package/dist/schemas/bore-schema.js.map +1 -1
- package/dist/schemas/common-fields.d.ts +61 -0
- package/dist/schemas/common-fields.d.ts.map +1 -0
- package/dist/schemas/common-fields.js +82 -0
- package/dist/schemas/common-fields.js.map +1 -0
- package/dist/schemas/cpt-schema.d.ts +126 -9
- package/dist/schemas/cpt-schema.d.ts.map +1 -1
- package/dist/schemas/cpt-schema.js +182 -275
- package/dist/schemas/cpt-schema.js.map +1 -1
- package/dist/schemas/generated/gld.generated.d.ts +9 -0
- package/dist/schemas/generated/gld.generated.d.ts.map +1 -0
- package/dist/schemas/generated/gld.generated.js +19 -0
- package/dist/schemas/generated/gld.generated.js.map +1 -0
- package/dist/schemas/gld-schema.d.ts +92 -0
- package/dist/schemas/gld-schema.d.ts.map +1 -0
- package/dist/schemas/gld-schema.js +88 -0
- package/dist/schemas/gld-schema.js.map +1 -0
- package/dist/schemas/gmw-schema.d.ts +180 -0
- package/dist/schemas/gmw-schema.d.ts.map +1 -0
- package/dist/schemas/gmw-schema.js +131 -0
- package/dist/schemas/gmw-schema.js.map +1 -0
- package/dist/types/index.d.ts +51 -1005
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +3 -2
package/dist/types/index.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Type definitions for BRO/XML parser
|
|
3
3
|
*/
|
|
4
|
+
import type { Produced } from "../core/producer.js";
|
|
5
|
+
import type { CPT_PRODUCER } from "../schemas/cpt-schema.js";
|
|
6
|
+
import type { BORE_PRODUCER } from "../schemas/bore-schema.js";
|
|
7
|
+
import type { BHRG_PRODUCER } from "../schemas/bhrg-schema.js";
|
|
8
|
+
import type { GMW_PRODUCER } from "../schemas/gmw-schema.js";
|
|
9
|
+
import type { GLD_PRODUCER } from "../schemas/gld-schema.js";
|
|
4
10
|
/**
|
|
5
11
|
* Namespace mapping (prefix -> URI)
|
|
6
12
|
*/
|
|
@@ -21,9 +27,9 @@ export interface ParseMeta {
|
|
|
21
27
|
*/
|
|
22
28
|
schemaNamespace: string;
|
|
23
29
|
/**
|
|
24
|
-
* Data type detected (CPT, BHR-GT, BHR-G)
|
|
30
|
+
* Data type detected (CPT, BHR-GT, BHR-G, GMW, GLD)
|
|
25
31
|
*/
|
|
26
|
-
dataType: "CPT" | "BHR-GT" | "BHR-G";
|
|
32
|
+
dataType: "CPT" | "BHR-GT" | "BHR-G" | "GMW" | "GLD";
|
|
27
33
|
/**
|
|
28
34
|
* Warnings encountered during parsing
|
|
29
35
|
*
|
|
@@ -41,32 +47,6 @@ export interface XMLAdapter {
|
|
|
41
47
|
evaluateXPath(doc: Document | Node, query: string, namespaceResolver: (prefix: string | null) => string | null): Node | null;
|
|
42
48
|
evaluateXPathAll(doc: Document | Node, query: string, namespaceResolver: (prefix: string | null) => string | null): Array<Node>;
|
|
43
49
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Context passed to resolver functions
|
|
46
|
-
*/
|
|
47
|
-
export interface ResolverContext {
|
|
48
|
-
node: Node;
|
|
49
|
-
element: Node;
|
|
50
|
-
namespaces: Namespaces;
|
|
51
|
-
adapter: XMLAdapter;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Resolver function type
|
|
55
|
-
*/
|
|
56
|
-
export type ResolverFunction = (value: string | null, context: ResolverContext) => unknown;
|
|
57
|
-
/**
|
|
58
|
-
* Schema field definition
|
|
59
|
-
*/
|
|
60
|
-
export interface SchemaField {
|
|
61
|
-
xpath: string;
|
|
62
|
-
resolver?: ResolverFunction;
|
|
63
|
-
attribute?: string;
|
|
64
|
-
required?: boolean;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Schema definition (field name -> field config)
|
|
68
|
-
*/
|
|
69
|
-
export type Schema = Record<string, SchemaField>;
|
|
70
50
|
/**
|
|
71
51
|
* BRO quality regime
|
|
72
52
|
*
|
|
@@ -82,19 +62,9 @@ export interface Location {
|
|
|
82
62
|
y: number;
|
|
83
63
|
epsg: string;
|
|
84
64
|
}
|
|
85
|
-
/**
|
|
86
|
-
* Layer of material removed before CPT was performed (e.g. asphalt, gravel fill)
|
|
87
|
-
*
|
|
88
|
-
* Found in additionalInvestigation. Directly affects depth interpretation.
|
|
89
|
-
*/
|
|
90
|
-
export interface RemovedLayer {
|
|
91
|
-
sequenceNumber: number;
|
|
92
|
-
upperBoundary: number;
|
|
93
|
-
lowerBoundary: number;
|
|
94
|
-
description: string | null;
|
|
95
|
-
}
|
|
96
65
|
/**
|
|
97
66
|
* CPT measurement row (dynamic fields based on parameters)
|
|
67
|
+
* @internal
|
|
98
68
|
*/
|
|
99
69
|
export interface CPTMeasurement {
|
|
100
70
|
penetrationLength: number;
|
|
@@ -125,6 +95,7 @@ export interface CPTMeasurement {
|
|
|
125
95
|
}
|
|
126
96
|
/**
|
|
127
97
|
* Single measurement row in a dissipation test (pore pressure decay over time)
|
|
98
|
+
* @internal
|
|
128
99
|
*/
|
|
129
100
|
export interface DissipationMeasurement {
|
|
130
101
|
elapsedTime: number;
|
|
@@ -134,985 +105,38 @@ export interface DissipationMeasurement {
|
|
|
134
105
|
porePressureU3: number | null;
|
|
135
106
|
}
|
|
136
107
|
/**
|
|
137
|
-
*
|
|
108
|
+
* Complete CPT data (metadata + measurements).
|
|
138
109
|
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*/
|
|
142
|
-
export interface DissipationTest {
|
|
143
|
-
penetrationLength: number;
|
|
144
|
-
phenomenonTime: string | null;
|
|
145
|
-
measurements: Array<DissipationMeasurement>;
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Complete CPT data (metadata + measurements)
|
|
110
|
+
* Inferred from `CPT_PRODUCER`; `meta` (parse metadata) and the optional
|
|
111
|
+
* user-set `alias` are the only fields not produced from the XML.
|
|
149
112
|
*/
|
|
150
|
-
export
|
|
151
|
-
/**
|
|
152
|
-
* Metadata about the parsed document (schema version, warnings)
|
|
153
|
-
*/
|
|
113
|
+
export type CPTData = {
|
|
154
114
|
meta: ParseMeta;
|
|
155
|
-
broId: string | null;
|
|
156
|
-
/**
|
|
157
|
-
* User-defined identifier (not parsed from XML)
|
|
158
|
-
*
|
|
159
|
-
* Useful for tracking data that doesn't have a broId yet,
|
|
160
|
-
* such as during data collection or before BRO registration.
|
|
161
|
-
*
|
|
162
|
-
* @example
|
|
163
|
-
* ```typescript
|
|
164
|
-
* const cpt = parser.parseCPT(xmlString);
|
|
165
|
-
* cpt.alias = "Site A - Test 1";
|
|
166
|
-
* ```
|
|
167
|
-
*/
|
|
168
115
|
alias?: string;
|
|
169
|
-
|
|
170
|
-
* BRO quality regime
|
|
171
|
-
*
|
|
172
|
-
* - IMBRO: Strict regime (all mandatory fields required)
|
|
173
|
-
* - IMBRO/A: Relaxed regime for historical data (allows missing fields)
|
|
174
|
-
*/
|
|
175
|
-
qualityRegime: QualityRegime | null;
|
|
176
|
-
/** Party responsible for delivering the data to the BRO (bronhouder, KvK number or name) */
|
|
177
|
-
deliveryAccountableParty: string | null;
|
|
178
|
-
researchReportDate: string | null;
|
|
179
|
-
/** When the cone penetration test was physically performed in the field (om:phenomenonTime) */
|
|
180
|
-
conePenetrationTestPhenomenonTime: string | null;
|
|
181
|
-
/** When the cone penetration test result was produced (om:resultTime) */
|
|
182
|
-
conePenetrationTestResultTime: string | null;
|
|
183
|
-
deliveredLocation: Location | null;
|
|
184
|
-
standardizedLocation: Location | null;
|
|
185
|
-
/** Date horizontal position was determined */
|
|
186
|
-
horizontalPositioningDate: string | null;
|
|
187
|
-
/** Method used to determine horizontal position (e.g., "onbekend", "GNSS") */
|
|
188
|
-
horizontalPositioningMethod: string | null;
|
|
189
|
-
deliveredVerticalPositionOffset: number | null;
|
|
190
|
-
deliveredVerticalPositionDatum: string | null;
|
|
191
|
-
deliveredVerticalPositionReferencePoint: string | null;
|
|
192
|
-
/** Date vertical position was determined */
|
|
193
|
-
verticalPositioningDate: string | null;
|
|
194
|
-
/** Method used to determine vertical position (e.g., "onbekend", "waterpassingKlasse2") */
|
|
195
|
-
verticalPositioningMethod: string | null;
|
|
196
|
-
/** Delivery context (e.g., "publiekeTaak", "archiefoverdracht") */
|
|
197
|
-
deliveryContext: string | null;
|
|
198
|
-
/** Survey purpose (e.g., "waterkering", "onbekend") */
|
|
199
|
-
surveyPurpose: string | null;
|
|
200
|
-
/** Whether additional investigation was performed alongside the CPT */
|
|
201
|
-
additionalInvestigationPerformed: boolean | null;
|
|
202
|
-
cptStandard: string | null;
|
|
203
|
-
/** CPT method used (e.g., "elektrisch", "mechanisch") */
|
|
204
|
-
cptMethod: string | null;
|
|
205
|
-
/** Stop criterion for the test */
|
|
206
|
-
stopCriterion: string | null;
|
|
207
|
-
/** Azimuth orientation of the sensor (degrees from north) */
|
|
208
|
-
sensorAzimuth: number | null;
|
|
209
|
-
dissipationtestPerformed: boolean | null;
|
|
210
|
-
qualityClass: number | null;
|
|
211
|
-
predrilledDepth: number | null;
|
|
212
|
-
finalDepth: number | null;
|
|
213
|
-
groundwaterLevel: number | null;
|
|
214
|
-
/** Date of additional investigation (e.g. groundwater level measurement) */
|
|
215
|
-
investigationDate: string | null;
|
|
216
|
-
/** Site conditions at time of investigation */
|
|
217
|
-
conditions: string | null;
|
|
218
|
-
/** Description of surface at CPT location */
|
|
219
|
-
surfaceDescription: string | null;
|
|
220
|
-
/** Layers removed before CPT (e.g. asphalt, gravel fill) - affects depth interpretation */
|
|
221
|
-
removedLayers: Array<RemovedLayer>;
|
|
222
|
-
/** Date of final processing */
|
|
223
|
-
finalProcessingDate: string | null;
|
|
224
|
-
/** Whether signal processing was performed */
|
|
225
|
-
signalProcessingPerformed: boolean | null;
|
|
226
|
-
/** Whether interruption processing was performed */
|
|
227
|
-
interruptionProcessingPerformed: boolean | null;
|
|
228
|
-
/** Whether expert correction was performed */
|
|
229
|
-
expertCorrectionPerformed: boolean | null;
|
|
230
|
-
cptDescription: string | null;
|
|
231
|
-
cptType: string | null;
|
|
232
|
-
coneSurfaceArea: number | null;
|
|
233
|
-
coneDiameter: number | null;
|
|
234
|
-
coneSurfaceQuotient: number | null;
|
|
235
|
-
coneToFrictionSleeveDistance: number | null;
|
|
236
|
-
coneToFrictionSleeveSurfaceArea: number | null;
|
|
237
|
-
coneToFrictionSleeveSurfaceQuotient: number | null;
|
|
238
|
-
zlmConeResistanceBefore: number | null;
|
|
239
|
-
zlmConeResistanceAfter: number | null;
|
|
240
|
-
zlmInclinationEwBefore: number | null;
|
|
241
|
-
zlmInclinationEwAfter: number | null;
|
|
242
|
-
zlmInclinationNsBefore: number | null;
|
|
243
|
-
zlmInclinationNsAfter: number | null;
|
|
244
|
-
zlmInclinationResultantBefore: number | null;
|
|
245
|
-
zlmInclinationResultantAfter: number | null;
|
|
246
|
-
zlmLocalFrictionBefore: number | null;
|
|
247
|
-
zlmLocalFrictionAfter: number | null;
|
|
248
|
-
zlmPorePressureU1Before: number | null;
|
|
249
|
-
zlmPorePressureU2Before: number | null;
|
|
250
|
-
zlmPorePressureU3Before: number | null;
|
|
251
|
-
zlmPorePressureU1After: number | null;
|
|
252
|
-
zlmPorePressureU2After: number | null;
|
|
253
|
-
zlmPorePressureU3After: number | null;
|
|
254
|
-
/** Electrical conductivity before test (mS/m) - zero-load calibration */
|
|
255
|
-
zlmElectricalConductivityBefore: number | null;
|
|
256
|
-
/** Electrical conductivity after test (mS/m) - zero-load calibration */
|
|
257
|
-
zlmElectricalConductivityAfter: number | null;
|
|
258
|
-
data: Array<CPTMeasurement>;
|
|
259
|
-
dissipationTests: Array<DissipationTest>;
|
|
260
|
-
registrationHistory: RegistrationHistory | null;
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Grain shape properties for sand/gravel fractions
|
|
264
|
-
*/
|
|
265
|
-
export interface Grainshape {
|
|
266
|
-
/** Size fraction this shape applies to (e.g., "zand", "grind") */
|
|
267
|
-
sizeFraction: string | null;
|
|
268
|
-
/** Angularity of grains (e.g., "hoekig", "subhoekig", "afgerond") */
|
|
269
|
-
angularity: string | null;
|
|
270
|
-
/** Sphericity of grains (e.g., "bol", "plat", "langwerpig") */
|
|
271
|
-
sphericity: string | null;
|
|
272
|
-
/** Roughness of grains (e.g., "ruw", "glad") */
|
|
273
|
-
roughness: string | null;
|
|
274
|
-
}
|
|
116
|
+
} & Produced<typeof CPT_PRODUCER>;
|
|
275
117
|
/**
|
|
276
|
-
*
|
|
118
|
+
* Complete Bore data (metadata + layers).
|
|
277
119
|
*
|
|
278
|
-
*
|
|
279
|
-
|
|
280
|
-
export interface BHRGTLayer {
|
|
281
|
-
upperBoundary: number;
|
|
282
|
-
lowerBoundary: number;
|
|
283
|
-
upperBoundaryDetermination?: string | null;
|
|
284
|
-
lowerBoundaryDetermination?: string | null;
|
|
285
|
-
/** Whether the layer is anthropogenic (man-made) */
|
|
286
|
-
anthropogenic?: boolean | null;
|
|
287
|
-
geotechnicalSoilName: string;
|
|
288
|
-
/** Soil name per NEN 5104 (IMBRO/A archive data; geotechnicalSoilName is often nil there) */
|
|
289
|
-
soilNameNEN5104?: string | null;
|
|
290
|
-
/** Gravel content classification per NEN 5104 (IMBRO/A) */
|
|
291
|
-
gravelContentClassNEN5104?: string | null;
|
|
292
|
-
/** Organic matter content classification per NEN 5104 (IMBRO/A) */
|
|
293
|
-
organicMatterContentClassNEN5104?: string | null;
|
|
294
|
-
/** Tertiary soil constituent (e.g., "schelpMateriaal", "plantenresten") */
|
|
295
|
-
tertiaryConstituent?: string | null;
|
|
296
|
-
/** Soil color code */
|
|
297
|
-
color?: string;
|
|
298
|
-
/** Dispersed inhomogeneity presence */
|
|
299
|
-
dispersedInhomogeneity?: boolean | null;
|
|
300
|
-
/** Organic matter content classification */
|
|
301
|
-
organicMatterContentClass?: string | null;
|
|
302
|
-
/** Carbonate content classification */
|
|
303
|
-
carbonateContentClass?: string | null;
|
|
304
|
-
/** Sand median grain size classification */
|
|
305
|
-
sandMedianClass?: string | null;
|
|
306
|
-
/** Gravel median grain size classification (e.g., "fijn", "middelgrof") */
|
|
307
|
-
gravelMedianClass?: string | null;
|
|
308
|
-
/** Depositional characteristic of the soil (e.g., "nietBepaald") */
|
|
309
|
-
geotechnicalDepositionalCharacteristic?: string | null;
|
|
310
|
-
/** Interbedding of other material in the soil (e.g., "kleiWeinigDikkeLaminae") */
|
|
311
|
-
interbedding?: string | null;
|
|
312
|
-
/** Grain shape properties (for sand/gravel) */
|
|
313
|
-
grainshape?: Grainshape;
|
|
314
|
-
/** Whether the layer boundary is slanted */
|
|
315
|
-
slant?: boolean | null;
|
|
316
|
-
/** Whether the layer is bedded/stratified */
|
|
317
|
-
bedded?: boolean | null;
|
|
318
|
-
/** Bedding type of the layer (e.g., "dikGelamineerd") */
|
|
319
|
-
bedding?: string | null;
|
|
320
|
-
/** Whether the layer is a composite layer */
|
|
321
|
-
compositeLayer?: boolean | null;
|
|
322
|
-
/** Human activity type observed in the layer (e.g., "nietBepaald") */
|
|
323
|
-
activityType?: string | null;
|
|
324
|
-
/** Whether the internal structure is intact (undisturbed) */
|
|
325
|
-
internalStructureIntact?: boolean | null;
|
|
326
|
-
/** Whether the soil is mixed */
|
|
327
|
-
mixed?: boolean | null;
|
|
328
|
-
/** Whether the soil has mottled appearance */
|
|
329
|
-
mottled?: boolean | null;
|
|
330
|
-
/** Consistency of fine-grained soils (e.g., "slap", "stevig", "vast") */
|
|
331
|
-
fineSoilConsistency?: string | null;
|
|
332
|
-
/** Consistency of organic soils */
|
|
333
|
-
organicSoilConsistency?: string | null;
|
|
334
|
-
/** Texture of organic soils (e.g., "vezeligGrof", "vezeligFijn") */
|
|
335
|
-
organicSoilTexture?: string | null;
|
|
336
|
-
/** Tensile strength of peat */
|
|
337
|
-
peatTensileStrength?: string | null;
|
|
338
|
-
}
|
|
339
|
-
/**
|
|
340
|
-
* Complete Bore data (metadata + layers)
|
|
120
|
+
* Represents BHR-GT-BMB (Boormonsterbeschrijving — visual/textural description);
|
|
121
|
+
* laboratory analysis (BHR-GT-BMA) is the optional `analysis` field.
|
|
341
122
|
*
|
|
342
|
-
*
|
|
343
|
-
*
|
|
123
|
+
* Inferred from `BORE_PRODUCER`; `meta` (parse metadata) and the optional
|
|
124
|
+
* user-set `alias` are the only fields not produced from the XML.
|
|
344
125
|
*/
|
|
345
|
-
export
|
|
346
|
-
/**
|
|
347
|
-
* Metadata about the parsed document (schema version, warnings)
|
|
348
|
-
*/
|
|
126
|
+
export type BHRGTData = {
|
|
349
127
|
meta: ParseMeta;
|
|
350
|
-
broId: string | null;
|
|
351
|
-
/**
|
|
352
|
-
* User-defined identifier (not parsed from XML)
|
|
353
|
-
*
|
|
354
|
-
* Useful for tracking data that doesn't have a broId yet,
|
|
355
|
-
* such as during data collection or before BRO registration.
|
|
356
|
-
*
|
|
357
|
-
* @example
|
|
358
|
-
* ```typescript
|
|
359
|
-
* const bore = parser.parseBHRGT(xmlString);
|
|
360
|
-
* bore.alias = "Borehole 7 - North Field";
|
|
361
|
-
* ```
|
|
362
|
-
*/
|
|
363
128
|
alias?: string;
|
|
364
|
-
|
|
365
|
-
* BRO quality regime
|
|
366
|
-
*
|
|
367
|
-
* - IMBRO: Strict regime (all mandatory fields required)
|
|
368
|
-
* - IMBRO/A: Relaxed regime for historical data (allows missing fields)
|
|
369
|
-
*/
|
|
370
|
-
qualityRegime: QualityRegime | null;
|
|
371
|
-
/** Party responsible for delivering the data to the BRO (bronhouder, KvK number or name) */
|
|
372
|
-
deliveryAccountableParty: string | null;
|
|
373
|
-
researchReportDate: string | null;
|
|
374
|
-
deliveredLocation: Location | null;
|
|
375
|
-
standardizedLocation: Location | null;
|
|
376
|
-
deliveredVerticalPositionOffset: number | null;
|
|
377
|
-
deliveredVerticalPositionDatum: string | null;
|
|
378
|
-
deliveredVerticalPositionReferencePoint: string | null;
|
|
379
|
-
/** Soil use at the site (e.g., "akker", "grasland", "geenBodemgebruik") */
|
|
380
|
-
soilUse: string | null;
|
|
381
|
-
descriptionProcedure: string | null;
|
|
382
|
-
groundwaterLevel: number | null;
|
|
383
|
-
/** Mean highest groundwater level in m relative to local reference (GHG) */
|
|
384
|
-
meanHighestGroundwaterLevel: number | null;
|
|
385
|
-
/** Mean lowest groundwater level in m relative to local reference (GLG) */
|
|
386
|
-
meanLowestGroundwaterLevel: number | null;
|
|
387
|
-
boreRockReached: boolean | null;
|
|
388
|
-
finalBoreDepth: number | null;
|
|
389
|
-
finalSampleDepth: number | null;
|
|
390
|
-
boreHoleCompleted: boolean | null;
|
|
391
|
-
/** Start date of the boring operation */
|
|
392
|
-
boringStartDate: string | null;
|
|
393
|
-
/** End date of the boring operation */
|
|
394
|
-
boringEndDate: string | null;
|
|
395
|
-
/** Boring procedure standard used (e.g., "EN1997d2v2007") */
|
|
396
|
-
boringProcedure: string | null;
|
|
397
|
-
/** Boring technique used (e.g., "gestoken", "mechanischGestoken") */
|
|
398
|
-
boringTechnique: string | null;
|
|
399
|
-
/** Whether the trajectory was excavated */
|
|
400
|
-
trajectoryExcavated: boolean | null;
|
|
401
|
-
/** Whether the subsurface is contaminated */
|
|
402
|
-
subsurfaceContaminated: boolean | null;
|
|
403
|
-
/** Stop criterion for boring */
|
|
404
|
-
stopCriterion: string | null;
|
|
405
|
-
/** Whether a flushing medium was used during boring */
|
|
406
|
-
flushingMediumUsed: boolean | null;
|
|
407
|
-
/** Whether a temporary casing was used during boring */
|
|
408
|
-
temporaryCasingUsed: boolean | null;
|
|
409
|
-
/** Site preparation before boring (e.g., "geen") */
|
|
410
|
-
preparation: string | null;
|
|
411
|
-
/** Type of sampler used */
|
|
412
|
-
samplerType: string | null;
|
|
413
|
-
/** Sampling procedure standard */
|
|
414
|
-
samplingProcedure: string | null;
|
|
415
|
-
/** Sampling method used */
|
|
416
|
-
samplingMethod: string | null;
|
|
417
|
-
/** Sampling quality assessment */
|
|
418
|
-
samplingQuality: string | null;
|
|
419
|
-
/** Whether the sample was orientated */
|
|
420
|
-
orientatedSampled: boolean | null;
|
|
421
|
-
/** Sample container diameter in mm */
|
|
422
|
-
sampleContainerDiameter: number | null;
|
|
423
|
-
/** Sample container length in mm */
|
|
424
|
-
sampleContainerLength: number | null;
|
|
425
|
-
/** Piston presence in sampler */
|
|
426
|
-
pistonPresent: boolean | null;
|
|
427
|
-
/** Core catcher presence */
|
|
428
|
-
coreCatcherPresent: boolean | null;
|
|
429
|
-
/** Stocking used in sampling */
|
|
430
|
-
stockingUsed: boolean | null;
|
|
431
|
-
/** Lubrication fluid used */
|
|
432
|
-
lubricationFluidUsed: boolean | null;
|
|
433
|
-
/** Right-angled cutting shoe */
|
|
434
|
-
rightAngledCuttingShoe: boolean | null;
|
|
435
|
-
/** Cutting shoe inside diameter in mm */
|
|
436
|
-
cuttingShoeInsideDiameter: number | null;
|
|
437
|
-
/** Cutting shoe outside diameter in mm */
|
|
438
|
-
cuttingShoeOutsideDiameter: number | null;
|
|
439
|
-
/** Taper angle of cutting shoe */
|
|
440
|
-
taperAngle: number | null;
|
|
441
|
-
/** Whether the borehole log was checked */
|
|
442
|
-
boreholeLogChecked: boolean | null;
|
|
443
|
-
/** Description quality assessment */
|
|
444
|
-
descriptionQuality: string | null;
|
|
445
|
-
/** Description location (field/lab) */
|
|
446
|
-
descriptionLocation: string | null;
|
|
447
|
-
/** Date of description report */
|
|
448
|
-
descriptionReportDate: string | null;
|
|
449
|
-
/** Described material type */
|
|
450
|
-
describedMaterial: string | null;
|
|
451
|
-
/** Whether sampling was continuous */
|
|
452
|
-
continuouslySampled: boolean | null;
|
|
453
|
-
/** Sample moistness during description */
|
|
454
|
-
sampleMoistness: string | null;
|
|
455
|
-
data: Array<BHRGTLayer>;
|
|
456
|
-
analysis?: BoreholeSampleAnalysis;
|
|
457
|
-
/** Array of bored intervals with technique and diameter */
|
|
458
|
-
boredIntervals: Array<BoredInterval>;
|
|
459
|
-
/** Array of sampled intervals with method and quality */
|
|
460
|
-
sampledIntervals: Array<SampledInterval>;
|
|
461
|
-
/** Array of completed/backfilled intervals */
|
|
462
|
-
completedIntervals: Array<CompletedInterval>;
|
|
463
|
-
/** Array of intervals not described (with reason) */
|
|
464
|
-
notDescribedIntervals: Array<NotDescribedInterval>;
|
|
465
|
-
/** BRO registration history */
|
|
466
|
-
registrationHistory: RegistrationHistory | null;
|
|
467
|
-
/** Report history with events */
|
|
468
|
-
reportHistory: ReportHistory | null;
|
|
469
|
-
/** Delivery context (e.g., "publiekeTaak") */
|
|
470
|
-
deliveryContext: string | null;
|
|
471
|
-
/** Survey purpose (e.g., "bouwwerk") */
|
|
472
|
-
surveyPurpose: string | null;
|
|
473
|
-
/** Discipline (e.g., "geotechniek") */
|
|
474
|
-
discipline: string | null;
|
|
475
|
-
/** Survey procedure standard (e.g., "EN1997d2v2007") */
|
|
476
|
-
surveyProcedure: string | null;
|
|
477
|
-
/** Whether site characteristics were determined */
|
|
478
|
-
siteCharacteristicDetermined: boolean | null;
|
|
479
|
-
}
|
|
129
|
+
} & Produced<typeof BORE_PRODUCER>;
|
|
480
130
|
/**
|
|
481
|
-
* BHR-G (Geological Borehole)
|
|
131
|
+
* Complete BHR-G (Geological Borehole) data (metadata + layers).
|
|
482
132
|
*
|
|
483
|
-
*
|
|
484
|
-
|
|
485
|
-
export interface BHRGLayer {
|
|
486
|
-
upperBoundary: number;
|
|
487
|
-
lowerBoundary: number;
|
|
488
|
-
upperBoundaryDetermination?: string | null;
|
|
489
|
-
lowerBoundaryDetermination?: string | null;
|
|
490
|
-
soilNameNEN5104: string;
|
|
491
|
-
color?: string;
|
|
492
|
-
/** Whether the layer is anthropogenic (man-made) - uses string codes in BHR-G (ja/nee/onbekend) */
|
|
493
|
-
anthropogenic?: string | null;
|
|
494
|
-
/** Whether the layer is rooted - uses string codes in BHR-G (ja/nee/onbekend) */
|
|
495
|
-
rooted?: string | null;
|
|
496
|
-
organicMatterContentClassNEN5104?: string | null;
|
|
497
|
-
gravelContentClass?: string | null;
|
|
498
|
-
carbonateContentClass?: string | null;
|
|
499
|
-
sandMedianClass?: string | null;
|
|
500
|
-
}
|
|
501
|
-
/**
|
|
502
|
-
* Complete BHR-G (Geological Borehole) data (metadata + layers)
|
|
133
|
+
* Inferred from `BHRG_PRODUCER`; `meta` (parse metadata) and the optional
|
|
134
|
+
* user-set `alias` are the only fields not produced from the XML.
|
|
503
135
|
*/
|
|
504
|
-
export
|
|
505
|
-
/**
|
|
506
|
-
* Metadata about the parsed document (schema version, warnings)
|
|
507
|
-
*/
|
|
136
|
+
export type BHRGData = {
|
|
508
137
|
meta: ParseMeta;
|
|
509
|
-
broId: string | null;
|
|
510
|
-
/**
|
|
511
|
-
* User-defined identifier (not parsed from XML)
|
|
512
|
-
*/
|
|
513
138
|
alias?: string;
|
|
514
|
-
|
|
515
|
-
* BRO quality regime
|
|
516
|
-
*
|
|
517
|
-
* - IMBRO: Strict regime (all mandatory fields required)
|
|
518
|
-
* - IMBRO/A: Relaxed regime for historical data (allows missing fields)
|
|
519
|
-
*/
|
|
520
|
-
qualityRegime: QualityRegime | null;
|
|
521
|
-
researchReportDate: string | null;
|
|
522
|
-
deliveredLocation: Location | null;
|
|
523
|
-
standardizedLocation: Location | null;
|
|
524
|
-
deliveredVerticalPositionOffset: number | null;
|
|
525
|
-
deliveredVerticalPositionDatum: string | null;
|
|
526
|
-
deliveredVerticalPositionReferencePoint: string | null;
|
|
527
|
-
descriptionProcedure: string | null;
|
|
528
|
-
boreRockReached: boolean | null;
|
|
529
|
-
finalBoreDepth: number | null;
|
|
530
|
-
finalSampleDepth: number | null;
|
|
531
|
-
boreHoleCompleted: string | null;
|
|
532
|
-
/** Start date of the boring operation */
|
|
533
|
-
boringStartDate: string | null;
|
|
534
|
-
/** End date of the boring operation */
|
|
535
|
-
boringEndDate: string | null;
|
|
536
|
-
/** Boring procedure standard used */
|
|
537
|
-
boringProcedure: string | null;
|
|
538
|
-
/** Boring technique used */
|
|
539
|
-
boringTechnique: string | null;
|
|
540
|
-
/** Whether the trajectory was excavated */
|
|
541
|
-
trajectoryExcavated: boolean | null;
|
|
542
|
-
/** Whether the subsurface is contaminated */
|
|
543
|
-
subsurfaceContaminated: boolean | null;
|
|
544
|
-
/** Stop criterion for boring */
|
|
545
|
-
stopCriterion: string | null;
|
|
546
|
-
/** Sampling procedure standard */
|
|
547
|
-
samplingProcedure: string | null;
|
|
548
|
-
/** Sampling method used */
|
|
549
|
-
samplingMethod: string | null;
|
|
550
|
-
/** Sampling quality assessment */
|
|
551
|
-
samplingQuality: string | null;
|
|
552
|
-
/** Description quality assessment */
|
|
553
|
-
descriptionQuality: string | null;
|
|
554
|
-
/** Described samples quality */
|
|
555
|
-
describedSamplesQuality: string | null;
|
|
556
|
-
/** Description location (field/lab) */
|
|
557
|
-
descriptionLocation: string | null;
|
|
558
|
-
/** Date of description report */
|
|
559
|
-
descriptionReportDate: string | null;
|
|
560
|
-
/** Described material type */
|
|
561
|
-
describedMaterial: string | null;
|
|
562
|
-
/** Whether sampling was continuous */
|
|
563
|
-
continuouslySampled: boolean | null;
|
|
564
|
-
/** Sample moistness during description */
|
|
565
|
-
sampleMoistness: string | null;
|
|
566
|
-
data: Array<BHRGLayer>;
|
|
567
|
-
/** Array of bored intervals with technique and diameter */
|
|
568
|
-
boredIntervals: Array<BoredInterval>;
|
|
569
|
-
/** Array of sampled intervals with method and quality */
|
|
570
|
-
sampledIntervals: Array<SampledInterval>;
|
|
571
|
-
/** BRO registration history */
|
|
572
|
-
registrationHistory: RegistrationHistory | null;
|
|
573
|
-
/** Report history with events */
|
|
574
|
-
reportHistory: ReportHistory | null;
|
|
575
|
-
/** Delivery context (e.g., "archiefoverdracht") */
|
|
576
|
-
deliveryContext: string | null;
|
|
577
|
-
/** Survey purpose */
|
|
578
|
-
surveyPurpose: string | null;
|
|
579
|
-
/** Discipline (e.g., "geologie") */
|
|
580
|
-
discipline: string | null;
|
|
581
|
-
/** Survey procedure standard */
|
|
582
|
-
surveyProcedure: string | null;
|
|
583
|
-
/** NITG code (legacy identifier) */
|
|
584
|
-
nitgCode: string | null;
|
|
585
|
-
}
|
|
586
|
-
/**
|
|
587
|
-
* Bored interval - records boring technique and diameter at specific depth ranges
|
|
588
|
-
*/
|
|
589
|
-
export interface BoredInterval {
|
|
590
|
-
beginDepth: number;
|
|
591
|
-
endDepth: number;
|
|
592
|
-
boringTechnique: string | null;
|
|
593
|
-
boredDiameter: number | null;
|
|
594
|
-
}
|
|
595
|
-
/**
|
|
596
|
-
* Sampler equipment details within a sampled interval
|
|
597
|
-
*/
|
|
598
|
-
export interface SamplerDetails {
|
|
599
|
-
samplerType: string | null;
|
|
600
|
-
sampleContainerDiameter: number | null;
|
|
601
|
-
sampleContainerLength: number | null;
|
|
602
|
-
cuttingShoeInsideDiameter: number | null;
|
|
603
|
-
cuttingShoeOutsideDiameter: number | null;
|
|
604
|
-
stockingUsed: boolean | null;
|
|
605
|
-
rightAngledCuttingShoe: boolean | null;
|
|
606
|
-
taperAngle: number | null;
|
|
607
|
-
lubricationFluidUsed: boolean | null;
|
|
608
|
-
coreCatcherPresent: boolean | null;
|
|
609
|
-
pistonPresent: boolean | null;
|
|
610
|
-
}
|
|
611
|
-
/**
|
|
612
|
-
* Sampled interval - records sampling method and quality at specific depth ranges
|
|
613
|
-
*/
|
|
614
|
-
export interface SampledInterval {
|
|
615
|
-
beginDepth: number;
|
|
616
|
-
endDepth: number;
|
|
617
|
-
preTreatment: string | null;
|
|
618
|
-
samplingMethod: string | null;
|
|
619
|
-
samplingQuality: string | null;
|
|
620
|
-
orientatedSampled: boolean | null;
|
|
621
|
-
sampler?: SamplerDetails;
|
|
622
|
-
}
|
|
623
|
-
/**
|
|
624
|
-
* Completed interval - records how the borehole was completed/backfilled
|
|
625
|
-
*/
|
|
626
|
-
export interface CompletedInterval {
|
|
627
|
-
beginDepth: number;
|
|
628
|
-
endDepth: number;
|
|
629
|
-
permanentCasingPresent: boolean | null;
|
|
630
|
-
backfillMaterial: string | null;
|
|
631
|
-
backfillMaterialWashed: boolean | null;
|
|
632
|
-
backfillMaterialCertified: boolean | null;
|
|
633
|
-
}
|
|
634
|
-
/**
|
|
635
|
-
* Not described interval - records depth ranges that were not described and why
|
|
636
|
-
*/
|
|
637
|
-
export interface NotDescribedInterval {
|
|
638
|
-
beginDepth: number;
|
|
639
|
-
endDepth: number;
|
|
640
|
-
noDescriptionReason: string | null;
|
|
641
|
-
}
|
|
642
|
-
/**
|
|
643
|
-
* Intermediate event in report history
|
|
644
|
-
*/
|
|
645
|
-
export interface IntermediateEvent {
|
|
646
|
-
eventName: string | null;
|
|
647
|
-
eventDate: string | null;
|
|
648
|
-
}
|
|
649
|
-
/**
|
|
650
|
-
* Registration history - BRO administrative registration information
|
|
651
|
-
*/
|
|
652
|
-
export interface RegistrationHistory {
|
|
653
|
-
objectRegistrationTime: string | null;
|
|
654
|
-
registrationStatus: string | null;
|
|
655
|
-
registrationCompletionTime: string | null;
|
|
656
|
-
/** Time of the latest correction to the registered object */
|
|
657
|
-
latestCorrectionTime: string | null;
|
|
658
|
-
corrected: boolean | null;
|
|
659
|
-
underReview: boolean | null;
|
|
660
|
-
deregistered: boolean | null;
|
|
661
|
-
reregistered: boolean | null;
|
|
662
|
-
}
|
|
663
|
-
/**
|
|
664
|
-
* Report history - records when and how data was reported
|
|
665
|
-
*/
|
|
666
|
-
export interface ReportHistory {
|
|
667
|
-
reportStartDate: string | null;
|
|
668
|
-
reportEndDate: string | null;
|
|
669
|
-
intermediateEvents: Array<IntermediateEvent>;
|
|
670
|
-
}
|
|
671
|
-
/**
|
|
672
|
-
* BHR-GT-BMA (Borehole Sample Analysis) - Laboratory Determinations
|
|
673
|
-
*/
|
|
674
|
-
/**
|
|
675
|
-
* Water content determination result
|
|
676
|
-
*/
|
|
677
|
-
export interface WaterContentDetermination {
|
|
678
|
-
determinationProcedure: string | null;
|
|
679
|
-
determinationMethod: string | null;
|
|
680
|
-
sampleMoistness: string | null;
|
|
681
|
-
removedMaterial: string | null;
|
|
682
|
-
waterContent: number | null;
|
|
683
|
-
dryingTemperature: string | null;
|
|
684
|
-
dryingPeriod: string | null;
|
|
685
|
-
saltCorrectionMethod: string | null;
|
|
686
|
-
}
|
|
687
|
-
/**
|
|
688
|
-
* Volumetric mass density (bulk density) determination result
|
|
689
|
-
*/
|
|
690
|
-
export interface VolumetricMassDensityDetermination {
|
|
691
|
-
determinationProcedure: string | null;
|
|
692
|
-
determinationMethod: string | null;
|
|
693
|
-
sampleMoistness: string | null;
|
|
694
|
-
volumetricMassDensity: number | null;
|
|
695
|
-
}
|
|
696
|
-
/**
|
|
697
|
-
* Organic matter content determination result
|
|
698
|
-
*/
|
|
699
|
-
export interface OrganicMatterContentDetermination {
|
|
700
|
-
determinationProcedure: string | null;
|
|
701
|
-
determinationMethod: string | null;
|
|
702
|
-
removedMaterial: string | null;
|
|
703
|
-
/** Whether a lutum (clay fraction) correction was applied to the result */
|
|
704
|
-
lutumCorrectionApplied: boolean | null;
|
|
705
|
-
organicMatterContent: number | null;
|
|
706
|
-
}
|
|
707
|
-
/**
|
|
708
|
-
* Carbonate content determination result
|
|
709
|
-
*/
|
|
710
|
-
export interface CarbonateContentDetermination {
|
|
711
|
-
determinationProcedure: string | null;
|
|
712
|
-
determinationMethod: string | null;
|
|
713
|
-
removedMaterial: string | null;
|
|
714
|
-
carbonateContent: number | null;
|
|
715
|
-
}
|
|
716
|
-
/**
|
|
717
|
-
* Volumetric mass density of solids determination result
|
|
718
|
-
*/
|
|
719
|
-
export interface VolumetricMassDensityOfSolidsDetermination {
|
|
720
|
-
determinationProcedure: string | null;
|
|
721
|
-
determinationMethod: string | null;
|
|
722
|
-
liquidUsed: string | null;
|
|
723
|
-
/** Volume of the sample container used (e.g., "100ml") */
|
|
724
|
-
sampleContainerVolume: string | null;
|
|
725
|
-
volumetricMassDensityOfSolids: number | null;
|
|
726
|
-
}
|
|
727
|
-
/**
|
|
728
|
-
* Particle size distribution determination result
|
|
729
|
-
* Contains detailed grain size fractions
|
|
730
|
-
*/
|
|
731
|
-
export interface ParticleSizeDistributionDetermination {
|
|
732
|
-
determinationProcedure: string | null;
|
|
733
|
-
determinationMethod: string | null;
|
|
734
|
-
fractionDistribution: string | null;
|
|
735
|
-
dispersionMethod: string | null;
|
|
736
|
-
removedMaterial: string | null;
|
|
737
|
-
equivalentMassDeterminationMethod: string | null;
|
|
738
|
-
equivalentMass: number | null;
|
|
739
|
-
fractionSmaller63um: number | null;
|
|
740
|
-
fractionLarger63um: number | null;
|
|
741
|
-
fraction0to2um?: number | null;
|
|
742
|
-
/** 2–32 µm fraction — only present in the coarser standardDistributionFractionSmaller63um group */
|
|
743
|
-
fraction2to32um?: number | null;
|
|
744
|
-
fraction2to4um?: number | null;
|
|
745
|
-
fraction4to8um?: number | null;
|
|
746
|
-
fraction8to16um?: number | null;
|
|
747
|
-
fraction16to32um?: number | null;
|
|
748
|
-
fraction32to50um?: number | null;
|
|
749
|
-
fraction50to63um?: number | null;
|
|
750
|
-
fraction63to90um?: number | null;
|
|
751
|
-
fraction90to125um?: number | null;
|
|
752
|
-
fraction125to180um?: number | null;
|
|
753
|
-
fraction180to250um?: number | null;
|
|
754
|
-
fraction250to355um?: number | null;
|
|
755
|
-
fraction355to500um?: number | null;
|
|
756
|
-
fraction500to710um?: number | null;
|
|
757
|
-
fraction710to1000um?: number | null;
|
|
758
|
-
fraction1000to1400um?: number | null;
|
|
759
|
-
fraction1400umto2mm?: number | null;
|
|
760
|
-
fraction2to4mm?: number | null;
|
|
761
|
-
fraction4to8mm?: number | null;
|
|
762
|
-
fraction8to16mm?: number | null;
|
|
763
|
-
fraction16to31_5mm?: number | null;
|
|
764
|
-
fraction31_5to63mm?: number | null;
|
|
765
|
-
fractionLarger63mm?: number | null;
|
|
766
|
-
}
|
|
767
|
-
/**
|
|
768
|
-
* Plasticity data point for Atterberg limits test
|
|
769
|
-
* Used to construct the plasticity curve (Casagrande)
|
|
770
|
-
*/
|
|
771
|
-
export interface PlasticityAtSpecificWaterContent {
|
|
772
|
-
waterContent: number;
|
|
773
|
-
numberOfFalls: number;
|
|
774
|
-
/** Cone penetration depth in mm (fall-cone method) */
|
|
775
|
-
penetrationDepth?: number | null;
|
|
776
|
-
}
|
|
777
|
-
/**
|
|
778
|
-
* Consistency limits determination (Atterberg limits)
|
|
779
|
-
* Used to determine soil plasticity characteristics
|
|
780
|
-
*/
|
|
781
|
-
export interface ConsistencyLimitsDetermination {
|
|
782
|
-
determinationProcedure: string | null;
|
|
783
|
-
determinationMethod: string | null;
|
|
784
|
-
fractionLarger500um: number | null;
|
|
785
|
-
usedMedium: string | null;
|
|
786
|
-
performanceIrregularity: string | null;
|
|
787
|
-
/** Fall-cone apparatus type used (e.g., "zweedseConus30graden") */
|
|
788
|
-
conusType: string | null;
|
|
789
|
-
liquidLimit: number | null;
|
|
790
|
-
plasticLimit: number | null;
|
|
791
|
-
plasticityIndex: number | null;
|
|
792
|
-
plasticityAtSpecificWaterContent: Array<PlasticityAtSpecificWaterContent>;
|
|
793
|
-
}
|
|
794
|
-
/**
|
|
795
|
-
* Height measurement at specific time during settlement test
|
|
796
|
-
* Used to construct compression/consolidation curves
|
|
797
|
-
*/
|
|
798
|
-
export interface HeightAtSpecificTime {
|
|
799
|
-
time: number;
|
|
800
|
-
height: number;
|
|
801
|
-
}
|
|
802
|
-
/**
|
|
803
|
-
* Stress/strain measurement at a specific time during a settlement step
|
|
804
|
-
* Columns of the StressAtSpecificSettlement time-series (oedometer/consolidation).
|
|
805
|
-
*/
|
|
806
|
-
export interface StressAtSpecificSettlement {
|
|
807
|
-
elapsedTime: number;
|
|
808
|
-
verticalStrain: number;
|
|
809
|
-
excessPoreWaterPressure: number | null;
|
|
810
|
-
verticalEffectiveStress: number | null;
|
|
811
|
-
horizontalEffectiveStress: number | null;
|
|
812
|
-
}
|
|
813
|
-
/**
|
|
814
|
-
* Single loading step in settlement characteristics test
|
|
815
|
-
* Represents one stress increment in oedometer/consolidation test
|
|
816
|
-
*/
|
|
817
|
-
export interface SettlementDeterminationStep {
|
|
818
|
-
stepNumber: number;
|
|
819
|
-
wetPerformed: boolean | null;
|
|
820
|
-
swellObserved: boolean | null;
|
|
821
|
-
strainPoint24hours: number | null;
|
|
822
|
-
stepType: string | null;
|
|
823
|
-
verticalStress: number | null;
|
|
824
|
-
heightChangeDuringSettlement: Array<HeightAtSpecificTime>;
|
|
825
|
-
/** Stress/strain time-series for the step (alternative to heightChangeDuringSettlement) */
|
|
826
|
-
stressChangeDuringSettlement?: Array<StressAtSpecificSettlement>;
|
|
827
|
-
}
|
|
828
|
-
/**
|
|
829
|
-
* Saturation stage preceding compression in the oedometer/settlement test
|
|
830
|
-
* Documents how the specimen was saturated before loading.
|
|
831
|
-
*/
|
|
832
|
-
export interface SaturationStageAtCompression {
|
|
833
|
-
porousDiscWet: boolean | null;
|
|
834
|
-
usedMedium: string | null;
|
|
835
|
-
backPressure: number | null;
|
|
836
|
-
constantHeight: boolean | null;
|
|
837
|
-
specimenHeightAfterwards: number | null;
|
|
838
|
-
disturbanceInduced: boolean | null;
|
|
839
|
-
}
|
|
840
|
-
/**
|
|
841
|
-
* Settlement characteristics determination (oedometer/consolidation test)
|
|
842
|
-
* Used to determine soil compressibility and consolidation behavior
|
|
843
|
-
*/
|
|
844
|
-
export interface SettlementCharacteristicsDetermination {
|
|
845
|
-
determinationProcedure: string | null;
|
|
846
|
-
determinationMethod: string | null;
|
|
847
|
-
ringDiameter: number | null;
|
|
848
|
-
sampleMoistness: string | null;
|
|
849
|
-
filterPaperUsed: boolean | null;
|
|
850
|
-
temperature: number | null;
|
|
851
|
-
wallFrictionCorrectionMethod: string | null;
|
|
852
|
-
apparatusDeformationApplied: boolean | null;
|
|
853
|
-
bearingFrictionCorrectionApplied: boolean | null;
|
|
854
|
-
irregularResult: boolean | null;
|
|
855
|
-
/** Saturation stage performed before compression (optional) */
|
|
856
|
-
saturationStageAtCompression?: SaturationStageAtCompression;
|
|
857
|
-
determinationSteps: Array<SettlementDeterminationStep>;
|
|
858
|
-
}
|
|
859
|
-
/**
|
|
860
|
-
* Permeability at specific density measurement
|
|
861
|
-
*/
|
|
862
|
-
export interface SaturatedPermeabilityAtSpecificDensity {
|
|
863
|
-
dryVolumetricMassDensity: number | null;
|
|
864
|
-
saturatedPermeability: number | null;
|
|
865
|
-
}
|
|
866
|
-
/**
|
|
867
|
-
* Saturated permeability determination (hydraulic conductivity)
|
|
868
|
-
* Used to determine water flow characteristics through soil
|
|
869
|
-
*/
|
|
870
|
-
export interface SaturatedPermeabilityDetermination {
|
|
871
|
-
determinationProcedure: string | null;
|
|
872
|
-
determinationMethod: string | null;
|
|
873
|
-
specimenMade: boolean | null;
|
|
874
|
-
saturatedWithCO2: boolean | null;
|
|
875
|
-
verticallyDetermined: boolean | null;
|
|
876
|
-
currentDownwards: boolean | null;
|
|
877
|
-
usedMedium: string | null;
|
|
878
|
-
waterDegassed: boolean | null;
|
|
879
|
-
temperature: number | null;
|
|
880
|
-
maximumGradient: number | null;
|
|
881
|
-
saturatedPermeabilityAtSpecificDensity: Array<SaturatedPermeabilityAtSpecificDensity>;
|
|
882
|
-
}
|
|
883
|
-
/**
|
|
884
|
-
* Membrane correction data for triaxial test
|
|
885
|
-
* Corrects for membrane stiffness effects during testing
|
|
886
|
-
*/
|
|
887
|
-
export interface MembraneCorrection {
|
|
888
|
-
correctionMethod: string | null;
|
|
889
|
-
thickness: number | null;
|
|
890
|
-
stiffnessClass: string | null;
|
|
891
|
-
}
|
|
892
|
-
/**
|
|
893
|
-
* Drainage strip correction data for triaxial test
|
|
894
|
-
* Corrects for drainage strip effects during testing
|
|
895
|
-
*/
|
|
896
|
-
export interface DrainageStripCorrection {
|
|
897
|
-
correctionMethod: string | null;
|
|
898
|
-
orientation: string | null;
|
|
899
|
-
coverage: string | null;
|
|
900
|
-
}
|
|
901
|
-
/**
|
|
902
|
-
* Saturation stage data for triaxial test
|
|
903
|
-
* Documents sample saturation process before testing
|
|
904
|
-
*/
|
|
905
|
-
export interface SaturationStageAtLoading {
|
|
906
|
-
porousDiscWet: boolean | null;
|
|
907
|
-
porousDiscRough: boolean | null;
|
|
908
|
-
usedMedium: string | null;
|
|
909
|
-
constantHeight: boolean | null;
|
|
910
|
-
cellPressureAutomaticallyControlled: boolean | null;
|
|
911
|
-
backPressure: number | null;
|
|
912
|
-
effectivePressure: number | null;
|
|
913
|
-
skemptonBCoefficient: number | null;
|
|
914
|
-
disturbanceInduced: boolean | null;
|
|
915
|
-
}
|
|
916
|
-
/**
|
|
917
|
-
* Volume change measurement at specific time during consolidation
|
|
918
|
-
*/
|
|
919
|
-
export interface VolumeChangeAtSpecificTime {
|
|
920
|
-
time: number;
|
|
921
|
-
volumeChange: number;
|
|
922
|
-
}
|
|
923
|
-
/**
|
|
924
|
-
* Consolidation stage data for triaxial test
|
|
925
|
-
* Documents specimen consolidation under specified stresses
|
|
926
|
-
*/
|
|
927
|
-
export interface ConsolidationStageAtLoading {
|
|
928
|
-
drainageTwoSided: boolean | null;
|
|
929
|
-
consolidationMethod: string | null;
|
|
930
|
-
verticalConsolidationStress: number | null;
|
|
931
|
-
horizontalConsolidationStress: number | null;
|
|
932
|
-
verticalStrain: number | null;
|
|
933
|
-
lateralEarthPressureCoefficient: number | null;
|
|
934
|
-
volumeChangeDuringConsolidation: Array<VolumeChangeAtSpecificTime>;
|
|
935
|
-
}
|
|
936
|
-
/**
|
|
937
|
-
* Shear stress measurement at specific strain during loading
|
|
938
|
-
* Used to construct stress-strain curves for soil strength analysis
|
|
939
|
-
*/
|
|
940
|
-
export interface ShearStressAtSpecificStrain {
|
|
941
|
-
time: number;
|
|
942
|
-
axialStrain: number;
|
|
943
|
-
deviatorStress: number;
|
|
944
|
-
cellPressure: number;
|
|
945
|
-
porePressure?: number | null;
|
|
946
|
-
volumeChange?: number | null;
|
|
947
|
-
}
|
|
948
|
-
/**
|
|
949
|
-
* Reconstituted/remoulded specimen preparation for a triaxial loading test
|
|
950
|
-
* Present when the specimen was made in the lab rather than taken intact.
|
|
951
|
-
*/
|
|
952
|
-
export interface SpecimenMadeForLoading {
|
|
953
|
-
makingMethod: string | null;
|
|
954
|
-
dryVolumetricMassDensity: number | null;
|
|
955
|
-
}
|
|
956
|
-
/**
|
|
957
|
-
* Load stage data for triaxial test
|
|
958
|
-
* Documents the shearing/loading phase of the test
|
|
959
|
-
*/
|
|
960
|
-
export interface LoadStage {
|
|
961
|
-
deformationRate: number | null;
|
|
962
|
-
specimenShape: string | null;
|
|
963
|
-
shearStressChangeDuringLoading: Array<ShearStressAtSpecificStrain>;
|
|
964
|
-
}
|
|
965
|
-
/**
|
|
966
|
-
* Shear stress change during loading determination (triaxial/direct shear test)
|
|
967
|
-
* ISO 17892-9 (triaxial) or ISO 17892-10 (direct shear)
|
|
968
|
-
*
|
|
969
|
-
* Measures soil shear strength and stress-strain behavior under controlled loading.
|
|
970
|
-
* Common test types:
|
|
971
|
-
* - CU: Consolidated Undrained (belastenGeconsolideerdOngedraineerd)
|
|
972
|
-
* - CD: Consolidated Drained (belastenGeconsolideerdGedraineerd)
|
|
973
|
-
* - UU: Unconsolidated Undrained (belastenOngeconsolideerdOngedraineerd)
|
|
974
|
-
*/
|
|
975
|
-
export interface ShearStressChangeDuringLoadingDetermination {
|
|
976
|
-
determinationProcedure: string | null;
|
|
977
|
-
determinationMethod: string | null;
|
|
978
|
-
specimenDisturbed: boolean | null;
|
|
979
|
-
specimenTrimmed: boolean | null;
|
|
980
|
-
sampleMoistness: string | null;
|
|
981
|
-
beginDiameter: number | null;
|
|
982
|
-
beginHeight: number | null;
|
|
983
|
-
topCapTiltable: boolean | null;
|
|
984
|
-
filterPaperUsed: boolean | null;
|
|
985
|
-
drainageStripsUsed: boolean | null;
|
|
986
|
-
membraneSaturatedBefore: boolean | null;
|
|
987
|
-
apparatusDeformationApplied: boolean | null;
|
|
988
|
-
cellDeformationApplied: boolean | null;
|
|
989
|
-
stopCriterion: string | null;
|
|
990
|
-
membraneCorrection?: MembraneCorrection;
|
|
991
|
-
drainageStripCorrection?: DrainageStripCorrection;
|
|
992
|
-
madeSpecimenForLoading?: SpecimenMadeForLoading;
|
|
993
|
-
saturationStageAtLoading?: SaturationStageAtLoading;
|
|
994
|
-
consolidationStageAtLoading?: ConsolidationStageAtLoading;
|
|
995
|
-
loadStage?: LoadStage;
|
|
996
|
-
}
|
|
997
|
-
/**
|
|
998
|
-
* Maximum undrained shear strength determination (vane shear test)
|
|
999
|
-
* ISO 14688-2 - Measures peak undrained shear strength using hand vane
|
|
1000
|
-
*/
|
|
1001
|
-
export interface MaximumUndrainedShearStrengthDetermination {
|
|
1002
|
-
determinationProcedure: string | null;
|
|
1003
|
-
determinationMethod: string | null;
|
|
1004
|
-
determinationDiameter: string | null;
|
|
1005
|
-
verticallyDetermined: boolean | null;
|
|
1006
|
-
sampleMoistness: string | null;
|
|
1007
|
-
maximumUndrainedShearStrength: number | null;
|
|
1008
|
-
}
|
|
1009
|
-
/**
|
|
1010
|
-
* Height measurement at specific time during consolidation in horizontal deformation test
|
|
1011
|
-
*/
|
|
1012
|
-
export interface HeightAtSpecificConsolidationTime {
|
|
1013
|
-
time: number;
|
|
1014
|
-
height: number;
|
|
1015
|
-
}
|
|
1016
|
-
/**
|
|
1017
|
-
* Single consolidation step in horizontal deformation test
|
|
1018
|
-
*/
|
|
1019
|
-
export interface ConsolidationStepAtHorizontalDeformation {
|
|
1020
|
-
stepNumber: number | null;
|
|
1021
|
-
verticalStress: number | null;
|
|
1022
|
-
heightChangeDuringConsolidation: Array<HeightAtSpecificConsolidationTime>;
|
|
1023
|
-
}
|
|
1024
|
-
/**
|
|
1025
|
-
* Consolidation stage for horizontal deformation (direct shear) test
|
|
1026
|
-
*/
|
|
1027
|
-
export interface ConsolidationStageAtHorizontalDeformation {
|
|
1028
|
-
pedestalFixed: boolean | null;
|
|
1029
|
-
consolidationSteps: Array<ConsolidationStepAtHorizontalDeformation>;
|
|
1030
|
-
}
|
|
1031
|
-
/**
|
|
1032
|
-
* Shear stress measurement at specific deformation during horizontal shearing
|
|
1033
|
-
*/
|
|
1034
|
-
export interface HorizontalDeformationDataPoint {
|
|
1035
|
-
time: number;
|
|
1036
|
-
horizontalDisplacement: number;
|
|
1037
|
-
shearStress: number;
|
|
1038
|
-
verticalStress: number;
|
|
1039
|
-
heightChange?: number | null;
|
|
1040
|
-
}
|
|
1041
|
-
/**
|
|
1042
|
-
* Shear stage for horizontal deformation (direct shear) test
|
|
1043
|
-
*/
|
|
1044
|
-
export interface ShearStageAtHorizontalDeformation {
|
|
1045
|
-
deformationRate: number | null;
|
|
1046
|
-
activeHeightControl: boolean | null;
|
|
1047
|
-
shearStressChangeDuringHorizontalDeformation: Array<HorizontalDeformationDataPoint>;
|
|
1048
|
-
}
|
|
1049
|
-
/**
|
|
1050
|
-
* Shear stress change during horizontal deformation determination (direct shear test)
|
|
1051
|
-
* ASTM D6528 - Measures soil shear strength under horizontal deformation
|
|
1052
|
-
*/
|
|
1053
|
-
export interface ShearStressChangeDuringHorizontalDeformationDetermination {
|
|
1054
|
-
determinationProcedure: string | null;
|
|
1055
|
-
determinationMethod: string | null;
|
|
1056
|
-
specimenDisturbed: boolean | null;
|
|
1057
|
-
sampleMoistness: string | null;
|
|
1058
|
-
specimenWaterSaturated: boolean | null;
|
|
1059
|
-
porousDiscWet: boolean | null;
|
|
1060
|
-
drained: boolean | null;
|
|
1061
|
-
lateralSupport: string | null;
|
|
1062
|
-
beginDiameter: number | null;
|
|
1063
|
-
beginHeight: number | null;
|
|
1064
|
-
stopCriterion: string | null;
|
|
1065
|
-
membraneCorrectionApplied: boolean | null;
|
|
1066
|
-
apparatusDeformationApplied: boolean | null;
|
|
1067
|
-
bearingFrictionCorrectionApplied: boolean | null;
|
|
1068
|
-
consolidationStageAtHorizontalDeformation?: ConsolidationStageAtHorizontalDeformation;
|
|
1069
|
-
shearStage?: ShearStageAtHorizontalDeformation;
|
|
1070
|
-
}
|
|
1071
|
-
/**
|
|
1072
|
-
* Investigated interval with laboratory determinations
|
|
1073
|
-
* Each interval represents a depth range with analysis results
|
|
1074
|
-
*/
|
|
1075
|
-
export interface InvestigatedInterval {
|
|
1076
|
-
beginDepth: number;
|
|
1077
|
-
endDepth: number;
|
|
1078
|
-
sampleQuality: string | null;
|
|
1079
|
-
analysisType: string | null;
|
|
1080
|
-
waterContentDetermined: boolean | null;
|
|
1081
|
-
organicMatterContentDetermined: boolean | null;
|
|
1082
|
-
carbonateContentDetermined: boolean | null;
|
|
1083
|
-
volumetricMassDensityDetermined: boolean | null;
|
|
1084
|
-
volumetricMassDensitySolidsDetermined: boolean | null;
|
|
1085
|
-
described: boolean | null;
|
|
1086
|
-
waterContentDetermination?: WaterContentDetermination;
|
|
1087
|
-
organicMatterContentDetermination?: OrganicMatterContentDetermination;
|
|
1088
|
-
carbonateContentDetermination?: CarbonateContentDetermination;
|
|
1089
|
-
volumetricMassDensityDetermination?: VolumetricMassDensityDetermination;
|
|
1090
|
-
volumetricMassDensityOfSolidsDetermination?: VolumetricMassDensityOfSolidsDetermination;
|
|
1091
|
-
particleSizeDistributionDetermination?: ParticleSizeDistributionDetermination;
|
|
1092
|
-
consistencyLimitsDetermination?: ConsistencyLimitsDetermination;
|
|
1093
|
-
settlementCharacteristicsDetermination?: SettlementCharacteristicsDetermination;
|
|
1094
|
-
saturatedPermeabilityDetermination?: SaturatedPermeabilityDetermination;
|
|
1095
|
-
shearStressChangeDuringLoadingDetermination?: Array<ShearStressChangeDuringLoadingDetermination>;
|
|
1096
|
-
maximumUndrainedShearStrengthDetermination?: MaximumUndrainedShearStrengthDetermination;
|
|
1097
|
-
shearStressChangeDuringHorizontalDeformationDetermination?: Array<ShearStressChangeDuringHorizontalDeformationDetermination>;
|
|
1098
|
-
}
|
|
1099
|
-
/**
|
|
1100
|
-
* Borehole sample analysis data (BHR-GT-BMA)
|
|
1101
|
-
* Contains laboratory test results for soil samples
|
|
1102
|
-
*/
|
|
1103
|
-
export interface BoreholeSampleAnalysis {
|
|
1104
|
-
analysisReportDate: string | null;
|
|
1105
|
-
analysisProcedure: string | null;
|
|
1106
|
-
investigatedIntervals: Array<InvestigatedInterval>;
|
|
1107
|
-
}
|
|
1108
|
-
/**
|
|
1109
|
-
* Configuration for determination type parsing in registry pattern
|
|
1110
|
-
*/
|
|
1111
|
-
export interface DeterminationConfig<T> {
|
|
1112
|
-
xpath: string;
|
|
1113
|
-
propertyName: keyof InvestigatedInterval;
|
|
1114
|
-
parser: (node: Node, adapter: XMLAdapter, namespaces: Namespaces) => T;
|
|
1115
|
-
}
|
|
139
|
+
} & Produced<typeof BHRG_PRODUCER>;
|
|
1116
140
|
/**
|
|
1117
141
|
* Union type for all BRO data types
|
|
1118
142
|
*
|
|
@@ -1124,11 +148,33 @@ export interface DeterminationConfig<T> {
|
|
|
1124
148
|
* }
|
|
1125
149
|
* ```
|
|
1126
150
|
*/
|
|
1127
|
-
export type BROData = CPTData | BHRGTData | BHRGData;
|
|
151
|
+
export type BROData = CPTData | BHRGTData | BHRGData | GMWData | GLDData;
|
|
1128
152
|
/**
|
|
1129
153
|
* BRO file type identifier
|
|
1130
154
|
*/
|
|
1131
|
-
export type BROFileType = "CPT" | "BHR-GT" | "BHR-G";
|
|
155
|
+
export type BROFileType = "CPT" | "BHR-GT" | "BHR-G" | "GMW" | "GLD";
|
|
156
|
+
/**
|
|
157
|
+
* Complete GLD (groundwater level research) data.
|
|
158
|
+
*
|
|
159
|
+
* Inferred from `GLD_PRODUCER`; `meta` (parse metadata) and the optional
|
|
160
|
+
* user-set `alias` are the only fields not produced from the XML.
|
|
161
|
+
*/
|
|
162
|
+
export type GLDData = {
|
|
163
|
+
meta: ParseMeta;
|
|
164
|
+
alias?: string;
|
|
165
|
+
} & Produced<typeof GLD_PRODUCER>;
|
|
166
|
+
/**
|
|
167
|
+
* Complete GMW (groundwater monitoring well) data.
|
|
168
|
+
*
|
|
169
|
+
* The registration object carries well-level metadata plus one or more
|
|
170
|
+
* monitoring tubes. Inferred from `GMW_PRODUCER`; `meta` (parse
|
|
171
|
+
* metadata) and the optional user-set `alias` are the only fields not produced
|
|
172
|
+
* from the XML.
|
|
173
|
+
*/
|
|
174
|
+
export type GMWData = {
|
|
175
|
+
meta: ParseMeta;
|
|
176
|
+
alias?: string;
|
|
177
|
+
} & Produced<typeof GMW_PRODUCER>;
|
|
1132
178
|
/**
|
|
1133
179
|
* Parse error with context
|
|
1134
180
|
*/
|