@mailwoman/resolver-wof-sqlite 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 +8 -8
- package/lib/address/{point-interpolation.ts → point/interpolation.ts} +40 -38
- package/lib/address/point/schema.ts +132 -0
- package/lib/address/point.ts +68 -81
- package/lib/{address/index.ts → address.ts} +2 -2
- package/lib/ancestry/backfill.ts +24 -88
- package/lib/{ancestry/index.ts → ancestry.ts} +19 -15
- package/lib/build/candidate.ts +608 -0
- package/lib/build/population-corrections.ts +64 -0
- package/lib/build/slim.ts +338 -0
- package/lib/candidate/alias-bags.ts +74 -14
- package/lib/candidate/ancestors/schema.ts +211 -0
- package/lib/candidate/{ancestors-sidecar.ts → ancestors/sidecar.ts} +17 -24
- package/lib/candidate/country-display-names.ts +6 -20
- package/lib/candidate/extract-fold.ts +12 -57
- package/lib/candidate/fts.ts +28 -0
- package/lib/candidate/importance.ts +221 -0
- package/lib/candidate/lookup.ts +669 -0
- package/lib/candidate/name-roles.ts +16 -34
- package/lib/candidate/own-name.ts +34 -31
- package/lib/candidate/place-attrs.ts +20 -13
- package/lib/candidate/schema.ts +211 -0
- package/lib/candidate/scoring.ts +222 -0
- package/lib/capital-schema.ts +21 -17
- package/lib/capitals.ts +26 -24
- package/lib/coincident-roles.ts +74 -55
- package/lib/convention/schema.ts +13 -7
- package/lib/convention.ts +144 -0
- package/lib/coverage-manifest-schema.ts +34 -39
- package/lib/currency-backfill.ts +24 -69
- package/lib/env.ts +1 -1
- package/lib/exact-match.ts +31 -20
- package/lib/extracts.ts +96 -73
- package/lib/fst/autocomplete.ts +52 -35
- package/lib/fst/builder.ts +30 -36
- package/lib/fst/deserialize-web.ts +8 -9
- package/lib/fst/format.ts +41 -23
- package/lib/fst/freshness.ts +17 -95
- package/lib/fst/matcher.ts +2 -2
- package/lib/fst/serialize.ts +45 -60
- package/lib/fst/types.ts +71 -59
- package/lib/fts/query.ts +5 -36
- package/lib/fts.ts +280 -0
- package/lib/geonames/aliases.ts +72 -149
- package/lib/geonames/postal.ts +162 -77
- package/lib/index.ts +20 -27
- package/lib/interpolation.ts +43 -96
- package/lib/lookup.ts +137 -257
- package/lib/name-score.ts +9 -7
- package/lib/nsul/lookup.ts +36 -53
- package/lib/nsul/schema.ts +16 -43
- package/lib/paths.ts +159 -0
- package/lib/place-importance-schema.ts +57 -164
- package/lib/poi/lookup.ts +100 -109
- package/lib/poi/schema.ts +42 -26
- package/lib/polygon-schema.ts +10 -6
- package/lib/postal/city/alias/lookup.ts +79 -0
- package/lib/postal/{city-alias-schema.ts → city/alias/schema.ts} +14 -10
- package/lib/postal/{city-candidate-schema.ts → city/candidate-schema.ts} +26 -20
- package/lib/postal.ts +9 -0
- package/lib/postcode-point-lookup.ts +9 -19
- package/lib/primary-preference.ts +45 -125
- package/lib/proximity-rerank.ts +43 -32
- package/lib/ranking-weights.ts +98 -76
- package/lib/region-keys.ts +68 -40
- package/lib/reverse.ts +108 -72
- package/lib/schema.ts +74 -42
- package/lib/search-fetch.ts +90 -68
- package/lib/sqlite/convention-source.ts +57 -0
- package/lib/sqlite/utils.ts +79 -0
- package/lib/street/centroid/schema.ts +149 -0
- package/lib/street/centroid.ts +16 -25
- package/lib/street/{morphology-fst-builder.ts → morphology/fst/builder.ts} +56 -41
- package/lib/street/{morphology-fst-loader.ts → morphology/fst/loader.ts} +36 -29
- package/lib/street/name-lookup.ts +43 -35
- package/lib/street/normalize.ts +85 -216
- package/lib/street/segment-schema.ts +116 -43
- package/lib/{street/index.ts → street.ts} +3 -3
- package/lib/types.ts +94 -140
- package/lib/unified-schema.ts +29 -29
- package/lib/uprn/existence.ts +30 -19
- package/lib/uprn/lookup.ts +28 -67
- package/lib/uprn/schema.ts +18 -40
- package/lib/weights-overlay-linker.ts +204 -232
- package/out/address/point/interpolation.d.ts +45 -0
- package/out/address/point/interpolation.d.ts.map +1 -0
- package/out/address/{point-interpolation.js → point/interpolation.js} +38 -38
- package/out/address/point/interpolation.js.map +1 -0
- package/out/address/point/schema.d.ts +74 -0
- package/out/address/point/schema.d.ts.map +1 -0
- package/out/address/{point-schema.js → point/schema.js} +4 -20
- package/out/address/point/schema.js.map +1 -0
- package/out/address/point.d.ts +24 -21
- package/out/address/point.d.ts.map +1 -1
- package/out/address/point.js +60 -77
- package/out/address/point.js.map +1 -1
- package/out/{address/index.js → address.d.ts} +3 -3
- package/out/address.d.ts.map +1 -0
- package/out/{address/index.d.ts → address.js} +3 -3
- package/out/address.js.map +1 -0
- package/out/ancestry/backfill.d.ts +11 -64
- package/out/ancestry/backfill.d.ts.map +1 -1
- package/out/ancestry/backfill.js +18 -76
- package/out/ancestry/backfill.js.map +1 -1
- package/out/ancestry.d.ts +49 -0
- package/out/ancestry.d.ts.map +1 -0
- package/out/ancestry.js +59 -0
- package/out/ancestry.js.map +1 -0
- package/out/build/candidate.d.ts +170 -0
- package/out/build/candidate.d.ts.map +1 -0
- package/out/{build-candidate.js → build/candidate.js} +33 -102
- package/out/build/candidate.js.map +1 -0
- package/out/build/population-corrections.d.ts +52 -0
- package/out/build/population-corrections.d.ts.map +1 -0
- package/out/build/population-corrections.js +40 -0
- package/out/build/population-corrections.js.map +1 -0
- package/out/build/slim.d.ts +44 -0
- package/out/build/slim.d.ts.map +1 -0
- package/out/{build-slim.js → build/slim.js} +33 -94
- package/out/build/slim.js.map +1 -0
- package/out/candidate/alias-bags.d.ts +13 -5
- package/out/candidate/alias-bags.d.ts.map +1 -1
- package/out/candidate/alias-bags.js +55 -12
- package/out/candidate/alias-bags.js.map +1 -1
- package/out/candidate/ancestors/schema.d.ts +166 -0
- package/out/candidate/ancestors/schema.d.ts.map +1 -0
- package/out/candidate/ancestors/schema.js +131 -0
- package/out/candidate/ancestors/schema.js.map +1 -0
- package/out/candidate/ancestors/sidecar.d.ts +27 -0
- package/out/candidate/ancestors/sidecar.d.ts.map +1 -0
- package/out/candidate/{ancestors-sidecar.js → ancestors/sidecar.js} +17 -24
- package/out/candidate/ancestors/sidecar.js.map +1 -0
- package/out/candidate/country-display-names.d.ts +5 -15
- package/out/candidate/country-display-names.d.ts.map +1 -1
- package/out/candidate/country-display-names.js +6 -20
- package/out/candidate/country-display-names.js.map +1 -1
- package/out/candidate/extract-fold.d.ts +8 -16
- package/out/candidate/extract-fold.d.ts.map +1 -1
- package/out/candidate/extract-fold.js +6 -48
- package/out/candidate/extract-fold.js.map +1 -1
- package/out/candidate/fts.d.ts +19 -0
- package/out/candidate/fts.d.ts.map +1 -0
- package/out/candidate/fts.js +22 -0
- package/out/candidate/fts.js.map +1 -0
- package/out/candidate/importance.d.ts +127 -0
- package/out/candidate/importance.d.ts.map +1 -0
- package/out/candidate/importance.js +162 -0
- package/out/candidate/importance.js.map +1 -0
- package/out/candidate/lookup.d.ts +36 -0
- package/out/candidate/lookup.d.ts.map +1 -0
- package/out/candidate/lookup.js +456 -0
- package/out/candidate/lookup.js.map +1 -0
- package/out/candidate/name-roles.d.ts +10 -22
- package/out/candidate/name-roles.d.ts.map +1 -1
- package/out/candidate/name-roles.js +15 -33
- package/out/candidate/name-roles.js.map +1 -1
- package/out/candidate/own-name.d.ts +23 -25
- package/out/candidate/own-name.d.ts.map +1 -1
- package/out/candidate/own-name.js +34 -31
- package/out/candidate/own-name.js.map +1 -1
- package/out/candidate/place-attrs.d.ts +20 -13
- package/out/candidate/place-attrs.d.ts.map +1 -1
- package/out/candidate/place-attrs.js +4 -5
- package/out/candidate/place-attrs.js.map +1 -1
- package/out/candidate/schema.d.ts +120 -0
- package/out/candidate/schema.d.ts.map +1 -0
- package/out/{candidate-schema.js → candidate/schema.js} +11 -23
- package/out/candidate/schema.js.map +1 -0
- package/out/{candidate-scoring.d.ts → candidate/scoring.d.ts} +8 -9
- package/out/candidate/scoring.d.ts.map +1 -0
- package/out/candidate/scoring.js +157 -0
- package/out/candidate/scoring.js.map +1 -0
- package/out/capital-schema.d.ts +21 -17
- package/out/capital-schema.d.ts.map +1 -1
- package/out/capital-schema.js +17 -15
- package/out/capital-schema.js.map +1 -1
- package/out/capitals.d.ts +26 -24
- package/out/capitals.d.ts.map +1 -1
- package/out/capitals.js +23 -21
- package/out/capitals.js.map +1 -1
- package/out/coincident-roles.d.ts +60 -43
- package/out/coincident-roles.d.ts.map +1 -1
- package/out/coincident-roles.js +61 -50
- package/out/coincident-roles.js.map +1 -1
- package/out/convention/schema.d.ts +12 -6
- package/out/convention/schema.d.ts.map +1 -1
- package/out/convention/schema.js +6 -4
- package/out/convention/schema.js.map +1 -1
- package/out/convention.d.ts +97 -0
- package/out/convention.d.ts.map +1 -0
- package/out/convention.js +81 -0
- package/out/convention.js.map +1 -0
- package/out/coverage-manifest-schema.d.ts +33 -38
- package/out/coverage-manifest-schema.d.ts.map +1 -1
- package/out/coverage-manifest-schema.js +20 -29
- package/out/coverage-manifest-schema.js.map +1 -1
- package/out/currency-backfill.d.ts +13 -35
- package/out/currency-backfill.d.ts.map +1 -1
- package/out/currency-backfill.js +12 -39
- package/out/currency-backfill.js.map +1 -1
- package/out/env.d.ts +2 -2
- package/out/env.js +1 -1
- package/out/exact-match.d.ts +19 -10
- package/out/exact-match.d.ts.map +1 -1
- package/out/exact-match.js +31 -20
- package/out/exact-match.js.map +1 -1
- package/out/extracts.d.ts +65 -54
- package/out/extracts.d.ts.map +1 -1
- package/out/extracts.js +63 -55
- package/out/extracts.js.map +1 -1
- package/out/fst/autocomplete.d.ts +28 -20
- package/out/fst/autocomplete.d.ts.map +1 -1
- package/out/fst/autocomplete.js +38 -27
- package/out/fst/autocomplete.js.map +1 -1
- package/out/fst/builder.d.ts.map +1 -1
- package/out/fst/builder.js +30 -36
- package/out/fst/builder.js.map +1 -1
- package/out/fst/deserialize-web.d.ts +3 -3
- package/out/fst/deserialize-web.d.ts.map +1 -1
- package/out/fst/deserialize-web.js +8 -9
- package/out/fst/deserialize-web.js.map +1 -1
- package/out/fst/format.d.ts +41 -23
- package/out/fst/format.d.ts.map +1 -1
- package/out/fst/format.js +41 -23
- package/out/fst/format.js.map +1 -1
- package/out/fst/freshness.d.ts +11 -73
- package/out/fst/freshness.d.ts.map +1 -1
- package/out/fst/freshness.js +12 -76
- package/out/fst/freshness.js.map +1 -1
- package/out/fst/matcher.d.ts +1 -1
- package/out/fst/matcher.d.ts.map +1 -1
- package/out/fst/matcher.js +2 -2
- package/out/fst/matcher.js.map +1 -1
- package/out/fst/serialize.d.ts +30 -26
- package/out/fst/serialize.d.ts.map +1 -1
- package/out/fst/serialize.js +44 -58
- package/out/fst/serialize.js.map +1 -1
- package/out/fst/types.d.ts +71 -59
- package/out/fst/types.d.ts.map +1 -1
- package/out/fst/types.js +1 -4
- package/out/fst/types.js.map +1 -1
- package/out/{fst/index.js → fst.d.ts} +1 -1
- package/out/fst.d.ts.map +1 -0
- package/out/{fst/index.d.ts → fst.js} +1 -1
- package/out/fst.js.map +1 -0
- package/out/fts/query.d.ts +2 -27
- package/out/fts/query.d.ts.map +1 -1
- package/out/fts/query.js +5 -36
- package/out/fts/query.js.map +1 -1
- package/out/fts.d.ts +126 -0
- package/out/fts.d.ts.map +1 -0
- package/out/fts.js +188 -0
- package/out/fts.js.map +1 -0
- package/out/geonames/aliases.d.ts +26 -67
- package/out/geonames/aliases.d.ts.map +1 -1
- package/out/geonames/aliases.js +44 -121
- package/out/geonames/aliases.js.map +1 -1
- package/out/geonames/postal.d.ts +84 -50
- package/out/geonames/postal.d.ts.map +1 -1
- package/out/geonames/postal.js +115 -78
- package/out/geonames/postal.js.map +1 -1
- package/out/{geonames/index.js → geonames.d.ts} +1 -1
- package/out/geonames.d.ts.map +1 -0
- package/out/{geonames/index.d.ts → geonames.js} +1 -1
- package/out/geonames.js.map +1 -0
- package/out/index.d.ts +20 -21
- package/out/index.d.ts.map +1 -1
- package/out/index.js +14 -15
- package/out/index.js.map +1 -1
- package/out/interpolation.d.ts +15 -52
- package/out/interpolation.d.ts.map +1 -1
- package/out/interpolation.js +25 -68
- package/out/interpolation.js.map +1 -1
- package/out/lookup.d.ts +24 -53
- package/out/lookup.d.ts.map +1 -1
- package/out/lookup.js +117 -223
- package/out/lookup.js.map +1 -1
- package/out/name-score.d.ts +2 -2
- package/out/name-score.d.ts.map +1 -1
- package/out/name-score.js +9 -7
- package/out/name-score.js.map +1 -1
- package/out/nsul/lookup.d.ts +33 -34
- package/out/nsul/lookup.d.ts.map +1 -1
- package/out/nsul/lookup.js +26 -40
- package/out/nsul/lookup.js.map +1 -1
- package/out/nsul/schema.d.ts +16 -43
- package/out/nsul/schema.d.ts.map +1 -1
- package/out/nsul/schema.js +9 -35
- package/out/nsul/schema.js.map +1 -1
- package/out/{nsul/index.d.ts → nsul.d.ts} +1 -1
- package/out/nsul.d.ts.map +1 -0
- package/out/{nsul/index.js → nsul.js} +1 -1
- package/out/nsul.js.map +1 -0
- package/out/paths.d.ts +124 -0
- package/out/paths.d.ts.map +1 -0
- package/out/paths.js +104 -0
- package/out/paths.js.map +1 -0
- package/out/place-importance-schema.d.ts +49 -141
- package/out/place-importance-schema.d.ts.map +1 -1
- package/out/place-importance-schema.js +25 -140
- package/out/place-importance-schema.js.map +1 -1
- package/out/poi/lookup.d.ts +38 -42
- package/out/poi/lookup.d.ts.map +1 -1
- package/out/poi/lookup.js +67 -90
- package/out/poi/lookup.js.map +1 -1
- package/out/poi/schema.d.ts +41 -25
- package/out/poi/schema.d.ts.map +1 -1
- package/out/poi/schema.js +25 -17
- package/out/poi/schema.js.map +1 -1
- package/out/{poi/index.js → poi.d.ts} +1 -1
- package/out/poi.d.ts.map +1 -0
- package/out/{poi/index.d.ts → poi.js} +1 -1
- package/out/poi.js.map +1 -0
- package/out/polygon-schema.d.ts +10 -6
- package/out/polygon-schema.d.ts.map +1 -1
- package/out/polygon-schema.js +2 -2
- package/out/polygon-schema.js.map +1 -1
- package/out/postal/{city-alias-lookup.d.ts → city/alias/lookup.d.ts} +22 -25
- package/out/postal/city/alias/lookup.d.ts.map +1 -0
- package/out/postal/city/alias/lookup.js +49 -0
- package/out/postal/city/alias/lookup.js.map +1 -0
- package/out/postal/{city-alias-schema.d.ts → city/alias/schema.d.ts} +15 -11
- package/out/postal/city/alias/schema.d.ts.map +1 -0
- package/out/postal/{city-alias-schema.js → city/alias/schema.js} +11 -9
- package/out/postal/city/alias/schema.js.map +1 -0
- package/out/postal/city/candidate-schema.d.ts +72 -0
- package/out/postal/city/candidate-schema.d.ts.map +1 -0
- package/out/postal/city/candidate-schema.js +60 -0
- package/out/postal/city/candidate-schema.js.map +1 -0
- package/out/postal.d.ts +9 -0
- package/out/postal.d.ts.map +1 -0
- package/out/postal.js +9 -0
- package/out/postal.js.map +1 -0
- package/out/postcode-point-lookup.d.ts +9 -19
- package/out/postcode-point-lookup.d.ts.map +1 -1
- package/out/postcode-point-lookup.js +5 -17
- package/out/postcode-point-lookup.js.map +1 -1
- package/out/primary-preference.d.ts +39 -93
- package/out/primary-preference.d.ts.map +1 -1
- package/out/primary-preference.js +13 -97
- package/out/primary-preference.js.map +1 -1
- package/out/proximity-rerank.d.ts +40 -29
- package/out/proximity-rerank.d.ts.map +1 -1
- package/out/proximity-rerank.js +38 -29
- package/out/proximity-rerank.js.map +1 -1
- package/out/ranking-weights.d.ts +91 -62
- package/out/ranking-weights.d.ts.map +1 -1
- package/out/ranking-weights.js +26 -25
- package/out/ranking-weights.js.map +1 -1
- package/out/region-keys.d.ts +48 -29
- package/out/region-keys.d.ts.map +1 -1
- package/out/region-keys.js +68 -40
- package/out/region-keys.js.map +1 -1
- package/out/reverse.d.ts +75 -50
- package/out/reverse.d.ts.map +1 -1
- package/out/reverse.js +61 -49
- package/out/reverse.js.map +1 -1
- package/out/schema.d.ts +74 -42
- package/out/schema.d.ts.map +1 -1
- package/out/schema.js +4 -5
- package/out/schema.js.map +1 -1
- package/out/search-fetch.d.ts +16 -12
- package/out/search-fetch.d.ts.map +1 -1
- package/out/search-fetch.js +83 -63
- package/out/search-fetch.js.map +1 -1
- package/out/sqlite/convention-source.d.ts +25 -0
- package/out/sqlite/convention-source.d.ts.map +1 -0
- package/out/sqlite/convention-source.js +48 -0
- package/out/sqlite/convention-source.js.map +1 -0
- package/out/sqlite/utils.d.ts +45 -0
- package/out/sqlite/utils.d.ts.map +1 -0
- package/out/sqlite/utils.js +56 -0
- package/out/sqlite/utils.js.map +1 -0
- package/out/street/centroid/schema.d.ts +100 -0
- package/out/street/centroid/schema.d.ts.map +1 -0
- package/out/street/centroid/schema.js +66 -0
- package/out/street/centroid/schema.js.map +1 -0
- package/out/street/centroid.d.ts +9 -19
- package/out/street/centroid.d.ts.map +1 -1
- package/out/street/centroid.js +11 -22
- package/out/street/centroid.js.map +1 -1
- package/out/street/{morphology-fst-builder.d.ts → morphology/fst/builder.d.ts} +21 -11
- package/out/street/morphology/fst/builder.d.ts.map +1 -0
- package/out/street/{morphology-fst-builder.js → morphology/fst/builder.js} +40 -34
- package/out/street/morphology/fst/builder.js.map +1 -0
- package/out/street/morphology/fst/loader.d.ts +74 -0
- package/out/street/morphology/fst/loader.d.ts.map +1 -0
- package/out/street/{morphology-fst-loader.js → morphology/fst/loader.js} +21 -21
- package/out/street/morphology/fst/loader.js.map +1 -0
- package/out/street/name-lookup.d.ts +24 -18
- package/out/street/name-lookup.d.ts.map +1 -1
- package/out/street/name-lookup.js +32 -31
- package/out/street/name-lookup.js.map +1 -1
- package/out/street/normalize.d.ts +35 -136
- package/out/street/normalize.d.ts.map +1 -1
- package/out/street/normalize.js +74 -191
- package/out/street/normalize.js.map +1 -1
- package/out/street/segment-schema.d.ts +79 -39
- package/out/street/segment-schema.d.ts.map +1 -1
- package/out/street/segment-schema.js +71 -21
- package/out/street/segment-schema.js.map +1 -1
- package/out/{street/index.d.ts → street.d.ts} +4 -4
- package/out/street.d.ts.map +1 -0
- package/out/{street/index.js → street.js} +4 -4
- package/out/street.js.map +1 -0
- package/out/types.d.ts +69 -138
- package/out/types.d.ts.map +1 -1
- package/out/types.js +0 -6
- package/out/types.js.map +1 -1
- package/out/unified-schema.d.ts +8 -12
- package/out/unified-schema.d.ts.map +1 -1
- package/out/unified-schema.js +29 -29
- package/out/unified-schema.js.map +1 -1
- package/out/uprn/existence.d.ts +28 -17
- package/out/uprn/existence.d.ts.map +1 -1
- package/out/uprn/existence.js +26 -16
- package/out/uprn/existence.js.map +1 -1
- package/out/uprn/lookup.d.ts +14 -44
- package/out/uprn/lookup.d.ts.map +1 -1
- package/out/uprn/lookup.js +20 -56
- package/out/uprn/lookup.js.map +1 -1
- package/out/uprn/schema.d.ts +18 -40
- package/out/uprn/schema.d.ts.map +1 -1
- package/out/uprn/schema.js +10 -32
- package/out/uprn/schema.js.map +1 -1
- package/out/{uprn/index.d.ts → uprn.d.ts} +1 -1
- package/out/uprn.d.ts.map +1 -0
- package/out/{uprn/index.js → uprn.js} +1 -1
- package/out/uprn.js.map +1 -0
- package/out/weights-overlay-linker.d.ts +132 -141
- package/out/weights-overlay-linker.d.ts.map +1 -1
- package/out/weights-overlay-linker.js +86 -154
- package/out/weights-overlay-linker.js.map +1 -1
- package/package.json +94 -599
- package/lib/address/point-schema.ts +0 -155
- package/lib/build-candidate.ts +0 -632
- package/lib/build-slim.ts +0 -408
- package/lib/candidate-ancestors-schema.ts +0 -195
- package/lib/candidate-fts.ts +0 -46
- package/lib/candidate-importance.ts +0 -224
- package/lib/candidate-lookup.ts +0 -977
- package/lib/candidate-schema.ts +0 -247
- package/lib/candidate-scoring.ts +0 -261
- package/lib/convention/index.ts +0 -154
- package/lib/fts/index.ts +0 -361
- package/lib/postal/city-alias-lookup.ts +0 -97
- package/lib/postal/index.ts +0 -9
- package/lib/sqlite-convention-source.ts +0 -65
- package/lib/sqlite-utils.ts +0 -82
- package/lib/street/centroid-schema.ts +0 -154
- package/out/address/index.d.ts.map +0 -1
- package/out/address/index.js.map +0 -1
- package/out/address/point-interpolation.d.ts +0 -49
- package/out/address/point-interpolation.d.ts.map +0 -1
- package/out/address/point-interpolation.js.map +0 -1
- package/out/address/point-schema.d.ts +0 -97
- package/out/address/point-schema.d.ts.map +0 -1
- package/out/address/point-schema.js.map +0 -1
- package/out/ancestry/index.d.ts +0 -45
- package/out/ancestry/index.d.ts.map +0 -1
- package/out/ancestry/index.js +0 -55
- package/out/ancestry/index.js.map +0 -1
- package/out/build-candidate.d.ts +0 -184
- package/out/build-candidate.d.ts.map +0 -1
- package/out/build-candidate.js.map +0 -1
- package/out/build-slim.d.ts +0 -80
- package/out/build-slim.d.ts.map +0 -1
- package/out/build-slim.js.map +0 -1
- package/out/candidate/ancestors-sidecar.d.ts +0 -32
- package/out/candidate/ancestors-sidecar.d.ts.map +0 -1
- package/out/candidate/ancestors-sidecar.js.map +0 -1
- package/out/candidate-ancestors-schema.d.ts +0 -150
- package/out/candidate-ancestors-schema.d.ts.map +0 -1
- package/out/candidate-ancestors-schema.js +0 -123
- package/out/candidate-ancestors-schema.js.map +0 -1
- package/out/candidate-fts.d.ts +0 -37
- package/out/candidate-fts.d.ts.map +0 -1
- package/out/candidate-fts.js +0 -40
- package/out/candidate-fts.js.map +0 -1
- package/out/candidate-importance.d.ts +0 -132
- package/out/candidate-importance.d.ts.map +0 -1
- package/out/candidate-importance.js +0 -169
- package/out/candidate-importance.js.map +0 -1
- package/out/candidate-lookup.d.ts +0 -76
- package/out/candidate-lookup.d.ts.map +0 -1
- package/out/candidate-lookup.js +0 -768
- package/out/candidate-lookup.js.map +0 -1
- package/out/candidate-schema.d.ts +0 -155
- package/out/candidate-schema.d.ts.map +0 -1
- package/out/candidate-schema.js.map +0 -1
- package/out/candidate-scoring.d.ts.map +0 -1
- package/out/candidate-scoring.js +0 -196
- package/out/candidate-scoring.js.map +0 -1
- package/out/convention/index.d.ts +0 -106
- package/out/convention/index.d.ts.map +0 -1
- package/out/convention/index.js +0 -93
- package/out/convention/index.js.map +0 -1
- package/out/fst/index.d.ts.map +0 -1
- package/out/fst/index.js.map +0 -1
- package/out/fts/index.d.ts +0 -184
- package/out/fts/index.d.ts.map +0 -1
- package/out/fts/index.js +0 -277
- package/out/fts/index.js.map +0 -1
- package/out/geonames/index.d.ts.map +0 -1
- package/out/geonames/index.js.map +0 -1
- package/out/nsul/index.d.ts.map +0 -1
- package/out/nsul/index.js.map +0 -1
- package/out/poi/index.d.ts.map +0 -1
- package/out/poi/index.js.map +0 -1
- package/out/postal/city-alias-lookup.d.ts.map +0 -1
- package/out/postal/city-alias-lookup.js +0 -62
- package/out/postal/city-alias-lookup.js.map +0 -1
- package/out/postal/city-alias-schema.d.ts.map +0 -1
- package/out/postal/city-alias-schema.js.map +0 -1
- package/out/postal/city-candidate-schema.d.ts +0 -66
- package/out/postal/city-candidate-schema.d.ts.map +0 -1
- package/out/postal/city-candidate-schema.js +0 -56
- package/out/postal/city-candidate-schema.js.map +0 -1
- package/out/postal/index.d.ts +0 -9
- package/out/postal/index.d.ts.map +0 -1
- package/out/postal/index.js +0 -9
- package/out/postal/index.js.map +0 -1
- package/out/sqlite-convention-source.d.ts +0 -29
- package/out/sqlite-convention-source.d.ts.map +0 -1
- package/out/sqlite-convention-source.js +0 -57
- package/out/sqlite-convention-source.js.map +0 -1
- package/out/sqlite-utils.d.ts +0 -45
- package/out/sqlite-utils.d.ts.map +0 -1
- package/out/sqlite-utils.js +0 -57
- package/out/sqlite-utils.js.map +0 -1
- package/out/street/centroid-schema.d.ts +0 -105
- package/out/street/centroid-schema.d.ts.map +0 -1
- package/out/street/centroid-schema.js +0 -78
- package/out/street/centroid-schema.js.map +0 -1
- package/out/street/index.d.ts.map +0 -1
- package/out/street/index.js.map +0 -1
- package/out/street/morphology-fst-builder.d.ts.map +0 -1
- package/out/street/morphology-fst-builder.js.map +0 -1
- package/out/street/morphology-fst-loader.d.ts +0 -67
- package/out/street/morphology-fst-loader.d.ts.map +0 -1
- package/out/street/morphology-fst-loader.js.map +0 -1
- package/out/uprn/index.d.ts.map +0 -1
- package/out/uprn/index.js.map +0 -1
- /package/lib/{fst/index.ts → fst.ts} +0 -0
- /package/lib/{geonames/index.ts → geonames.ts} +0 -0
- /package/lib/{nsul/index.ts → nsul.ts} +0 -0
- /package/lib/{poi/index.ts → poi.ts} +0 -0
- /package/lib/{uprn/index.ts → uprn.ts} +0 -0
package/out/geonames/postal.js
CHANGED
|
@@ -3,126 +3,157 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* 2. **Medoid centroids:** GeoNames postal is one row per (postcode, settlement); the naive
|
|
25
|
-
* mean-of-members centroid displaced tighter village coordinates on already-correct rows
|
|
26
|
-
* (the p50-tax that ni-failed SK/SI/HR at 1.10–1.94 km CI). The MEDOID — the member point
|
|
27
|
-
* nearest the mean — keeps the coordinate on a real settlement.
|
|
28
|
-
*
|
|
29
|
-
* Package home for the same reason as `geonames-aliases.ts`: `build-unified-wof
|
|
30
|
-
* --geonames-postal-countries`, any standalone fold, and the `mailwoman gazetteer` commands
|
|
31
|
-
* share ONE implementation. GeoNames postal dump = `download.geonames.org/export/zip/<CC>.zip`
|
|
32
|
-
* → `<CC>.txt` (TSV: country, postcode, place, admin1, code1, admin2, code2, admin3, code3,
|
|
33
|
-
* lat, lon, accuracy). License CC BY 4.0 — attribution rides the extract's `meta` provenance and
|
|
34
|
-
* the model card like the existing GeoNames alias fold.
|
|
6
|
+
* Fold GeoNames postcode rows into a WOF or unified postcode extract as first-class `postalcode`
|
|
7
|
+
* places for countries whose WOF postalcode repos do not exist.
|
|
8
|
+
*
|
|
9
|
+
* Two laws are enforced here in code rather than in a runbook.
|
|
10
|
+
*
|
|
11
|
+
* 1. The name law. A postcode row's `name` is stored in the sanitized-query token shape with
|
|
12
|
+
* every non-letter and non-number stripped. `sanitizeFTSQuery` reduces the parsed token to
|
|
13
|
+
* that shape at lookup time. A stored `"110 00"` or `"11-041"` can never match the
|
|
14
|
+
* query `"11000"` or `"11041"`. The display form is preserved as an alt row in `names`.
|
|
15
|
+
* 2. The medoid law. A postcode whose rows contain scattered points has no single true center.
|
|
16
|
+
* Their average puts the code somewhere no address is. The medoid is the member point
|
|
17
|
+
* nearest the group's mean.
|
|
18
|
+
*
|
|
19
|
+
* `build-unified-wof --geonames-postal-countries`, standalone folds and the `mailwoman
|
|
20
|
+
* gazetteer` commands share one implementation. The GeoNames postal dump is
|
|
21
|
+
* `download.geonames.org/export/zip/<CC>.zip` → `<CC>.txt`, a headerless TSV of country,
|
|
22
|
+
* postcode, place, admin1, code1, admin2, code2, admin3, code3, lat, lon and accuracy.
|
|
23
|
+
* The license is CC BY 4.0. Attribution appears in the extract's `meta` provenance and model card.
|
|
35
24
|
*/
|
|
25
|
+
import { readUnquotedTSV } from "@mailwoman/core/fs/delimited";
|
|
36
26
|
import { pathExists } from "@mailwoman/core/fs/readers";
|
|
37
|
-
import {
|
|
38
|
-
import {
|
|
27
|
+
import { GEONAMES_POSTAL_ID_BASE } from "@mailwoman/core/resolver/synthetic-id-ranges";
|
|
28
|
+
import { resolvePathBuilder } from "path-ts";
|
|
39
29
|
/**
|
|
40
|
-
* Column count of a GeoNames postal-code TSV row.
|
|
41
|
-
*
|
|
30
|
+
* Column count of a GeoNames postal-code TSV row.
|
|
31
|
+
*
|
|
32
|
+
* Short rows are truncated or blank and are skipped.
|
|
33
|
+
* See the allCountries.zip readme for the field list.
|
|
42
34
|
*/
|
|
43
35
|
const GEONAMES_POSTAL_COLUMNS = 11;
|
|
44
36
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
|
|
49
|
-
export const GEONAMES_POSTAL_ID_BASE = 9_500_000_000_000;
|
|
50
|
-
/**
|
|
51
|
-
* The #920 name law: reduce a postcode to the sanitized-query token shape — strip every non-letter/number — so the
|
|
52
|
-
* stored name matches what `sanitizeFTSQuery` produces from the parsed postcode token. `"110 00"` → `"11000"`,
|
|
53
|
-
* `"11-041"` → `"11041"`, `"AD500"` → `"AD500"`.
|
|
37
|
+
* Reduce a postcode to the sanitized-query token shape, stripping every non-letter and non-number,
|
|
38
|
+
* so the stored name matches what `sanitizeFTSQuery` produces from the parsed postcode token.
|
|
39
|
+
*
|
|
40
|
+
* `"110 00"` → `"11000"`, `"11-041"` → `"11041"`, `"AD500"` → `"AD500"`.
|
|
54
41
|
*/
|
|
55
42
|
export function normalizePostcodeName(raw) {
|
|
56
43
|
return raw.replaceAll(/[^\p{L}\p{N}]/gu, "");
|
|
57
44
|
}
|
|
58
45
|
/**
|
|
59
|
-
*
|
|
46
|
+
* Collapse a group to its distinct points before any geometric consensus reads it.
|
|
47
|
+
*
|
|
48
|
+
* Rows sharing a coordinate to the digit provide one coordinate value.
|
|
49
|
+
* GeoNames computes a postal coordinate by matching the code against the names
|
|
50
|
+
* of places and admin divisions.
|
|
51
|
+
*
|
|
52
|
+
* It averages neighboring codes when the match fails.
|
|
53
|
+
* One computed value can reach every row that matched it.
|
|
54
|
+
*
|
|
55
|
+
* Uses exact equality rather than a proximity radius.
|
|
56
|
+
* `collapseCoincident` answers whether ranked candidates are the same physical
|
|
57
|
+
* place within `COINCIDENT_PLACE_KM`.
|
|
58
|
+
*
|
|
59
|
+
* Two surveyed settlements 200 m apart remain two points here.
|
|
60
|
+
*/
|
|
61
|
+
function collapseDuplicatePoints(points) {
|
|
62
|
+
const seen = new Set();
|
|
63
|
+
const out = [];
|
|
64
|
+
for (const p of points) {
|
|
65
|
+
const key = `${p[0]},${p[1]}`;
|
|
66
|
+
if (seen.has(key))
|
|
67
|
+
continue;
|
|
68
|
+
seen.add(key);
|
|
69
|
+
out.push(p);
|
|
70
|
+
}
|
|
71
|
+
return out;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Pick the member point nearest the group's mean, never the mean itself.
|
|
75
|
+
*
|
|
76
|
+
* The medoid stays on a real observation, so a single-member group is exactly its own point
|
|
77
|
+
* and a multi-member group is one of its members.
|
|
78
|
+
* The bound applies only while the members are distinct, so duplicate points are collapsed first.
|
|
60
79
|
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* fail SK/SI/HR at 1.10–1.94 km CI: the mean displaced coordinates that were already correct. The medoid stays on a
|
|
64
|
-
* real observation, so a single-member group is exactly its own point and a multi-member group is one of its members.
|
|
80
|
+
* Separate counts for N rows at one coordinate would weight that value by how many settlements
|
|
81
|
+
* inherited it. {@link MedoidSupport.distinctPoints} reports how many points the answer rested on.
|
|
65
82
|
*
|
|
66
|
-
* Distance is squared-Euclidean in
|
|
67
|
-
*
|
|
68
|
-
* the result a pure function of the input order — the property a rebuilt extract's ids depend on.
|
|
83
|
+
* Distance is squared-Euclidean in degrees rather than haversine.
|
|
84
|
+
* At the scale a postcode spans, both methods produce the same ranking.
|
|
69
85
|
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
* is
|
|
86
|
+
* Squared-Euclidean distance keeps trigonometry out of a per-group inner loop.
|
|
87
|
+
*
|
|
88
|
+
* Ties go to the earliest member, so the result is a pure function of input order.
|
|
89
|
+
* Rebuilt extract IDs depend on that property.
|
|
90
|
+
*
|
|
91
|
+
* Exported for reuse by every postcode source that groups member points:
|
|
92
|
+
* GeoNames postal and OSM `addr:postcode`.
|
|
93
|
+
* Both sources owe the same law.
|
|
94
|
+
* A second hand-rolled copy would let them drift.
|
|
73
95
|
*/
|
|
74
96
|
export function medoidPoint(points) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
97
|
+
return medoidWithSupport(points).point;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* {@link medoidPoint} with the group size it rested on, for a caller that must
|
|
101
|
+
* record how thin the answer was.
|
|
102
|
+
*/
|
|
103
|
+
export function medoidWithSupport(points) {
|
|
104
|
+
if (!points.length)
|
|
105
|
+
throw new Error("medoidWithSupport: no member points");
|
|
106
|
+
const distinct = collapseDuplicatePoints(points);
|
|
107
|
+
const only = distinct[0];
|
|
108
|
+
if (distinct.length === 1) {
|
|
109
|
+
return { point: only, rows: points.length, distinctPoints: 1 };
|
|
110
|
+
}
|
|
80
111
|
let sumLat = 0;
|
|
81
112
|
let sumLon = 0;
|
|
82
|
-
for (const p of
|
|
113
|
+
for (const p of distinct) {
|
|
83
114
|
sumLat += p[0];
|
|
84
115
|
sumLon += p[1];
|
|
85
116
|
}
|
|
86
|
-
const meanLat = sumLat /
|
|
87
|
-
const meanLon = sumLon /
|
|
88
|
-
let best =
|
|
117
|
+
const meanLat = sumLat / distinct.length;
|
|
118
|
+
const meanLon = sumLon / distinct.length;
|
|
119
|
+
let best = only;
|
|
89
120
|
let bestD = Infinity;
|
|
90
|
-
for (const p of
|
|
121
|
+
for (const p of distinct) {
|
|
91
122
|
const d = (p[0] - meanLat) ** 2 + (p[1] - meanLon) ** 2;
|
|
92
123
|
if (d < bestD) {
|
|
93
124
|
bestD = d;
|
|
94
125
|
best = p;
|
|
95
126
|
}
|
|
96
127
|
}
|
|
97
|
-
return best;
|
|
128
|
+
return { point: best, rows: points.length, distinctPoints: distinct.length };
|
|
98
129
|
}
|
|
99
130
|
/**
|
|
100
|
-
* Fold GeoNames postcodes for `countries` into an open unified/postcode ingest DB: one `spr` row
|
|
101
|
-
* normalized postcode (placetype `postalcode`, medoid centroid, degenerate bbox),
|
|
102
|
-
* the display form as an extra `names` row when it differs.
|
|
103
|
-
*
|
|
131
|
+
* Fold GeoNames postcodes for `countries` into an open unified/postcode ingest DB: one `spr` row
|
|
132
|
+
* per distinct normalized postcode (placetype `postalcode`, medoid centroid, degenerate bbox),
|
|
133
|
+
* the normalized form as `name`, and the display form as an extra `names` row when it differs.
|
|
134
|
+
*
|
|
135
|
+
* The caller owns the FTS rebuild (rows ride the standard freeze phase).
|
|
104
136
|
*/
|
|
105
137
|
export async function ingestGeonamesPostal(db, countries, postalDir) {
|
|
106
138
|
const sprInsert = db.prepare(`INSERT OR REPLACE INTO spr (id, parent_id, name, placetype, country, latitude, longitude, min_latitude, min_longitude, max_latitude, max_longitude, is_current, is_deprecated, is_ceased, is_superseded, is_superseding, lastmodified) VALUES (?, -1, ?, 'postalcode', ?, ?, ?, ?, ?, ?, ?, 1, 0, 0, 0, 0, 0)`);
|
|
107
139
|
const namesInsert = db.prepare(`INSERT INTO names (id, name, placetype, country, language, lastmodified) VALUES (?, ?, 'postalcode', ?, '', 0)`);
|
|
108
140
|
let nextID = GEONAMES_POSTAL_ID_BASE;
|
|
109
141
|
const byCountry = {};
|
|
142
|
+
const singlePointByCountry = {};
|
|
110
143
|
const missing = [];
|
|
111
144
|
let inserted = 0;
|
|
112
145
|
for (const country of countries) {
|
|
113
146
|
const cc = country.toUpperCase();
|
|
114
|
-
const file =
|
|
147
|
+
const file = resolvePathBuilder(postalDir, `${cc}.txt`);
|
|
115
148
|
if (!(await pathExists(file))) {
|
|
116
149
|
missing.push(cc);
|
|
117
150
|
console.error(` GeoNames postal ${cc}: ${file} missing — download from download.geonames.org/export/zip/${cc}.zip; skipped`);
|
|
118
151
|
continue;
|
|
119
152
|
}
|
|
120
|
-
// Group member settlement points per NORMALIZED code; remember one display form.
|
|
121
153
|
const members = new Map();
|
|
122
|
-
//
|
|
123
|
-
//
|
|
124
|
-
|
|
125
|
-
for await (const cols of TSVSpliterator.fromAsync(file, { header: false })) {
|
|
154
|
+
// The dump is headerless, so row 1 would otherwise be consumed as column headings and its postcode lost.
|
|
155
|
+
// `header: false` is required.
|
|
156
|
+
for await (const cols of readUnquotedTSV(file)) {
|
|
126
157
|
if (cols.length < GEONAMES_POSTAL_COLUMNS)
|
|
127
158
|
continue;
|
|
128
159
|
const display = cols[1].trim();
|
|
@@ -136,9 +167,13 @@ export async function ingestGeonamesPostal(db, countries, postalDir) {
|
|
|
136
167
|
members.set(name, m);
|
|
137
168
|
}
|
|
138
169
|
db.exec("BEGIN");
|
|
170
|
+
let singlePoint = 0;
|
|
139
171
|
for (const [name, m] of members) {
|
|
140
|
-
|
|
141
|
-
const best =
|
|
172
|
+
const support = medoidWithSupport(m.pts);
|
|
173
|
+
const best = support.point;
|
|
174
|
+
if (support.distinctPoints === 1 && support.rows > 1) {
|
|
175
|
+
singlePoint++;
|
|
176
|
+
}
|
|
142
177
|
const id = nextID++;
|
|
143
178
|
sprInsert.run(id, name, cc, best[0], best[1], best[0], best[1], best[0], best[1]);
|
|
144
179
|
namesInsert.run(id, name, cc);
|
|
@@ -149,8 +184,10 @@ export async function ingestGeonamesPostal(db, countries, postalDir) {
|
|
|
149
184
|
}
|
|
150
185
|
db.exec("COMMIT");
|
|
151
186
|
byCountry[cc] = members.size;
|
|
152
|
-
|
|
187
|
+
singlePointByCountry[cc] = singlePoint;
|
|
188
|
+
console.error(` GeoNames postal ${cc}: ${members.size.toLocaleString()} distinct codes (medoid centroids), ` +
|
|
189
|
+
`${singlePoint.toLocaleString()} resting on one repeated point`);
|
|
153
190
|
}
|
|
154
|
-
return { inserted, byCountry, missing };
|
|
191
|
+
return { inserted, byCountry, singlePointByCountry, missing };
|
|
155
192
|
}
|
|
156
193
|
//# sourceMappingURL=postal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postal.js","sourceRoot":"","sources":["../../lib/geonames/postal.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"postal.js","sourceRoot":"","sources":["../../lib/geonames/postal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geonames.d.ts","sourceRoot":"","sources":["../lib/geonames.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geonames.js","sourceRoot":"","sources":["../lib/geonames.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA"}
|
package/out/index.d.ts
CHANGED
|
@@ -3,35 +3,34 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*/
|
|
6
|
-
export type { FindPlaceQuery,
|
|
6
|
+
export type { FindPlaceQuery, PlaceCandidate, PlaceLookup, WOFPlacetype } from "#types";
|
|
7
7
|
export type { AncestorsTable, CoincidentRolesTable, ConcordancesTable, GeojsonTable, NamesTable, PlaceAbbrTable, PlacePopulationTable, PlaceSearchTable, SprTable, WOFDatabase, } from "#schema";
|
|
8
8
|
export { WOFSQLitePlaceLookup, type RankingWeights, type WOFSQLitePlaceLookupOpts } from "#lookup";
|
|
9
|
-
export { CANDIDATE_ANCESTOR_COLUMNS, CANDIDATE_ANCESTOR_TABLE, CANDIDATE_INTERVAL_TABLE, createCandidateAncestorTable, createCandidateIntervalTable, intervalContains, MAX_ANCESTOR_DEPTH, } from "#candidate
|
|
10
|
-
export type { CandidateAncestorsDatabase, CandidateAncestorTable, CandidateIntervalTable, IntervalLabel, } from "#candidate
|
|
11
|
-
export { CANDIDATE_FTS_TABLE, createCandidateFTS } from "#candidate
|
|
12
|
-
export { ImportanceIndex, IMPORTANCE_JOIN_RADIUS_KM, type ImportanceIndexStats, loadImportanceIndex, } from "#candidate
|
|
13
|
-
export { WOFCandidateTableLookup, type WOFCandidateTableLookupOpts } from "#candidate
|
|
9
|
+
export { CANDIDATE_ANCESTOR_COLUMNS, CANDIDATE_ANCESTOR_TABLE, CANDIDATE_INTERVAL_TABLE, createCandidateAncestorTable, createCandidateIntervalTable, intervalContains, MAX_ANCESTOR_DEPTH, } from "#candidate/ancestors/schema";
|
|
10
|
+
export type { CandidateAncestorsDatabase, CandidateAncestorTable, CandidateIntervalTable, IntervalLabel, } from "#candidate/ancestors/schema";
|
|
11
|
+
export { CANDIDATE_FTS_TABLE, createCandidateFTS } from "#candidate/fts";
|
|
12
|
+
export { ImportanceIndex, IMPORTANCE_JOIN_RADIUS_KM, type ImportanceIndexStats, loadImportanceIndex, } from "#candidate/importance";
|
|
13
|
+
export { WOFCandidateTableLookup, type WOFCandidateTableLookupOpts } from "#candidate/lookup";
|
|
14
14
|
export { COUNTRY_BBOX_TABLE, COUNTRY_COVERAGE_TABLE, createCountryBBoxTable, createCountryCoverageTable, readGazetteerCoverageManifest, writeGazetteerCoverageManifest, } from "#coverage-manifest-schema";
|
|
15
15
|
export type { CountryBBoxTable, CountryCoverageTable, GazetteerCoverageDatabase } from "#coverage-manifest-schema";
|
|
16
16
|
export { SQLiteStreetNameLookup, type SQLiteStreetNameLookupOpts } from "#street/name-lookup";
|
|
17
|
-
export {
|
|
18
|
-
export {
|
|
19
|
-
export {
|
|
20
|
-
export type
|
|
21
|
-
export {
|
|
22
|
-
export
|
|
23
|
-
export {
|
|
24
|
-
export type
|
|
25
|
-
export {
|
|
26
|
-
export { SqliteConventionSource } from "#sqlite-convention-source";
|
|
17
|
+
export { type GeonamesIngestProgress, ingestGeonamesAliases, purgeGeonamesAliasRange } from "#geonames/aliases";
|
|
18
|
+
export { ADDRESS_POINT_COLUMNS, createAddressPointIndexes, createAddressPointTable } from "#address/point/schema";
|
|
19
|
+
export type { AddressPointDatabase, AddressPointTable } from "#address/point/schema";
|
|
20
|
+
export { WOFPostalCityAliasLookup, type PostalCityAlias, type WOFPostalCityAliasLookupOpts, } from "#postal/city/alias/lookup";
|
|
21
|
+
export type { PostalCityAliasDatabase, PostalCityAliasTable } from "#postal/city/alias/schema";
|
|
22
|
+
export { POSTAL_CITY_CANDIDATE_COLUMNS, POSTAL_CITY_CANDIDATE_TABLE, createPostalCityCandidateTable, } from "#postal/city/candidate-schema";
|
|
23
|
+
export type { PostalCityCandidateDatabase, PostalCityCandidateTable } from "#postal/city/candidate-schema";
|
|
24
|
+
export { ADDRESS_CONVENTION_TABLE, BUILTIN_STRATEGY_NAMES, SeedConventionSource, WORLD_DEFAULT, mergeConventions, resolveConvention, type Convention, type ConventionSource, type ResolvedConvention, type ScoringWeights, type Strategy, } from "#convention";
|
|
25
|
+
export { SqliteConventionSource } from "#sqlite/convention-source";
|
|
27
26
|
export { WOFPostcodeLookup, type PostcodePlace } from "#postcode-point-lookup";
|
|
28
|
-
export { PLACE_BBOX_TABLE, PLACE_SEARCH_TABLE, buildPlaceSearchFTS, placeBboxExists, placeSearchFTSExists, type BuildPlaceSearchFTSOpts, type BuildPlaceSearchFTSResult, } from "#fts
|
|
29
|
-
export { PLACETYPE_DEPTH, ancestorLineage, placetypeDepth, type AncestorPlaceRow } from "#ancestry
|
|
27
|
+
export { PLACE_BBOX_TABLE, PLACE_SEARCH_TABLE, buildPlaceSearchFTS, placeBboxExists, placeSearchFTSExists, type BuildPlaceSearchFTSOpts, type BuildPlaceSearchFTSResult, } from "#fts";
|
|
28
|
+
export { PLACETYPE_DEPTH, ancestorLineage, placetypeDepth, type AncestorPlaceRow } from "#ancestry";
|
|
30
29
|
export { WOFReverseGeocoder, type ContainmentKind, type ReverseGeocodeOpts, type ReverseGeocodeResult, type WOFReverseGeocoderOpts, } from "#reverse";
|
|
31
|
-
export { AddressPointInterpolator } from "#address/point
|
|
30
|
+
export { AddressPointInterpolator } from "#address/point/interpolation";
|
|
32
31
|
export { AddressPointSqliteLookup } from "#address/point";
|
|
33
|
-
export { STREET_CENTROID_COLUMNS, createStreetCentroidIndexes, createStreetCentroidTable, } from "#street/centroid
|
|
34
|
-
export type { StreetCentroidDatabase, StreetCentroidTable } from "#street/centroid
|
|
32
|
+
export { STREET_CENTROID_COLUMNS, createStreetCentroidIndexes, createStreetCentroidTable, } from "#street/centroid/schema";
|
|
33
|
+
export type { StreetCentroidDatabase, StreetCentroidTable } from "#street/centroid/schema";
|
|
35
34
|
export { StreetCentroidSqliteLookup } from "#street/centroid";
|
|
36
35
|
export { StreetInterpolator, type InterpolatedHit, type InterpolationMethod, type InterpolationQuery, } from "#interpolation";
|
|
37
36
|
export { deriveSchemaName, pickExtractForPlacetype, resolveExtracts, type ResolvedExtract, type ExtractConfig, } from "#extracts";
|
package/out/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAEvF,YAAY,EACX,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,QAAQ,EACR,WAAW,GACX,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,KAAK,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAElG,OAAO,EACN,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,gBAAgB,EAChB,kBAAkB,GAClB,MAAM,6BAA6B,CAAA;AAEpC,YAAY,EACX,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,GACb,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAExE,OAAO,EACN,eAAe,EACf,yBAAyB,EACzB,KAAK,oBAAoB,EACzB,mBAAmB,GACnB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,uBAAuB,EAAE,KAAK,2BAA2B,EAAE,MAAM,mBAAmB,CAAA;AAE7F,OAAO,EACN,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,EAC1B,6BAA6B,EAC7B,8BAA8B,GAC9B,MAAM,2BAA2B,CAAA;AAElC,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,sBAAsB,EAAE,KAAK,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AAE7F,OAAO,EAAE,KAAK,sBAAsB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAE/G,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AACjH,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAEpF,OAAO,EACN,wBAAwB,EACxB,KAAK,eAAe,EACpB,KAAK,4BAA4B,GACjC,MAAM,2BAA2B,CAAA;AAElC,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAE9F,OAAO,EACN,6BAA6B,EAC7B,2BAA2B,EAC3B,8BAA8B,GAC9B,MAAM,+BAA+B,CAAA;AAEtC,YAAY,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AAE1G,OAAO,EACN,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,QAAQ,GACb,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAElE,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE9E,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,GAC9B,MAAM,MAAM,CAAA;AAEb,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEnG,OAAO,EACN,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC3B,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,EACN,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,GACzB,MAAM,yBAAyB,CAAA;AAEhC,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAE7D,OAAO,EACN,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACvB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACN,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,aAAa,GAClB,MAAM,WAAW,CAAA"}
|
package/out/index.js
CHANGED
|
@@ -4,26 +4,25 @@
|
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*/
|
|
6
6
|
export { WOFSQLitePlaceLookup } from "#lookup";
|
|
7
|
-
export { CANDIDATE_ANCESTOR_COLUMNS, CANDIDATE_ANCESTOR_TABLE, CANDIDATE_INTERVAL_TABLE, createCandidateAncestorTable, createCandidateIntervalTable, intervalContains, MAX_ANCESTOR_DEPTH, } from "#candidate
|
|
8
|
-
export { CANDIDATE_FTS_TABLE, createCandidateFTS } from "#candidate
|
|
9
|
-
export { ImportanceIndex, IMPORTANCE_JOIN_RADIUS_KM, loadImportanceIndex, } from "#candidate
|
|
10
|
-
export { WOFCandidateTableLookup } from "#candidate
|
|
7
|
+
export { CANDIDATE_ANCESTOR_COLUMNS, CANDIDATE_ANCESTOR_TABLE, CANDIDATE_INTERVAL_TABLE, createCandidateAncestorTable, createCandidateIntervalTable, intervalContains, MAX_ANCESTOR_DEPTH, } from "#candidate/ancestors/schema";
|
|
8
|
+
export { CANDIDATE_FTS_TABLE, createCandidateFTS } from "#candidate/fts";
|
|
9
|
+
export { ImportanceIndex, IMPORTANCE_JOIN_RADIUS_KM, loadImportanceIndex, } from "#candidate/importance";
|
|
10
|
+
export { WOFCandidateTableLookup } from "#candidate/lookup";
|
|
11
11
|
export { COUNTRY_BBOX_TABLE, COUNTRY_COVERAGE_TABLE, createCountryBBoxTable, createCountryCoverageTable, readGazetteerCoverageManifest, writeGazetteerCoverageManifest, } from "#coverage-manifest-schema";
|
|
12
12
|
export { SQLiteStreetNameLookup } from "#street/name-lookup";
|
|
13
|
-
export {
|
|
14
|
-
export {
|
|
15
|
-
export {
|
|
16
|
-
export {
|
|
17
|
-
export {
|
|
18
|
-
export {
|
|
19
|
-
export { SqliteConventionSource } from "#sqlite-convention-source";
|
|
13
|
+
export { ingestGeonamesAliases, purgeGeonamesAliasRange } from "#geonames/aliases";
|
|
14
|
+
export { ADDRESS_POINT_COLUMNS, createAddressPointIndexes, createAddressPointTable } from "#address/point/schema";
|
|
15
|
+
export { WOFPostalCityAliasLookup, } from "#postal/city/alias/lookup";
|
|
16
|
+
export { POSTAL_CITY_CANDIDATE_COLUMNS, POSTAL_CITY_CANDIDATE_TABLE, createPostalCityCandidateTable, } from "#postal/city/candidate-schema";
|
|
17
|
+
export { ADDRESS_CONVENTION_TABLE, BUILTIN_STRATEGY_NAMES, SeedConventionSource, WORLD_DEFAULT, mergeConventions, resolveConvention, } from "#convention";
|
|
18
|
+
export { SqliteConventionSource } from "#sqlite/convention-source";
|
|
20
19
|
export { WOFPostcodeLookup } from "#postcode-point-lookup";
|
|
21
|
-
export { PLACE_BBOX_TABLE, PLACE_SEARCH_TABLE, buildPlaceSearchFTS, placeBboxExists, placeSearchFTSExists, } from "#fts
|
|
22
|
-
export { PLACETYPE_DEPTH, ancestorLineage, placetypeDepth } from "#ancestry
|
|
20
|
+
export { PLACE_BBOX_TABLE, PLACE_SEARCH_TABLE, buildPlaceSearchFTS, placeBboxExists, placeSearchFTSExists, } from "#fts";
|
|
21
|
+
export { PLACETYPE_DEPTH, ancestorLineage, placetypeDepth } from "#ancestry";
|
|
23
22
|
export { WOFReverseGeocoder, } from "#reverse";
|
|
24
|
-
export { AddressPointInterpolator } from "#address/point
|
|
23
|
+
export { AddressPointInterpolator } from "#address/point/interpolation";
|
|
25
24
|
export { AddressPointSqliteLookup } from "#address/point";
|
|
26
|
-
export { STREET_CENTROID_COLUMNS, createStreetCentroidIndexes, createStreetCentroidTable, } from "#street/centroid
|
|
25
|
+
export { STREET_CENTROID_COLUMNS, createStreetCentroidIndexes, createStreetCentroidTable, } from "#street/centroid/schema";
|
|
27
26
|
export { StreetCentroidSqliteLookup } from "#street/centroid";
|
|
28
27
|
export { StreetInterpolator, } from "#interpolation";
|
|
29
28
|
export { deriveSchemaName, pickExtractForPlacetype, resolveExtracts, } from "#extracts";
|
package/out/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,OAAO,EAAE,oBAAoB,EAAsD,MAAM,SAAS,CAAA;AAElG,OAAO,EACN,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,gBAAgB,EAChB,kBAAkB,GAClB,MAAM,6BAA6B,CAAA;AASpC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAExE,OAAO,EACN,eAAe,EACf,yBAAyB,EAEzB,mBAAmB,GACnB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,uBAAuB,EAAoC,MAAM,mBAAmB,CAAA;AAE7F,OAAO,EACN,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,EAC1B,6BAA6B,EAC7B,8BAA8B,GAC9B,MAAM,2BAA2B,CAAA;AAGlC,OAAO,EAAE,sBAAsB,EAAmC,MAAM,qBAAqB,CAAA;AAE7F,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,OAAO,EAAE,oBAAoB,EAAsD,MAAM,SAAS,CAAA;AAElG,OAAO,EACN,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,gBAAgB,EAChB,kBAAkB,GAClB,MAAM,6BAA6B,CAAA;AASpC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAExE,OAAO,EACN,eAAe,EACf,yBAAyB,EAEzB,mBAAmB,GACnB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,uBAAuB,EAAoC,MAAM,mBAAmB,CAAA;AAE7F,OAAO,EACN,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,EAC1B,6BAA6B,EAC7B,8BAA8B,GAC9B,MAAM,2BAA2B,CAAA;AAGlC,OAAO,EAAE,sBAAsB,EAAmC,MAAM,qBAAqB,CAAA;AAE7F,OAAO,EAA+B,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAE/G,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAGjH,OAAO,EACN,wBAAwB,GAGxB,MAAM,2BAA2B,CAAA;AAIlC,OAAO,EACN,6BAA6B,EAC7B,2BAA2B,EAC3B,8BAA8B,GAC9B,MAAM,+BAA+B,CAAA;AAItC,OAAO,EACN,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAMjB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAElE,OAAO,EAAE,iBAAiB,EAAsB,MAAM,wBAAwB,CAAA;AAE9E,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,GAGpB,MAAM,MAAM,CAAA;AAEb,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAyB,MAAM,WAAW,CAAA;AAEnG,OAAO,EACN,kBAAkB,GAKlB,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,EACN,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,GACzB,MAAM,yBAAyB,CAAA;AAGhC,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAE7D,OAAO,EACN,kBAAkB,GAIlB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACN,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,GAGf,MAAM,WAAW,CAAA"}
|
package/out/interpolation.d.ts
CHANGED
|
@@ -3,88 +3,52 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* misses, estimate the coordinate from TIGER street-segment ranges — parity-aware range match,
|
|
8
|
-
* then linear interpolation along the segment polyline. Design:
|
|
9
|
-
* `docs/articles/plan/2026-06-11-interpolation-design.md`.
|
|
10
|
-
*
|
|
11
|
-
* Reads the per-state extract built by `scripts/build-interpolation-extract.ts` (`street_segment`: one
|
|
12
|
-
* row per TIGER edge SIDE — independent left/right ranges, ZIPs, parity). Query-side
|
|
13
|
-
* normalization is THE shared normalizer (`street-normalize.ts`) — identical to build-side, by
|
|
14
|
-
* construction.
|
|
15
|
-
*
|
|
16
|
-
* Every answer is honest about being an estimate: `interpolated: true`, `parityMatched` (false when
|
|
17
|
-
* only the opposite side's range contained the number — usually the right block, wrong side of
|
|
18
|
-
* the street), and `uncertaintyM` (half the matched segment's length — the #483 issue's honest
|
|
19
|
-
* default). Scoping is postcode-first (a given ZIP that scopes to nothing is a MISS — the
|
|
20
|
-
* statewide retry was measured and rejected, see `find()`); without a postcode the statewide name
|
|
21
|
-
* match must agree on a single postcode or the lookup ABSTAINS (a common street name spanning
|
|
22
|
-
* towns is ambiguity, not an answer).
|
|
23
|
-
*
|
|
24
|
-
* Standalone in this slice — core tier wiring (`resolution_tier: "interpolated"` after the
|
|
25
|
-
* exact-point fall-through) is a noted follow-up on #483, so the `find()` shape mirrors
|
|
26
|
-
* `AddressPointLookup.find()` to keep that wiring mechanical.
|
|
6
|
+
* House-number interpolation: when the exact address-point tier misses, estimate the coordinate from tiger street-segment ranges by parity-aware range match and linear interpolation along the segment polyline.
|
|
27
7
|
*/
|
|
28
8
|
import type { InterpolationLookup } from "@mailwoman/core/resolver";
|
|
29
9
|
import { DatabaseClient } from "@mailwoman/sqlite/client";
|
|
30
10
|
import type { StreetSegmentDatabase } from "#street/segment-schema";
|
|
31
11
|
/**
|
|
32
|
-
* How an interpolated answer was computed
|
|
33
|
-
*
|
|
34
|
-
* - `address_point` — bracketed/extrapolated between REAL neighbor points from the #476 extract
|
|
35
|
-
* (`AddressPointInterpolator`), replacing TIGER's uniform-spacing assumption with occupancy.
|
|
36
|
-
* - `tiger_range` — linear position within a TIGER segment's theoretical house-number range (`StreetInterpolator`), the
|
|
37
|
-
* fallback for streets too sparse to bracket.
|
|
12
|
+
* How an interpolated answer was computed, `address_point` for bracketed neighbor points
|
|
13
|
+
* and `tiger_range` for linear position within a tiger segment.
|
|
38
14
|
*/
|
|
39
15
|
export type InterpolationMethod = "address_point" | "tiger_range";
|
|
40
16
|
/**
|
|
41
|
-
* One interpolated coordinate estimate
|
|
17
|
+
* One interpolated coordinate estimate, never an exact situs point.
|
|
42
18
|
*/
|
|
43
19
|
export interface InterpolatedHit {
|
|
44
20
|
lat: number;
|
|
45
21
|
lon: number;
|
|
46
|
-
/**
|
|
47
|
-
* Always true — the tier's honesty flag, mirrored into `resolution_tier` when wired.
|
|
48
|
-
*/
|
|
49
22
|
interpolated: true;
|
|
50
|
-
/**
|
|
51
|
-
* Which rung answered — see {@link InterpolationMethod}.
|
|
52
|
-
*/
|
|
53
23
|
method: InterpolationMethod;
|
|
54
24
|
/**
|
|
55
|
-
*
|
|
56
|
-
* `mixed`)
|
|
25
|
+
* True when the matched segment side's parity agrees with the house number
|
|
26
|
+
* (or the side is `mixed`); false is an opposite-side fallback.
|
|
57
27
|
*/
|
|
58
28
|
parityMatched?: boolean;
|
|
59
29
|
/**
|
|
60
|
-
* `
|
|
61
|
-
* on one side only (extrapolated, larger `uncertaintyM`).
|
|
30
|
+
* `both` sits between two known neighbor numbers; `single` is extrapolated from one side only.
|
|
62
31
|
*/
|
|
63
32
|
bracket?: "both" | "single";
|
|
64
33
|
/**
|
|
65
|
-
*
|
|
66
|
-
* span
|
|
34
|
+
* Uncertainty radius in meters: half the matched segment length for `tiger_range`, half the
|
|
35
|
+
* bracket span for `address_point`/`both`, or a larger extrapolation penalty for `single`.
|
|
67
36
|
*/
|
|
68
37
|
uncertaintyM: number;
|
|
69
|
-
/**
|
|
70
|
-
* Provenance, e.g. `"tiger:edges"`.
|
|
71
|
-
*/
|
|
72
38
|
source: string;
|
|
73
|
-
/**
|
|
74
|
-
* Pinned data vintage, e.g. `"TIGER2023"`.
|
|
75
|
-
*/
|
|
76
39
|
release: string;
|
|
77
40
|
}
|
|
78
41
|
export interface InterpolationQuery {
|
|
79
42
|
street: string;
|
|
80
43
|
number: string;
|
|
81
44
|
/**
|
|
82
|
-
* ZIP scope
|
|
45
|
+
* ZIP scope.
|
|
46
|
+
* Without it common street names abstain.
|
|
83
47
|
*/
|
|
84
48
|
postcode?: string;
|
|
85
49
|
/**
|
|
86
|
-
* The resolved locality's coordinate
|
|
87
|
-
*
|
|
50
|
+
* The resolved locality's coordinate, tie-breaking when no postcode was given
|
|
51
|
+
* and several postcodes survive parity.
|
|
88
52
|
*/
|
|
89
53
|
near?: {
|
|
90
54
|
lat: number;
|
|
@@ -98,9 +62,8 @@ export declare class StreetInterpolator<DB extends StreetSegmentDatabase = Stree
|
|
|
98
62
|
database?: DatabaseClient<DB>;
|
|
99
63
|
});
|
|
100
64
|
/**
|
|
101
|
-
* The artifact's own conformal radius multiplier
|
|
102
|
-
*
|
|
103
|
-
* no artifact default and callers may supply a legacy fallback.
|
|
65
|
+
* The artifact's own conformal radius multiplier, read from the extract at construction;
|
|
66
|
+
* `undefined` when the extract predates the table or contains no valid row.
|
|
104
67
|
*/
|
|
105
68
|
get radiusCalibration(): number | undefined;
|
|
106
69
|
find(query: InterpolationQuery): InterpolatedHit | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpolation.d.ts","sourceRoot":"","sources":["../lib/interpolation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"interpolation.d.ts","sourceRoot":"","sources":["../lib/interpolation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAIzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAEnE;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,aAAa,CAAA;AAEjE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IAEX,YAAY,EAAE,IAAI,CAAA;IAElB,MAAM,EAAE,mBAAmB,CAAA;IAC3B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IAC3B;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB,MAAM,EAAE,MAAM,CAAA;IAEd,OAAO,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CACnC;AA8DD,qBAAa,kBAAkB,CAC9B,EAAE,SAAS,qBAAqB,GAAG,qBAAqB,CACvD,YAAW,mBAAmB;;IAc/B,YAAY,IAAI,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,CAAA;KAAE,EA4CnE;IAED;;;OAGG;IACH,IAAI,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAE1C;IAED,IAAI,CAAC,KAAK,EAAE,kBAAkB,GAAG,eAAe,GAAG,IAAI,CAwBtD;IAsDD,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAEvB;CACD"}
|