@mailwoman/soil 9.4.0 → 10.1.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.
Files changed (115) hide show
  1. package/README.md +118 -116
  2. package/lib/index.ts +66 -98
  3. package/lib/paths.ts +24 -0
  4. package/lib/schema.ts +188 -120
  5. package/lib/vocabulary.ts +40 -107
  6. package/out/index.d.ts +52 -70
  7. package/out/index.d.ts.map +1 -1
  8. package/out/index.js +24 -72
  9. package/out/index.js.map +1 -1
  10. package/out/paths.d.ts +19 -0
  11. package/out/paths.d.ts.map +1 -0
  12. package/out/paths.js +21 -0
  13. package/out/paths.js.map +1 -0
  14. package/out/schema.d.ts +187 -119
  15. package/out/schema.d.ts.map +1 -1
  16. package/out/schema.js +31 -31
  17. package/out/schema.js.map +1 -1
  18. package/out/sdk/acquire.d.ts +15 -24
  19. package/out/sdk/acquire.d.ts.map +1 -1
  20. package/out/sdk/acquire.js +5 -20
  21. package/out/sdk/acquire.js.map +1 -1
  22. package/out/sdk/build-soil.d.ts +67 -70
  23. package/out/sdk/build-soil.d.ts.map +1 -1
  24. package/out/sdk/build-soil.js +65 -95
  25. package/out/sdk/build-soil.js.map +1 -1
  26. package/out/sdk/cell-tiers.d.ts +7 -19
  27. package/out/sdk/cell-tiers.d.ts.map +1 -1
  28. package/out/sdk/cell-tiers.js +19 -38
  29. package/out/sdk/cell-tiers.js.map +1 -1
  30. package/out/sdk/cells.d.ts +15 -41
  31. package/out/sdk/cells.d.ts.map +1 -1
  32. package/out/sdk/cells.js +11 -38
  33. package/out/sdk/cells.js.map +1 -1
  34. package/out/sdk/client.d.ts +23 -48
  35. package/out/sdk/client.d.ts.map +1 -1
  36. package/out/sdk/client.js +19 -63
  37. package/out/sdk/client.js.map +1 -1
  38. package/out/sdk/download.d.ts +24 -47
  39. package/out/sdk/download.d.ts.map +1 -1
  40. package/out/sdk/download.js +14 -54
  41. package/out/sdk/download.js.map +1 -1
  42. package/out/sdk/ingest/chunk.d.ts +77 -0
  43. package/out/sdk/ingest/chunk.d.ts.map +1 -0
  44. package/out/sdk/{ingest-chunk.js → ingest/chunk.js} +19 -17
  45. package/out/sdk/ingest/chunk.js.map +1 -0
  46. package/out/sdk/ingest/worker.d.ts +9 -0
  47. package/out/sdk/ingest/worker.d.ts.map +1 -0
  48. package/out/{scripts/ingest-chunk.js → sdk/ingest/worker.js} +11 -10
  49. package/out/sdk/ingest/worker.js.map +1 -0
  50. package/out/sdk/ingest.d.ts +40 -52
  51. package/out/sdk/ingest.d.ts.map +1 -1
  52. package/out/sdk/ingest.js +18 -61
  53. package/out/sdk/ingest.js.map +1 -1
  54. package/out/sdk/measure-resolutions.d.ts +5 -16
  55. package/out/sdk/measure-resolutions.d.ts.map +1 -1
  56. package/out/sdk/measure-resolutions.js +3 -15
  57. package/out/sdk/measure-resolutions.js.map +1 -1
  58. package/out/sdk/reduce.d.ts +33 -59
  59. package/out/sdk/reduce.d.ts.map +1 -1
  60. package/out/sdk/reduce.js +47 -78
  61. package/out/sdk/reduce.js.map +1 -1
  62. package/out/sdk/survey-area.d.ts +16 -48
  63. package/out/sdk/survey-area.d.ts.map +1 -1
  64. package/out/sdk/survey-area.js +33 -77
  65. package/out/sdk/survey-area.js.map +1 -1
  66. package/out/sdk/tabular.d.ts +32 -31
  67. package/out/sdk/tabular.d.ts.map +1 -1
  68. package/out/sdk/tabular.js +58 -56
  69. package/out/sdk/tabular.js.map +1 -1
  70. package/out/sdk/test-kit.d.ts +57 -0
  71. package/out/sdk/test-kit.d.ts.map +1 -0
  72. package/out/{test-kit.js → sdk/test-kit.js} +18 -39
  73. package/out/sdk/test-kit.js.map +1 -0
  74. package/out/sdk/verify.d.ts +15 -51
  75. package/out/sdk/verify.d.ts.map +1 -1
  76. package/out/sdk/verify.js +19 -77
  77. package/out/sdk/verify.js.map +1 -1
  78. package/out/vocabulary.d.ts +37 -103
  79. package/out/vocabulary.d.ts.map +1 -1
  80. package/out/vocabulary.js +34 -107
  81. package/out/vocabulary.js.map +1 -1
  82. package/package.json +36 -190
  83. package/{lib/sdk → sdk}/acquire.ts +17 -27
  84. package/{lib/sdk → sdk}/build-soil.ts +114 -128
  85. package/{lib/sdk → sdk}/cell-tiers.ts +20 -39
  86. package/{lib/sdk → sdk}/cells.ts +17 -43
  87. package/sdk/client.ts +147 -0
  88. package/sdk/download.ts +131 -0
  89. package/{lib/sdk/ingest-chunk.ts → sdk/ingest/chunk.ts} +34 -26
  90. package/{lib/scripts/ingest-chunk.ts → sdk/ingest/worker.ts} +10 -9
  91. package/sdk/ingest.ts +253 -0
  92. package/{lib/sdk → sdk}/measure-resolutions.ts +5 -16
  93. package/sdk/reduce.ts +344 -0
  94. package/{lib/sdk → sdk}/survey-area.ts +39 -83
  95. package/{lib/sdk → sdk}/tabular.ts +62 -59
  96. package/{lib → sdk}/test-kit.ts +18 -40
  97. package/{lib/sdk → sdk}/verify.ts +29 -85
  98. package/lib/sdk/client.ts +0 -184
  99. package/lib/sdk/download.ts +0 -161
  100. package/lib/sdk/index.ts +0 -20
  101. package/lib/sdk/ingest.ts +0 -278
  102. package/lib/sdk/reduce.ts +0 -375
  103. package/out/scripts/ingest-chunk.d.ts +0 -11
  104. package/out/scripts/ingest-chunk.d.ts.map +0 -1
  105. package/out/scripts/ingest-chunk.js.map +0 -1
  106. package/out/sdk/index.d.ts +0 -20
  107. package/out/sdk/index.d.ts.map +0 -1
  108. package/out/sdk/index.js +0 -20
  109. package/out/sdk/index.js.map +0 -1
  110. package/out/sdk/ingest-chunk.d.ts +0 -73
  111. package/out/sdk/ingest-chunk.d.ts.map +0 -1
  112. package/out/sdk/ingest-chunk.js.map +0 -1
  113. package/out/test-kit.d.ts +0 -79
  114. package/out/test-kit.d.ts.map +0 -1
  115. package/out/test-kit.js.map +0 -1
