@mailwoman/tiger 10.0.0 → 10.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/lib/block-group.ts +7 -7
- package/lib/class-code.ts +387 -266
- package/lib/constants.ts +7 -6
- package/lib/county/subdivision.ts +7 -7
- package/lib/{county/index.ts → county.ts} +7 -7
- package/lib/files.ts +37 -20
- package/lib/functional-status.ts +6 -4
- package/lib/geoid.ts +44 -26
- package/lib/index.ts +1 -1
- package/lib/legal-statistical-area.ts +7 -5
- package/lib/{sdk/schema.ts → schema.ts} +32 -42
- package/lib/state.ts +26 -23
- package/lib/tabulation-block.ts +4 -4
- package/lib/tract.ts +3 -3
- package/out/block-group.d.ts +7 -7
- package/out/class-code.d.ts +387 -266
- package/out/class-code.d.ts.map +1 -1
- package/out/class-code.js +387 -266
- package/out/class-code.js.map +1 -1
- package/out/constants.d.ts +7 -6
- package/out/constants.d.ts.map +1 -1
- package/out/constants.js +3 -3
- package/out/county/subdivision.d.ts +7 -7
- package/out/{county/index.d.ts → county.d.ts} +8 -8
- package/out/county.d.ts.map +1 -0
- package/out/{county/index.js → county.js} +2 -2
- package/out/county.js.map +1 -0
- package/out/files.d.ts +21 -13
- package/out/files.d.ts.map +1 -1
- package/out/files.js +27 -13
- package/out/files.js.map +1 -1
- package/out/functional-status.d.ts +6 -4
- package/out/functional-status.d.ts.map +1 -1
- package/out/functional-status.js +6 -4
- package/out/functional-status.js.map +1 -1
- package/out/geoid.d.ts +34 -16
- package/out/geoid.d.ts.map +1 -1
- package/out/geoid.js +16 -10
- package/out/geoid.js.map +1 -1
- package/out/index.d.ts +1 -1
- package/out/index.d.ts.map +1 -1
- package/out/index.js +1 -1
- package/out/index.js.map +1 -1
- package/out/legal-statistical-area.d.ts +7 -5
- package/out/legal-statistical-area.d.ts.map +1 -1
- package/out/legal-statistical-area.js +7 -5
- package/out/legal-statistical-area.js.map +1 -1
- package/out/{sdk/schema.d.ts → schema.d.ts} +26 -20
- package/out/schema.d.ts.map +1 -0
- package/out/{sdk/schema.js → schema.js} +12 -31
- package/out/schema.js.map +1 -0
- package/out/sdk/download.d.ts +7 -15
- package/out/sdk/download.d.ts.map +1 -1
- package/out/sdk/download.js +6 -15
- package/out/sdk/download.js.map +1 -1
- package/out/sdk/fetch.d.ts +36 -29
- package/out/sdk/fetch.d.ts.map +1 -1
- package/out/sdk/fetch.js +18 -53
- package/out/sdk/fetch.js.map +1 -1
- package/out/sdk/redistricting.d.ts +29 -15
- package/out/sdk/redistricting.d.ts.map +1 -1
- package/out/sdk/redistricting.js +47 -36
- package/out/sdk/redistricting.js.map +1 -1
- package/out/sdk/state/TIGERTabulatedBlockEntity.d.ts +2 -2
- package/out/sdk/state/TIGERTabulatedBlockEntity.d.ts.map +1 -1
- package/out/sdk/state/TIGERTabulatedBlockEntity.js +3 -3
- package/out/sdk/state/TIGERTabulatedBlockEntity.js.map +1 -1
- package/out/sdk/state/TIGERTractEntity.d.ts.map +1 -1
- package/out/sdk/state/TIGERTractEntity.js.map +1 -1
- package/out/sdk/state/block-operations.d.ts +3 -2
- package/out/sdk/state/block-operations.d.ts.map +1 -1
- package/out/sdk/state/block-operations.js +4 -3
- package/out/sdk/state/block-operations.js.map +1 -1
- package/out/sdk/{state/index.d.ts → state.d.ts} +1 -1
- package/out/sdk/state.d.ts.map +1 -0
- package/out/sdk/{state/index.js → state.js} +1 -1
- package/out/sdk/state.js.map +1 -0
- package/out/sdk/tsconfig.tsbuildinfo +1 -0
- package/out/state.d.ts +18 -15
- package/out/state.d.ts.map +1 -1
- package/out/state.js +17 -14
- package/out/state.js.map +1 -1
- package/out/tabulation-block.d.ts +4 -4
- package/out/tools/race/dots/map.d.ts +23 -9
- package/out/tools/race/dots/map.d.ts.map +1 -1
- package/out/tools/race/dots/map.js +9 -5
- package/out/tools/race/dots/map.js.map +1 -1
- package/out/tools/race/dots.d.ts +47 -0
- package/out/tools/race/dots.d.ts.map +1 -0
- package/out/tools/race/{dots/index.js → dots.js} +10 -27
- package/out/tools/race/dots.js.map +1 -0
- package/out/tools/serve-range.d.ts +13 -7
- package/out/tools/serve-range.d.ts.map +1 -1
- package/out/tools/serve-range.js +10 -8
- package/out/tools/serve-range.js.map +1 -1
- package/out/tools/tsconfig.tsbuildinfo +1 -0
- package/out/tract.d.ts +3 -3
- package/out/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +61 -44
- package/sdk/download.ts +41 -0
- package/{lib/sdk → sdk}/fetch.ts +58 -62
- package/{lib/sdk → sdk}/redistricting.ts +57 -40
- package/{lib/sdk → sdk}/state/TIGERTabulatedBlockEntity.ts +3 -3
- package/{lib/sdk → sdk}/state/block-operations.ts +5 -4
- package/{lib/tools → tools}/race/dots/map.ts +30 -12
- package/{lib/tools/race/dots/index.ts → tools/race/dots.ts} +14 -31
- package/{lib/tools → tools}/serve-range.ts +17 -10
- package/lib/sdk/download.ts +0 -49
- package/lib/sdk/index.ts +0 -10
- package/lib/tools/index.ts +0 -11
- package/out/county/index.d.ts.map +0 -1
- package/out/county/index.js.map +0 -1
- package/out/sdk/index.d.ts +0 -10
- package/out/sdk/index.d.ts.map +0 -1
- package/out/sdk/index.js +0 -10
- package/out/sdk/index.js.map +0 -1
- package/out/sdk/schema.d.ts.map +0 -1
- package/out/sdk/schema.js.map +0 -1
- package/out/sdk/state/index.d.ts.map +0 -1
- package/out/sdk/state/index.js.map +0 -1
- package/out/tools/index.d.ts +0 -11
- package/out/tools/index.d.ts.map +0 -1
- package/out/tools/index.js +0 -11
- package/out/tools/index.js.map +0 -1
- package/out/tools/race/dots/index.d.ts +0 -61
- package/out/tools/race/dots/index.d.ts.map +0 -1
- package/out/tools/race/dots/index.js.map +0 -1
- /package/{lib/sdk → sdk}/state/TIGERTractEntity.ts +0 -0
- /package/{lib/sdk/state/index.ts → sdk/state.ts} +0 -0
package/out/sdk/redistricting.js
CHANGED
|
@@ -4,46 +4,49 @@
|
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
6
|
* Pull a state's Census 2020 P.L. 94-171 redistricting counts (table P2 — Hispanic-or-Latino by
|
|
7
|
-
* race, per block) into the `pl_block` table of a
|
|
8
|
-
* same 15-char block `
|
|
7
|
+
* race, per block) into the `pl_block` table of a tiger {@link DatabaseClient} DB, keyed on the
|
|
8
|
+
* same 15-char block `geoid` as {@link fetchTIGER}'s `tabblock20`. Join the two for block-level
|
|
9
9
|
* race + geometry (e.g. a dot-density map).
|
|
10
10
|
*
|
|
11
11
|
* Keyless public data. The per-state ZIP holds a pipe-delimited geographic header
|
|
12
|
-
* (`<st>geo<yr>.pl`) and three data segments
|
|
13
|
-
* join the header (filtered to
|
|
12
|
+
* (`<st>geo<yr>.pl`) and three data segments. segment 1 (`<st>00001<yr>.pl`) contains P1 + P2. We
|
|
13
|
+
* join the header (filtered to sumlev 750 = block) to segment 1 by logrecno. Field offsets are
|
|
14
14
|
* fixed by the 2020 P.L. layout (verified against the real files).
|
|
15
15
|
*
|
|
16
16
|
* https://www2.census.gov/programs-surveys/decennial/2020/data/01-Redistricting_File--PL_94-171/
|
|
17
17
|
*/
|
|
18
|
-
import {
|
|
18
|
+
import { dataRootPath } from "@mailwoman/core/data-root";
|
|
19
19
|
import { makeDirectories } from "@mailwoman/core/fs/writers";
|
|
20
20
|
import { extractZipEntries } from "@mailwoman/core/fs/zip";
|
|
21
21
|
import { DatabaseClient } from "@mailwoman/sqlite/client";
|
|
22
|
-
import {
|
|
22
|
+
import { PathBuilder } from "path-ts";
|
|
23
23
|
import { TextSpliterator } from "spliterator";
|
|
24
|
+
import { initializeTIGERSchema, TIGER_PRAGMAS } from "#schema";
|
|
24
25
|
import { downloadIfNeeded } from "#sdk/download";
|
|
25
|
-
import { initializeTIGERSchema, TIGER_PRAGMAS } from "#sdk/schema";
|
|
26
26
|
import { AdminLevel1CodeToAbbreviation, StateName } from "#state";
|
|
27
27
|
const REDISTRICTING_BASE = "https://www2.census.gov/programs-surveys/decennial/2020/data/01-Redistricting_File--PL_94-171";
|
|
28
|
-
const DEFAULT_DATA_ROOT =
|
|
28
|
+
const DEFAULT_DATA_ROOT = dataRootPath();
|
|
29
29
|
/**
|
|
30
|
-
* P.L. 94-171 (2020) pipe-delimited field offsets (0-based).
|
|
31
|
-
*
|
|
32
|
-
*
|
|
30
|
+
* P.L. 94-171 (2020) pipe-delimited field offsets (0-based).
|
|
31
|
+
*
|
|
32
|
+
* Geographic header: …|sumlev(2)|…|logrecno(7)|geoid(8)|geocode(9)|… — geocode is the
|
|
33
|
+
* bare 15-char block FIPS (matches tiger GEOID20); sumlev 750 = tabulation block.
|
|
33
34
|
*/
|
|
34
35
|
const GEO_SUMLEV = 2;
|
|
35
36
|
const GEO_LOGRECNO = 7;
|
|
36
37
|
const GEO_GEOCODE = 9;
|
|
37
38
|
/**
|
|
38
|
-
* Segment 1:
|
|
39
|
+
* Segment 1: fileid|stusab|chariter|cifsn|logrecno(4)| P1×71 | P2×73. P0020001 is at index 76.
|
|
39
40
|
*/
|
|
40
41
|
const SEG_LOGRECNO = 4;
|
|
41
42
|
const P2 = (fieldNo) => 76 + (fieldNo - 1);
|
|
42
43
|
/**
|
|
43
|
-
* Segment 2:
|
|
44
|
-
* against the real file: `ca000022020.pl`'s state row reads 14,392,140 / 13,475,623
|
|
45
|
-
*
|
|
46
|
-
*
|
|
44
|
+
* Segment 2: fileid|stusab|chariter|cifsn|logrecno(4)| P3×71 | P4×73 | H1×3 — 152 fields, H1 at the tail. Verified
|
|
45
|
+
* against the real file: `ca000022020.pl`'s state row reads 14,392,140 / 13,475,623
|
|
46
|
+
* / 916,517, the published CA 2020 figures.
|
|
47
|
+
*
|
|
48
|
+
* `occupied + vacant === housing_units` is the invariant that distinguishes a correct
|
|
49
|
+
* offset from a plausible one. {@link parseH1} refuses a row when it does not hold.
|
|
47
50
|
*/
|
|
48
51
|
export const SEG2_FIELD_COUNT = 152;
|
|
49
52
|
/**
|
|
@@ -55,12 +58,15 @@ export const H1_TOTAL = SEG2_FIELD_COUNT - 3;
|
|
|
55
58
|
*/
|
|
56
59
|
export const H1_OCCUPIED = SEG2_FIELD_COUNT - 2;
|
|
57
60
|
/**
|
|
58
|
-
* H0010003 — vacant housing units, the last field (and so the one that
|
|
61
|
+
* H0010003 — vacant housing units, the last field (and so the one that contains a crlf file's trailing CR).
|
|
59
62
|
*/
|
|
60
63
|
export const H1_VACANT = SEG2_FIELD_COUNT - 1;
|
|
61
64
|
/**
|
|
62
|
-
* The three H1 counts from one segment-2 row.
|
|
63
|
-
*
|
|
65
|
+
* The three H1 counts from one segment-2 row.
|
|
66
|
+
*
|
|
67
|
+
* The last field contains crlf's trailing CR when the file has one, so each field
|
|
68
|
+
* is trimmed before it is read as a number.
|
|
69
|
+
* A row whose counts do not add up is refused rather than stored.
|
|
64
70
|
*/
|
|
65
71
|
export function parseH1(fields) {
|
|
66
72
|
if (fields.length !== SEG2_FIELD_COUNT) {
|
|
@@ -85,7 +91,7 @@ export function parseH1(fields) {
|
|
|
85
91
|
const CATEGORY_INDEX = {
|
|
86
92
|
pop_total: P2(1),
|
|
87
93
|
hispanic: P2(2), // Hispanic or Latino (any race)
|
|
88
|
-
white: P2(5), // Not Hispanic: White
|
|
94
|
+
white: P2(5), // Not Hispanic: White without another race
|
|
89
95
|
black: P2(6),
|
|
90
96
|
aian: P2(7),
|
|
91
97
|
asian: P2(8),
|
|
@@ -93,9 +99,10 @@ const CATEGORY_INDEX = {
|
|
|
93
99
|
other: P2(10),
|
|
94
100
|
multi: P2(11), // Two or more races
|
|
95
101
|
};
|
|
96
|
-
// Pipe-delimited, fixed field-offset census rows
|
|
97
|
-
// parse indexes by position
|
|
98
|
-
//
|
|
102
|
+
// Pipe-delimited, fixed field-offset census rows.
|
|
103
|
+
// The manual `split("|")` at each call site stays (the parse indexes by position rather than by header).
|
|
104
|
+
// Spliterator keeps crlf's trailing CR where readline stripped it, but every field
|
|
105
|
+
// this parser reads (geo geocode/logrecno ≤ 9, segment-1 logrecno + P2 ≤ 86) sits well
|
|
99
106
|
// before the final column, so the retained CR only ever lands on an unread trailing field.
|
|
100
107
|
async function eachLine(path, fn) {
|
|
101
108
|
for await (const line of TextSpliterator.fromAsync(path)) {
|
|
@@ -105,11 +112,14 @@ async function eachLine(path, fn) {
|
|
|
105
112
|
}
|
|
106
113
|
}
|
|
107
114
|
/**
|
|
108
|
-
* Fetch one state's P.L. 94-171 block race counts into `pl_block`.
|
|
115
|
+
* Fetch one state's P.L. 94-171 block race counts into `pl_block`.
|
|
116
|
+
*
|
|
117
|
+
* Yields progress.
|
|
118
|
+
* Returns the tally.
|
|
109
119
|
*/
|
|
110
120
|
export async function* fetchRedistricting(options) {
|
|
111
121
|
const vintage = options.vintage ?? 2020;
|
|
112
|
-
const dataRoot = options.dataRoot ?? DEFAULT_DATA_ROOT;
|
|
122
|
+
const dataRoot = PathBuilder.from(options.dataRoot ?? DEFAULT_DATA_ROOT);
|
|
113
123
|
const batchSize = options.batchSize ?? 2000;
|
|
114
124
|
const state = options.stateFIPS;
|
|
115
125
|
const abbr = AdminLevel1CodeToAbbreviation[state];
|
|
@@ -118,22 +128,22 @@ export async function* fetchRedistricting(options) {
|
|
|
118
128
|
const stateName = StateName[abbr];
|
|
119
129
|
const dirName = stateName.replaceAll(" ", "_");
|
|
120
130
|
const fileAbbr = abbr.toLowerCase();
|
|
121
|
-
const cacheDir =
|
|
131
|
+
const cacheDir = dataRoot("census", "redistricting", String(vintage), state);
|
|
122
132
|
// Same stable `tiger.db` default as fetchTIGER — pl_block lives alongside tabblock20 in one DB.
|
|
123
|
-
const outPath = options.outPath ??
|
|
133
|
+
const outPath = PathBuilder.from(options.outPath ?? dataRoot("tiger", "tiger.db"));
|
|
124
134
|
await makeDirectories(cacheDir);
|
|
125
|
-
await makeDirectories(dirname(
|
|
135
|
+
await makeDirectories(outPath.dirname());
|
|
126
136
|
const zipName = `${fileAbbr}${vintage}.pl.zip`;
|
|
127
|
-
const zipPath =
|
|
137
|
+
const zipPath = cacheDir(zipName);
|
|
128
138
|
const url = `${REDISTRICTING_BASE}/${dirName}/${zipName}`;
|
|
129
139
|
const cached = await downloadIfNeeded(url, zipPath);
|
|
130
140
|
yield { phase: "download", file: zipName, cached };
|
|
131
141
|
await extractZipEntries(zipPath, cacheDir);
|
|
132
|
-
const geoPath =
|
|
133
|
-
const seg1Path =
|
|
134
|
-
const seg2Path =
|
|
142
|
+
const geoPath = cacheDir(`${fileAbbr}geo${vintage}.pl`);
|
|
143
|
+
const seg1Path = cacheDir(`${fileAbbr}00001${vintage}.pl`);
|
|
144
|
+
const seg2Path = cacheDir(`${fileAbbr}00002${vintage}.pl`);
|
|
135
145
|
yield { phase: "extract", file: `${fileAbbr}geo${vintage}.pl` };
|
|
136
|
-
// Pass 1: header →
|
|
146
|
+
// Pass 1: header → logrecno → geoid for the blocks we want.
|
|
137
147
|
const prefix = options.county ? state + options.county : state;
|
|
138
148
|
const logToGeoid = new Map();
|
|
139
149
|
await eachLine(geoPath, (line) => {
|
|
@@ -147,8 +157,9 @@ export async function* fetchRedistricting(options) {
|
|
|
147
157
|
});
|
|
148
158
|
const total = logToGeoid.size;
|
|
149
159
|
yield { phase: "header", blocks: total };
|
|
150
|
-
// Pass 1b: segment 2 → H1 housing counts for the mapped LOGRECNOs.
|
|
151
|
-
//
|
|
160
|
+
// Pass 1b: segment 2 → H1 housing counts for the mapped LOGRECNOs.
|
|
161
|
+
// Read before segment 1 so a block's P2 and H1 land in one row.
|
|
162
|
+
// A mapped block with no segment-2 row is a data defect the load refuses, never a zero.
|
|
152
163
|
const h1ByLogrecno = new Map();
|
|
153
164
|
await eachLine(seg2Path, (line) => {
|
|
154
165
|
const f = line.split("|");
|
|
@@ -211,7 +222,7 @@ export async function* fetchRedistricting(options) {
|
|
|
211
222
|
await flush();
|
|
212
223
|
yield { phase: "load", inserted, total };
|
|
213
224
|
kdb.exec("PRAGMA wal_checkpoint(TRUNCATE);");
|
|
214
|
-
return { outPath, table: "pl_block", inserted };
|
|
225
|
+
return { outPath: outPath.toString(), table: "pl_block", inserted };
|
|
215
226
|
}
|
|
216
227
|
finally {
|
|
217
228
|
await kdb.destroy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redistricting.js","sourceRoot":"","sources":["../../
|
|
1
|
+
{"version":3,"file":"redistricting.js","sourceRoot":"","sources":["../../sdk/redistricting.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
* Default column selections for
|
|
7
|
+
* Default column selections for tiger tabulated block entities.
|
|
8
8
|
*
|
|
9
9
|
* @internal
|
|
10
10
|
*/
|
|
11
|
-
export declare const TIGERTabulatedBlockEntitySelections:
|
|
11
|
+
export declare const TIGERTabulatedBlockEntitySelections: string[];
|
|
12
12
|
//# sourceMappingURL=TIGERTabulatedBlockEntity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TIGERTabulatedBlockEntity.d.ts","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"TIGERTabulatedBlockEntity.d.ts","sourceRoot":"","sources":["../../../sdk/state/TIGERTabulatedBlockEntity.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,UAU3B,CAAA"}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*/
|
|
6
|
-
import { smartSnakeCase } from "
|
|
6
|
+
import { smartSnakeCase } from "spliterator";
|
|
7
7
|
import { TIGERProperty } from "#index";
|
|
8
8
|
/**
|
|
9
|
-
* Default column selections for
|
|
9
|
+
* Default column selections for tiger tabulated block entities.
|
|
10
10
|
*
|
|
11
11
|
* @internal
|
|
12
12
|
*/
|
|
@@ -18,5 +18,5 @@ export const TIGERTabulatedBlockEntitySelections = [
|
|
|
18
18
|
TIGERProperty.LandAreaSqm,
|
|
19
19
|
TIGERProperty.WaterAreaSqm,
|
|
20
20
|
TIGERProperty.Population,
|
|
21
|
-
].map(
|
|
21
|
+
].map(smartSnakeCase);
|
|
22
22
|
//# sourceMappingURL=TIGERTabulatedBlockEntity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TIGERTabulatedBlockEntity.js","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"TIGERTabulatedBlockEntity.js","sourceRoot":"","sources":["../../../sdk/state/TIGERTabulatedBlockEntity.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAEtC;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAC/C;IACC,aAAa,CAAC,KAAK;IACnB,aAAa,CAAC,iBAAiB;IAC/B,aAAa,CAAC,cAAc;IAC5B,aAAa,CAAC,gBAAgB;IAC9B,aAAa,CAAC,WAAW;IACzB,aAAa,CAAC,YAAY;IAC1B,aAAa,CAAC,UAAU;CAEzB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TIGERTractEntity.d.ts","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"TIGERTractEntity.d.ts","sourceRoot":"","sources":["../../../sdk/state/TIGERTractEntity.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAE5E;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACzC;;OAEG;IACH,OAAO,EAAE,eAAe,CAAA;IAExB;;;;;OAKG;IACH,QAAQ,EAAE,cAAc,CAAA;IAExB;;;;;;OAMG;IACH,OAAO,EAAE,aAAa,CAAA;CACtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TIGERTractEntity.js","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"TIGERTractEntity.js","sourceRoot":"","sources":["../../../sdk/state/TIGERTractEntity.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -21,13 +21,14 @@ export interface TIGERBlockRow extends TIGERTabulatedBlockProperties {
|
|
|
21
21
|
serializedGeometry: string;
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
|
-
* Given a row from the
|
|
24
|
+
* Given a row from the tiger tabulated block table, parses it into a GeoJSON feature.
|
|
25
25
|
*
|
|
26
26
|
* @internal
|
|
27
27
|
*/
|
|
28
28
|
export declare function parseTIGERBlockFromRow({ serializedGeometry, ...properties }: TIGERBlockRow): TIGERBlockFeature;
|
|
29
29
|
/**
|
|
30
|
-
* Given a collection of rows from the
|
|
30
|
+
* Given a collection of rows from the tiger tabulated block table,
|
|
31
|
+
* parses them into a GeoJSON feature collection.
|
|
31
32
|
*
|
|
32
33
|
* @internal
|
|
33
34
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-operations.d.ts","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"block-operations.d.ts","sourceRoot":"","sources":["../../../sdk/state/block-operations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,oBAAoB,CAAA;AAG9E,OAAO,KAAK,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,2BAA2B,EAC3B,6BAA6B,EAC7B,MAAM,QAAQ,CAAA;AAEf,MAAM,WAAW,8BAA8B;IAC9C,SAAS,EAAE,aAAa,CAAA;IACxB,QAAQ,EAAE,eAAe,CAAA;IACzB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAA;CAC5B;AAID;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,6BAA6B;IACnE,KAAK,EAAE,cAAc,CAAA;IACrB;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAA;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,kBAAkB,EAAE,GAAG,UAAU,EAAE,EAAE,aAAa,GAAG,iBAAiB,CAS9G;AAED;;;;;GAKG;AACH,wBAAgB,wCAAwC,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,2BAA2B,CAS3G"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { wellKnownGeometryToGeoJSON } from "@mailwoman/spatial/well-known-text";
|
|
7
7
|
/**
|
|
8
|
-
* Given a row from the
|
|
8
|
+
* Given a row from the tiger tabulated block table, parses it into a GeoJSON feature.
|
|
9
9
|
*
|
|
10
10
|
* @internal
|
|
11
11
|
*/
|
|
@@ -19,7 +19,8 @@ export function parseTIGERBlockFromRow({ serializedGeometry, ...properties }) {
|
|
|
19
19
|
return feature;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
* Given a collection of rows from the
|
|
22
|
+
* Given a collection of rows from the tiger tabulated block table,
|
|
23
|
+
* parses them into a GeoJSON feature collection.
|
|
23
24
|
*
|
|
24
25
|
* @internal
|
|
25
26
|
*/
|
|
@@ -31,5 +32,5 @@ export function parseTIGERBlockFeatureCollectionFromRows(rows) {
|
|
|
31
32
|
};
|
|
32
33
|
return featureCollection;
|
|
33
34
|
}
|
|
34
|
-
|
|
35
|
+
// #endregion
|
|
35
36
|
//# sourceMappingURL=block-operations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-operations.js","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"block-operations.js","sourceRoot":"","sources":["../../../sdk/state/block-operations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAA;AA8B/E;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,EAAE,kBAAkB,EAAE,GAAG,UAAU,EAAiB;IAC1F,MAAM,OAAO,GAAsB;QAClC,IAAI,EAAE,SAAS;QACf,EAAE,EAAE,UAAU,CAAC,KAAK;QACpB,QAAQ,EAAE,0BAA0B,CAAsB,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACjG,UAAU;KACV,CAAA;IAED,OAAO,OAAO,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wCAAwC,CAAC,IAAqB;IAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IAEjD,MAAM,iBAAiB,GAAgC;QACtD,IAAI,EAAE,mBAAmB;QACzB,QAAQ;KACR,CAAA;IAED,OAAO,iBAAiB,CAAA;AACzB,CAAC;AAED,aAAa"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../sdk/state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sCAAsC,CAAA;AACpD,cAAc,6BAA6B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../sdk/state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sCAAsC,CAAA;AACpD,cAAc,6BAA6B,CAAA"}
|