@welldot/core 0.1.1 → 0.2.3
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/LICENSE +76 -53
- package/README.md +142 -48
- package/dist/index.cjs +878 -30
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4948 -107
- package/dist/index.d.ts +4948 -107
- package/dist/index.js +836 -29
- package/dist/index.js.map +1 -1
- package/docs/profiles/.gitkeep +0 -0
- package/docs/reference/fgdc-textures.md +380 -0
- package/docs/schema/v1/.gitkeep +0 -0
- package/docs/schema/v2/profiles/.gitkeep +0 -0
- package/docs/schema/v2/well.schema.json +954 -0
- package/{well-specifications.md → docs/spec/v1/well-format.md} +160 -95
- package/docs/spec/v2/format-reference.md +534 -0
- package/docs/spec/v2/interoperability.md +177 -0
- package/docs/spec/v2/object-schemas.md +657 -0
- package/docs/spec/v2/overview.md +85 -0
- package/package.json +7 -3
|
@@ -65,22 +65,22 @@ A `.well` file is a JSON object with the following top-level structure:
|
|
|
65
65
|
|
|
66
66
|
## Top-level Fields
|
|
67
67
|
|
|
68
|
-
| Field | Type | Required | Description
|
|
69
|
-
|
|
70
|
-
| `version` | integer | yes | Format version. Must be `1` for this spec.
|
|
71
|
-
| `well_type` | string | yes | Classification of the well. See vocabulary below
|
|
72
|
-
| `name` | string | no | Well name or local identifier.
|
|
73
|
-
| `well_driller` | string | no | Name of the drilling company or individual.
|
|
74
|
-
| `construction_date` | string | no | ISO 8601 date of well completion (YYYY-MM-DD).
|
|
75
|
-
| `lat` | number | no | Latitude in decimal degrees (WGS84).
|
|
76
|
-
| `lng` | number | no | Longitude in decimal degrees (WGS84).
|
|
77
|
-
| `elevation` | number | no | Ground elevation above sea level in meters.
|
|
78
|
-
| `obs` | string | no | Free-text observations about the well.
|
|
68
|
+
| Field | Type | Required | Description |
|
|
69
|
+
| ------------------- | ------- | -------- | ------------------------------------------------- |
|
|
70
|
+
| `version` | integer | yes | Format version. Must be `1` for this spec. |
|
|
71
|
+
| `well_type` | string | yes | Classification of the well. See vocabulary below. |
|
|
72
|
+
| `name` | string | no | Well name or local identifier. |
|
|
73
|
+
| `well_driller` | string | no | Name of the drilling company or individual. |
|
|
74
|
+
| `construction_date` | string | no | ISO 8601 date of well completion (YYYY-MM-DD). |
|
|
75
|
+
| `lat` | number | no | Latitude in decimal degrees (WGS84). |
|
|
76
|
+
| `lng` | number | no | Longitude in decimal degrees (WGS84). |
|
|
77
|
+
| `elevation` | number | no | Ground elevation above sea level in meters. |
|
|
78
|
+
| `obs` | string | no | Free-text observations about the well. |
|
|
79
79
|
|
|
80
80
|
### `well_type` — Recommended values
|
|
81
81
|
|
|
82
82
|
| Value | Description |
|
|
83
|
-
|
|
83
|
+
| ---------------------- | ---------------------------------------------- |
|
|
84
84
|
| `tubular` | Conventional rotary or percussion drilled well |
|
|
85
85
|
| `artesian` | Free-flowing artesian well |
|
|
86
86
|
| `hand_dug` | Manually excavated well or cistern |
|
|
@@ -97,11 +97,11 @@ The `well_type` field accepts any string. The values above are the recommended v
|
|
|
97
97
|
|
|
98
98
|
Represents a drilled interval of the borehole. Multiple entries describe a telescoping borehole with different diameters at different depth ranges.
|
|
99
99
|
|
|
100
|
-
| Field | Type | Required | Description
|
|
101
|
-
|
|
102
|
-
| `from` | number | yes | Start depth in meters.
|
|
103
|
-
| `to` | number | yes | End depth in meters.
|
|
104
|
-
| `diameter` | number | yes | Borehole diameter in millimeters.
|
|
100
|
+
| Field | Type | Required | Description |
|
|
101
|
+
| ----------------- | ------ | -------- | -------------------------------------------------------- |
|
|
102
|
+
| `from` | number | yes | Start depth in meters. |
|
|
103
|
+
| `to` | number | yes | End depth in meters. |
|
|
104
|
+
| `diameter` | number | yes | Borehole diameter in millimeters. |
|
|
105
105
|
| `drilling_method` | string | no | Method used (e.g. `rotary`, `percussion`, `cable_tool`). |
|
|
106
106
|
|
|
107
107
|
```json
|
|
@@ -114,12 +114,12 @@ Represents a drilled interval of the borehole. Multiple entries describe a teles
|
|
|
114
114
|
|
|
115
115
|
Steel or plastic casing installed inside the borehole.
|
|
116
116
|
|
|
117
|
-
| Field | Type | Required | Description
|
|
118
|
-
|
|
119
|
-
| `from` | number | yes | Start depth in meters.
|
|
120
|
-
| `to` | number | yes | End depth in meters.
|
|
117
|
+
| Field | Type | Required | Description |
|
|
118
|
+
| ---------- | ------ | -------- | ------------------------------------------------------------------- |
|
|
119
|
+
| `from` | number | yes | Start depth in meters. |
|
|
120
|
+
| `to` | number | yes | End depth in meters. |
|
|
121
121
|
| `type` | string | yes | Casing material. Recommended: `steel`, `pvc`, `hdpe`, `fiberglass`. |
|
|
122
|
-
| `diameter` | number | yes | Casing outer diameter in millimeters
|
|
122
|
+
| `diameter` | number | yes | Casing outer diameter in millimeters. |
|
|
123
123
|
|
|
124
124
|
```json
|
|
125
125
|
{ "from": 0, "to": 60, "type": "steel", "diameter": 200 }
|
|
@@ -131,13 +131,13 @@ Steel or plastic casing installed inside the borehole.
|
|
|
131
131
|
|
|
132
132
|
A transition piece connecting two casing or screen sections of different diameters.
|
|
133
133
|
|
|
134
|
-
| Field | Type | Required | Description
|
|
135
|
-
|
|
136
|
-
| `from` | number | yes | Start depth in meters.
|
|
137
|
-
| `to` | number | yes | End depth in meters.
|
|
138
|
-
| `diam_from` | number | yes | Diameter at the top of the reducer in mm
|
|
139
|
-
| `diam_to` | number | yes | Diameter at the bottom of the reducer in mm
|
|
140
|
-
| `type` | string | yes | Reducer type (e.g. `conical`, `stepped`)
|
|
134
|
+
| Field | Type | Required | Description |
|
|
135
|
+
| ----------- | ------ | -------- | -------------------------------------------- |
|
|
136
|
+
| `from` | number | yes | Start depth in meters. |
|
|
137
|
+
| `to` | number | yes | End depth in meters. |
|
|
138
|
+
| `diam_from` | number | yes | Diameter at the top of the reducer in mm. |
|
|
139
|
+
| `diam_to` | number | yes | Diameter at the bottom of the reducer in mm. |
|
|
140
|
+
| `type` | string | yes | Reducer type (e.g. `conical`, `stepped`). |
|
|
141
141
|
|
|
142
142
|
```json
|
|
143
143
|
{ "from": 58, "to": 60, "diam_from": 200, "diam_to": 150, "type": "conical" }
|
|
@@ -149,16 +149,22 @@ A transition piece connecting two casing or screen sections of different diamete
|
|
|
149
149
|
|
|
150
150
|
Slotted or wire-wound screen section that allows water to enter the well.
|
|
151
151
|
|
|
152
|
-
| Field | Type | Required | Description
|
|
153
|
-
|
|
154
|
-
| `from` | number | yes | Start depth in meters.
|
|
155
|
-
| `to` | number | yes | End depth in meters.
|
|
152
|
+
| Field | Type | Required | Description |
|
|
153
|
+
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------- |
|
|
154
|
+
| `from` | number | yes | Start depth in meters. |
|
|
155
|
+
| `to` | number | yes | End depth in meters. |
|
|
156
156
|
| `type` | string | yes | Screen type. Recommended: `wire_wound`, `bridge_slot`, `louvered`, `pvc_slotted`. |
|
|
157
|
-
| `diameter` | number | yes | Screen outer diameter in millimeters.
|
|
158
|
-
| `screen_slot_mm` | number | yes | Slot opening size in millimeters.
|
|
157
|
+
| `diameter` | number | yes | Screen outer diameter in millimeters. |
|
|
158
|
+
| `screen_slot_mm` | number | yes | Slot opening size in millimeters. |
|
|
159
159
|
|
|
160
160
|
```json
|
|
161
|
-
{
|
|
161
|
+
{
|
|
162
|
+
"from": 60,
|
|
163
|
+
"to": 80,
|
|
164
|
+
"type": "wire_wound",
|
|
165
|
+
"diameter": 150,
|
|
166
|
+
"screen_slot_mm": 0.5
|
|
167
|
+
}
|
|
162
168
|
```
|
|
163
169
|
|
|
164
170
|
---
|
|
@@ -167,11 +173,11 @@ Slotted or wire-wound screen section that allows water to enter the well.
|
|
|
167
173
|
|
|
168
174
|
Outer protective casing installed near the surface, typically to prevent surface contamination.
|
|
169
175
|
|
|
170
|
-
| Field | Type | Required | Description
|
|
171
|
-
|
|
172
|
-
| `from` | number | yes | Start depth in meters.
|
|
173
|
-
| `to` | number | yes | End depth in meters.
|
|
174
|
-
| `diameter` | number | yes | Casing outer diameter in millimeters.
|
|
176
|
+
| Field | Type | Required | Description |
|
|
177
|
+
| ---------- | ------ | -------- | ------------------------------------- |
|
|
178
|
+
| `from` | number | yes | Start depth in meters. |
|
|
179
|
+
| `to` | number | yes | End depth in meters. |
|
|
180
|
+
| `diameter` | number | yes | Casing outer diameter in millimeters. |
|
|
175
181
|
|
|
176
182
|
```json
|
|
177
183
|
{ "from": 0, "to": 3, "diameter": 300 }
|
|
@@ -183,16 +189,22 @@ Outer protective casing installed near the surface, typically to prevent surface
|
|
|
183
189
|
|
|
184
190
|
Material placed in the annular space between the casing and the borehole wall.
|
|
185
191
|
|
|
186
|
-
| Field | Type | Required | Description
|
|
187
|
-
|
|
188
|
-
| `from` | number | yes | Start depth in meters.
|
|
189
|
-
| `to` | number | yes | End depth in meters.
|
|
190
|
-
| `type` | string | yes | Either `gravel_pack` or `seal`.
|
|
191
|
-
| `diameter` | number | yes | Outer diameter of the filled annulus in mm.
|
|
192
|
-
| `description` | string | yes | Material description (e.g. grain size, material)
|
|
192
|
+
| Field | Type | Required | Description |
|
|
193
|
+
| ------------- | ------ | -------- | ------------------------------------------------- |
|
|
194
|
+
| `from` | number | yes | Start depth in meters. |
|
|
195
|
+
| `to` | number | yes | End depth in meters. |
|
|
196
|
+
| `type` | string | yes | Either `gravel_pack` or `seal`. |
|
|
197
|
+
| `diameter` | number | yes | Outer diameter of the filled annulus in mm. |
|
|
198
|
+
| `description` | string | yes | Material description (e.g. grain size, material). |
|
|
193
199
|
|
|
194
200
|
```json
|
|
195
|
-
{
|
|
201
|
+
{
|
|
202
|
+
"from": 60,
|
|
203
|
+
"to": 80,
|
|
204
|
+
"type": "gravel_pack",
|
|
205
|
+
"diameter": 250,
|
|
206
|
+
"description": "Seixo 2-4mm"
|
|
207
|
+
}
|
|
196
208
|
```
|
|
197
209
|
|
|
198
210
|
---
|
|
@@ -201,12 +213,12 @@ Material placed in the annular space between the casing and the borehole wall.
|
|
|
201
213
|
|
|
202
214
|
The concrete pad installed at ground level (depth 0) around the wellhead. Dimensions are in meters.
|
|
203
215
|
|
|
204
|
-
| Field | Type | Required | Description
|
|
205
|
-
|
|
216
|
+
| Field | Type | Required | Description |
|
|
217
|
+
| ----------- | ------ | -------- | ----------------------------------------------------- |
|
|
206
218
|
| `type` | string | yes | Pad shape (e.g. `square`, `rectangular`, `circular`). |
|
|
207
|
-
| `width` | number | yes | Width in meters.
|
|
208
|
-
| `thickness` | number | yes | Thickness in meters.
|
|
209
|
-
| `length` | number | yes | Length in meters.
|
|
219
|
+
| `width` | number | yes | Width in meters. |
|
|
220
|
+
| `thickness` | number | yes | Thickness in meters. |
|
|
221
|
+
| `length` | number | yes | Length in meters. |
|
|
210
222
|
|
|
211
223
|
```json
|
|
212
224
|
{ "type": "square", "width": 1.0, "thickness": 0.15, "length": 1.0 }
|
|
@@ -218,15 +230,15 @@ The concrete pad installed at ground level (depth 0) around the wellhead. Dimens
|
|
|
218
230
|
|
|
219
231
|
Geological description of a depth interval.
|
|
220
232
|
|
|
221
|
-
| Field | Type | Required | Description
|
|
222
|
-
|
|
223
|
-
| `from` | number | yes | Start depth in meters.
|
|
224
|
-
| `to` | number | yes | End depth in meters.
|
|
225
|
-
| `description` | string | yes | Free-text geological description.
|
|
226
|
-
| `color` | string | yes | Representative color as a CSS hex value.
|
|
233
|
+
| Field | Type | Required | Description |
|
|
234
|
+
| --------------- | ------ | -------- | --------------------------------------------------------------------------------------- |
|
|
235
|
+
| `from` | number | yes | Start depth in meters. |
|
|
236
|
+
| `to` | number | yes | End depth in meters. |
|
|
237
|
+
| `description` | string | yes | Free-text geological description. |
|
|
238
|
+
| `color` | string | yes | Representative color as a CSS hex value. |
|
|
227
239
|
| `fgdc_texture` | string | yes | Texture code per the FGDC Digital Cartographic Standard for Geologic Map Symbolization. |
|
|
228
|
-
| `geologic_unit` | string | yes | Name of the stratigraphic or geologic unit.
|
|
229
|
-
| `aquifer_unit` | string | yes | Aquifer classification (e.g. `freático`, `confinado`, `fraturado`).
|
|
240
|
+
| `geologic_unit` | string | yes | Name of the stratigraphic or geologic unit. |
|
|
241
|
+
| `aquifer_unit` | string | yes | Aquifer classification (e.g. `freático`, `confinado`, `fraturado`). |
|
|
230
242
|
|
|
231
243
|
```json
|
|
232
244
|
{
|
|
@@ -246,17 +258,24 @@ Geological description of a depth interval.
|
|
|
246
258
|
|
|
247
259
|
A discrete fracture or fracture zone intersected by the borehole.
|
|
248
260
|
|
|
249
|
-
| Field | Type | Required | Description
|
|
250
|
-
|
|
251
|
-
| `depth` | number | yes | Depth of the fracture in meters.
|
|
252
|
-
| `water_intake` | boolean | yes | Whether the fracture produces water.
|
|
253
|
-
| `description` | string | yes | Free-text description.
|
|
254
|
-
| `swarm` | boolean | yes | Whether this fracture belongs to a swarm (closely spaced set)
|
|
255
|
-
| `azimuth` | number | yes | Azimuth in degrees from geographic north (0–360).
|
|
256
|
-
| `dip` | number | yes | Dip angle in degrees from horizontal (0–90).
|
|
261
|
+
| Field | Type | Required | Description |
|
|
262
|
+
| -------------- | ------- | -------- | -------------------------------------------------------------- |
|
|
263
|
+
| `depth` | number | yes | Depth of the fracture in meters. |
|
|
264
|
+
| `water_intake` | boolean | yes | Whether the fracture produces water. |
|
|
265
|
+
| `description` | string | yes | Free-text description. |
|
|
266
|
+
| `swarm` | boolean | yes | Whether this fracture belongs to a swarm (closely spaced set). |
|
|
267
|
+
| `azimuth` | number | yes | Azimuth in degrees from geographic north (0–360). |
|
|
268
|
+
| `dip` | number | yes | Dip angle in degrees from horizontal (0–90). |
|
|
257
269
|
|
|
258
270
|
```json
|
|
259
|
-
{
|
|
271
|
+
{
|
|
272
|
+
"depth": 45.2,
|
|
273
|
+
"water_intake": true,
|
|
274
|
+
"description": "Fratura aberta",
|
|
275
|
+
"swarm": false,
|
|
276
|
+
"azimuth": 120,
|
|
277
|
+
"dip": 35
|
|
278
|
+
}
|
|
260
279
|
```
|
|
261
280
|
|
|
262
281
|
---
|
|
@@ -265,12 +284,12 @@ A discrete fracture or fracture zone intersected by the borehole.
|
|
|
265
284
|
|
|
266
285
|
A cavity or void zone intersected by the borehole.
|
|
267
286
|
|
|
268
|
-
| Field | Type | Required | Description
|
|
269
|
-
|
|
270
|
-
| `from` | number | yes | Start depth in meters.
|
|
271
|
-
| `to` | number | yes | End depth in meters.
|
|
272
|
-
| `water_intake` | boolean | yes | Whether the cave produces water.
|
|
273
|
-
| `description` | string | yes | Free-text description.
|
|
287
|
+
| Field | Type | Required | Description |
|
|
288
|
+
| -------------- | ------- | -------- | -------------------------------- |
|
|
289
|
+
| `from` | number | yes | Start depth in meters. |
|
|
290
|
+
| `to` | number | yes | End depth in meters. |
|
|
291
|
+
| `water_intake` | boolean | yes | Whether the cave produces water. |
|
|
292
|
+
| `description` | string | yes | Free-text description. |
|
|
274
293
|
|
|
275
294
|
```json
|
|
276
295
|
{ "from": 50, "to": 52, "water_intake": false, "description": "Caverna seca" }
|
|
@@ -296,32 +315,58 @@ A cavity or void zone intersected by the borehole.
|
|
|
296
315
|
{ "from": 0, "to": 80, "diameter": 250, "drilling_method": "rotary" }
|
|
297
316
|
],
|
|
298
317
|
|
|
299
|
-
"well_case": [
|
|
300
|
-
{ "from": 0, "to": 60, "type": "steel", "diameter": 200 }
|
|
301
|
-
],
|
|
318
|
+
"well_case": [{ "from": 0, "to": 60, "type": "steel", "diameter": 200 }],
|
|
302
319
|
|
|
303
320
|
"reduction": [
|
|
304
|
-
{
|
|
321
|
+
{
|
|
322
|
+
"from": 58,
|
|
323
|
+
"to": 60,
|
|
324
|
+
"diam_from": 200,
|
|
325
|
+
"diam_to": 150,
|
|
326
|
+
"type": "conical"
|
|
327
|
+
}
|
|
305
328
|
],
|
|
306
329
|
|
|
307
330
|
"well_screen": [
|
|
308
|
-
{
|
|
331
|
+
{
|
|
332
|
+
"from": 60,
|
|
333
|
+
"to": 80,
|
|
334
|
+
"type": "wire_wound",
|
|
335
|
+
"diameter": 150,
|
|
336
|
+
"screen_slot_mm": 0.5
|
|
337
|
+
}
|
|
309
338
|
],
|
|
310
339
|
|
|
311
|
-
"surface_case": [
|
|
312
|
-
{ "from": 0, "to": 3, "diameter": 300 }
|
|
313
|
-
],
|
|
340
|
+
"surface_case": [{ "from": 0, "to": 3, "diameter": 300 }],
|
|
314
341
|
|
|
315
342
|
"hole_fill": [
|
|
316
|
-
{
|
|
317
|
-
|
|
343
|
+
{
|
|
344
|
+
"from": 60,
|
|
345
|
+
"to": 80,
|
|
346
|
+
"type": "gravel_pack",
|
|
347
|
+
"diameter": 250,
|
|
348
|
+
"description": "Seixo 2-4mm"
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"from": 3,
|
|
352
|
+
"to": 60,
|
|
353
|
+
"type": "seal",
|
|
354
|
+
"diameter": 250,
|
|
355
|
+
"description": "Cimento"
|
|
356
|
+
}
|
|
318
357
|
],
|
|
319
358
|
|
|
320
|
-
"cement_pad": {
|
|
359
|
+
"cement_pad": {
|
|
360
|
+
"type": "square",
|
|
361
|
+
"width": 1.0,
|
|
362
|
+
"thickness": 0.15,
|
|
363
|
+
"length": 1.0
|
|
364
|
+
},
|
|
321
365
|
|
|
322
366
|
"lithology": [
|
|
323
367
|
{
|
|
324
|
-
"from": 0,
|
|
368
|
+
"from": 0,
|
|
369
|
+
"to": 20,
|
|
325
370
|
"description": "Areia fina amarelada",
|
|
326
371
|
"color": "#f5deb3",
|
|
327
372
|
"fgdc_texture": "sand",
|
|
@@ -329,7 +374,8 @@ A cavity or void zone intersected by the borehole.
|
|
|
329
374
|
"aquifer_unit": "freático"
|
|
330
375
|
},
|
|
331
376
|
{
|
|
332
|
-
"from": 20,
|
|
377
|
+
"from": 20,
|
|
378
|
+
"to": 80,
|
|
333
379
|
"description": "Granito fraturado cinza",
|
|
334
380
|
"color": "#a9a9a9",
|
|
335
381
|
"fgdc_texture": "granite",
|
|
@@ -339,12 +385,31 @@ A cavity or void zone intersected by the borehole.
|
|
|
339
385
|
],
|
|
340
386
|
|
|
341
387
|
"fractures": [
|
|
342
|
-
{
|
|
343
|
-
|
|
388
|
+
{
|
|
389
|
+
"depth": 45.2,
|
|
390
|
+
"water_intake": true,
|
|
391
|
+
"description": "Fratura aberta",
|
|
392
|
+
"swarm": false,
|
|
393
|
+
"azimuth": 120,
|
|
394
|
+
"dip": 35
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
"depth": 62.0,
|
|
398
|
+
"water_intake": false,
|
|
399
|
+
"description": "Fratura de cisalhamento",
|
|
400
|
+
"swarm": true,
|
|
401
|
+
"azimuth": 90,
|
|
402
|
+
"dip": 70
|
|
403
|
+
}
|
|
344
404
|
],
|
|
345
405
|
|
|
346
406
|
"caves": [
|
|
347
|
-
{
|
|
407
|
+
{
|
|
408
|
+
"from": 50,
|
|
409
|
+
"to": 52,
|
|
410
|
+
"water_intake": false,
|
|
411
|
+
"description": "Caverna seca"
|
|
412
|
+
}
|
|
348
413
|
]
|
|
349
414
|
}
|
|
350
415
|
```
|
|
@@ -356,7 +421,7 @@ A cavity or void zone intersected by the borehole.
|
|
|
356
421
|
The `version` field must always be present and is an integer starting at `1`. Parsers must reject files with an unrecognized `version` value and should warn when `version` is absent.
|
|
357
422
|
|
|
358
423
|
| Version | Description |
|
|
359
|
-
|
|
424
|
+
| ------- | ----------------------------- |
|
|
360
425
|
| `1` | Initial release of the format |
|
|
361
426
|
|
|
362
427
|
A `hydro` block for dynamic hydrological data (static level, dynamic level, pump tests, water quality) is reserved for v2 and must not appear in v1 files.
|
|
@@ -371,4 +436,4 @@ application/vnd.well+json
|
|
|
371
436
|
|
|
372
437
|
---
|
|
373
438
|
|
|
374
|
-
|
|
439
|
+
_Specification v1.0 — `.well` format_
|