package/out/schema.d.ts CHANGED
@@ -3,64 +3,69 @@
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
5
  *
6
- * Typed schema for `soil.db` — the polygon truth table, the containment index above it, and the ONE
7
- * reduction both consumers read, plus the layer-contract tables from `@mailwoman/core/layers`.
6
+ * Typed schema for `soil.db`. It defines the polygon truth table, its containment index and the shared reduction
7
+ * that both consumers read. It also defines the layer-interface tables from `@mailwoman/core/layers`.
8
8
  *
9
- * THREE CELL-FACING TABLES ARE ONE PIPELINE, NOT THREE SOURCES. {@link SoilMapUnitAreaTable} holds what
10
- * the authority drew, unsimplified. {@link SoilMapUnitCellTable} says which cells each delineation
11
- * reaches and whether it fills them. {@link SoilCapabilityCellTable} is that index reduced ONCE, at build
12
- * time, into a per-cell distribution. A `partial` cell's contribution to the reduction is weighted by the
13
- * area it actually covers, which is why the truth table keeps unsimplified rings: simplify them and the
14
- * weights change silently.
9
+ * {@link SoilMapUnitAreaTable} stores the authority's unsimplified geometry.
10
+ * {@link SoilMapUnitCellTable} records which cells each delineation reaches and whether it fills them.
11
+ * {@link SoilCapabilityCellTable} is that index reduced once, at build time, into a per-cell
12
+ * distribution. A `partial` cell's contribution is weighted by the area it covers. The truth table keeps
13
+ * unsimplified rings so simplification cannot change those weights silently.
15
14
  *
