@math.gl/dggs 5.0.0-alpha.6 → 5.0.0-alpha.9
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/dist/a5-decoder.d.ts +3 -3
- package/dist/a5-decoder.d.ts.map +1 -1
- package/dist/a5-decoder.js +3 -3
- package/dist/a5-decoder.js.map +1 -1
- package/dist/a5.cjs +59 -2
- package/dist/a5.cjs.map +3 -3
- package/dist/dggs-decoder.d.ts +12 -3
- package/dist/dggs-decoder.d.ts.map +1 -1
- package/dist/dggs-decoder.js +24 -0
- package/dist/dggs-decoder.js.map +1 -1
- package/dist/geohash-decoder.d.ts +3 -3
- package/dist/geohash-decoder.d.ts.map +1 -1
- package/dist/geohash-decoder.js +3 -3
- package/dist/geohash-decoder.js.map +1 -1
- package/dist/geohash.cjs +75 -2
- package/dist/geohash.cjs.map +2 -2
- package/dist/h3-decoder.d.ts +3 -3
- package/dist/h3-decoder.d.ts.map +1 -1
- package/dist/h3-decoder.js +3 -3
- package/dist/h3-decoder.js.map +1 -1
- package/dist/h3.cjs +59 -2
- package/dist/h3.cjs.map +3 -3
- package/dist/index.cjs +71 -13
- package/dist/index.cjs.map +3 -3
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/plus-code-decoder.d.ts +3 -3
- package/dist/plus-code-decoder.d.ts.map +1 -1
- package/dist/plus-code-decoder.js +3 -3
- package/dist/plus-code-decoder.js.map +1 -1
- package/dist/plus-code.cjs +75 -2
- package/dist/plus-code.cjs.map +2 -2
- package/dist/quadkey-decoder.d.ts +3 -3
- package/dist/quadkey-decoder.d.ts.map +1 -1
- package/dist/quadkey-decoder.js +3 -3
- package/dist/quadkey-decoder.js.map +1 -1
- package/dist/quadkey.cjs +75 -2
- package/dist/quadkey.cjs.map +2 -2
- package/dist/s2-decoder.d.ts +3 -3
- package/dist/s2-decoder.d.ts.map +1 -1
- package/dist/s2-decoder.js +3 -2
- package/dist/s2-decoder.js.map +1 -1
- package/dist/s2.cjs +77 -2
- package/dist/s2.cjs.map +2 -2
- package/dist/unwrap-dggs-boundary.d.ts +12 -0
- package/dist/unwrap-dggs-boundary.d.ts.map +1 -0
- package/dist/unwrap-dggs-boundary.js +49 -0
- package/dist/unwrap-dggs-boundary.js.map +1 -0
- package/package.json +3 -3
- package/src/a5-decoder.ts +8 -3
- package/src/dggs-decoder.ts +40 -3
- package/src/geohash-decoder.ts +8 -3
- package/src/h3-decoder.ts +8 -3
- package/src/index.ts +2 -0
- package/src/plus-code-decoder.ts +8 -3
- package/src/quadkey-decoder.ts +8 -3
- package/src/s2-decoder.ts +3 -3
- package/src/unwrap-dggs-boundary.ts +54 -0
package/dist/a5-decoder.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Bounds2D } from '@math.gl/types';
|
|
2
|
-
import { type DGGSCell } from "./dggs-decoder.js";
|
|
2
|
+
import { type DGGSCell, type DGGSDecoder } from "./dggs-decoder.js";
|
|
3
3
|
/** Lightweight cell geometry decoder for the A5 pentagonal DGGS. */
|
|
4
|
-
export declare const A5Decoder: {
|
|
4
|
+
export declare const A5Decoder: Omit<{
|
|
5
5
|
readonly name: "a5";
|
|
6
6
|
readonly hasNumericRepresentation: true;
|
|
7
7
|
readonly cellColumnNames: readonly ["a5", "a5Token", "a5_token", "a5Cell", "a5_cell", "a5CellId", "a5_cell_id", "pentagon"];
|
|
@@ -11,5 +11,5 @@ export declare const A5Decoder: {
|
|
|
11
11
|
readonly cellToBoundary: (cell: DGGSCell) => [number, number][];
|
|
12
12
|
readonly cellToBoundaryFlat: (cell: DGGSCell) => number[];
|
|
13
13
|
readonly cellToBounds: (cell: DGGSCell) => Bounds2D;
|
|
14
|
-
}
|
|
14
|
+
}, "cellToBoundary" | "cellToBoundaryFlat" | "cellToBounds"> & Pick<DGGSDecoder, "cellToBoundary" | "cellToBoundaryFlat" | "cellToBounds">;
|
|
15
15
|
//# sourceMappingURL=a5-decoder.d.ts.map
|
package/dist/a5-decoder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a5-decoder.d.ts","sourceRoot":"","sources":["../src/a5-decoder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,KAAK,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"a5-decoder.d.ts","sourceRoot":"","sources":["../src/a5-decoder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,KAAK,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,WAAW,EAEjB,0BAAuB;AAExB,oEAAoE;AACpE,eAAO,MAAM,SAAS;;;;kCAaC,MAAM,KAAG,MAAM;iCAChB,QAAQ,KAAG,MAAM;kCAEhB,QAAQ,KAAG,CAAC,MAAM,EAAE,MAAM,CAAC;oCACzB,QAAQ,KAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;wCACzB,QAAQ,KAAG,MAAM,EAAE;kCACzB,QAAQ,KAAG,QAAQ;0IACT,CAAC"}
|
package/dist/a5-decoder.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
import { cellToBoundary, cellToLonLat, hexToU64, u64ToHex } from 'a5-js';
|
|
5
|
-
import { getDGGSCellBounds } from "./dggs-decoder.js";
|
|
5
|
+
import { withDGGSBoundaryOptions, getDGGSCellBounds } from "./dggs-decoder.js";
|
|
6
6
|
/** Lightweight cell geometry decoder for the A5 pentagonal DGGS. */
|
|
7
|
-
export const A5Decoder = {
|
|
7
|
+
export const A5Decoder = withDGGSBoundaryOptions({
|
|
8
8
|
name: 'a5',
|
|
9
9
|
hasNumericRepresentation: true,
|
|
10
10
|
cellColumnNames: [
|
|
@@ -23,7 +23,7 @@ export const A5Decoder = {
|
|
|
23
23
|
cellToBoundary: (cell) => getA5Boundary(cell),
|
|
24
24
|
cellToBoundaryFlat: (cell) => getA5Boundary(cell).flat(),
|
|
25
25
|
cellToBounds: (cell) => getDGGSCellBounds(getA5Boundary(cell))
|
|
26
|
-
};
|
|
26
|
+
});
|
|
27
27
|
function getA5CellIndex(cell) {
|
|
28
28
|
return typeof cell === 'bigint' ? cell : hexToU64(removeHexPrefix(cell));
|
|
29
29
|
}
|
package/dist/a5-decoder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a5-decoder.js","sourceRoot":"","sources":["../src/a5-decoder.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAEvE,OAAO,
|
|
1
|
+
{"version":3,"file":"a5-decoder.js","sourceRoot":"","sources":["../src/a5-decoder.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAEvE,OAAO,EACL,uBAAuB,EAGvB,iBAAiB,EAClB,0BAAuB;AAExB,oEAAoE;AACpE,MAAM,CAAC,MAAM,SAAS,GAAG,uBAAuB,CAAC;IAC/C,IAAI,EAAE,IAAI;IACV,wBAAwB,EAAE,IAAI;IAC9B,eAAe,EAAE;QACf,IAAI;QACJ,SAAS;QACT,UAAU;QACV,QAAQ;QACR,SAAS;QACT,UAAU;QACV,YAAY;QACZ,UAAU;KACX;IACD,WAAW,EAAE,CAAC,KAAa,EAAU,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACxE,WAAW,EAAE,CAAC,IAAc,EAAU,EAAE,CACtC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IACnE,YAAY,EAAE,CAAC,IAAc,EAAoB,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACtF,cAAc,EAAE,CAAC,IAAc,EAAsB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;IAC3E,kBAAkB,EAAE,CAAC,IAAc,EAAY,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;IAC5E,YAAY,EAAE,CAAC,IAAc,EAAY,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;CACpD,CAAC,CAAC;AAElC,SAAS,cAAc,CAAC,IAAc;IACpC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,aAAa,CAAC,IAAc;IACnC,OAAO,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACnF,CAAC"}
|
package/dist/a5.cjs
CHANGED
|
@@ -26,6 +26,42 @@ module.exports = __toCommonJS(a5_exports);
|
|
|
26
26
|
// dist/a5-decoder.js
|
|
27
27
|
var import_a5_js = require("a5-js");
|
|
28
28
|
|
|
29
|
+
// dist/unwrap-dggs-boundary.js
|
|
30
|
+
function unwrapDGGSBoundary(boundary, referenceLongitude) {
|
|
31
|
+
const result = boundary.map(([longitude, latitude]) => [longitude, latitude]);
|
|
32
|
+
if (result.length === 0) {
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
let west = Infinity;
|
|
36
|
+
let east = -Infinity;
|
|
37
|
+
for (const [longitude] of boundary) {
|
|
38
|
+
west = Math.min(west, longitude);
|
|
39
|
+
east = Math.max(east, longitude);
|
|
40
|
+
}
|
|
41
|
+
if (east - west >= 360) {
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
let previous = referenceLongitude ?? result[0][0];
|
|
45
|
+
for (const point of result) {
|
|
46
|
+
const delta = point[0] - previous;
|
|
47
|
+
if (delta > 180) {
|
|
48
|
+
point[0] -= 360 * Math.ceil((delta - 180) / 360);
|
|
49
|
+
} else if (delta < -180) {
|
|
50
|
+
point[0] += 360 * Math.ceil((-delta - 180) / 360);
|
|
51
|
+
}
|
|
52
|
+
previous = point[0];
|
|
53
|
+
}
|
|
54
|
+
const first = boundary[0];
|
|
55
|
+
const last = boundary[boundary.length - 1];
|
|
56
|
+
if (first[0] === last[0] && first[1] === last[1]) {
|
|
57
|
+
if (Math.abs(result[result.length - 1][0] - result[0][0]) > 180) {
|
|
58
|
+
return boundary.map(([longitude, latitude]) => [longitude, latitude]);
|
|
59
|
+
}
|
|
60
|
+
result[result.length - 1] = [...result[0]];
|
|
61
|
+
}
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
|
|
29
65
|
// dist/dggs-decoder.js
|
|
30
66
|
function getDGGSCellBounds(boundary) {
|
|
31
67
|
let west = Infinity;
|
|
@@ -43,9 +79,30 @@ function getDGGSCellBounds(boundary) {
|
|
|
43
79
|
[east, north]
|
|
44
80
|
];
|
|
45
81
|
}
|
|
82
|
+
function withDGGSBoundaryOptions(decoder) {
|
|
83
|
+
const cellToBoundary2 = (cell, options) => {
|
|
84
|
+
const boundary = decoder.cellToBoundary(cell);
|
|
85
|
+
return (options == null ? void 0 : options.unwrap) ? unwrapDGGSBoundary(boundary, options.referenceLongitude) : boundary;
|
|
86
|
+
};
|
|
87
|
+
return {
|
|
88
|
+
...decoder,
|
|
89
|
+
cellToBoundary: cellToBoundary2,
|
|
90
|
+
cellToBoundaryFlat: (cell, options) => (options == null ? void 0 : options.unwrap) ? cellToBoundary2(cell, options).flat() : decoder.cellToBoundaryFlat(cell),
|
|
91
|
+
cellToBounds: (cell, options) => {
|
|
92
|
+
const bounds = decoder.cellToBounds(cell);
|
|
93
|
+
if (!(options == null ? void 0 : options.unwrap) || bounds[1][0] - bounds[0][0] >= 360) {
|
|
94
|
+
return bounds;
|
|
95
|
+
}
|
|
96
|
+
const unwrapped = getDGGSCellBounds(cellToBoundary2(cell, options));
|
|
97
|
+
unwrapped[0][1] = bounds[0][1];
|
|
98
|
+
unwrapped[1][1] = bounds[1][1];
|
|
99
|
+
return unwrapped;
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
}
|
|
46
103
|
|
|
47
104
|
// dist/a5-decoder.js
|
|
48
|
-
var A5Decoder = {
|
|
105
|
+
var A5Decoder = withDGGSBoundaryOptions({
|
|
49
106
|
name: "a5",
|
|
50
107
|
hasNumericRepresentation: true,
|
|
51
108
|
cellColumnNames: [
|
|
@@ -64,7 +121,7 @@ var A5Decoder = {
|
|
|
64
121
|
cellToBoundary: (cell) => getA5Boundary(cell),
|
|
65
122
|
cellToBoundaryFlat: (cell) => getA5Boundary(cell).flat(),
|
|
66
123
|
cellToBounds: (cell) => getDGGSCellBounds(getA5Boundary(cell))
|
|
67
|
-
};
|
|
124
|
+
});
|
|
68
125
|
function getA5CellIndex(cell) {
|
|
69
126
|
return typeof cell === "bigint" ? cell : (0, import_a5_js.hexToU64)(removeHexPrefix(cell));
|
|
70
127
|
}
|
package/dist/a5.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/a5.ts", "../src/a5-decoder.ts", "../src/dggs-decoder.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;ACIA,mBAA+D;;;
|
|
5
|
-
"names": []
|
|
3
|
+
"sources": ["../src/a5.ts", "../src/a5-decoder.ts", "../src/unwrap-dggs-boundary.ts", "../src/dggs-decoder.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["cellToBoundary"]
|
|
6
6
|
}
|
package/dist/dggs-decoder.d.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { type Bounds2D } from '@math.gl/types';
|
|
2
|
+
/** Optional continuous-longitude geometry output for DGGS decoders. */
|
|
3
|
+
export type DGGSBoundaryOptions = {
|
|
4
|
+
/** Unwrap ordinary antimeridian crossings. Defaults to false. */
|
|
5
|
+
unwrap?: boolean;
|
|
6
|
+
/** Place the first longitude near this value, in degrees. Used only with unwrap. */
|
|
7
|
+
referenceLongitude?: number;
|
|
8
|
+
};
|
|
2
9
|
/** Cell identifiers used by the lightweight decoder API. */
|
|
3
10
|
export type DGGSCell = string | bigint;
|
|
4
11
|
/**
|
|
@@ -19,11 +26,11 @@ export type DGGSDecoder = {
|
|
|
19
26
|
/** Return the center of the cell as `[longitude, latitude]`. */
|
|
20
27
|
cellToLngLat: (cell: DGGSCell) => [number, number];
|
|
21
28
|
/** Return the closed cell boundary as longitude/latitude pairs. */
|
|
22
|
-
cellToBoundary: (cell: DGGSCell) => [number, number][];
|
|
29
|
+
cellToBoundary: (cell: DGGSCell, options?: DGGSBoundaryOptions) => [number, number][];
|
|
23
30
|
/** @returns the boundary of the cell, as a flat array */
|
|
24
|
-
cellToBoundaryFlat: (cell: DGGSCell) => number[];
|
|
31
|
+
cellToBoundaryFlat: (cell: DGGSCell, options?: DGGSBoundaryOptions) => number[];
|
|
25
32
|
/** @returns the longitude/latitude bounds of the cell */
|
|
26
|
-
cellToBounds: (cell: DGGSCell) => Bounds2D;
|
|
33
|
+
cellToBounds: (cell: DGGSCell, options?: DGGSBoundaryOptions) => Bounds2D;
|
|
27
34
|
};
|
|
28
35
|
/** A cell column and the decoder selected for it. */
|
|
29
36
|
export type DGGSCellColumn = {
|
|
@@ -34,4 +41,6 @@ export type DGGSCellColumn = {
|
|
|
34
41
|
export declare function getDGGSCellToken(cell: DGGSCell, gridName: string): string;
|
|
35
42
|
/** Calculate longitude/latitude bounds from a cell boundary. */
|
|
36
43
|
export declare function getDGGSCellBounds(boundary: [number, number][]): Bounds2D;
|
|
44
|
+
/** @internal Apply the shared opt-in geometry policy to a decoder. */
|
|
45
|
+
export declare function withDGGSBoundaryOptions<T extends DGGSDecoder>(decoder: T): Omit<T, 'cellToBoundary' | 'cellToBoundaryFlat' | 'cellToBounds'> & Pick<DGGSDecoder, 'cellToBoundary' | 'cellToBoundaryFlat' | 'cellToBounds'>;
|
|
37
46
|
//# sourceMappingURL=dggs-decoder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dggs-decoder.d.ts","sourceRoot":"","sources":["../src/dggs-decoder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,KAAK,QAAQ,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"dggs-decoder.d.ts","sourceRoot":"","sources":["../src/dggs-decoder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,KAAK,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAG7C,uEAAuE;AACvE,MAAM,MAAM,mBAAmB,GAAG;IAChC,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oFAAoF;IACpF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,4DAA4D;AAC5D,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvC;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,0DAA0D;IAC1D,wBAAwB,EAAE,OAAO,CAAC;IAElC,uEAAuE;IACvE,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAEnC,qDAAqD;IACrD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,0CAA0C;IAC1C,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC;IACzC,gEAAgE;IAChE,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,mEAAmE;IACnE,cAAc,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAEtF,yDAAyD;IACzD,kBAAkB,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,MAAM,EAAE,CAAC;IAChF,yDAAyD;IACzD,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,QAAQ,CAAC;CAC3E,CAAC;AAEF,qDAAqD;AACrD,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKzE;AAED,gEAAgE;AAChE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,QAAQ,CAiBxE;AAED,sEAAsE;AACtE,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,WAAW,EAC3D,OAAO,EAAE,CAAC,GACT,IAAI,CAAC,CAAC,EAAE,gBAAgB,GAAG,oBAAoB,GAAG,cAAc,CAAC,GAClE,IAAI,CAAC,WAAW,EAAE,gBAAgB,GAAG,oBAAoB,GAAG,cAAc,CAAC,CAsB5E"}
|
package/dist/dggs-decoder.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// math.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { unwrapDGGSBoundary } from "./unwrap-dggs-boundary.js";
|
|
4
5
|
/** Require a string cell identifier for string-only grids. */
|
|
5
6
|
export function getDGGSCellToken(cell, gridName) {
|
|
6
7
|
if (typeof cell !== 'string') {
|
|
@@ -25,4 +26,27 @@ export function getDGGSCellBounds(boundary) {
|
|
|
25
26
|
[east, north]
|
|
26
27
|
];
|
|
27
28
|
}
|
|
29
|
+
/** @internal Apply the shared opt-in geometry policy to a decoder. */
|
|
30
|
+
export function withDGGSBoundaryOptions(decoder) {
|
|
31
|
+
const cellToBoundary = (cell, options) => {
|
|
32
|
+
const boundary = decoder.cellToBoundary(cell);
|
|
33
|
+
return options?.unwrap ? unwrapDGGSBoundary(boundary, options.referenceLongitude) : boundary;
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
...decoder,
|
|
37
|
+
cellToBoundary,
|
|
38
|
+
cellToBoundaryFlat: (cell, options) => options?.unwrap ? cellToBoundary(cell, options).flat() : decoder.cellToBoundaryFlat(cell),
|
|
39
|
+
cellToBounds: (cell, options) => {
|
|
40
|
+
const bounds = decoder.cellToBounds(cell);
|
|
41
|
+
if (!options?.unwrap || bounds[1][0] - bounds[0][0] >= 360) {
|
|
42
|
+
return bounds;
|
|
43
|
+
}
|
|
44
|
+
const unwrapped = getDGGSCellBounds(cellToBoundary(cell, options));
|
|
45
|
+
// Latitude extrema may occur inside the cell or along curved edges.
|
|
46
|
+
unwrapped[0][1] = bounds[0][1];
|
|
47
|
+
unwrapped[1][1] = bounds[1][1];
|
|
48
|
+
return unwrapped;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
28
52
|
//# sourceMappingURL=dggs-decoder.js.map
|
package/dist/dggs-decoder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dggs-decoder.js","sourceRoot":"","sources":["../src/dggs-decoder.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;
|
|
1
|
+
{"version":3,"file":"dggs-decoder.js","sourceRoot":"","sources":["../src/dggs-decoder.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,kBAAkB,EAAC,kCAA+B;AAgD1D,8DAA8D;AAC9D,MAAM,UAAU,gBAAgB,CAAC,IAAc,EAAE,QAAgB;IAC/D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,mCAAmC,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,iBAAiB,CAAC,QAA4B;IAC5D,IAAI,IAAI,GAAG,QAAQ,CAAC;IACpB,IAAI,KAAK,GAAG,QAAQ,CAAC;IACrB,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;IACrB,IAAI,KAAK,GAAG,CAAC,QAAQ,CAAC;IAEtB,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC7C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACjC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAClC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACjC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,OAAO;QACL,CAAC,IAAI,EAAE,KAAK,CAAC;QACb,CAAC,IAAI,EAAE,KAAK,CAAC;KACd,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,uBAAuB,CACrC,OAAU;IAGV,MAAM,cAAc,GAAG,CAAC,IAAc,EAAE,OAA6B,EAAsB,EAAE;QAC3F,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/F,CAAC,CAAC;IACF,OAAO;QACL,GAAG,OAAO;QACV,cAAc;QACd,kBAAkB,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CACpC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAC3F,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;gBAC3D,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,SAAS,GAAG,iBAAiB,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YACnE,oEAAoE;YACpE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Bounds2D } from '@math.gl/types';
|
|
2
|
-
import { type DGGSCell } from "./dggs-decoder.js";
|
|
2
|
+
import { type DGGSCell, type DGGSDecoder } from "./dggs-decoder.js";
|
|
3
3
|
/** Decoder for the geohash dggs */
|
|
4
|
-
export declare const GeohashDecoder: {
|
|
4
|
+
export declare const GeohashDecoder: Omit<{
|
|
5
5
|
readonly name: "geohash";
|
|
6
6
|
readonly hasNumericRepresentation: false;
|
|
7
7
|
readonly cellColumnNames: readonly ["geohash", "geohashId", "geohash_id"];
|
|
@@ -9,7 +9,7 @@ export declare const GeohashDecoder: {
|
|
|
9
9
|
readonly cellToBoundary: (cell: DGGSCell) => [number, number][];
|
|
10
10
|
readonly cellToBoundaryFlat: (cell: DGGSCell) => number[];
|
|
11
11
|
readonly cellToBounds: (cell: DGGSCell) => Bounds2D;
|
|
12
|
-
}
|
|
12
|
+
}, "cellToBoundary" | "cellToBoundaryFlat" | "cellToBounds"> & Pick<DGGSDecoder, "cellToBoundary" | "cellToBoundaryFlat" | "cellToBounds">;
|
|
13
13
|
/**
|
|
14
14
|
* @note Adapted from ngeohash decode_bbox
|
|
15
15
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geohash-decoder.d.ts","sourceRoot":"","sources":["../src/geohash-decoder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,KAAK,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"geohash-decoder.d.ts","sourceRoot":"","sources":["../src/geohash-decoder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,KAAK,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,WAAW,EAEjB,0BAAuB;AAExB,mCAAmC;AACnC,eAAO,MAAM,cAAc;;;;kCAIJ,QAAQ,KAAG,CAAC,MAAM,EAAE,MAAM,CAAC;oCAEzB,QAAQ,KAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;wCAEzB,QAAQ,KAAG,MAAM,EAAE;kCAEzB,QAAQ,KAAG,QAAQ;0IACT,CAAC;AAqClC;;GAEG;AAEH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAsC1D"}
|
package/dist/geohash-decoder.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// math.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
-
import { getDGGSCellToken } from "./dggs-decoder.js";
|
|
4
|
+
import { withDGGSBoundaryOptions, getDGGSCellToken } from "./dggs-decoder.js";
|
|
5
5
|
/** Decoder for the geohash dggs */
|
|
6
|
-
export const GeohashDecoder = {
|
|
6
|
+
export const GeohashDecoder = withDGGSBoundaryOptions({
|
|
7
7
|
name: 'geohash',
|
|
8
8
|
hasNumericRepresentation: false,
|
|
9
9
|
cellColumnNames: ['geohash', 'geohashId', 'geohash_id'],
|
|
@@ -11,7 +11,7 @@ export const GeohashDecoder = {
|
|
|
11
11
|
cellToBoundary: (cell) => getGeohashBoundary(getDGGSCellToken(cell, 'GeoHash')),
|
|
12
12
|
cellToBoundaryFlat: (cell) => getGeohashBoundaryFlat(getDGGSCellToken(cell, 'GeoHash')),
|
|
13
13
|
cellToBounds: (cell) => getGeohashBounds(getDGGSCellToken(cell, 'GeoHash'))
|
|
14
|
-
};
|
|
14
|
+
});
|
|
15
15
|
const BASE32_CODES = '0123456789bcdefghjkmnpqrstuvwxyz';
|
|
16
16
|
const BASE32_CODES_DICT = {};
|
|
17
17
|
for (let i = 0; i < BASE32_CODES.length; i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geohash-decoder.js","sourceRoot":"","sources":["../src/geohash-decoder.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,
|
|
1
|
+
{"version":3,"file":"geohash-decoder.js","sourceRoot":"","sources":["../src/geohash-decoder.ts"],"names":[],"mappings":"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"}
|
package/dist/geohash.cjs
CHANGED
|
@@ -24,6 +24,42 @@ __export(geohash_exports, {
|
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(geohash_exports);
|
|
26
26
|
|
|
27
|
+
// dist/unwrap-dggs-boundary.js
|
|
28
|
+
function unwrapDGGSBoundary(boundary, referenceLongitude) {
|
|
29
|
+
const result = boundary.map(([longitude, latitude]) => [longitude, latitude]);
|
|
30
|
+
if (result.length === 0) {
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
let west = Infinity;
|
|
34
|
+
let east = -Infinity;
|
|
35
|
+
for (const [longitude] of boundary) {
|
|
36
|
+
west = Math.min(west, longitude);
|
|
37
|
+
east = Math.max(east, longitude);
|
|
38
|
+
}
|
|
39
|
+
if (east - west >= 360) {
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
let previous = referenceLongitude ?? result[0][0];
|
|
43
|
+
for (const point of result) {
|
|
44
|
+
const delta = point[0] - previous;
|
|
45
|
+
if (delta > 180) {
|
|
46
|
+
point[0] -= 360 * Math.ceil((delta - 180) / 360);
|
|
47
|
+
} else if (delta < -180) {
|
|
48
|
+
point[0] += 360 * Math.ceil((-delta - 180) / 360);
|
|
49
|
+
}
|
|
50
|
+
previous = point[0];
|
|
51
|
+
}
|
|
52
|
+
const first = boundary[0];
|
|
53
|
+
const last = boundary[boundary.length - 1];
|
|
54
|
+
if (first[0] === last[0] && first[1] === last[1]) {
|
|
55
|
+
if (Math.abs(result[result.length - 1][0] - result[0][0]) > 180) {
|
|
56
|
+
return boundary.map(([longitude, latitude]) => [longitude, latitude]);
|
|
57
|
+
}
|
|
58
|
+
result[result.length - 1] = [...result[0]];
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
|
|
27
63
|
// dist/dggs-decoder.js
|
|
28
64
|
function getDGGSCellToken(cell, gridName) {
|
|
29
65
|
if (typeof cell !== "string") {
|
|
@@ -31,9 +67,46 @@ function getDGGSCellToken(cell, gridName) {
|
|
|
31
67
|
}
|
|
32
68
|
return cell;
|
|
33
69
|
}
|
|
70
|
+
function getDGGSCellBounds(boundary) {
|
|
71
|
+
let west = Infinity;
|
|
72
|
+
let south = Infinity;
|
|
73
|
+
let east = -Infinity;
|
|
74
|
+
let north = -Infinity;
|
|
75
|
+
for (const [longitude, latitude] of boundary) {
|
|
76
|
+
west = Math.min(west, longitude);
|
|
77
|
+
south = Math.min(south, latitude);
|
|
78
|
+
east = Math.max(east, longitude);
|
|
79
|
+
north = Math.max(north, latitude);
|
|
80
|
+
}
|
|
81
|
+
return [
|
|
82
|
+
[west, south],
|
|
83
|
+
[east, north]
|
|
84
|
+
];
|
|
85
|
+
}
|
|
86
|
+
function withDGGSBoundaryOptions(decoder) {
|
|
87
|
+
const cellToBoundary = (cell, options) => {
|
|
88
|
+
const boundary = decoder.cellToBoundary(cell);
|
|
89
|
+
return (options == null ? void 0 : options.unwrap) ? unwrapDGGSBoundary(boundary, options.referenceLongitude) : boundary;
|
|
90
|
+
};
|
|
91
|
+
return {
|
|
92
|
+
...decoder,
|
|
93
|
+
cellToBoundary,
|
|
94
|
+
cellToBoundaryFlat: (cell, options) => (options == null ? void 0 : options.unwrap) ? cellToBoundary(cell, options).flat() : decoder.cellToBoundaryFlat(cell),
|
|
95
|
+
cellToBounds: (cell, options) => {
|
|
96
|
+
const bounds = decoder.cellToBounds(cell);
|
|
97
|
+
if (!(options == null ? void 0 : options.unwrap) || bounds[1][0] - bounds[0][0] >= 360) {
|
|
98
|
+
return bounds;
|
|
99
|
+
}
|
|
100
|
+
const unwrapped = getDGGSCellBounds(cellToBoundary(cell, options));
|
|
101
|
+
unwrapped[0][1] = bounds[0][1];
|
|
102
|
+
unwrapped[1][1] = bounds[1][1];
|
|
103
|
+
return unwrapped;
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
34
107
|
|
|
35
108
|
// dist/geohash-decoder.js
|
|
36
|
-
var GeohashDecoder = {
|
|
109
|
+
var GeohashDecoder = withDGGSBoundaryOptions({
|
|
37
110
|
name: "geohash",
|
|
38
111
|
hasNumericRepresentation: false,
|
|
39
112
|
cellColumnNames: ["geohash", "geohashId", "geohash_id"],
|
|
@@ -41,7 +114,7 @@ var GeohashDecoder = {
|
|
|
41
114
|
cellToBoundary: (cell) => getGeohashBoundary(getDGGSCellToken(cell, "GeoHash")),
|
|
42
115
|
cellToBoundaryFlat: (cell) => getGeohashBoundaryFlat(getDGGSCellToken(cell, "GeoHash")),
|
|
43
116
|
cellToBounds: (cell) => getGeohashBounds(getDGGSCellToken(cell, "GeoHash"))
|
|
44
|
-
};
|
|
117
|
+
});
|
|
45
118
|
var BASE32_CODES = "0123456789bcdefghjkmnpqrstuvwxyz";
|
|
46
119
|
var BASE32_CODES_DICT = {};
|
|
47
120
|
for (let i = 0; i < BASE32_CODES.length; i++) {
|
package/dist/geohash.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/geohash.ts", "../src/dggs-decoder.ts", "../src/geohash-decoder.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;
|
|
3
|
+
"sources": ["../src/geohash.ts", "../src/unwrap-dggs-boundary.ts", "../src/dggs-decoder.ts", "../src/geohash-decoder.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/h3-decoder.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Bounds2D } from '@math.gl/types';
|
|
2
|
-
import { type DGGSCell } from "./dggs-decoder.js";
|
|
2
|
+
import { type DGGSCell, type DGGSDecoder } from "./dggs-decoder.js";
|
|
3
3
|
/** Lightweight cell geometry decoder for the H3 hexagonal DGGS. */
|
|
4
|
-
export declare const H3Decoder: {
|
|
4
|
+
export declare const H3Decoder: Omit<{
|
|
5
5
|
readonly name: "h3";
|
|
6
6
|
readonly hasNumericRepresentation: true;
|
|
7
7
|
readonly cellColumnNames: readonly ["h3", "h3Index", "h3_index", "h3Cell", "h3_cell", "h3CellId", "h3_cell_id", "hexagon"];
|
|
@@ -11,5 +11,5 @@ export declare const H3Decoder: {
|
|
|
11
11
|
readonly cellToBoundary: (cell: DGGSCell) => [number, number][];
|
|
12
12
|
readonly cellToBoundaryFlat: (cell: DGGSCell) => number[];
|
|
13
13
|
readonly cellToBounds: (cell: DGGSCell) => Bounds2D;
|
|
14
|
-
}
|
|
14
|
+
}, "cellToBoundary" | "cellToBoundaryFlat" | "cellToBounds"> & Pick<DGGSDecoder, "cellToBoundary" | "cellToBoundaryFlat" | "cellToBounds">;
|
|
15
15
|
//# sourceMappingURL=h3-decoder.d.ts.map
|
package/dist/h3-decoder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h3-decoder.d.ts","sourceRoot":"","sources":["../src/h3-decoder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,KAAK,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"h3-decoder.d.ts","sourceRoot":"","sources":["../src/h3-decoder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,KAAK,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,WAAW,EAEjB,0BAAuB;AAExB,mEAAmE;AACnE,eAAO,MAAM,SAAS;;;;kCAaC,MAAM,KAAG,MAAM;iCAChB,QAAQ,KAAG,MAAM;kCAChB,QAAQ,KAAG,CAAC,MAAM,EAAE,MAAM,CAAC;oCACzB,QAAQ,KAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;wCACzB,QAAQ,KAAG,MAAM,EAAE;kCACzB,QAAQ,KAAG,QAAQ;0IACT,CAAC"}
|
package/dist/h3-decoder.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
import { cellToBoundary, cellToLatLng } from 'h3-js';
|
|
5
|
-
import { getDGGSCellBounds } from "./dggs-decoder.js";
|
|
5
|
+
import { withDGGSBoundaryOptions, getDGGSCellBounds } from "./dggs-decoder.js";
|
|
6
6
|
/** Lightweight cell geometry decoder for the H3 hexagonal DGGS. */
|
|
7
|
-
export const H3Decoder = {
|
|
7
|
+
export const H3Decoder = withDGGSBoundaryOptions({
|
|
8
8
|
name: 'h3',
|
|
9
9
|
hasNumericRepresentation: true,
|
|
10
10
|
cellColumnNames: [
|
|
@@ -23,7 +23,7 @@ export const H3Decoder = {
|
|
|
23
23
|
cellToBoundary: (cell) => getH3Boundary(cell),
|
|
24
24
|
cellToBoundaryFlat: (cell) => getH3Boundary(cell).flat(),
|
|
25
25
|
cellToBounds: (cell) => getDGGSCellBounds(getH3Boundary(cell))
|
|
26
|
-
};
|
|
26
|
+
});
|
|
27
27
|
function getH3Token(cell) {
|
|
28
28
|
return typeof cell === 'bigint' ? cell.toString(16) : removeHexPrefix(cell);
|
|
29
29
|
}
|
package/dist/h3-decoder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h3-decoder.js","sourceRoot":"","sources":["../src/h3-decoder.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,OAAO,CAAC;AAEnD,OAAO,
|
|
1
|
+
{"version":3,"file":"h3-decoder.js","sourceRoot":"","sources":["../src/h3-decoder.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,OAAO,CAAC;AAEnD,OAAO,EACL,uBAAuB,EAGvB,iBAAiB,EAClB,0BAAuB;AAExB,mEAAmE;AACnE,MAAM,CAAC,MAAM,SAAS,GAAG,uBAAuB,CAAC;IAC/C,IAAI,EAAE,IAAI;IACV,wBAAwB,EAAE,IAAI;IAC9B,eAAe,EAAE;QACf,IAAI;QACJ,SAAS;QACT,UAAU;QACV,QAAQ;QACR,SAAS;QACT,UAAU;QACV,YAAY;QACZ,SAAS;KACV;IACD,WAAW,EAAE,CAAC,KAAa,EAAU,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC;IACpE,WAAW,EAAE,CAAC,IAAc,EAAU,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;IACzD,YAAY,EAAE,CAAC,IAAc,EAAoB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;IACrE,cAAc,EAAE,CAAC,IAAc,EAAsB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;IAC3E,kBAAkB,EAAE,CAAC,IAAc,EAAY,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;IAC5E,YAAY,EAAE,CAAC,IAAc,EAAY,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;CACpD,CAAC,CAAC;AAElC,SAAS,UAAU,CAAC,IAAc;IAChC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,WAAW,CAAC,IAAc;IACjC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,aAAa,CAAC,IAAc;IACnC,OAAO,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;QAC3E,SAAS;QACT,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,OAAO,MAAM,CAAC,KAAK,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACnF,CAAC"}
|
package/dist/h3.cjs
CHANGED
|
@@ -26,6 +26,42 @@ module.exports = __toCommonJS(h3_exports);
|
|
|
26
26
|
// dist/h3-decoder.js
|
|
27
27
|
var import_h3_js = require("h3-js");
|
|
28
28
|
|
|
29
|
+
// dist/unwrap-dggs-boundary.js
|
|
30
|
+
function unwrapDGGSBoundary(boundary, referenceLongitude) {
|
|
31
|
+
const result = boundary.map(([longitude, latitude]) => [longitude, latitude]);
|
|
32
|
+
if (result.length === 0) {
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
let west = Infinity;
|
|
36
|
+
let east = -Infinity;
|
|
37
|
+
for (const [longitude] of boundary) {
|
|
38
|
+
west = Math.min(west, longitude);
|
|
39
|
+
east = Math.max(east, longitude);
|
|
40
|
+
}
|
|
41
|
+
if (east - west >= 360) {
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
let previous = referenceLongitude ?? result[0][0];
|
|
45
|
+
for (const point of result) {
|
|
46
|
+
const delta = point[0] - previous;
|
|
47
|
+
if (delta > 180) {
|
|
48
|
+
point[0] -= 360 * Math.ceil((delta - 180) / 360);
|
|
49
|
+
} else if (delta < -180) {
|
|
50
|
+
point[0] += 360 * Math.ceil((-delta - 180) / 360);
|
|
51
|
+
}
|
|
52
|
+
previous = point[0];
|
|
53
|
+
}
|
|
54
|
+
const first = boundary[0];
|
|
55
|
+
const last = boundary[boundary.length - 1];
|
|
56
|
+
if (first[0] === last[0] && first[1] === last[1]) {
|
|
57
|
+
if (Math.abs(result[result.length - 1][0] - result[0][0]) > 180) {
|
|
58
|
+
return boundary.map(([longitude, latitude]) => [longitude, latitude]);
|
|
59
|
+
}
|
|
60
|
+
result[result.length - 1] = [...result[0]];
|
|
61
|
+
}
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
|
|
29
65
|
// dist/dggs-decoder.js
|
|
30
66
|
function getDGGSCellBounds(boundary) {
|
|
31
67
|
let west = Infinity;
|
|
@@ -43,9 +79,30 @@ function getDGGSCellBounds(boundary) {
|
|
|
43
79
|
[east, north]
|
|
44
80
|
];
|
|
45
81
|
}
|
|
82
|
+
function withDGGSBoundaryOptions(decoder) {
|
|
83
|
+
const cellToBoundary2 = (cell, options) => {
|
|
84
|
+
const boundary = decoder.cellToBoundary(cell);
|
|
85
|
+
return (options == null ? void 0 : options.unwrap) ? unwrapDGGSBoundary(boundary, options.referenceLongitude) : boundary;
|
|
86
|
+
};
|
|
87
|
+
return {
|
|
88
|
+
...decoder,
|
|
89
|
+
cellToBoundary: cellToBoundary2,
|
|
90
|
+
cellToBoundaryFlat: (cell, options) => (options == null ? void 0 : options.unwrap) ? cellToBoundary2(cell, options).flat() : decoder.cellToBoundaryFlat(cell),
|
|
91
|
+
cellToBounds: (cell, options) => {
|
|
92
|
+
const bounds = decoder.cellToBounds(cell);
|
|
93
|
+
if (!(options == null ? void 0 : options.unwrap) || bounds[1][0] - bounds[0][0] >= 360) {
|
|
94
|
+
return bounds;
|
|
95
|
+
}
|
|
96
|
+
const unwrapped = getDGGSCellBounds(cellToBoundary2(cell, options));
|
|
97
|
+
unwrapped[0][1] = bounds[0][1];
|
|
98
|
+
unwrapped[1][1] = bounds[1][1];
|
|
99
|
+
return unwrapped;
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
}
|
|
46
103
|
|
|
47
104
|
// dist/h3-decoder.js
|
|
48
|
-
var H3Decoder = {
|
|
105
|
+
var H3Decoder = withDGGSBoundaryOptions({
|
|
49
106
|
name: "h3",
|
|
50
107
|
hasNumericRepresentation: true,
|
|
51
108
|
cellColumnNames: [
|
|
@@ -64,7 +121,7 @@ var H3Decoder = {
|
|
|
64
121
|
cellToBoundary: (cell) => getH3Boundary(cell),
|
|
65
122
|
cellToBoundaryFlat: (cell) => getH3Boundary(cell).flat(),
|
|
66
123
|
cellToBounds: (cell) => getDGGSCellBounds(getH3Boundary(cell))
|
|
67
|
-
};
|
|
124
|
+
});
|
|
68
125
|
function getH3Token(cell) {
|
|
69
126
|
return typeof cell === "bigint" ? cell.toString(16) : removeHexPrefix(cell);
|
|
70
127
|
}
|
package/dist/h3.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/h3.ts", "../src/h3-decoder.ts", "../src/dggs-decoder.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;ACIA,mBAA2C;;;
|
|
5
|
-
"names": []
|
|
3
|
+
"sources": ["../src/h3.ts", "../src/h3-decoder.ts", "../src/unwrap-dggs-boundary.ts", "../src/dggs-decoder.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["cellToBoundary"]
|
|
6
6
|
}
|