@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.
- package/README.md +118 -116
- package/lib/index.ts +66 -98
- package/lib/paths.ts +24 -0
- package/lib/schema.ts +188 -120
- package/lib/vocabulary.ts +40 -107
- package/out/index.d.ts +52 -70
- package/out/index.d.ts.map +1 -1
- package/out/index.js +24 -72
- package/out/index.js.map +1 -1
- package/out/paths.d.ts +19 -0
- package/out/paths.d.ts.map +1 -0
- package/out/paths.js +21 -0
- package/out/paths.js.map +1 -0
- package/out/schema.d.ts +187 -119
- package/out/schema.d.ts.map +1 -1
- package/out/schema.js +31 -31
- package/out/schema.js.map +1 -1
- package/out/sdk/acquire.d.ts +15 -24
- package/out/sdk/acquire.d.ts.map +1 -1
- package/out/sdk/acquire.js +5 -20
- package/out/sdk/acquire.js.map +1 -1
- package/out/sdk/build-soil.d.ts +67 -70
- package/out/sdk/build-soil.d.ts.map +1 -1
- package/out/sdk/build-soil.js +65 -95
- package/out/sdk/build-soil.js.map +1 -1
- package/out/sdk/cell-tiers.d.ts +7 -19
- package/out/sdk/cell-tiers.d.ts.map +1 -1
- package/out/sdk/cell-tiers.js +19 -38
- package/out/sdk/cell-tiers.js.map +1 -1
- package/out/sdk/cells.d.ts +15 -41
- package/out/sdk/cells.d.ts.map +1 -1
- package/out/sdk/cells.js +11 -38
- package/out/sdk/cells.js.map +1 -1
- package/out/sdk/client.d.ts +23 -48
- package/out/sdk/client.d.ts.map +1 -1
- package/out/sdk/client.js +19 -63
- package/out/sdk/client.js.map +1 -1
- package/out/sdk/download.d.ts +24 -47
- package/out/sdk/download.d.ts.map +1 -1
- package/out/sdk/download.js +14 -54
- package/out/sdk/download.js.map +1 -1
- package/out/sdk/ingest/chunk.d.ts +77 -0
- package/out/sdk/ingest/chunk.d.ts.map +1 -0
- package/out/sdk/{ingest-chunk.js → ingest/chunk.js} +19 -17
- package/out/sdk/ingest/chunk.js.map +1 -0
- package/out/sdk/ingest/worker.d.ts +9 -0
- package/out/sdk/ingest/worker.d.ts.map +1 -0
- package/out/{scripts/ingest-chunk.js → sdk/ingest/worker.js} +11 -10
- package/out/sdk/ingest/worker.js.map +1 -0
- package/out/sdk/ingest.d.ts +40 -52
- package/out/sdk/ingest.d.ts.map +1 -1
- package/out/sdk/ingest.js +18 -61
- package/out/sdk/ingest.js.map +1 -1
- package/out/sdk/measure-resolutions.d.ts +5 -16
- package/out/sdk/measure-resolutions.d.ts.map +1 -1
- package/out/sdk/measure-resolutions.js +3 -15
- package/out/sdk/measure-resolutions.js.map +1 -1
- package/out/sdk/reduce.d.ts +33 -59
- package/out/sdk/reduce.d.ts.map +1 -1
- package/out/sdk/reduce.js +47 -78
- package/out/sdk/reduce.js.map +1 -1
- package/out/sdk/survey-area.d.ts +16 -48
- package/out/sdk/survey-area.d.ts.map +1 -1
- package/out/sdk/survey-area.js +33 -77
- package/out/sdk/survey-area.js.map +1 -1
- package/out/sdk/tabular.d.ts +32 -31
- package/out/sdk/tabular.d.ts.map +1 -1
- package/out/sdk/tabular.js +58 -56
- package/out/sdk/tabular.js.map +1 -1
- package/out/sdk/test-kit.d.ts +57 -0
- package/out/sdk/test-kit.d.ts.map +1 -0
- package/out/{test-kit.js → sdk/test-kit.js} +18 -39
- package/out/sdk/test-kit.js.map +1 -0
- package/out/sdk/verify.d.ts +15 -51
- package/out/sdk/verify.d.ts.map +1 -1
- package/out/sdk/verify.js +19 -77
- package/out/sdk/verify.js.map +1 -1
- package/out/vocabulary.d.ts +37 -103
- package/out/vocabulary.d.ts.map +1 -1
- package/out/vocabulary.js +34 -107
- package/out/vocabulary.js.map +1 -1
- package/package.json +36 -190
- package/{lib/sdk → sdk}/acquire.ts +17 -27
- package/{lib/sdk → sdk}/build-soil.ts +114 -128
- package/{lib/sdk → sdk}/cell-tiers.ts +20 -39
- package/{lib/sdk → sdk}/cells.ts +17 -43
- package/sdk/client.ts +147 -0
- package/sdk/download.ts +131 -0
- package/{lib/sdk/ingest-chunk.ts → sdk/ingest/chunk.ts} +34 -26
- package/{lib/scripts/ingest-chunk.ts → sdk/ingest/worker.ts} +10 -9
- package/sdk/ingest.ts +253 -0
- package/{lib/sdk → sdk}/measure-resolutions.ts +5 -16
- package/sdk/reduce.ts +344 -0
- package/{lib/sdk → sdk}/survey-area.ts +39 -83
- package/{lib/sdk → sdk}/tabular.ts +62 -59
- package/{lib → sdk}/test-kit.ts +18 -40
- package/{lib/sdk → sdk}/verify.ts +29 -85
- package/lib/sdk/client.ts +0 -184
- package/lib/sdk/download.ts +0 -161
- package/lib/sdk/index.ts +0 -20
- package/lib/sdk/ingest.ts +0 -278
- package/lib/sdk/reduce.ts +0 -375
- package/out/scripts/ingest-chunk.d.ts +0 -11
- package/out/scripts/ingest-chunk.d.ts.map +0 -1
- package/out/scripts/ingest-chunk.js.map +0 -1
- package/out/sdk/index.d.ts +0 -20
- package/out/sdk/index.d.ts.map +0 -1
- package/out/sdk/index.js +0 -20
- package/out/sdk/index.js.map +0 -1
- package/out/sdk/ingest-chunk.d.ts +0 -73
- package/out/sdk/ingest-chunk.d.ts.map +0 -1
- package/out/sdk/ingest-chunk.js.map +0 -1
- package/out/test-kit.d.ts +0 -79
- package/out/test-kit.d.ts.map +0 -1
- package/out/test-kit.js.map +0 -1
package/out/sdk/build-soil.js
CHANGED
|
@@ -3,77 +3,57 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
* Builds the sealed `soil.db` polygon layer from NRCS soil survey areas.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* into a temporary table because memory has to stay flat in row count. A polygon layer's touches
|
|
12
|
-
* outnumber its features, and Iowa is 99 survey areas.
|
|
13
|
-
*
|
|
14
|
-
* ABSENCE IS NO ROW, IN EVERY TABLE. Land outside a published survey area gets no `layer_coverage` row and
|
|
15
|
-
* no summary row — never a zero, never an empty histogram. Inside a published area the coverage row says
|
|
16
|
-
* `designated` at completeness 1.0, because NRCS declares its own mapping complete for those areas at its
|
|
17
|
-
* own scale; a coverage cell reached ONLY by `NOTCOM` and access-denied polygons gets no row either,
|
|
18
|
-
* because the polygon exists and the soil mapping behind it does not.
|
|
19
|
-
*
|
|
20
|
-
* A COVERAGE ROW LICENSES ONLY THAT THE AUTHORITY MAPPED HERE. The reading is the class distribution, and
|
|
21
|
-
* a cell that is 100% `unrated_share` is `designated`-complete and carries no capability reading
|
|
22
|
-
* whatsoever. That pairing is not a corner case: 17.1% of national components carry no capability rating,
|
|
23
|
-
* and for the irrigated rating the figure is 85.1%.
|
|
24
|
-
*
|
|
25
|
-
* THE AREA CROSS-CHECK USES THE AUTHORITY'S OWN PUBLISHED FIGURE. `legend.areaacres` is what NRCS states
|
|
26
|
-
* the survey area covers — 378,800 acres for `IA153`, which is 1,532.9 km² against the 1,532.5 km² an
|
|
27
|
-
* independent projected measurement of the same shapefile reports. Comparing the spherical ring sum
|
|
28
|
-
* against it catches a hole read as an exterior ring, whose absence is silent: such a polygon is
|
|
29
|
-
* well-formed and simply answers "inside" for ground the authority did not map.
|
|
8
|
+
* The builder streams cell touches into a temporary SQL table so that memory stays flat as the row
|
|
9
|
+
* count grows. Absent data has no row in any table. Land outside a survey area and coverage cells that
|
|
10
|
+
* only `notcom` or access-denied polygons reach, get no coverage row.
|
|
30
11
|
*/
|
|
31
12
|
import { readFileSize } from "@mailwoman/core/fs/readers";
|
|
32
13
|
import { areaAgreementFrom, createLayerCoverageTable, createLayerManifestTable, designatedCoverageCells, polygonLayerManifest, writeLayerCoverage, writeLayerManifest, } from "@mailwoman/core/layers";
|
|
33
14
|
import { resolveModulePath } from "@mailwoman/core/module/resolvers";
|
|
34
15
|
import { ingestChunkArguments, mergeCountsInto, runChunkProcess } from "@mailwoman/core/utils";
|
|
35
16
|
import { arealPolygons, geometryContains, interiorCoverageCells, shortCellToInt, } from "@mailwoman/spatial";
|
|
36
|
-
import { buildSealedArtifact } from "@mailwoman/sqlite/sealed
|
|
17
|
+
import { buildSealedArtifact } from "@mailwoman/sqlite/sealed/build";
|
|
37
18
|
import { cellToLatLng } from "h3-js";
|
|
38
19
|
import { createSoilTables } from "#schema";
|
|
39
20
|
import { reduceCells, resolveCells } from "#sdk/cell-tiers";
|
|
40
|
-
import { ingestSoilChunk } from "#sdk/ingest
|
|
21
|
+
import { ingestSoilChunk } from "#sdk/ingest/chunk";
|
|
41
22
|
import { WEIGHT_LATTICE_DEPTH } from "#sdk/reduce";
|
|
42
23
|
import { SOIL_SHARE_WEIGHTING, SOIL_SHARE_WEIGHTING_DESCRIPTION, soilLayerName, SSURGO_ATTRIBUTION, SSURGO_LICENSE, SSURGO_SOURCE, } from "#vocabulary";
|
|
43
24
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
25
|
+
* The schema version of the domain tables.
|
|
26
|
+
*
|
|
27
|
+
* It changes when a column changes meaning.
|
|
28
|
+
* An added column that readers can ignore does not change it.
|
|
46
29
|
*/
|
|
47
30
|
export const SOIL_SCHEMA_VERSION = 1;
|
|
48
31
|
/**
|
|
49
|
-
*
|
|
32
|
+
* The number of delineation ids per chunk process.
|
|
50
33
|
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* on this build the bound costs one process per area — which is what makes an area's failure nameable.
|
|
34
|
+
* A single process over a large polygon layer fails after several hundred thousand
|
|
35
|
+
* features because the h3 wasm heap fragments.
|
|
36
|
+
* This size stays well below that limit.
|
|
55
37
|
*/
|
|
56
38
|
export const DEFAULT_CHUNK_SIZE = 100_000;
|
|
57
39
|
/**
|
|
58
|
-
* Square
|
|
40
|
+
* Square meters per acre, the unit of `legend.areaacres`.
|
|
59
41
|
*/
|
|
60
42
|
const M2_PER_ACRE = 4046.8564224;
|
|
61
43
|
/**
|
|
62
|
-
* The relative gap between the ring-area total and the
|
|
44
|
+
* The relative gap between the ring-area total and the published acreage above which the build fails.
|
|
63
45
|
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* — so an exact test would be brittle. Two percent sits far above the 0.03% `IA153` measures and far below the error a
|
|
68
|
-
* hole-blind read produces, which the zoning survey measured at 4.1% over a whole national layer.
|
|
46
|
+
* NRCS warns that its acreage can differ from a GIS measurement, so an exact
|
|
47
|
+
* comparison would fail on valid data.
|
|
48
|
+
* A hole read as an exterior ring produces a much larger gap than this tolerance.
|
|
69
49
|
*/
|
|
70
50
|
const AREA_TOLERANCE = 0.02;
|
|
71
51
|
/**
|
|
72
|
-
*
|
|
52
|
+
* Builds the soil layer.
|
|
73
53
|
*
|
|
74
|
-
* @throws {Error}
|
|
75
|
-
*
|
|
76
|
-
*
|
|
54
|
+
* @throws {Error} When the classifier rejects a delineation, when a streamed count
|
|
55
|
+
* differs from the shapefile's declared count, when the area total differs from the
|
|
56
|
+
* published acreage, or when the outlines contain no interior coverage cell.
|
|
77
57
|
*/
|
|
78
58
|
export async function buildSoilDatabase(options) {
|
|
79
59
|
if (options.coverageResolution >= options.indexResolution) {
|
|
@@ -88,15 +68,14 @@ export async function buildSoilDatabase(options) {
|
|
|
88
68
|
await createSoilTables(kdb);
|
|
89
69
|
await createLayerManifestTable(kdb);
|
|
90
70
|
await createLayerCoverageTable(kdb);
|
|
91
|
-
// The touch table
|
|
92
|
-
//
|
|
93
|
-
//
|
|
71
|
+
// The touch table is dropped before the artifact is sealed.
|
|
72
|
+
// It has no primary key because a clustered key would sort every insert.
|
|
73
|
+
// The resolution queries use indexes that are created after the load.
|
|
94
74
|
kdb.exec("CREATE TABLE build_cell_touch (h3_cell INTEGER NOT NULL, resolution INTEGER NOT NULL, area_id TEXT NOT NULL, is_full INTEGER NOT NULL)");
|
|
95
75
|
},
|
|
96
76
|
ingest: async (kdb) => {
|
|
97
|
-
//
|
|
98
|
-
// them
|
|
99
|
-
// than after millions of geometry rows are written.
|
|
77
|
+
// The attributes are written first because the ingest needs the map units that have no soil mapping.
|
|
78
|
+
// The build writes them first so a delineation with a missing map unit fails early.
|
|
100
79
|
writeAttributes(kdb, options.areas);
|
|
101
80
|
if (!options.inProcess)
|
|
102
81
|
return undefined;
|
|
@@ -116,10 +95,10 @@ export async function buildSoilDatabase(options) {
|
|
|
116
95
|
await writeLayerCoverage(kdb, coverage.cells);
|
|
117
96
|
writeSurveyAreaRows(kdb, options, coverage.cellsByArea);
|
|
118
97
|
writeVocabularyRows(kdb, options.areas);
|
|
119
|
-
//
|
|
120
|
-
//
|
|
121
|
-
//
|
|
122
|
-
//
|
|
98
|
+
// The spine key is the column that consumers join on.
|
|
99
|
+
// It points at `soil_capability_cell`, which has one row per cell at one resolution.
|
|
100
|
+
// The `soil_map_unit_cell` table is keyed by cell and delineation at mixed
|
|
101
|
+
// resolutions, so consumers cannot join on it.
|
|
123
102
|
await writeLayerManifest(kdb, polygonLayerManifest(options, {
|
|
124
103
|
name: soilLayerName(options.region),
|
|
125
104
|
schemaVersion: SOIL_SCHEMA_VERSION,
|
|
@@ -131,7 +110,7 @@ export async function buildSoilDatabase(options) {
|
|
|
131
110
|
kdb.exec("DROP TABLE build_cell_touch");
|
|
132
111
|
const totalCellRows = cells.wholeRows + cells.partialRows;
|
|
133
112
|
return {
|
|
134
|
-
out: options.out,
|
|
113
|
+
out: options.out.toString(),
|
|
135
114
|
region: options.region,
|
|
136
115
|
surveyAreas: options.areas.length,
|
|
137
116
|
delineations: ingested.delineations,
|
|
@@ -160,10 +139,9 @@ export async function buildSoilDatabase(options) {
|
|
|
160
139
|
return { ...built, sizeBytes: await readFileSize(options.out) };
|
|
161
140
|
}
|
|
162
141
|
/**
|
|
163
|
-
*
|
|
142
|
+
* Sums the results of the ingest chunks.
|
|
164
143
|
*
|
|
165
|
-
*
|
|
166
|
-
* reach, and getting it wrong produces a well-formed artifact that under-reports how many delineations a cell holds.
|
|
144
|
+
* It is exported for a unit test because fixture builds do not exercise the batched path.
|
|
167
145
|
*/
|
|
168
146
|
export function aggregateChunks(chunks) {
|
|
169
147
|
const byArea = new Map();
|
|
@@ -179,17 +157,14 @@ export function aggregateChunks(chunks) {
|
|
|
179
157
|
nestedM2 += chunk.area.nestedM2;
|
|
180
158
|
allExteriorM2 += chunk.area.allExteriorM2;
|
|
181
159
|
byArea.set(chunk.areaSymbol, (byArea.get(chunk.areaSymbol) ?? 0) + chunk.delineations);
|
|
182
|
-
//
|
|
183
|
-
// straddle two survey areas — so the counts ADD rather than replace.
|
|
160
|
+
// One coverage cell can appear in several chunks and in two survey areas, so the counts are summed.
|
|
184
161
|
mergeCountsInto(observedByCoverageCell, chunk.observedByCoverageCell);
|
|
185
162
|
mergeCountsInto(mappedByCoverageCell, chunk.mappedByCoverageCell);
|
|
186
163
|
}
|
|
187
164
|
return { delineations, coarsened, byArea, observedByCoverageCell, mappedByCoverageCell, nestedM2, allExteriorM2 };
|
|
188
165
|
}
|
|
189
166
|
/**
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
* A short read builds a smaller county and reports success, which is the partial result that must throw.
|
|
167
|
+
* Throws when the streamed delineation count of a survey area differs from its declared count.
|
|
193
168
|
*/
|
|
194
169
|
function assertDelineationCounts(areas, streamed) {
|
|
195
170
|
for (const area of areas) {
|
|
@@ -203,11 +178,11 @@ function assertDelineationCounts(areas, streamed) {
|
|
|
203
178
|
}
|
|
204
179
|
}
|
|
205
180
|
/**
|
|
206
|
-
*
|
|
181
|
+
* Throws when the ring-area total differs from the published acreage by more than {@link AREA_TOLERANCE}.
|
|
207
182
|
*
|
|
208
|
-
* The message
|
|
209
|
-
*
|
|
210
|
-
*
|
|
183
|
+
* The error message includes the total with holes ignored, because a hole read
|
|
184
|
+
* as an exterior ring causes the gap.
|
|
185
|
+
* When no survey area publishes an acreage, the check is skipped.
|
|
211
186
|
*/
|
|
212
187
|
function assertAreaAgreement(areas, streamed) {
|
|
213
188
|
let publishedAcres = 0;
|
|
@@ -227,7 +202,7 @@ function assertAreaAgreement(areas, streamed) {
|
|
|
227
202
|
return area;
|
|
228
203
|
}
|
|
229
204
|
/**
|
|
230
|
-
*
|
|
205
|
+
* Writes every survey area's map units and components.
|
|
231
206
|
*/
|
|
232
207
|
function writeAttributes(database, areas) {
|
|
233
208
|
const insertMapUnit = database.prepare("INSERT OR REPLACE INTO soil_map_unit (mukey, areasymbol, musym, muname, mukind, mustatus, farmlndcl, farmland_scope, niccdcd, niccdcdpct, no_mapping) " +
|
|
@@ -246,7 +221,7 @@ function writeAttributes(database, areas) {
|
|
|
246
221
|
database.exec("COMMIT");
|
|
247
222
|
}
|
|
248
223
|
/**
|
|
249
|
-
*
|
|
224
|
+
* Returns the keys of the map units that have no soil mapping.
|
|
250
225
|
*/
|
|
251
226
|
function noMappingMukeys(areas) {
|
|
252
227
|
const mukeys = new Set();
|
|
@@ -260,7 +235,8 @@ function noMappingMukeys(areas) {
|
|
|
260
235
|
return mukeys;
|
|
261
236
|
}
|
|
262
237
|
/**
|
|
263
|
-
*
|
|
238
|
+
* Ingests one chunk per survey area in this process.
|
|
239
|
+
* Only fixtures use it.
|
|
264
240
|
*/
|
|
265
241
|
async function ingestInProcess(database, options) {
|
|
266
242
|
const noMapping = noMappingMukeys(options.areas);
|
|
@@ -280,13 +256,13 @@ async function ingestInProcess(database, options) {
|
|
|
280
256
|
return chunks;
|
|
281
257
|
}
|
|
282
258
|
/**
|
|
283
|
-
*
|
|
284
|
-
*
|
|
285
|
-
*
|
|
259
|
+
* Runs the ingest as a sequence of child processes, one per FID range of one survey area.
|
|
260
|
+
*
|
|
261
|
+
* The shared chunk protocol and its error handling live in `ingestChunkArguments` and `runChunkProcess`.
|
|
286
262
|
*/
|
|
287
263
|
async function runBatchedIngest(tmpPath, options) {
|
|
288
264
|
const chunkSize = options.chunkSize ?? DEFAULT_CHUNK_SIZE;
|
|
289
|
-
const script = resolveModulePath("@mailwoman/soil/
|
|
265
|
+
const script = resolveModulePath("@mailwoman/soil/sdk/ingest/worker");
|
|
290
266
|
const noMapping = [...noMappingMukeys(options.areas)];
|
|
291
267
|
const chunks = [];
|
|
292
268
|
for (const area of options.areas) {
|
|
@@ -324,22 +300,16 @@ async function runBatchedIngest(tmpPath, options) {
|
|
|
324
300
|
return chunks;
|
|
325
301
|
}
|
|
326
302
|
/**
|
|
327
|
-
*
|
|
303
|
+
* Returns one coverage row per interior cell of the built footprint that soil mapping reaches.
|
|
328
304
|
*
|
|
329
|
-
*
|
|
330
|
-
*
|
|
331
|
-
*
|
|
332
|
-
* county spans by area, so more than half of it would read `unknown` while sitting inside a survey the build had
|
|
333
|
-
* ingested. Run over the union, only the OUTER border of the built set is dropped, which is the honest edge: beyond it
|
|
334
|
-
* lies ground this artifact does not hold.
|
|
305
|
+
* The interior test keeps only cells that lie wholly inside the footprint.
|
|
306
|
+
* It runs once over the union of all outlines, because running it per survey area
|
|
307
|
+
* would drop every cell that crosses an internal county border.
|
|
335
308
|
*
|
|
336
|
-
*
|
|
337
|
-
* never looked at, and a point in the dropped strip reading `unknown` is the truthful answer for ground the built set
|
|
338
|
-
* may or may not reach.
|
|
309
|
+
* Only cells on the outer border of the built set are dropped.
|
|
339
310
|
*
|
|
340
|
-
* `observed_rows` counts the delineations
|
|
341
|
-
* only
|
|
342
|
-
* and the survey's §3.2 puts that case with the absences rather than with the coverage.
|
|
311
|
+
* The `observed_rows` column counts the delineations that reach the cell.
|
|
312
|
+
* A cell that only `notcom` and access-denied polygons reach gets no row, because it has no soil mapping.
|
|
343
313
|
*/
|
|
344
314
|
function buildCoverageCells(options, streamed) {
|
|
345
315
|
const footprint = {
|
|
@@ -359,8 +329,8 @@ function buildCoverageCells(options, streamed) {
|
|
|
359
329
|
withoutMapping++;
|
|
360
330
|
continue;
|
|
361
331
|
}
|
|
362
|
-
//
|
|
363
|
-
//
|
|
332
|
+
// The cell's center decides its survey area, so each cell counts for one area only.
|
|
333
|
+
// This per-area count is informational and does not affect the coverage rows.
|
|
364
334
|
const [latitude, longitude] = cellToLatLng(cell);
|
|
365
335
|
const owner = options.areas.find((input) => geometryContains(input.outline, longitude, latitude));
|
|
366
336
|
if (owner) {
|
|
@@ -371,10 +341,10 @@ function buildCoverageCells(options, streamed) {
|
|
|
371
341
|
return { cells, cellsByArea, withoutMapping };
|
|
372
342
|
}
|
|
373
343
|
/**
|
|
374
|
-
*
|
|
344
|
+
* Returns an outline's polygons in `MultiPolygon` coordinate form.
|
|
375
345
|
*
|
|
376
|
-
* @throws {TypeError} When the outline is not
|
|
377
|
-
*
|
|
346
|
+
* @throws {TypeError} When the outline is not a polygon or multipolygon.
|
|
347
|
+
* The build would silently drop that survey area's coverage if it skipped the outline.
|
|
378
348
|
*/
|
|
379
349
|
function outlinePolygons(outline) {
|
|
380
350
|
const polygons = arealPolygons(outline);
|
|
@@ -383,7 +353,7 @@ function outlinePolygons(outline) {
|
|
|
383
353
|
throw new TypeError(`soil build: a survey-area outline is a ${outline.type}, which bounds no area — its coverage would be silently absent rather than refused`);
|
|
384
354
|
}
|
|
385
355
|
/**
|
|
386
|
-
*
|
|
356
|
+
* Inserts one row per survey area.
|
|
387
357
|
*/
|
|
388
358
|
function writeSurveyAreaRows(database, options, cellsByArea) {
|
|
389
359
|
const insert = database.prepare("INSERT OR REPLACE INTO soil_survey_area (areasymbol, areaname, saverest, saversion, survey_source_date, survey_source_title, source_scale, mapping_scale, area_acres, min_lat, min_lon, max_lat, max_lon, coverage_cells, coverage_resolution) " +
|
|
@@ -415,10 +385,10 @@ function writeSurveyAreaRows(database, options, cellsByArea) {
|
|
|
415
385
|
database.exec("COMMIT");
|
|
416
386
|
}
|
|
417
387
|
/**
|
|
418
|
-
*
|
|
388
|
+
* Inserts the authority's declared domains and the share weighting.
|
|
419
389
|
*
|
|
420
|
-
*
|
|
421
|
-
*
|
|
390
|
+
* Every cell row stores the weighting code.
|
|
391
|
+
* The vocabulary row adds the description of that code.
|
|
422
392
|
*/
|
|
423
393
|
function writeVocabularyRows(database, areas) {
|
|
424
394
|
const insert = database.prepare("INSERT OR REPLACE INTO soil_vocabulary (domain, code, definition, sequence) VALUES (?, ?, ?, ?)");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-soil.js","sourceRoot":"","sources":["../../lib/sdk/build-soil.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"build-soil.js","sourceRoot":"","sources":["../../sdk/build-soil.ts"],"names":[],"mappings":"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"}
|
package/out/sdk/cell-tiers.d.ts
CHANGED
|
@@ -3,26 +3,15 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* index, and the reduction above it.
|
|
8
|
-
*
|
|
9
|
-
* BOTH READ THE TOUCH TABLE, AND ONLY ONE OF THEM COMPACTS. `resolveCells` writes the tiers a probe walks
|
|
10
|
-
* and collapses uniform interiors parent-ward; `reduceCells` reads the UNCOMPACTED touches, because a
|
|
11
|
-
* compacted parent no longer names the cells the reduction has to answer.
|
|
12
|
-
*
|
|
13
|
-
* THE REDUCTION IS THE SLOW PHASE AND ITS MEMORY IS BOUNDED BY CONSTRUCTION. A lattice of 49 point tests
|
|
14
|
-
* per sampled cell, over a delineation cache that is cleared whole rather than evicted one entry at a
|
|
15
|
-
* time — see {@link GEOMETRY_CACHE_ENTRIES}. Memory stays flat in row count, which is the property the poi
|
|
16
|
-
* build lost when a reader materialized instead of streaming.
|
|
6
|
+
* Turns the build's cell-touch table into the containment index and the per-cell capability reduction.
|
|
17
7
|
*/
|
|
18
8
|
import type { DatabaseClient } from "@mailwoman/sqlite/client";
|
|
19
9
|
import { type SoilDatabase } from "#schema";
|
|
20
10
|
/**
|
|
21
|
-
*
|
|
11
|
+
* Writes the touch table into the `soil_map_unit_cell` containment index.
|
|
22
12
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* smaller than one resolution-9 cell.
|
|
13
|
+
* Only whole cells are compacted.
|
|
14
|
+
* Most soil delineations are smaller than one index cell, so compaction removes few rows on this layer.
|
|
26
15
|
*/
|
|
27
16
|
export declare function resolveCells(database: DatabaseClient<SoilDatabase>, indexResolution: number): {
|
|
28
17
|
wholeRows: number;
|
|
@@ -30,11 +19,10 @@ export declare function resolveCells(database: DatabaseClient<SoilDatabase>, ind
|
|
|
30
19
|
resolutions: number[];
|
|
31
20
|
};
|
|
32
21
|
/**
|
|
33
|
-
*
|
|
22
|
+
* Reduces the touch table into `soil_capability_cell`.
|
|
34
23
|
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* about which delineation reaches which cell.
|
|
24
|
+
* It reads the touch table because `soil_map_unit_cell` is compacted.
|
|
25
|
+
* A compacted parent cell hides the index cells that the reduction must answer.
|
|
38
26
|
*/
|
|
39
27
|
export declare function reduceCells(database: DatabaseClient<SoilDatabase>, indexResolution: number, onProgress?: (message: string) => void): {
|
|
40
28
|
cells: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cell-tiers.d.ts","sourceRoot":"","sources":["../../
|
|
1
|
+
{"version":3,"file":"cell-tiers.d.ts","sourceRoot":"","sources":["../../sdk/cell-tiers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAG9D,OAAO,EAAqD,KAAK,YAAY,EAAE,MAAM,SAAS,CAAA;AAG9F;;;;;GAKG;AACH,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,cAAc,CAAC,YAAY,CAAC,EACtC,eAAe,EAAE,MAAM,GACrB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,CA0DnE;AA0BD;;;;;GAKG;AACH,wBAAgB,WAAW,CAC1B,QAAQ,EAAE,cAAc,CAAC,YAAY,CAAC,EACtC,eAAe,EAAE,MAAM,EACvB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACpC;IACF,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;CACtB,CAmHA"}
|
package/out/sdk/cell-tiers.js
CHANGED
|
@@ -3,17 +3,7 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* index, and the reduction above it.
|
|
8
|
-
*
|
|
9
|
-
* BOTH READ THE TOUCH TABLE, AND ONLY ONE OF THEM COMPACTS. `resolveCells` writes the tiers a probe walks
|
|
10
|
-
* and collapses uniform interiors parent-ward; `reduceCells` reads the UNCOMPACTED touches, because a
|
|
11
|
-
* compacted parent no longer names the cells the reduction has to answer.
|
|
12
|
-
*
|
|
13
|
-
* THE REDUCTION IS THE SLOW PHASE AND ITS MEMORY IS BOUNDED BY CONSTRUCTION. A lattice of 49 point tests
|
|
14
|
-
* per sampled cell, over a delineation cache that is cleared whole rather than evicted one entry at a
|
|
15
|
-
* time — see {@link GEOMETRY_CACHE_ENTRIES}. Memory stays flat in row count, which is the property the poi
|
|
16
|
-
* build lost when a reader materialized instead of streaming.
|
|
6
|
+
* Turns the build's cell-touch table into the containment index and the per-cell capability reduction.
|
|
17
7
|
*/
|
|
18
8
|
import { expandShortCellInt, shortCellToInt } from "@mailwoman/spatial";
|
|
19
9
|
import { beginBatched } from "@mailwoman/sqlite/batched";
|
|
@@ -21,11 +11,10 @@ import { compactCells, getResolution } from "h3-js";
|
|
|
21
11
|
import { SoilCellContainment } from "#schema";
|
|
22
12
|
import { mapUnitProfile, reduceCell } from "#sdk/reduce";
|
|
23
13
|
/**
|
|
24
|
-
*
|
|
14
|
+
* Writes the touch table into the `soil_map_unit_cell` containment index.
|
|
25
15
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* smaller than one resolution-9 cell.
|
|
16
|
+
* Only whole cells are compacted.
|
|
17
|
+
* Most soil delineations are smaller than one index cell, so compaction removes few rows on this layer.
|
|
29
18
|
*/
|
|
30
19
|
export function resolveCells(database, indexResolution) {
|
|
31
20
|
database.exec("CREATE INDEX build_cell_touch_area_cell ON build_cell_touch (area_id, resolution, is_full, h3_cell)");
|
|
@@ -35,9 +24,8 @@ export function resolveCells(database, indexResolution) {
|
|
|
35
24
|
const insertCell = database.prepare("INSERT OR REPLACE INTO soil_map_unit_cell (h3_cell, resolution, area_id, containment) VALUES (?, ?, ?, ?)");
|
|
36
25
|
const resolutions = new Set();
|
|
37
26
|
let wholeRows = 0;
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
// delineation's interior.
|
|
27
|
+
// Each group is one delineation at one resolution, because `compactCells` throws on mixed resolutions.
|
|
28
|
+
// Coarsened delineations are indexed at other resolutions, so every group must be compacted.
|
|
41
29
|
database.exec("BEGIN");
|
|
42
30
|
for (const { area_id: areaID, resolution } of groups) {
|
|
43
31
|
const whole = database
|
|
@@ -51,9 +39,8 @@ export function resolveCells(database, indexResolution) {
|
|
|
51
39
|
}
|
|
52
40
|
}
|
|
53
41
|
database.exec("COMMIT");
|
|
54
|
-
// The partial rows
|
|
55
|
-
//
|
|
56
|
-
// than rely on the key: a partial row replacing a whole one would demote an answered cell to a ray cast.
|
|
42
|
+
// The partial rows use `INSERT OR IGNORE` so that they never replace a whole row with the same key.
|
|
43
|
+
// A replaced whole row would force the reader to ray-cast a cell it could answer directly.
|
|
57
44
|
database.exec("INSERT OR IGNORE INTO soil_map_unit_cell (h3_cell, resolution, area_id, containment) " +
|
|
58
45
|
"SELECT DISTINCT t.h3_cell, t.resolution, t.area_id, 'partial' FROM build_cell_touch t WHERE t.is_full = 0");
|
|
59
46
|
const partialRows = database.prepare("SELECT count(*) AS n FROM soil_map_unit_cell WHERE containment = 'partial'").get().n;
|
|
@@ -64,25 +51,20 @@ export function resolveCells(database, indexResolution) {
|
|
|
64
51
|
return { wholeRows, partialRows, resolutions: [...resolutions].toSorted((left, right) => left - right) };
|
|
65
52
|
}
|
|
66
53
|
/**
|
|
67
|
-
*
|
|
68
|
-
* so it reports often enough that a long run is visibly alive.
|
|
54
|
+
* The number of cells reduced between progress reports and commits.
|
|
69
55
|
*/
|
|
70
56
|
const REDUCE_PROGRESS_STRIDE = 50_000;
|
|
71
57
|
/**
|
|
72
|
-
*
|
|
58
|
+
* The maximum number of delineations that the reduction keeps in memory.
|
|
73
59
|
*
|
|
74
|
-
*
|
|
75
|
-
* kB, so 200,000 of them is a few hundred megabytes — comfortable, and far below the 2.5 million a whole state holds.
|
|
76
|
-
* Memory stays flat in row count, which is the property the poi build lost when a reader materialized instead of
|
|
77
|
-
* streaming.
|
|
60
|
+
* The limit keeps memory bounded when a state has millions of delineations.
|
|
78
61
|
*/
|
|
79
62
|
const GEOMETRY_CACHE_ENTRIES = 200_000;
|
|
80
63
|
/**
|
|
81
|
-
*
|
|
64
|
+
* Reduces the touch table into `soil_capability_cell`.
|
|
82
65
|
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
* about which delineation reaches which cell.
|
|
66
|
+
* It reads the touch table because `soil_map_unit_cell` is compacted.
|
|
67
|
+
* A compacted parent cell hides the index cells that the reduction must answer.
|
|
86
68
|
*/
|
|
87
69
|
export function reduceCells(database, indexResolution, onProgress) {
|
|
88
70
|
const profiles = readMapUnitProfiles(database);
|
|
@@ -101,11 +83,10 @@ export function reduceCells(database, indexResolution, onProgress) {
|
|
|
101
83
|
let currentCell;
|
|
102
84
|
let currentResolution = indexResolution;
|
|
103
85
|
let candidates = [];
|
|
104
|
-
//
|
|
105
|
-
//
|
|
106
|
-
//
|
|
107
|
-
//
|
|
108
|
-
// refills with the delineations the next run of cells actually names.
|
|
86
|
+
// Each delineation touches several cells, so the cache avoids reading its rings once per touch.
|
|
87
|
+
// The cache is cleared whole when it fills.
|
|
88
|
+
// The scan runs in `h3_cell` order and visits neighboring cells together.
|
|
89
|
+
// After a clear, the cache refills with the delineations that the next cells need.
|
|
109
90
|
const geometry = new Map();
|
|
110
91
|
const batch = beginBatched(database, { rowsPerCommit: REDUCE_PROGRESS_STRIDE });
|
|
111
92
|
const flush = () => {
|
|
@@ -170,7 +151,7 @@ function insertRow(statement, row) {
|
|
|
170
151
|
statement.run(row.h3_cell, row.class_shares, row.unrated_share, row.notrateable_share, row.nodata_share, row.other_share, row.mapped_share, row.top_class, row.top_class_share, row.weighting, row.delineations);
|
|
171
152
|
}
|
|
172
153
|
/**
|
|
173
|
-
*
|
|
154
|
+
* Computes every map unit's profile once so that each cell reuses it.
|
|
174
155
|
*/
|
|
175
156
|
function readMapUnitProfiles(database) {
|
|
176
157
|
const componentsByMukey = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cell-tiers.js","sourceRoot":"","sources":["../../
|
|
1
|
+
{"version":3,"file":"cell-tiers.js","sourceRoot":"","sources":["../../sdk/cell-tiers.ts"],"names":[],"mappings":"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"}
|