16
- * THE REDUCTION STORES A DISTRIBUTION, NEVER A WINNER, AND THAT IS FORCED BY MEASUREMENT RATHER THAN
17
- * PREFERENCE. 84.0% of the 339,191 national map units hold two or more components; in 16.8% the largest
18
- * component covers under half the map unit; and 85.4% of `IA153`'s 17,966 delineations are smaller than
19
- * one resolution-9 cell, so no affordable cell size removes the mixture. NRCS itself ships
20
- * `muaggatt.niccdcd` — its own dominant-condition capability class — beside `niccdcdpct`, the share that
21
- * class actually covers, with an observed minimum of 2%. This table reproduces that pattern at cell grain
22
- * rather than inventing one.
15
+ * The reduction stores a distribution instead of one winning class. Four separate shares record reasons for
16
+ * absence. Class 8 is a determination, so it contributes a class share. A fold that places a `notcom` polygon, a water body
17
+ * and an unrated series into "not arable" would produce a well-formed but wrong answer. The four shares preserve
18
+ * those distinctions.
23
19
  *
24
- * AN ABSENCE IS NEVER A SMALL NUMBER. Four separate shares name why the rest of a cell carries no class,
25
- * and class 8 is NOT among them: class 8 is a determination — the survey looked and rated the land as
26
- * precluding commercial plant production — so it is a class share like any other. Folding a `NOTCOM`
27
- * polygon, a water body and an unrated series into "not arable" would produce a well-formed wrong answer,
28
- * which is what the four shares exist to make impossible.
29
- *
30
- * `WITHOUT ROWID` ON THE CELL TABLES AND NEVER ON THE GEOMETRY TABLE. Small fixed-width rows probed by
31
- * their exact primary key belong in the B-tree; a row carrying a geometry blob does not — clustering it
32
- * into the B-tree makes every index page a geometry page.
20
+ * Cell tables use `without rowid`; the geometry table uses ordinary rowids. Small fixed-width rows are probed by
21
+ * their exact primary key, so they fit the B-tree. A geometry blob would make every index page a geometry page if
22
+ * stored in that B-tree.
33
23
  */
34
- import type { LayerContractDatabase } from "@mailwoman/core/layers";
24
+ import type { layerschemadatabase } from "@mailwoman/core/layers";
35
25
  import { type Kysely } from "kysely";
36
26
  /**
37
27
  * Whether an H3 cell lies wholly inside one map-unit delineation, or is crossed by its boundary.
38
28
  */
39
29
  export declare const SoilCellContainment: {
40
30
  /**
41
- * Every point in the cell is inside the delineation. Answered from the index alone, with no geometry read.
31
+ * Every point in the cell is inside the delineation.
32
+ *
33
+ * Answered from the index without reading geometry.
42
34
  */
43
35
  readonly Whole: "whole";
44
36
  /**
45
- * The delineation's boundary crosses the cell. The index has narrowed the candidates; the point test decides.
37
+ * The delineation's boundary crosses the cell.
38
+ *
39
+ * The index has narrowed the candidates.
40
+ * The point test decides.
46
41
  */
47
42
  readonly Partial: "partial";
48
43
  };
49
44
  export type SoilCellContainment = (typeof SoilCellContainment)[keyof typeof SoilCellContainment];
50
45
  /**
51
- * One map-unit delineation, verbatim. A plain rowid table: it holds a geometry blob, which is the one shape `WITHOUT
52
- * ROWID` hurts.
46
+ * One map-unit delineation, verbatim.
47
+ *
48
+ * A plain rowid table.
49
+ * It holds a geometry blob.
50
+ * `without rowid` stores this shape inefficiently.
53
51
  */
