@mailwoman/soil 9.2.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 +221 -0
- package/lib/index.ts +474 -0
- package/lib/schema.ts +493 -0
- package/lib/scripts/ingest-chunk.ts +47 -0
- package/lib/sdk/acquire.ts +124 -0
- package/lib/sdk/build-soil.ts +778 -0
- package/lib/sdk/cell-tiers.ts +310 -0
- package/lib/sdk/cells.ts +224 -0
- package/lib/sdk/client.ts +273 -0
- package/lib/sdk/download.ts +161 -0
- package/lib/sdk/index.ts +20 -0
- package/lib/sdk/ingest-chunk.ts +182 -0
- package/lib/sdk/ingest.ts +271 -0
- package/lib/sdk/measure-resolutions.ts +81 -0
- package/lib/sdk/reduce.ts +375 -0
- package/lib/sdk/survey-area.ts +467 -0
- package/lib/sdk/tabular.ts +296 -0
- package/lib/sdk/verify.ts +369 -0
- package/lib/test-kit.ts +255 -0
- package/lib/vocabulary.ts +241 -0
- package/out/index.d.ts +199 -0
- package/out/index.d.ts.map +1 -0
- package/out/index.js +255 -0
- package/out/index.js.map +1 -0
- package/out/schema.d.ts +369 -0
- package/out/schema.d.ts.map +1 -0
- package/out/schema.js +186 -0
- package/out/schema.js.map +1 -0
- package/out/scripts/ingest-chunk.d.ts +11 -0
- package/out/scripts/ingest-chunk.d.ts.map +1 -0
- package/out/scripts/ingest-chunk.js +42 -0
- package/out/scripts/ingest-chunk.js.map +1 -0
- package/out/sdk/acquire.d.ts +60 -0
- package/out/sdk/acquire.d.ts.map +1 -0
- package/out/sdk/acquire.js +74 -0
- package/out/sdk/acquire.js.map +1 -0
- package/out/sdk/build-soil.d.ts +197 -0
- package/out/sdk/build-soil.d.ts.map +1 -0
- package/out/sdk/build-soil.js +434 -0
- package/out/sdk/build-soil.js.map +1 -0
- package/out/sdk/cell-tiers.d.ts +47 -0
- package/out/sdk/cell-tiers.d.ts.map +1 -0
- package/out/sdk/cell-tiers.js +194 -0
- package/out/sdk/cell-tiers.js.map +1 -0
- package/out/sdk/cells.d.ts +118 -0
- package/out/sdk/cells.d.ts.map +1 -0
- package/out/sdk/cells.js +140 -0
- package/out/sdk/cells.js.map +1 -0
- package/out/sdk/client.d.ts +120 -0
- package/out/sdk/client.d.ts.map +1 -0
- package/out/sdk/client.js +214 -0
- package/out/sdk/client.js.map +1 -0
- package/out/sdk/download.d.ts +84 -0
- package/out/sdk/download.d.ts.map +1 -0
- package/out/sdk/download.js +117 -0
- package/out/sdk/download.js.map +1 -0
- package/out/sdk/index.d.ts +20 -0
- package/out/sdk/index.d.ts.map +1 -0
- package/out/sdk/index.js +20 -0
- package/out/sdk/index.js.map +1 -0
- package/out/sdk/ingest-chunk.d.ts +73 -0
- package/out/sdk/ingest-chunk.d.ts.map +1 -0
- package/out/sdk/ingest-chunk.js +98 -0
- package/out/sdk/ingest-chunk.js.map +1 -0
- package/out/sdk/ingest.d.ts +132 -0
- package/out/sdk/ingest.d.ts.map +1 -0
- package/out/sdk/ingest.js +163 -0
- package/out/sdk/ingest.js.map +1 -0
- package/out/sdk/measure-resolutions.d.ts +39 -0
- package/out/sdk/measure-resolutions.d.ts.map +1 -0
- package/out/sdk/measure-resolutions.js +52 -0
- package/out/sdk/measure-resolutions.js.map +1 -0
- package/out/sdk/reduce.d.ts +122 -0
- package/out/sdk/reduce.d.ts.map +1 -0
- package/out/sdk/reduce.js +266 -0
- package/out/sdk/reduce.js.map +1 -0
- package/out/sdk/survey-area.d.ts +105 -0
- package/out/sdk/survey-area.d.ts.map +1 -0
- package/out/sdk/survey-area.js +346 -0
- package/out/sdk/survey-area.js.map +1 -0
- package/out/sdk/tabular.d.ts +106 -0
- package/out/sdk/tabular.d.ts.map +1 -0
- package/out/sdk/tabular.js +194 -0
- package/out/sdk/tabular.js.map +1 -0
- package/out/sdk/verify.d.ts +135 -0
- package/out/sdk/verify.d.ts.map +1 -0
- package/out/sdk/verify.js +221 -0
- package/out/sdk/verify.js.map +1 -0
- package/out/test-kit.d.ts +80 -0
- package/out/test-kit.d.ts.map +1 -0
- package/out/test-kit.js +228 -0
- package/out/test-kit.js.map +1 -0
- package/out/vocabulary.d.ts +179 -0
- package/out/vocabulary.d.ts.map +1 -0
- package/out/vocabulary.js +215 -0
- package/out/vocabulary.js.map +1 -0
- package/package.json +276 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Hand-built survey areas for the fixture rung: geometry, attributes and an outline, with no network and
|
|
7
|
+
* no GDAL in the loop.
|
|
8
|
+
*
|
|
9
|
+
* A FIXTURE RUNG THAT COULD ONLY RUN THROUGH ogr2ogr WOULD TEST THE CONVERSION ON THE MACHINES THAT HAVE
|
|
10
|
+
* IT AND NOTHING AT ALL ON THE ONES THAT DO NOT. What these fixtures exercise is the whole database half —
|
|
11
|
+
* the declared-domain check, the cell classification, the area-weighted reduction, the four absence
|
|
12
|
+
* shares, the coverage rows, the manifest and the seal.
|
|
13
|
+
*
|
|
14
|
+
* THE ABSENCE CASES ARE THE POINT, AND IOWA HAS NONE OF THEM. Every Iowa survey area is fully digitized,
|
|
15
|
+
* so `NOTCOM`, `NOTPUB` and access-denied map units never appear in the live build — which means the only
|
|
16
|
+
* place `nodata_share` can be exercised is here. The same is true of a component whose rating is NULL for
|
|
17
|
+
* the not-rateable reason and of a class-8 rating: both exist in Iowa but sparsely, and a fixture pins the
|
|
18
|
+
* behaviour rather than hoping a county contains one.
|
|
19
|
+
*/
|
|
20
|
+
import type { SoilComponentTable, SoilMapUnitTable } from "#schema";
|
|
21
|
+
import type { SoilDelineation, SoilFeatureSource } from "#sdk/ingest";
|
|
22
|
+
import type { SurveyAreaAttributes } from "#sdk/survey-area";
|
|
23
|
+
/**
|
|
24
|
+
* Re-exported so a fixture in another workspace builds its rings the same way this one does.
|
|
25
|
+
*/
|
|
26
|
+
export { rectangleRing, reversedRing as holeRing } from "@mailwoman/spatial";
|
|
27
|
+
/**
|
|
28
|
+
* Where the fixture geometry sits — central Iowa, so the cells it produces are the ones a real build would use.
|
|
29
|
+
*/
|
|
30
|
+
export declare const FIXTURE_ORIGIN: {
|
|
31
|
+
lat: number;
|
|
32
|
+
lon: number;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Degrees per fixture square side. About 1.6 km at this latitude — several resolution-9 cells across, so a fixture
|
|
36
|
+
* square has both an interior and a fringe.
|
|
37
|
+
*/
|
|
38
|
+
export declare const FIXTURE_SIDE = 0.015;
|
|
39
|
+
/**
|
|
40
|
+
* The fixture map units. Each one exists to exercise exactly one reading.
|
|
41
|
+
*/
|
|
42
|
+
export declare function fixtureMapUnits(areaSymbol?: string): SoilMapUnitTable[];
|
|
43
|
+
/**
|
|
44
|
+
* The fixture components. `mu-mixed` is 45/35/20 across three classes, which is the case a winner-class schema would
|
|
45
|
+
* report as "class 2" and this one reports as a mixture.
|
|
46
|
+
*/
|
|
47
|
+
export declare function fixtureComponents(): SoilComponentTable[];
|
|
48
|
+
/**
|
|
49
|
+
* The declared domains a fixture build validates and stores, matching what the real `msdomdet.txt` ships.
|
|
50
|
+
*/
|
|
51
|
+
export declare function fixtureDomains(): SurveyAreaAttributes["domains"];
|
|
52
|
+
/**
|
|
53
|
+
* The fixture delineations: a mixed square, a class-8 square, a water square, an unrated square, and a `NOTCOM` square,
|
|
54
|
+
* laid out left to right so each occupies its own ground.
|
|
55
|
+
*/
|
|
56
|
+
export declare function fixtureDelineations(areaSymbol?: string): SoilDelineation[];
|
|
57
|
+
/**
|
|
58
|
+
* The outline covering every fixture delineation, with margin — the survey area's own footprint.
|
|
59
|
+
*
|
|
60
|
+
* The margin is nearly a degree because the coverage test is CONSERVATIVE: `interiorCoverageCellSet` keeps only cells
|
|
61
|
+
* lying wholly inside the outline, and a resolution-6 cell is about 36 km across. An outline the size of the fixture
|
|
62
|
+
* squares yields zero interior cells and the build refuses — correctly, since an artifact with no coverage rows answers
|
|
63
|
+
* unknown everywhere while reporting success.
|
|
64
|
+
*/
|
|
65
|
+
export declare function fixtureOutline(margin?: number): {
|
|
66
|
+
type: "Polygon";
|
|
67
|
+
coordinates: number[][][];
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* A feature source over hand-built delineations.
|
|
71
|
+
*/
|
|
72
|
+
export declare function fixtureSource(delineations: SoilDelineation[], areaSymbol?: string): SoilFeatureSource;
|
|
73
|
+
/**
|
|
74
|
+
* One fixture survey area's attributes.
|
|
75
|
+
*
|
|
76
|
+
* `areaAcres` is left NULL on purpose: the area cross-check compares against what the AUTHORITY publishes, and a
|
|
77
|
+
* fixture that invented an acreage would be checking this package's arithmetic against itself.
|
|
78
|
+
*/
|
|
79
|
+
export declare function fixtureAttributes(areaSymbol?: string): SurveyAreaAttributes;
|
|
80
|
+
//# sourceMappingURL=test-kit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-kit.d.ts","sourceRoot":"","sources":["../lib/test-kit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAE5D;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,YAAY,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE5E;;GAEG;AACH,eAAO,MAAM,cAAc;;;CAA4B,CAAA;AAEvD;;;GAGG;AACH,eAAO,MAAM,YAAY,QAAQ,CAAA;AAEjC;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,SAAU,GAAG,gBAAgB,EAAE,CAoExE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,kBAAkB,EAAE,CAaxD;AAwBD;;GAEG;AACH,wBAAgB,cAAc,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAiBhE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,SAAU,GAAG,eAAe,EAAE,CAU3E;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,SAAO,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;CAAE,CAS5F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,eAAe,EAAE,EAAE,UAAU,SAAU,GAAG,iBAAiB,CAatG;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,SAAU,GAAG,oBAAoB,CAe5E"}
|
package/out/test-kit.js
ADDED
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Hand-built survey areas for the fixture rung: geometry, attributes and an outline, with no network and
|
|
7
|
+
* no GDAL in the loop.
|
|
8
|
+
*
|
|
9
|
+
* A FIXTURE RUNG THAT COULD ONLY RUN THROUGH ogr2ogr WOULD TEST THE CONVERSION ON THE MACHINES THAT HAVE
|
|
10
|
+
* IT AND NOTHING AT ALL ON THE ONES THAT DO NOT. What these fixtures exercise is the whole database half —
|
|
11
|
+
* the declared-domain check, the cell classification, the area-weighted reduction, the four absence
|
|
12
|
+
* shares, the coverage rows, the manifest and the seal.
|
|
13
|
+
*
|
|
14
|
+
* THE ABSENCE CASES ARE THE POINT, AND IOWA HAS NONE OF THEM. Every Iowa survey area is fully digitized,
|
|
15
|
+
* so `NOTCOM`, `NOTPUB` and access-denied map units never appear in the live build — which means the only
|
|
16
|
+
* place `nodata_share` can be exercised is here. The same is true of a component whose rating is NULL for
|
|
17
|
+
* the not-rateable reason and of a class-8 rating: both exist in Iowa but sparsely, and a fixture pins the
|
|
18
|
+
* behaviour rather than hoping a county contains one.
|
|
19
|
+
*/
|
|
20
|
+
// The exterior and hole ring builders live in `@mailwoman/spatial` — a winding convention rather than this
|
|
21
|
+
// product's geometry, and a second copy of it is a second place for a hole to stop being one.
|
|
22
|
+
import { rectangleRing } from "@mailwoman/spatial";
|
|
23
|
+
/**
|
|
24
|
+
* Re-exported so a fixture in another workspace builds its rings the same way this one does.
|
|
25
|
+
*/
|
|
26
|
+
export { rectangleRing, reversedRing as holeRing } from "@mailwoman/spatial";
|
|
27
|
+
/**
|
|
28
|
+
* Where the fixture geometry sits — central Iowa, so the cells it produces are the ones a real build would use.
|
|
29
|
+
*/
|
|
30
|
+
export const FIXTURE_ORIGIN = { lat: 41.6, lon: -93.6 };
|
|
31
|
+
/**
|
|
32
|
+
* Degrees per fixture square side. About 1.6 km at this latitude — several resolution-9 cells across, so a fixture
|
|
33
|
+
* square has both an interior and a fringe.
|
|
34
|
+
*/
|
|
35
|
+
export const FIXTURE_SIDE = 0.015;
|
|
36
|
+
/**
|
|
37
|
+
* The fixture map units. Each one exists to exercise exactly one reading.
|
|
38
|
+
*/
|
|
39
|
+
export function fixtureMapUnits(areaSymbol = "XX001") {
|
|
40
|
+
return [
|
|
41
|
+
{
|
|
42
|
+
mukey: "mu-mixed",
|
|
43
|
+
areasymbol: areaSymbol,
|
|
44
|
+
musym: "M1",
|
|
45
|
+
muname: "Fixture complex, 0 to 2 percent slopes",
|
|
46
|
+
mukind: "Complex",
|
|
47
|
+
mustatus: null,
|
|
48
|
+
farmlndcl: "Prime farmland if drained",
|
|
49
|
+
farmland_scope: "federal",
|
|
50
|
+
niccdcd: "2",
|
|
51
|
+
niccdcdpct: 45,
|
|
52
|
+
no_mapping: 0,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
mukey: "mu-class8",
|
|
56
|
+
areasymbol: areaSymbol,
|
|
57
|
+
musym: "M8",
|
|
58
|
+
muname: "Fixture badland",
|
|
59
|
+
mukind: "Consociation",
|
|
60
|
+
mustatus: null,
|
|
61
|
+
farmlndcl: "Not prime farmland",
|
|
62
|
+
farmland_scope: "none",
|
|
63
|
+
niccdcd: "8",
|
|
64
|
+
niccdcdpct: 100,
|
|
65
|
+
no_mapping: 0,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
mukey: "mu-water",
|
|
69
|
+
areasymbol: areaSymbol,
|
|
70
|
+
musym: "W",
|
|
71
|
+
muname: "Water",
|
|
72
|
+
mukind: "Consociation",
|
|
73
|
+
mustatus: null,
|
|
74
|
+
farmlndcl: null,
|
|
75
|
+
farmland_scope: "none",
|
|
76
|
+
niccdcd: null,
|
|
77
|
+
niccdcdpct: null,
|
|
78
|
+
no_mapping: 0,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
mukey: "mu-unrated",
|
|
82
|
+
areasymbol: areaSymbol,
|
|
83
|
+
musym: "U",
|
|
84
|
+
muname: "Fixture silt loam, unrated",
|
|
85
|
+
mukind: "Consociation",
|
|
86
|
+
mustatus: null,
|
|
87
|
+
farmlndcl: "Farmland of statewide importance",
|
|
88
|
+
farmland_scope: "state",
|
|
89
|
+
niccdcd: null,
|
|
90
|
+
niccdcdpct: null,
|
|
91
|
+
no_mapping: 0,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
mukey: "mu-notcom",
|
|
95
|
+
areasymbol: areaSymbol,
|
|
96
|
+
musym: "NOTCOM",
|
|
97
|
+
muname: "No Digital Data Available",
|
|
98
|
+
mukind: null,
|
|
99
|
+
mustatus: null,
|
|
100
|
+
farmlndcl: null,
|
|
101
|
+
farmland_scope: "none",
|
|
102
|
+
niccdcd: null,
|
|
103
|
+
niccdcdpct: null,
|
|
104
|
+
no_mapping: 1,
|
|
105
|
+
},
|
|
106
|
+
];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* The fixture components. `mu-mixed` is 45/35/20 across three classes, which is the case a winner-class schema would
|
|
110
|
+
* report as "class 2" and this one reports as a mixture.
|
|
111
|
+
*/
|
|
112
|
+
export function fixtureComponents() {
|
|
113
|
+
return [
|
|
114
|
+
component("co-mixed-1", "mu-mixed", 45, "Series", "2", "e"),
|
|
115
|
+
component("co-mixed-2", "mu-mixed", 35, "Series", "3", "e"),
|
|
116
|
+
component("co-mixed-3", "mu-mixed", 20, "Series", "6", "s"),
|
|
117
|
+
component("co-class8", "mu-class8", 100, "Series", "8", "s"),
|
|
118
|
+
// A miscellaneous area with no rating: NOT RATEABLE, which is not the same as unrated and not the same as class 8.
|
|
119
|
+
component("co-water", "mu-water", 100, "Miscellaneous area", null, null),
|
|
120
|
+
// A named soil the survey did not rate: UNRATED.
|
|
121
|
+
component("co-unrated", "mu-unrated", 100, "Series", null, null),
|
|
122
|
+
// A minority component small enough to fall under the truncation floor once the lattice splits it.
|
|
123
|
+
component("co-tail", "mu-mixed", 1, "Series", "7", "e"),
|
|
124
|
+
];
|
|
125
|
+
}
|
|
126
|
+
function component(cokey, mukey, comppct, compkind, nirrcapcl, nirrcapscl) {
|
|
127
|
+
return {
|
|
128
|
+
cokey,
|
|
129
|
+
mukey,
|
|
130
|
+
comppct_r: comppct,
|
|
131
|
+
compname: cokey,
|
|
132
|
+
compkind,
|
|
133
|
+
nirrcapcl,
|
|
134
|
+
nirrcapscl,
|
|
135
|
+
irrcapcl: null,
|
|
136
|
+
irrcapscl: null,
|
|
137
|
+
nccpi_v3: null,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* The declared domains a fixture build validates and stores, matching what the real `msdomdet.txt` ships.
|
|
142
|
+
*/
|
|
143
|
+
export function fixtureDomains() {
|
|
144
|
+
const members = [];
|
|
145
|
+
for (const [index, code] of ["1", "2", "3", "4", "5", "6", "7", "8"].entries()) {
|
|
146
|
+
members.push({
|
|
147
|
+
domain: "capability_class",
|
|
148
|
+
code,
|
|
149
|
+
sequence: index + 1,
|
|
150
|
+
definition: `Soils in Class ${code} — fixture definition.`,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
for (const [index, code] of ["e", "w", "s", "c"].entries()) {
|
|
154
|
+
members.push({ domain: "capability_subclass", code, sequence: index + 1, definition: `Fixture subclass ${code}.` });
|
|
155
|
+
}
|
|
156
|
+
return members;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* The fixture delineations: a mixed square, a class-8 square, a water square, an unrated square, and a `NOTCOM` square,
|
|
160
|
+
* laid out left to right so each occupies its own ground.
|
|
161
|
+
*/
|
|
162
|
+
export function fixtureDelineations(areaSymbol = "XX001") {
|
|
163
|
+
const { lat, lon } = FIXTURE_ORIGIN;
|
|
164
|
+
const mukeys = ["mu-mixed", "mu-class8", "mu-water", "mu-unrated", "mu-notcom"];
|
|
165
|
+
return mukeys.map((mukey, index) => ({
|
|
166
|
+
areaID: `${areaSymbol}:${index}`,
|
|
167
|
+
mukey,
|
|
168
|
+
areasymbol: areaSymbol,
|
|
169
|
+
polygons: [[rectangleRing(lon + index * FIXTURE_SIDE, lat, lon + (index + 1) * FIXTURE_SIDE, lat + FIXTURE_SIDE)]],
|
|
170
|
+
}));
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* The outline covering every fixture delineation, with margin — the survey area's own footprint.
|
|
174
|
+
*
|
|
175
|
+
* The margin is nearly a degree because the coverage test is CONSERVATIVE: `interiorCoverageCellSet` keeps only cells
|
|
176
|
+
* lying wholly inside the outline, and a resolution-6 cell is about 36 km across. An outline the size of the fixture
|
|
177
|
+
* squares yields zero interior cells and the build refuses — correctly, since an artifact with no coverage rows answers
|
|
178
|
+
* unknown everywhere while reporting success.
|
|
179
|
+
*/
|
|
180
|
+
export function fixtureOutline(margin = 0.75) {
|
|
181
|
+
const { lat, lon } = FIXTURE_ORIGIN;
|
|
182
|
+
return {
|
|
183
|
+
type: "Polygon",
|
|
184
|
+
coordinates: [
|
|
185
|
+
rectangleRing(lon - margin, lat - margin, lon + 5 * FIXTURE_SIDE + margin, lat + FIXTURE_SIDE + margin),
|
|
186
|
+
],
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* A feature source over hand-built delineations.
|
|
191
|
+
*/
|
|
192
|
+
export function fixtureSource(delineations, areaSymbol = "XX001") {
|
|
193
|
+
return {
|
|
194
|
+
areaSymbol,
|
|
195
|
+
declaredFeatureCount: delineations.length,
|
|
196
|
+
layer: `soilmu_a_${areaSymbol.toLowerCase()}`,
|
|
197
|
+
epsg: 4326,
|
|
198
|
+
origin: "fixture",
|
|
199
|
+
async *delineations() {
|
|
200
|
+
for (const delineation of delineations) {
|
|
201
|
+
yield delineation;
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* One fixture survey area's attributes.
|
|
208
|
+
*
|
|
209
|
+
* `areaAcres` is left NULL on purpose: the area cross-check compares against what the AUTHORITY publishes, and a
|
|
210
|
+
* fixture that invented an acreage would be checking this package's arithmetic against itself.
|
|
211
|
+
*/
|
|
212
|
+
export function fixtureAttributes(areaSymbol = "XX001") {
|
|
213
|
+
return {
|
|
214
|
+
areasymbol: areaSymbol,
|
|
215
|
+
areaname: "Fixture County, Iowa",
|
|
216
|
+
saverest: "2025-09-09",
|
|
217
|
+
saversion: 1,
|
|
218
|
+
surveySourceDate: "1960",
|
|
219
|
+
surveySourceTitle: "Soil Survey of Fixture County, Iowa",
|
|
220
|
+
sourceScale: 15_840,
|
|
221
|
+
mappingScale: 12_000,
|
|
222
|
+
areaAcres: null,
|
|
223
|
+
mapUnits: fixtureMapUnits(areaSymbol),
|
|
224
|
+
components: fixtureComponents(),
|
|
225
|
+
domains: fixtureDomains(),
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=test-kit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-kit.js","sourceRoot":"","sources":["../lib/test-kit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* NRCS's own words, as data: the product identity, the licence sentence it ships inside every archive,
|
|
7
|
+
* the acknowledgement it asks for, and the caveats that decide what a reading may claim.
|
|
8
|
+
*
|
|
9
|
+
* THE RATING VOCABULARY IS NOT HERE, BECAUSE THE AUTHORITY SHIPS IT. `msdomdet.txt` inside each survey
|
|
10
|
+
* area's tabular export carries the declared domain for every `Choice` column, WITH the authority's own
|
|
11
|
+
* prose definition of each member — capability classes 1 through 8, subclasses `c`/`e`/`s`/`w`, the 28
|
|
12
|
+
* farmland classifications, the six component kinds. So the layer reads the domain out of the file it
|
|
13
|
+
* ingested rather than transcribing it from the National Soil Survey Handbook, and an out-of-domain value
|
|
14
|
+
* throws: an unknown code is a source-schema change, which is the event a reader most needs to hear
|
|
15
|
+
* about, and coercing it to a nearest neighbour or to NULL converts "the source changed" into "there is
|
|
16
|
+
* nothing here".
|
|
17
|
+
*
|
|
18
|
+
* THE FARMLAND VOCABULARY IS CONDITIONAL AND THE CONDITION IS THE CLAIM. 28 declared values, of which 24
|
|
19
|
+
* carry an "if" — `Prime farmland if drained`, `Prime farmland if irrigated and reclaimed of excess salts
|
|
20
|
+
* and sodium`. A boolean `arable` column would be this layer's invention rather than the authority's
|
|
21
|
+
* statement, so the string is stored whole.
|
|
22
|
+
*
|
|
23
|
+
* AND TWO OF ITS CATEGORIES TRAVEL WHILE THE OTHERS DO NOT. 7 CFR 657.5 defines prime farmland and unique
|
|
24
|
+
* farmland nationally against nine specific criteria; §657.5(c) and (d) hand "additional farmland of
|
|
25
|
+
* statewide importance" and "of local importance" to state and local agencies respectively. So
|
|
26
|
+
* `Farmland of statewide importance` in Iowa and in Georgia are not the same claim, and a consumer that
|
|
27
|
+
* pooled them into one rank would be pooling incompatible vocabularies. {@link FARMLAND_SCOPE} carries
|
|
28
|
+
* that distinction into the artifact rather than leaving it in a document.
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* The layer-name prefix. The suffix names the REGION the build covers, because the manifest's declared extent and the
|
|
32
|
+
* coverage rows describe the same set and that set is a list of published survey areas rather than "the United
|
|
33
|
+
* States".
|
|
34
|
+
*/
|
|
35
|
+
export declare const SOIL_LAYER_NAME_PREFIX = "soil-capability-nrcs-ssurgo-";
|
|
36
|
+
/**
|
|
37
|
+
* The layer name for a build over `region`.
|
|
38
|
+
*/
|
|
39
|
+
export declare function soilLayerName(region: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* The pilot region — Iowa, whole, built survey area by survey area.
|
|
42
|
+
*/
|
|
43
|
+
export declare const SOIL_PILOT_REGION = "ia";
|
|
44
|
+
/**
|
|
45
|
+
* The acknowledgement string the shipped FGDC metadata asks for, verbatim as the metadata gives the agency name. This
|
|
46
|
+
* is not decoration: the use constraints say the agency "should be acknowledged as the data source in products derived
|
|
47
|
+
* from these data", so it rides in `layer_manifest.attribution`.
|
|
48
|
+
*/
|
|
49
|
+
export declare const SSURGO_ATTRIBUTION = "U.S. Department of Agriculture, Natural Resources Conservation Service";
|
|
50
|
+
/**
|
|
51
|
+
* The licence expression written into `layer_manifest.license`.
|
|
52
|
+
*
|
|
53
|
+
* A public-domain identifier, and the grant behind it is the producing agency's own sentence rather than a catalogue
|
|
54
|
+
* field: data.gov's entry points at `usa.gov/publicdomain/label/1.0/`, which redirects to a page that declines a
|
|
55
|
+
* blanket grant and tells the reader to check with the agency. The agency was checked at the strongest available place
|
|
56
|
+
* — the FGDC metadata NRCS ships inside the archive — and it says {@link SSURGO_PUBLIC_INFORMATION_SENTENCE}.
|
|
57
|
+
*/
|
|
58
|
+
export declare const SSURGO_LICENSE = "PDDL-1.0-USGov-NRCS";
|
|
59
|
+
/**
|
|
60
|
+
* The sentence that makes this layer shippable, verbatim from the `useconst` element of the FGDC metadata inside every
|
|
61
|
+
* survey-area archive.
|
|
62
|
+
*
|
|
63
|
+
* The ingest asserts it is present in each area's metadata. A survey area whose use constraints no longer say this is a
|
|
64
|
+
* licence change, and a build that absorbed one would ship an artifact under terms nobody checked.
|
|
65
|
+
*/
|
|
66
|
+
export declare const SSURGO_PUBLIC_INFORMATION_SENTENCE = "This is public information";
|
|
67
|
+
/**
|
|
68
|
+
* The use constraints in full, as the metadata states them. Carried so a reader can check the licence claim against the
|
|
69
|
+
* authority's own words rather than against this package's summary of them.
|
|
70
|
+
*/
|
|
71
|
+
export declare const SSURGO_USE_CONSTRAINTS: string;
|
|
72
|
+
/**
|
|
73
|
+
* What a reading is NOT, in the authority's own words. Carried on every reading, because a caller cannot see from a
|
|
74
|
+
* capability class that the survey declines to speak about a specific site.
|
|
75
|
+
*
|
|
76
|
+
* The first two sentences are why §3.1 of the survey forbids a point-level determination: the map is authoritative
|
|
77
|
+
* about an area at its own scale and explicitly declines to be authoritative about a point.
|
|
78
|
+
*/
|
|
79
|
+
export declare const SSURGO_PRODUCT_LIMITS: ReadonlyArray<string>;
|
|
80
|
+
/**
|
|
81
|
+
* The coverage statement a `designated` basis rests on: what NRCS declares complete inside a published survey area.
|
|
82
|
+
*
|
|
83
|
+
* It is the mapping at the survey's own scale, NOT a site-specific determination — which is why the observation reports
|
|
84
|
+
* what the survey assigns to the map unit covering a location and never whether the land can be farmed.
|
|
85
|
+
*/
|
|
86
|
+
export declare const SSURGO_COVERAGE_STATEMENT: string;
|
|
87
|
+
/**
|
|
88
|
+
* Where the product's identity and cadence are published.
|
|
89
|
+
*/
|
|
90
|
+
export declare const SSURGO_STATEMENT_URL = "https://www.nrcs.usda.gov/conservation-basics/natural-resource-concerns/soil/annual-soils-refresh";
|
|
91
|
+
/**
|
|
92
|
+
* The dataset identifier written into `layer_manifest.source`.
|
|
93
|
+
*/
|
|
94
|
+
export declare const SSURGO_SOURCE = "nrcs.usda.gov/SSURGO";
|
|
95
|
+
/**
|
|
96
|
+
* The projection every SSURGO survey-area shapefile declares. The `.prj` is an ESRI WKT naming `GCS_WGS_1984`, which
|
|
97
|
+
* GDAL resolves to this authority code — so no reprojection is needed before H3, and a survey area declaring anything
|
|
98
|
+
* else is a product change rather than a variation to absorb.
|
|
99
|
+
*/
|
|
100
|
+
export declare const SSURGO_SOURCE_EPSG = 4326;
|
|
101
|
+
/**
|
|
102
|
+
* Whether a farmland classification's criteria are set nationally or by a state or local agency.
|
|
103
|
+
*
|
|
104
|
+
* 7 CFR 657.5 defines prime and unique farmland against nine national criteria; (c) and (d) delegate statewide and
|
|
105
|
+
* local importance. A consumer comparing two states may compare the national categories and must not compare the
|
|
106
|
+
* delegated ones.
|
|
107
|
+
*/
|
|
108
|
+
export declare const FarmlandScope: {
|
|
109
|
+
/**
|
|
110
|
+
* Criteria set by 7 CFR 657.5(a)–(b). Comparable across the country.
|
|
111
|
+
*/
|
|
112
|
+
readonly Federal: "federal";
|
|
113
|
+
/**
|
|
114
|
+
* Criteria "determined by the appropriate State agency or agencies" — 7 CFR 657.5(c).
|
|
115
|
+
*/
|
|
116
|
+
readonly State: "state";
|
|
117
|
+
/**
|
|
118
|
+
* Criteria "identified by the local agency or agencies concerned" — 7 CFR 657.5(d).
|
|
119
|
+
*/
|
|
120
|
+
readonly Local: "local";
|
|
121
|
+
/**
|
|
122
|
+
* The value states no farmland importance at all.
|
|
123
|
+
*/
|
|
124
|
+
readonly None: "none";
|
|
125
|
+
};
|
|
126
|
+
export type FarmlandScope = (typeof FarmlandScope)[keyof typeof FarmlandScope];
|
|
127
|
+
/**
|
|
128
|
+
* Which scope a declared `farmlndcl` value falls under, decided on the phrase the regulation itself uses.
|
|
129
|
+
*
|
|
130
|
+
* Matching on the phrase rather than on an enumerated list of the 28 values is deliberate: the domain grows — the
|
|
131
|
+
* conditional tail is generated by combining a base category with a condition — and a new `Farmland of statewide
|
|
132
|
+
* importance, if …` must land in {@link FarmlandScope.State} on the day it appears rather than silently defaulting to
|
|
133
|
+
* the comparable bucket.
|
|
134
|
+
*/
|
|
135
|
+
export declare function farmlandScope(value: string | null | undefined): FarmlandScope;
|
|
136
|
+
/**
|
|
137
|
+
* Map-unit symbols NRCS uses for a delineation it has drawn and has no soil mapping behind.
|
|
138
|
+
*
|
|
139
|
+
* These are polygons rather than holes — the same wall-to-wall discipline that makes them separable from land outside a
|
|
140
|
+
* survey area entirely. Measured nationally through Soil Data Access: 37 map units carry `NOTCOM` (`No Digital Data
|
|
141
|
+
* Available`) and 7 carry `NOTPUB` (`Not Public Information`).
|
|
142
|
+
*/
|
|
143
|
+
export declare const SSURGO_NO_MAPPING_SYMBOLS: ReadonlySet<string>;
|
|
144
|
+
/**
|
|
145
|
+
* Map-unit names for the same case, where the symbol does not carry it. Measured nationally: 72 map units are named
|
|
146
|
+
* `Area not surveyed, access denied`.
|
|
147
|
+
*
|
|
148
|
+
* Matched case-insensitively on the whole name. A prefix match would catch a future `Area not surveyed, access denied —
|
|
149
|
+
* pending` and would also catch nothing else, but it would equally catch a real soil name beginning with those words,
|
|
150
|
+
* and there is no such thing to be gained by guessing.
|
|
151
|
+
*/
|
|
152
|
+
export declare const SSURGO_NO_MAPPING_NAMES: ReadonlySet<string>;
|
|
153
|
+
/**
|
|
154
|
+
* The interpretation rule whose overall value this layer carries, exactly as `cointerp.mrulename` spells it.
|
|
155
|
+
*
|
|
156
|
+
* Its `interphr` is an index in [0, 1] — measured 0.001 to 0.991 nationally, 0.022 to 0.990 on `IA153` — and it is
|
|
157
|
+
* never blended with the capability class: they are two ratings from one authority answering different questions, and
|
|
158
|
+
* combining them would produce a number NRCS does not publish.
|
|
159
|
+
*/
|
|
160
|
+
export declare const NCCPI_V3_RULE_NAME = "NCCPI - National Commodity Crop Productivity Index (Ver 3.0)";
|
|
161
|
+
/**
|
|
162
|
+
* The interpretation depth at which a rule reports its own overall value. Sub-rules sit at greater depths and are the
|
|
163
|
+
* submodels (corn, soybeans, small grains, cotton), which this layer does not carry.
|
|
164
|
+
*/
|
|
165
|
+
export declare const COINTERP_OVERALL_RULE_DEPTH = "0";
|
|
166
|
+
/**
|
|
167
|
+
* How the per-cell shares were produced, recorded on every row.
|
|
168
|
+
*
|
|
169
|
+
* The survey names this as a required record because the weighting mixes two different things — polygon geometry, which
|
|
170
|
+
* the survey does know, and component percentages, which are a proportion without a location. "60% of this cell's area
|
|
171
|
+
* lies in map units whose components are class 2" and "the components in this cell sum to 60% class 2" are different
|
|
172
|
+
* claims, and a reader holding only a share cannot tell which one it is holding.
|
|
173
|
+
*/
|
|
174
|
+
export declare const SOIL_SHARE_WEIGHTING = "cell_area_x_comppct_r";
|
|
175
|
+
/**
|
|
176
|
+
* The one-sentence expansion of {@link SOIL_SHARE_WEIGHTING}, stored beside it so the artifact explains itself.
|
|
177
|
+
*/
|
|
178
|
+
export declare const SOIL_SHARE_WEIGHTING_DESCRIPTION: string;
|
|
179
|
+
//# sourceMappingURL=vocabulary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vocabulary.d.ts","sourceRoot":"","sources":["../lib/vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,iCAAiC,CAAA;AAEpE;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAA;AAErC;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,2EAA2E,CAAA;AAE1G;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,wBAAwB,CAAA;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,kCAAkC,+BAA+B,CAAA;AAE9E;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAKY,CAAA;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,MAAM,CAMvD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,QAEoD,CAAA;AAE1F;;GAEG;AACH,eAAO,MAAM,oBAAoB,sGACmE,CAAA;AAEpG;;GAEG;AACH,eAAO,MAAM,aAAa,yBAAyB,CAAA;AAEnD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,OAAO,CAAA;AAEtC;;;;;;GAMG;AACH,eAAO,MAAM,aAAa;IACzB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEM,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAA;AAE9E;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,CAkB7E;AAED;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,MAAM,CAAiC,CAAA;AAE3F;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAItD,CAAA;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,iEAAiE,CAAA;AAEhG;;;GAGG;AACH,eAAO,MAAM,2BAA2B,MAAM,CAAA;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,0BAA0B,CAAA;AAE3D;;GAEG;AACH,eAAO,MAAM,gCAAgC,QAIsC,CAAA"}
|