54
52
  export interface SoilMapUnitAreaTable {
55
53
  /**
56
- * `<areasymbol>:<ordinal>` — the survey area plus this delineation's position in the authority's own shapefile order.
57
- * SSURGO publishes no per-delineation key of its own (`mukey` names the MAP UNIT, and one map unit has many
58
- * delineations), so the ordinal is what makes a row nameable at all. Text, so a source that starts publishing a
59
- * non-numeric id needs no schema change.
54
+ * `<areasymbol>:<ordinal>` identifies the survey area and this delineation's
55
+ * position in the authority's own shapefile order.
56
+ *
57
+ * SSURGO publishes no per-delineation key.
58
+ * `mukey` identifies the map unit.
59
+ *
60
+ * Each map unit has many delineations.
61
+ * The ordinal distinguishes each delineation row.
62
+ *
63
+ * Text allows the source to publish a non-numeric ID without a schema change.
60
64
  */
61
65
  area_id: string;
62
66
  /**
63
- * The map unit this delineation belongs to — NRCS's own key, and the join to every attribute.
67
+ * The map unit that contains this delineation.
68
+ * NRCS uses this key to join every attribute.
64
69
  */
65
70
  mukey: string;
66
71
  areasymbol: string;
@@ -69,25 +74,30 @@ export interface SoilMapUnitAreaTable {
69
74
  max_lat: number;
70
75
  max_lon: number;
71
76
  /**
72
- * The authority's ring coordinates, unsimplified — see `@mailwoman/spatial`'s ring blob for the layout.
77
+ * The authority's ring coordinates, unsimplified.
78
+ * See `@mailwoman/spatial`'s ring blob for the layout.
73
79
  */
74
80
  rings: Uint8Array;
75
81
  }
76
82
  /**
77
- * Per (cell, delineation): does the delineation cover the whole cell, or only part of it?
83
+ * Records whether a delineation covers a whole cell or only part of it.
78
84
  *
79
- * Keyed on the delineation rather than on the map unit, because the reduction weights by the area a DELINEATION covers
80
- * and two delineations of one map unit reaching the same cell cover different ground.
85
+ * Rows use the delineation as the key because the reduction weights by covered area.
86
+ * Two delineations from one map unit can reach the same cell while covering different ground.
81
87
  */
82
88
  export interface SoilMapUnitCellTable {
83
89
  /**
84
- * 48-bit short H3 cell. Mixed-resolution: `whole` rows are compacted parent-ward, `partial` rows stay at the index
85
- * resolution.
90
+ * 48-bit short H3 cell.
91
+ *
92
+ * Uses mixed resolutions.
93
+ * `whole` rows are compacted parent-ward; `partial` rows stay at the index resolution.
86
94
  */
87
95
  h3_cell: number;
88
96
  /**
89
- * The resolution this row's cell was captured at. A short cell does not name its own resolution, and a table that
90
- * mixes them cannot be probed without it.
97
+ * The resolution this row's cell was captured at.
98
+ *
99
+ * A short cell has no resolution of its own.
100
+ * A table that mixes resolutions requires this column for probes.
91
101
  */
92
102
  resolution: number;
93
103
  area_id: string;
@@ -97,47 +107,61 @@ export interface SoilMapUnitCellTable {
97
107
  containment: string;
98
108
  }
99
109
  /**
100
- * One SSURGO map unit — the attribute row every delineation joins to.
110
+ * One ssurgo map unit, the attribute row every delineation joins to.
101
111
  */
102
112
  export interface SoilMapUnitTable {
103
113
  mukey: string;
104
114
  areasymbol: string;
105
115
  /**
106
- * The map unit symbol. `NOTCOM` and `NOTPUB` are MEANINGFUL values here, not codes to skip: they name a polygon the
107
- * authority drew with no soil mapping behind it.
116
+ * The map unit symbol.
117
+ *
118
+ * `notcom` and `notpub` are meaningful values here rather than codes to skip.
119
+ * They mark a polygon the authority drew with no soil mapping behind it.
108
120
  */
109
121
  musym: string;
110
122
  muname: string;
111
123
  /**
112
- * `Consociation` | `Complex` | `Association` | `Undifferentiated group`, from the authority's declared domain. A
113
- * complex is NRCS's statement that two or more soils are intermingled and cannot be separated at the mapping scale —
114
- * the mixture is the survey's finding rather than this layer's loss.
124
+ * `Consociation` | `Complex` | `Association` | `Undifferentiated group`,
125
+ * from the authority's declared domain.
126
+ *
127
+ * A complex is nrcs's statement that two or more soils are intermingled
128
+ * and cannot be separated at the mapping scale.
129
+ * The mixture is the survey's finding rather than this layer's loss.
115
130
  */
116
131
  mukind: string | null;
117
132
  mustatus: string | null;
118
133
  /**
119
- * The full conditional string, verbatim. NULL is not "not prime farmland": `Not prime farmland` is itself a declared
120
- * value, and NULL means the map unit carries no farmland classification at all.
134
+ * The full conditional string, verbatim.
135
+ *
136
+ * `Not prime farmland` is itself a declared value, while NULL means the map
137
+ * unit has no farmland classification.
121
138
  */
122
139
  farmlndcl: string | null;
123
140
  /**
124
- * Which of {@link FarmlandScope} `farmlndcl` falls under — federal criteria travel between states, delegated ones do
125
- * not. Derived once at build time so a consumer never has to re-read 7 CFR 657.5 to know whether two rows are
126
- * comparable.
141
+ * Which of {@link FarmlandScope} `farmlndcl` falls under.
142
+ *
143
+ * Federal criteria travel between states, while delegated ones do not.
144
+ *
145
+ * Derived once at build time so a consumer never has to re-read 7 CFR 657.5 to know
146
+ * whether two rows are comparable.
127
147
  */
128
148
  farmland_scope: string;
129
149
  /**
130
- * NRCS's OWN dominant-condition capability class for the map unit, carried rather than recomputed.
150
+ * Nrcs's own dominant-condition capability class for the map unit, stored rather than recomputed.
131
151
  */
132
152
  niccdcd: string | null;
133
153
  /**
134
- * And the share that class actually covers. The pair is the pattern this layer's cell reduction reproduces at cell
135
- * grain, so carrying both makes the two comparable.
154
+ * The share that class actually covers.
155
+ *
156
+ * The pair is the pattern this layer's cell reduction reproduces at cell grain,
157
+ * so carrying both makes the two comparable.
136
158
  */
137
159
  niccdcdpct: number | null;
138
160
  /**
139
- * Whether this map unit is a polygon with NO soil mapping behind it — `NOTCOM`, `NOTPUB`, access denied, or a map
140
- * unit carrying no components at all. Such a map unit contributes to `nodata_share` and NEVER to a class share.
161
+ * Whether this map unit is a polygon with no soil mapping behind it, such as `notcom`,
162
+ * `notpub`, access denied, or a map unit carrying no components at all.
163
+ *
164
+ * Such a map unit contributes to `nodata_share` and never to a class share.
141
165
  */
142
166
  no_mapping: number;
143
167
  }
@@ -148,17 +172,20 @@ export interface SoilComponentTable {
148
172
  cokey: string;
149
173
  mukey: string;
150
174
  /**
151
- * The component's representative percentage of its map unit — the weight the reduction aggregates by.
175
+ * The component's representative percentage of its map unit, the weight the reduction aggregates by.
152
176
  */
153
177
  comppct_r: number;
154
178
  compname: string | null;
155
179
  /**
156
- * `Miscellaneous area` is what separates NOT-RATEABLE from UNRATED: a rock outcrop or a water body is a component the
157
- * capability rating does not apply to, while an unrated series is one the survey did not rate.
180
+ * `Miscellaneous area` is what separates not-rateable from unrated: a rock outcrop
181
+ * or a water body is a component the capability rating does not apply to,
182
+ * while an unrated series is one the survey did not rate.
158
183
  */
159
184
  compkind: string | null;
160
185
  /**
161
- * Nonirrigated Land Capability Class, `"1"`–`"8"`. NULL means NOT RATED, never class 8.
186
+ * Nonirrigated Land Capability Class, `"1"`–`"8"`.
187
+ *
188
+ * NULL means not rated, never class 8.
162
189
  */
163
190
  nirrcapcl: string | null;
164
191
  /**
@@ -166,37 +193,47 @@ export interface SoilComponentTable {
166
193
  */
167
194
  nirrcapscl: string | null;
168
195
  /**
169
- * The irrigated rating. NULL on 85.1% of national components, because it is populated only where irrigation is a
170
- * considered use — so its absence is a statement about the rating's applicability rather than about the land, and it
171
- * is carried but never reduced.
196
+ * The irrigated rating.
197
+ *
198
+ * Populated only where irrigation is a considered use, so its absence states that
199
+ * the rating does not apply rather than anything about the land.
200
+ * The build stores it without reducing it.
172
201
  */
173
202
  irrcapcl: string | null;
174
203
  irrcapscl: string | null;
175
204
  /**
176
- * The NCCPI v3.0 overall index in [0, 1], under its own rule name. Never blended with the capability class.
205
+ * The nccpi v3.0 overall index in [0, 1], under its own rule name.
206
+ *
207
+ * Never blended with the capability class.
177
208
  */
178
209
  nccpi_v3: number | null;
179
210
  }
180
211
  /**
181
- * THE SHARED ARTIFACT BOTH CONSUMERS READ: one row per cell, the index reduced once.
212
+ * The shared artifact both consumers read, one row per cell with the index reduced once.
182
213
  *
183
- * The result-level observation takes {@link SoilCapabilityCellTable.top_class} with the share it rests on; #1683's
184
- * affordance vector takes `class_shares` plus the four absence shares as its axis. One artifact, one aggregation, one
185
- * set of provenance rows, and no possibility of the two consumers disagreeing about what the ground is.
214
+ * The result-level observation takes {@link SoilCapabilityCellTable.top_class} with the share it rests
215
+ * on, while the affordance vector takes `class_shares` plus the four absence shares as its axis.
216
+ * One artifact, one aggregation and one set of provenance rows, so the two
217
+ * consumers cannot disagree about what the ground is.
186
218
  */
187
219
  export interface SoilCapabilityCellTable {
188
220
  /**
189
- * 48-bit short H3 cell at the declared index resolution. SINGLE-resolution, unlike {@link SoilMapUnitCellTable}: this
190
- * is the table a consumer joins on, and a mixed-resolution join key is not one.
221
+ * 48-bit short H3 cell at the declared index resolution.
222
+ *
223
+ * Single-resolution, unlike {@link SoilMapUnitCellTable}, because a consumer joins
224
+ * on this table and a mixed-resolution join key cannot serve that.
191
225
  */
192
226
  h3_cell: number;
193
227
  /**
194
- * JSON: the authority's class codes mapped to their area-weighted share, sorted by descending share. Shares above the
195
- * declared truncation floor only; the remainder is in `other_share`.
228
+ * JSON: the authority's class codes mapped to their area-weighted share, sorted by descending share.
229
+ *
230
+ * Shares above the declared truncation floor only.
231
+ * The remainder is in `other_share`.
196
232
  */
197
233
  class_shares: string;
198
234
  /**
199
- * Mapped soil components carrying a NULL rating — the survey did not rate them.
235
+ * Mapped soil components carrying a NULL rating.
236
+ * The survey did not rate them.
200
237
  */
201
238
  unrated_share: number;
202
239
  /**
@@ -204,81 +241,104 @@ export interface SoilCapabilityCellTable {
204
241
  */
205
242
  notrateable_share: number;
206
243
  /**
207
- * `NOTCOM`, `NOTPUB` and access-denied map units: a polygon the authority drew, with no soil mapping behind it.
244
+ * `notcom`, `notpub` and access-denied map units: a polygon the authority drew,
245
+ * with no soil mapping behind it.
208
246
  */
209
247
  nodata_share: number;
210
248
  /**
211
- * The truncated minority tail. Stored explicitly so the five shares always sum to 1 and a reader can see how much was
212
- * folded away rather than inferring it from a gap.
249
+ * The truncated minority tail.
250
+ *
251
+ * Stored explicitly so the five shares always sum to 1 and a reader can see how
252
+ * much was folded away rather than inferring it from a gap.
213
253
  */
214
254
  other_share: number;
215
255
  /**
216
- * The fraction of the CELL covered by any map-unit delineation at all.
256
+ * The fraction of the cell covered by any map-unit delineation at all.
257
+ *
258
+ * The five shares above are normalized over this value and sum to 1 exactly.
259
+ * A cell at a survey-area edge can fall partly outside every delineation.
217
260
  *
218
- * The five shares above are normalized over this, so they sum to 1 exactly. A cell at the edge of a survey area is
219
- * partly outside every delineation, and without this column that unmapped remainder would silently deflate every
220
- * class share — an absence represented as a small number, which is the one thing this schema exists to prevent. A
221
- * cell wholly inside the mapped area reads 1.
261
+ * This column prevents the unmapped remainder from deflating every class share.
262
+ *
263
+ * This schema prevents an absence from appearing as a small number.
264
+ * A cell wholly inside the mapped area reads 1.
222
265
  */
223
266
  mapped_share: number;
224
267
  /**
225
- * The largest class share, and the share it rests on — the result-level consumer's reading, and NRCS's own
226
- * `niccdcd`/`niccdcdpct` pattern at cell grain. NULL when the cell carries no class at all, which is a real answer: a
227
- * cell that is 100% `unrated_share` is complete and holds no capability reading whatsoever.
268
+ * Stores the largest class share and its proportion.
269
+ *
270
+ * This gives consumers an at-cell result and follows NRCS's `niccdcd`/`niccdcdpct` pattern.
271
+ *
272
+ * NULL when the cell has no class.
273
+ * This is a valid result.
274
+ *
275
+ * A cell that is 100% `unrated_share` is complete and has no capability reading.
228
276
  */
229
277
  top_class: string | null;
230
278
  top_class_share: number | null;
231
279
  /**
232
- * Which weighting produced the shares — {@link SOIL_SHARE_WEIGHTING}. Stored per row rather than only in the
233
- * manifest, because a later build at a different weighting must not read as the same claim.
280
+ * Which weighting produced the shares, one of {@link SOIL_SHARE_WEIGHTING}.
281
+ *
282
+ * Stored per row as well as in the manifest.
283
+ * A later build with different weighting must have a distinct record.
234
284
  */
235
285
  weighting: string;
236
286
  /**
237
- * How many delineations reached this cell. The denominator behind every share above, and the number that separates a
238
- * confident single-delineation cell from a crowded one.
287
+ * How many delineations reached this cell.
288
+ *
289
+ * Supplies the denominator behind each share above.
290
+ * It also distinguishes a single-delineation cell from a crowded cell.
239
291
  */
240
292
  delineations: number;
241
293
  }
242
294
  /**
243
- * The authority's mapped footprint, one row per published survey area — derived from the survey-area OUTLINE and each
244
- * area's own metadata, NEVER from the rated polygons.
295
+ * The authority's mapped footprint, one row per published survey area, derived from the
296
+ * survey-area outline and each area's own metadata rather than from the rated polygons.
245
297
  *
246
- * Deriving it from the rated polygons is the error §3.2 of the survey describes: `NOTCOM` and access-denied map units
247
- * are INSIDE the footprint and carry no rating, so a footprint taken from the rated set would report them as unmapped
248
- * when the authority has in fact declared exactly what they are.
298
+ * The survey's §3.2 identifies rated polygons as an invalid source for this footprint.
299
+ * `notcom` and access-denied map units are inside the footprint and have no rating,
300
+ * so a footprint taken from the rated set would report them as unmapped even
301
+ * though the authority has declared exactly what they are.
249
302
  */
250
303
  export interface SoilSurveyAreaTable {
251
304
  areasymbol: string;
252
305
  areaname: string;
253
306
  /**
254
- * The version-established date from `sacatalog.saverest` — the refresh, and the manifest's vintage.
307
+ * The version-established date from `sacatalog.saverest`, the refresh and the manifest's vintage.
255
308
  */
256
309
  saverest: string;
257
310
  saversion: number | null;
258
311
  /**
259
- * The OLDEST source citation date in the area's own FGDC lineage — the field survey the republished polygons rest on.
312
+ * The oldest source citation date in the area's own fgdc lineage, the field
313
+ * survey the republished polygons rest on.
260
314
  *
261
- * This is a different fact from `saverest` and keeping them apart is the point: `IA153` carries a 2025-09-09 refresh
262
- * over a field survey published in 1960, and the dataset's own time-period-of-content ends at the refresh, so a
263
- * consumer reading that as survey currency reads it wrong.
315
+ * This date differs from `saverest`.
316
+ * `IA153` records a 2025-09-09 refresh over a field survey published in 1960.
317
+ *
318
+ * The dataset's time-period-of-content ends at the refresh, so it does not state
319
+ * when the field survey occurred.
264
320
  */
265
321
  survey_source_date: string | null;
266
322
  /**
267
- * The title of the source `survey_source_date` came from, so the date is checkable rather than assertible.
323
+ * The title of the source for `survey_source_date`.
324
+ * It lets readers check the date against its source.
268
325
  */
269
326
  survey_source_title: string | null;
270
327
  /**
271
- * The scale of that original source — 15840 for `IA153`'s 1960 survey.
328
+ * The scale of that original source, 15840 for `IA153`'s 1960 survey.
272
329
  */
273
330
  source_scale: number | null;
274
331
  /**
275
- * The scale the map units were DIGITIZED at, from `legend.projectscale` — 12000 for `IA153`. A different number from
276
- * `source_scale` and a different fact: one is how finely the ground was walked, the other how finely it was drawn.
332
+ * The scale the map units were digitized at, from `legend.projectscale`, 12000 for `IA153`.
333
+ *
334
+ * This differs from `source_scale`.
335
+ * `source_scale` describes survey detail; `mapping_scale` describes drawing detail.
277
336
  */
278
337
  mapping_scale: number | null;
279
338
  /**
280
- * The area the authority publishes for the survey area, in acres. The independent witness the ring-area check
281
- * compares against.
339
+ * The area the authority publishes for the survey area, in acres.
340
+ *
341
+ * The independent witness the ring-area check compares against.
282
342
  */
283
343
  area_acres: number | null;
284
344
  min_lat: number;
@@ -286,7 +346,7 @@ export interface SoilSurveyAreaTable {
286
346
  max_lat: number;
287
347
  max_lon: number;
288
348
  /**
289
- * How many `layer_coverage` rows this survey area produced, and at what resolution.
349
+ * The number of `layer_coverage` rows this survey area produced and their resolution.
290
350
  */
291
351
  coverage_cells: number;
292
352
  coverage_resolution: number;
@@ -294,13 +354,14 @@ export interface SoilSurveyAreaTable {
294
354
  /**
295
355
  * The authority's declared domain for one `Choice` column, read out of the `msdomdet.txt` the archive ships.
296
356
  *
297
- * Stored so a reader can refuse a code the layer was never built to hold, and so the authority's own prose definition
298
- * of "capability class 3" travels with the artifact instead of living in a handbook the reader has to go find.
357
+ * Stored so a reader can refuse a code the layer cannot hold.
358
+ * The artifact also includes the authority's prose definition of "capability class 3"
359
+ * instead of requiring a separate handbook.
299
360
  */
300
361
  export interface SoilVocabularyTable {
301
362
  /**
302
- * The domain name as NRCS spells it — `capability_class`, `capability_subclass`, `farmland_classification`,
303
- * `component_kind`, `mapunit_kind`.
363
+ * The domain name as nrcs spells it, such as `capability_class`, `capability_subclass`,
364
+ * `farmland_classification`, `component_kind` or `mapunit_kind`.
304
365
  */
305
366
  domain: string;
306
367
  /**
@@ -312,14 +373,14 @@ export interface SoilVocabularyTable {
312
373
  */
313
374
  definition: string;
314
375
  /**
315
- * Ordering within the domain, as the authority declares it.
376
+ * Each value's sequence records its order within the authority's domain.
316
377
  */
317
378
  sequence: number;
318
379
  }
319
380
  /**
320
381
  * Pass to `new DatabaseClient<SoilDatabase>(...)`.
321
382
  */
322
- export interface SoilDatabase extends LayerContractDatabase {
383
+ export interface SoilDatabase extends layerschemadatabase {
323
384
  soil_map_unit_area: SoilMapUnitAreaTable;
324
385
  soil_map_unit_cell: SoilMapUnitCellTable;
325
386
  soil_map_unit: SoilMapUnitTable;
@@ -329,17 +390,23 @@ export interface SoilDatabase extends LayerContractDatabase {
329
390
  soil_vocabulary: SoilVocabularyTable;
330
391
  }
331
392
  /**
332
- * The slice of a Kysely handle the DDL touches. Kysely is invariant in its schema parameter, so naming only the members
333
- * these functions call lets a caller pass its own wider handle.
393
+ * The subset of a Kysely handle the DDL touches.
394
+ *
395
+ * Kysely is invariant in its schema parameter, so naming only the members these
396
+ * functions call lets a caller pass its own wider handle.
334
397
  */
335
398
  export type SoilSchemaHandle = Pick<Kysely<SoilDatabase>, "schema">;
336
399
  /**
337
- * Create `soil_map_unit_area`. A PLAIN rowid table on purpose — the `rings` blob is exactly the payload `WITHOUT ROWID`
338
- * penalizes.
400
+ * Create `soil_map_unit_area`.
401
+ *
402
+ * A plain rowid table on purpose.
403
+ * The `rings` blob is exactly the payload `without rowid` penalizes.
339
404
  */
340
405
  export declare function createSoilMapUnitAreaTable(db: SoilSchemaHandle): Promise<void>;
341
406
  /**
342
- * Create `soil_map_unit_cell` — the containment index. Small fixed-width rows probed by their exact primary key.
407
+ * Create `soil_map_unit_cell`, the containment index.
408
+ *
409
+ * Small fixed-width rows probed by their exact primary key.
343
410
  */
344
411
  export declare function createSoilMapUnitCellTable(db: SoilSchemaHandle): Promise<void>;
345
412
  /**
@@ -351,7 +418,8 @@ export declare function createSoilMapUnitTable(db: SoilSchemaHandle): Promise<vo
351
418
  */
352
419
  export declare function createSoilComponentTable(db: SoilSchemaHandle): Promise<void>;
353
420
  /**
354
- * Create `soil_capability_cell` — the reduction both consumers read.
421
+ * Create `soil_capability_cell`.
422
+ * The reduction both consumers read.
355
423
  */
356
424
  export declare function createSoilCapabilityCellTable(db: SoilSchemaHandle): Promise<void>;
357
425
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../lib/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAEnE,OAAO,EAAO,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEzC;;GAEG;AACH,eAAO,MAAM,mBAAmB;IAC/B;;OAEG;;IAEH;;OAEG;;CAEM,CAAA;AAEV,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAA;AAEhG;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACpC;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,KAAK,EAAE,UAAU,CAAA;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACpC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB;;;OAGG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB;;;OAGG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB;;OAEG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACvC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB;;;;;;OAMG;IACH,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC;;OAEG;IACH,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC;;OAEG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B;;;OAGG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B;;;OAGG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB,mBAAmB,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IACnC;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,qBAAqB;IAC1D,kBAAkB,EAAE,oBAAoB,CAAA;IACxC,kBAAkB,EAAE,oBAAoB,CAAA;IACxC,aAAa,EAAE,gBAAgB,CAAA;IAC/B,cAAc,EAAE,kBAAkB,CAAA;IAClC,oBAAoB,EAAE,uBAAuB,CAAA;IAC7C,gBAAgB,EAAE,mBAAmB,CAAA;IACrC,eAAe,EAAE,mBAAmB,CAAA;CACpC;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEnE;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpF;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpF;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAehF;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAclF;AAED;;GAEG;AACH,wBAAsB,6BAA6B,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBvF;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBnF;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUnF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ1E"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../lib/schema.ts"],"names":[],"mappings":"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"}