@math.gl/dggs 5.0.0-alpha.2 → 5.0.0-alpha.20
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/LICENSE +54 -87
- package/README.md +6 -1
- package/THIRD-PARTY-NOTICES.md +18 -0
- package/dist/a5-decoder.d.ts +4 -4
- package/dist/a5-decoder.d.ts.map +1 -1
- package/dist/a5-decoder.js +4 -4
- package/dist/a5-decoder.js.map +1 -1
- package/dist/a5.cjs +59 -2
- package/dist/a5.cjs.map +3 -3
- package/dist/a5.js +1 -1
- package/dist/a5.js.map +1 -1
- package/dist/converters/s2-to-obb-points.js +1 -1
- package/dist/converters/s2-to-obb-points.js.map +1 -1
- package/dist/converters/s2-to-region.js +1 -1
- package/dist/converters/s2-to-region.js.map +1 -1
- package/dist/dggs-decoder.d.ts +13 -4
- package/dist/dggs-decoder.d.ts.map +1 -1
- package/dist/dggs-decoder.js +25 -1
- package/dist/dggs-decoder.js.map +1 -1
- package/dist/expressions.cjs +637 -0
- package/dist/expressions.cjs.map +6 -0
- package/dist/expressions.d.ts +7 -0
- package/dist/expressions.d.ts.map +1 -0
- package/dist/expressions.js +32 -0
- package/dist/expressions.js.map +1 -0
- package/dist/geohash-decoder.d.ts +4 -4
- package/dist/geohash-decoder.d.ts.map +1 -1
- package/dist/geohash-decoder.js +4 -4
- package/dist/geohash-decoder.js.map +1 -1
- package/dist/geohash.cjs +75 -2
- package/dist/geohash.cjs.map +2 -2
- package/dist/geohash.js +1 -1
- package/dist/geohash.js.map +1 -1
- package/dist/h3-decoder.d.ts +4 -4
- package/dist/h3-decoder.d.ts.map +1 -1
- package/dist/h3-decoder.js +4 -4
- package/dist/h3-decoder.js.map +1 -1
- package/dist/h3.cjs +59 -2
- package/dist/h3.cjs.map +3 -3
- package/dist/h3.js +1 -1
- package/dist/h3.js.map +1 -1
- package/dist/index.cjs +281 -33
- package/dist/index.cjs.map +3 -3
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/plus-code-decoder.d.ts +4 -4
- package/dist/plus-code-decoder.d.ts.map +1 -1
- package/dist/plus-code-decoder.js +4 -4
- 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/plus-code.js +1 -1
- package/dist/plus-code.js.map +1 -1
- package/dist/quadkey-decoder.d.ts +4 -4
- package/dist/quadkey-decoder.d.ts.map +1 -1
- package/dist/quadkey-decoder.js +4 -4
- package/dist/quadkey-decoder.js.map +1 -1
- package/dist/quadkey.cjs +75 -2
- package/dist/quadkey.cjs.map +2 -2
- package/dist/quadkey.js +1 -1
- package/dist/quadkey.js.map +1 -1
- package/dist/s2-decoder.d.ts +14 -4
- package/dist/s2-decoder.d.ts.map +1 -1
- package/dist/s2-decoder.js +90 -22
- package/dist/s2-decoder.js.map +1 -1
- package/dist/s2-geometry/s2-geometry.d.ts +20 -0
- package/dist/s2-geometry/s2-geometry.d.ts.map +1 -1
- package/dist/s2-geometry/s2-geometry.js +128 -2
- package/dist/s2-geometry/s2-geometry.js.map +1 -1
- package/dist/s2-geometry/s2-to-boundary.js +1 -1
- package/dist/s2-geometry/s2-to-boundary.js.map +1 -1
- package/dist/s2-geometry/s2-token.d.ts +30 -0
- package/dist/s2-geometry/s2-token.d.ts.map +1 -1
- package/dist/s2-geometry/s2-token.js +74 -6
- package/dist/s2-geometry/s2-token.js.map +1 -1
- package/dist/s2.cjs +288 -23
- package/dist/s2.cjs.map +2 -2
- package/dist/s2.d.ts +4 -2
- package/dist/s2.d.ts.map +1 -1
- package/dist/s2.js +4 -3
- package/dist/s2.js.map +1 -1
- 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 +13 -6
- package/src/a5-decoder.ts +10 -5
- package/src/a5.ts +1 -1
- package/src/converters/s2-to-obb-points.ts +2 -2
- package/src/converters/s2-to-region.ts +1 -1
- package/src/dggs-decoder.ts +42 -5
- package/src/expressions.ts +37 -0
- package/src/geohash-decoder.ts +10 -5
- package/src/geohash.ts +1 -1
- package/src/h3-decoder.ts +10 -5
- package/src/h3.ts +1 -1
- package/src/index.ts +14 -3
- package/src/open-location-code.d.ts +3 -0
- package/src/plus-code-decoder.ts +10 -5
- package/src/plus-code.ts +1 -1
- package/src/quadkey-decoder.ts +10 -5
- package/src/quadkey.ts +1 -1
- package/src/s2-decoder.ts +92 -22
- package/src/s2-geometry/s2-geometry.ts +142 -2
- package/src/s2-geometry/s2-to-boundary.ts +1 -1
- package/src/s2-geometry/s2-token.ts +77 -6
- package/src/s2.ts +12 -3
- package/src/unwrap-dggs-boundary.ts +54 -0
package/dist/s2.cjs
CHANGED
|
@@ -20,22 +20,117 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
var s2_exports = {};
|
|
21
21
|
__export(s2_exports, {
|
|
22
22
|
S2Decoder: () => S2Decoder,
|
|
23
|
-
|
|
23
|
+
getS2BoundaryFlat: () => getS2BoundaryFlat,
|
|
24
|
+
getS2Bounds: () => getS2Bounds,
|
|
25
|
+
getS2ChildIndex: () => getS2ChildIndex,
|
|
26
|
+
getS2DescendantIndex: () => getS2DescendantIndex,
|
|
27
|
+
getS2IndexFromCell: () => getS2IndexFromCell,
|
|
28
|
+
getS2IndexFromToken: () => getS2IndexFromToken,
|
|
29
|
+
getS2Level: () => getS2Level,
|
|
30
|
+
getS2LngLat: () => getS2LngLat,
|
|
31
|
+
getS2TokenFromIndex: () => getS2TokenFromIndex,
|
|
32
|
+
isS2IndexValid: () => isS2IndexValid,
|
|
33
|
+
isS2TokenValid: () => isS2TokenValid
|
|
24
34
|
});
|
|
25
35
|
module.exports = __toCommonJS(s2_exports);
|
|
26
36
|
|
|
37
|
+
// dist/unwrap-dggs-boundary.js
|
|
38
|
+
function unwrapDGGSBoundary(boundary, referenceLongitude) {
|
|
39
|
+
const result = boundary.map(([longitude, latitude]) => [longitude, latitude]);
|
|
40
|
+
if (result.length === 0) {
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
let west = Infinity;
|
|
44
|
+
let east = -Infinity;
|
|
45
|
+
for (const [longitude] of boundary) {
|
|
46
|
+
west = Math.min(west, longitude);
|
|
47
|
+
east = Math.max(east, longitude);
|
|
48
|
+
}
|
|
49
|
+
if (east - west >= 360) {
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
let previous = referenceLongitude ?? result[0][0];
|
|
53
|
+
for (const point of result) {
|
|
54
|
+
const delta = point[0] - previous;
|
|
55
|
+
if (delta > 180) {
|
|
56
|
+
point[0] -= 360 * Math.ceil((delta - 180) / 360);
|
|
57
|
+
} else if (delta < -180) {
|
|
58
|
+
point[0] += 360 * Math.ceil((-delta - 180) / 360);
|
|
59
|
+
}
|
|
60
|
+
previous = point[0];
|
|
61
|
+
}
|
|
62
|
+
const first = boundary[0];
|
|
63
|
+
const last = boundary[boundary.length - 1];
|
|
64
|
+
if (first[0] === last[0] && first[1] === last[1]) {
|
|
65
|
+
if (Math.abs(result[result.length - 1][0] - result[0][0]) > 180) {
|
|
66
|
+
return boundary.map(([longitude, latitude]) => [longitude, latitude]);
|
|
67
|
+
}
|
|
68
|
+
result[result.length - 1] = [...result[0]];
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// dist/dggs-decoder.js
|
|
74
|
+
function getDGGSCellBounds(boundary) {
|
|
75
|
+
let west = Infinity;
|
|
76
|
+
let south = Infinity;
|
|
77
|
+
let east = -Infinity;
|
|
78
|
+
let north = -Infinity;
|
|
79
|
+
for (const [longitude, latitude] of boundary) {
|
|
80
|
+
west = Math.min(west, longitude);
|
|
81
|
+
south = Math.min(south, latitude);
|
|
82
|
+
east = Math.max(east, longitude);
|
|
83
|
+
north = Math.max(north, latitude);
|
|
84
|
+
}
|
|
85
|
+
return [
|
|
86
|
+
[west, south],
|
|
87
|
+
[east, north]
|
|
88
|
+
];
|
|
89
|
+
}
|
|
90
|
+
function withDGGSBoundaryOptions(decoder) {
|
|
91
|
+
const cellToBoundary = (cell, options) => {
|
|
92
|
+
const boundary = decoder.cellToBoundary(cell);
|
|
93
|
+
return (options == null ? void 0 : options.unwrap) ? unwrapDGGSBoundary(boundary, options.referenceLongitude) : boundary;
|
|
94
|
+
};
|
|
95
|
+
return {
|
|
96
|
+
...decoder,
|
|
97
|
+
cellToBoundary,
|
|
98
|
+
cellToBoundaryFlat: (cell, options) => (options == null ? void 0 : options.unwrap) ? cellToBoundary(cell, options).flat() : decoder.cellToBoundaryFlat(cell),
|
|
99
|
+
cellToBounds: (cell, options) => {
|
|
100
|
+
const bounds = decoder.cellToBounds(cell);
|
|
101
|
+
if (!(options == null ? void 0 : options.unwrap) || bounds[1][0] - bounds[0][0] >= 360) {
|
|
102
|
+
return bounds;
|
|
103
|
+
}
|
|
104
|
+
const unwrapped = getDGGSCellBounds(cellToBoundary(cell, options));
|
|
105
|
+
unwrapped[0][1] = bounds[0][1];
|
|
106
|
+
unwrapped[1][1] = bounds[1][1];
|
|
107
|
+
return unwrapped;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
27
112
|
// dist/s2-geometry/s2-token.js
|
|
113
|
+
var MAXIMUM_TOKEN_LENGTH = 16;
|
|
114
|
+
var MAXIMUM_S2_INDEX = (1n << 64n) - 1n;
|
|
115
|
+
var VALID_LOWEST_ON_BITS = 0x1555555555555555n;
|
|
116
|
+
var MAXIMUM_LEVEL = 30;
|
|
28
117
|
function getS2IndexFromToken(token) {
|
|
29
118
|
if (token === "X") {
|
|
30
|
-
|
|
119
|
+
return 0n;
|
|
31
120
|
}
|
|
32
|
-
|
|
121
|
+
if (!isS2TokenValid(token)) {
|
|
122
|
+
throw new Error(`Invalid S2 token: ${token}`);
|
|
123
|
+
}
|
|
124
|
+
const paddedToken = token.padEnd(MAXIMUM_TOKEN_LENGTH, "0");
|
|
33
125
|
return BigInt(`0x${paddedToken}`);
|
|
34
126
|
}
|
|
35
127
|
function getS2TokenFromIndex(cellId) {
|
|
36
128
|
if (cellId === 0n) {
|
|
37
129
|
return "X";
|
|
38
130
|
}
|
|
131
|
+
if (!isS2IndexValid(cellId)) {
|
|
132
|
+
throw new Error(`Invalid S2 index: ${cellId}`);
|
|
133
|
+
}
|
|
39
134
|
let numZeroDigits = countTrailingZeros(cellId);
|
|
40
135
|
const remainder = numZeroDigits % 4;
|
|
41
136
|
numZeroDigits = (numZeroDigits - remainder) / 4;
|
|
@@ -46,13 +141,43 @@ function getS2TokenFromIndex(cellId) {
|
|
|
46
141
|
const zeroString = Array(17 - trailingZeroHexChars - hexString.length).join("0");
|
|
47
142
|
return zeroString + hexString;
|
|
48
143
|
}
|
|
144
|
+
function isS2IndexValid(s2Index) {
|
|
145
|
+
if (typeof s2Index !== "bigint" || s2Index <= 0n || s2Index > MAXIMUM_S2_INDEX) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
const face = s2Index >> 61n;
|
|
149
|
+
const lowestOnBit = s2Index & -s2Index;
|
|
150
|
+
return face < 6n && (lowestOnBit & VALID_LOWEST_ON_BITS) !== 0n;
|
|
151
|
+
}
|
|
152
|
+
function isS2TokenValid(token) {
|
|
153
|
+
if (typeof token !== "string" || !/^[0-9a-fA-F]{1,16}$/.test(token) || token.endsWith("0")) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
const paddedToken = token.padEnd(MAXIMUM_TOKEN_LENGTH, "0");
|
|
157
|
+
return isS2IndexValid(BigInt(`0x${paddedToken}`));
|
|
158
|
+
}
|
|
159
|
+
function getS2Level(s2Index) {
|
|
160
|
+
if (!isS2IndexValid(s2Index)) {
|
|
161
|
+
throw new Error(`Invalid S2 index: ${s2Index}`);
|
|
162
|
+
}
|
|
163
|
+
return (60 - countTrailingZeros(s2Index)) / 2;
|
|
164
|
+
}
|
|
49
165
|
function getS2ChildIndex(s2Index, index) {
|
|
166
|
+
if (!isS2IndexValid(s2Index)) {
|
|
167
|
+
throw new Error(`Invalid S2 index: ${s2Index}`);
|
|
168
|
+
}
|
|
169
|
+
if (!Number.isInteger(index) || index < 0 || index > 3) {
|
|
170
|
+
throw new Error(`Invalid S2 child index: ${index}`);
|
|
171
|
+
}
|
|
172
|
+
if (getS2Level(s2Index) === MAXIMUM_LEVEL) {
|
|
173
|
+
throw new Error("Cannot subdivide an S2 leaf cell");
|
|
174
|
+
}
|
|
50
175
|
const newLsb = lsb(s2Index) >> 2n;
|
|
51
176
|
const childCellId = s2Index + BigInt(2 * index + 1 - 4) * newLsb;
|
|
52
177
|
return childCellId;
|
|
53
178
|
}
|
|
54
179
|
function lsb(cellId) {
|
|
55
|
-
return cellId & cellId
|
|
180
|
+
return cellId & -cellId;
|
|
56
181
|
}
|
|
57
182
|
function countTrailingZeros(n) {
|
|
58
183
|
let count = 0;
|
|
@@ -65,6 +190,9 @@ function countTrailingZeros(n) {
|
|
|
65
190
|
|
|
66
191
|
// dist/s2-geometry/s2-geometry.js
|
|
67
192
|
function getS2Cell(s2Index) {
|
|
193
|
+
if (!isS2IndexValid(s2Index)) {
|
|
194
|
+
throw new Error(`Invalid S2 index: ${s2Index}`);
|
|
195
|
+
}
|
|
68
196
|
const key = toHilbertQuadkey(s2Index);
|
|
69
197
|
const s2cell = fromHilbertQuadKey(key);
|
|
70
198
|
return s2cell;
|
|
@@ -73,7 +201,36 @@ var FACE_BITS = 3;
|
|
|
73
201
|
var MAX_LEVEL = 30;
|
|
74
202
|
var POS_BITS = 2 * MAX_LEVEL + 1;
|
|
75
203
|
var RADIAN_TO_DEGREE = 180 / Math.PI;
|
|
204
|
+
var HILBERT_MAP = {
|
|
205
|
+
a: [
|
|
206
|
+
[0, "d"],
|
|
207
|
+
[1, "a"],
|
|
208
|
+
[3, "b"],
|
|
209
|
+
[2, "a"]
|
|
210
|
+
],
|
|
211
|
+
b: [
|
|
212
|
+
[2, "b"],
|
|
213
|
+
[1, "b"],
|
|
214
|
+
[3, "a"],
|
|
215
|
+
[0, "c"]
|
|
216
|
+
],
|
|
217
|
+
c: [
|
|
218
|
+
[2, "c"],
|
|
219
|
+
[3, "d"],
|
|
220
|
+
[1, "c"],
|
|
221
|
+
[0, "b"]
|
|
222
|
+
],
|
|
223
|
+
d: [
|
|
224
|
+
[0, "a"],
|
|
225
|
+
[3, "c"],
|
|
226
|
+
[1, "d"],
|
|
227
|
+
[2, "d"]
|
|
228
|
+
]
|
|
229
|
+
};
|
|
76
230
|
function fromHilbertQuadKey(hilbertQuadkey) {
|
|
231
|
+
if (!/^[0-5]\/[0-3]{0,30}$/.test(hilbertQuadkey)) {
|
|
232
|
+
throw new Error(`Invalid S2 Hilbert quadkey: ${hilbertQuadkey}`);
|
|
233
|
+
}
|
|
77
234
|
const parts = hilbertQuadkey.split("/");
|
|
78
235
|
const face = parseInt(parts[0], 10);
|
|
79
236
|
const position = parts[1] || "";
|
|
@@ -106,6 +263,9 @@ function fromHilbertQuadKey(hilbertQuadkey) {
|
|
|
106
263
|
return { face, ij: point, level };
|
|
107
264
|
}
|
|
108
265
|
function toHilbertQuadkey(id) {
|
|
266
|
+
if (!isS2IndexValid(id)) {
|
|
267
|
+
throw new Error(`Invalid S2 index: ${id}`);
|
|
268
|
+
}
|
|
109
269
|
let bin = id.toString(2);
|
|
110
270
|
while (bin.length < FACE_BITS + POS_BITS) {
|
|
111
271
|
bin = "0" + bin;
|
|
@@ -124,6 +284,42 @@ function toHilbertQuadkey(id) {
|
|
|
124
284
|
}
|
|
125
285
|
return `${faceS}/${posS}`;
|
|
126
286
|
}
|
|
287
|
+
function getS2IndexFromCell(s2Cell) {
|
|
288
|
+
const { face, ij, level } = s2Cell;
|
|
289
|
+
if (!Number.isInteger(face) || face < 0 || face > 5) {
|
|
290
|
+
throw new Error(`Invalid S2 face: ${face}`);
|
|
291
|
+
}
|
|
292
|
+
if (!Number.isInteger(level) || level < 0 || level > MAX_LEVEL) {
|
|
293
|
+
throw new Error(`Invalid S2 level: ${level}`);
|
|
294
|
+
}
|
|
295
|
+
const maximumCoordinate = 2 ** level;
|
|
296
|
+
if (!Number.isInteger(ij[0]) || !Number.isInteger(ij[1]) || ij[0] < 0 || ij[1] < 0 || ij[0] >= maximumCoordinate || ij[1] >= maximumCoordinate) {
|
|
297
|
+
throw new Error(`Invalid S2 IJ coordinates: ${ij[0]}, ${ij[1]}`);
|
|
298
|
+
}
|
|
299
|
+
const positions = getHilbertQuadList(ij[0], ij[1], level, face);
|
|
300
|
+
let s2Index = BigInt(face) << 61n;
|
|
301
|
+
for (let positionIndex = 0; positionIndex < positions.length; positionIndex++) {
|
|
302
|
+
const bitOffset = 59 - positionIndex * 2;
|
|
303
|
+
s2Index |= BigInt(positions[positionIndex]) << BigInt(bitOffset);
|
|
304
|
+
}
|
|
305
|
+
s2Index |= 1n << BigInt(60 - level * 2);
|
|
306
|
+
return s2Index;
|
|
307
|
+
}
|
|
308
|
+
function getS2DescendantIndex(rootIndex, relativeLevel, x, y) {
|
|
309
|
+
const rootCell = getS2Cell(rootIndex);
|
|
310
|
+
if (!Number.isInteger(relativeLevel) || relativeLevel < 0 || rootCell.level + relativeLevel > MAX_LEVEL) {
|
|
311
|
+
throw new Error(`Invalid S2 relative level: ${relativeLevel}`);
|
|
312
|
+
}
|
|
313
|
+
const divisionCount = 2 ** relativeLevel;
|
|
314
|
+
if (!Number.isInteger(x) || !Number.isInteger(y) || x < 0 || y < 0 || x >= divisionCount || y >= divisionCount) {
|
|
315
|
+
throw new Error(`Invalid S2 descendant coordinates: ${x}, ${y}`);
|
|
316
|
+
}
|
|
317
|
+
return getS2IndexFromCell({
|
|
318
|
+
face: rootCell.face,
|
|
319
|
+
ij: [rootCell.ij[0] * divisionCount + x, rootCell.ij[1] * divisionCount + y],
|
|
320
|
+
level: rootCell.level + relativeLevel
|
|
321
|
+
});
|
|
322
|
+
}
|
|
127
323
|
function IJToST(ij, order, offsets) {
|
|
128
324
|
const maxSize = 1 << order;
|
|
129
325
|
return [(ij[0] + offsets[0]) / maxSize, (ij[1] + offsets[1]) / maxSize];
|
|
@@ -171,6 +367,19 @@ function rotateAndFlipQuadrant(n, point, rx, ry) {
|
|
|
171
367
|
point[1] = x;
|
|
172
368
|
}
|
|
173
369
|
}
|
|
370
|
+
function getHilbertQuadList(x, y, level, face) {
|
|
371
|
+
let orientation = face % 2 === 1 ? "d" : "a";
|
|
372
|
+
const positions = [];
|
|
373
|
+
for (let bit = level - 1; bit >= 0; bit--) {
|
|
374
|
+
const mask = 1 << bit;
|
|
375
|
+
const quadrantX = (x & mask) !== 0 ? 1 : 0;
|
|
376
|
+
const quadrantY = (y & mask) !== 0 ? 1 : 0;
|
|
377
|
+
const [position, nextOrientation] = HILBERT_MAP[orientation][quadrantX * 2 + quadrantY];
|
|
378
|
+
positions.push(position);
|
|
379
|
+
orientation = nextOrientation;
|
|
380
|
+
}
|
|
381
|
+
return positions;
|
|
382
|
+
}
|
|
174
383
|
|
|
175
384
|
// dist/s2-geometry/s2-to-boundary.js
|
|
176
385
|
var MAX_RESOLUTION = 100;
|
|
@@ -218,17 +427,17 @@ function getS2GeoBoundsFromCell({ face, ij, level }) {
|
|
|
218
427
|
}
|
|
219
428
|
|
|
220
429
|
// dist/s2-decoder.js
|
|
221
|
-
var S2Decoder = {
|
|
430
|
+
var S2Decoder = withDGGSBoundaryOptions({
|
|
222
431
|
name: "s2",
|
|
223
432
|
hasNumericRepresentation: true,
|
|
224
433
|
cellColumnNames: ["s2", "s2Token", "s2_token", "s2Cell", "s2_cell", "s2CellId", "s2_cell_id"],
|
|
225
434
|
tokenToCell: (s2Token) => getS2IndexFromToken(s2Token),
|
|
226
|
-
cellToToken: (cell) =>
|
|
435
|
+
cellToToken: (cell) => getS2TokenFromIndex(getS2CellIndex(cell)),
|
|
227
436
|
cellToLngLat: (cell) => getS2LngLat(cell),
|
|
228
437
|
cellToBoundary: (cell) => getS2Boundary(cell),
|
|
229
438
|
cellToBoundaryFlat: (cell) => getS2BoundaryFlat(cell),
|
|
230
439
|
cellToBounds: (cell) => getS2Bounds(cell)
|
|
231
|
-
};
|
|
440
|
+
});
|
|
232
441
|
function getS2LngLat(cell) {
|
|
233
442
|
const s2Index = getS2CellIndex(cell);
|
|
234
443
|
const s2Cell = getS2Cell(s2Index);
|
|
@@ -252,27 +461,83 @@ function getS2Boundary(cell) {
|
|
|
252
461
|
return boundary;
|
|
253
462
|
}
|
|
254
463
|
function getS2Bounds(cell) {
|
|
255
|
-
const
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
let xmax = -Infinity;
|
|
259
|
-
let ymax = -Infinity;
|
|
260
|
-
for (const [x, y] of flatBoundary) {
|
|
261
|
-
if (x < xmin)
|
|
262
|
-
xmin = x;
|
|
263
|
-
if (x > xmax)
|
|
264
|
-
xmax = x;
|
|
265
|
-
if (y < ymin)
|
|
266
|
-
ymin = y;
|
|
267
|
-
if (y > ymax)
|
|
268
|
-
ymax = y;
|
|
464
|
+
const s2Cell = getS2Cell(getS2CellIndex(cell));
|
|
465
|
+
if (s2Cell.level === 0) {
|
|
466
|
+
return getS2RootBounds(s2Cell.face);
|
|
269
467
|
}
|
|
468
|
+
const offsets = [
|
|
469
|
+
[0, 0],
|
|
470
|
+
[0, 1],
|
|
471
|
+
[1, 1],
|
|
472
|
+
[1, 0]
|
|
473
|
+
];
|
|
474
|
+
let west = Infinity;
|
|
475
|
+
let south = Infinity;
|
|
476
|
+
let east = -Infinity;
|
|
477
|
+
let north = -Infinity;
|
|
478
|
+
let previousLongitude;
|
|
479
|
+
for (const offset of offsets) {
|
|
480
|
+
const st = IJToST(s2Cell.ij, s2Cell.level, offset);
|
|
481
|
+
const uv = STToUV(st);
|
|
482
|
+
const [x, y, z] = FaceUVToXYZ(s2Cell.face, uv);
|
|
483
|
+
let [longitude, latitude] = XYZToLngLat([x, y, z]);
|
|
484
|
+
if (x === 0 && y === 0 && previousLongitude !== void 0) {
|
|
485
|
+
longitude = previousLongitude;
|
|
486
|
+
}
|
|
487
|
+
if (previousLongitude !== void 0) {
|
|
488
|
+
const longitudeDelta = longitude - previousLongitude;
|
|
489
|
+
longitude += longitudeDelta > 180 ? -360 : longitudeDelta < -180 ? 360 : 0;
|
|
490
|
+
}
|
|
491
|
+
previousLongitude = longitude;
|
|
492
|
+
west = Math.min(west, longitude);
|
|
493
|
+
south = Math.min(south, latitude);
|
|
494
|
+
east = Math.max(east, longitude);
|
|
495
|
+
north = Math.max(north, latitude);
|
|
496
|
+
}
|
|
497
|
+
const angularEpsilon = 2 * Number.EPSILON * 180 / Math.PI;
|
|
270
498
|
return [
|
|
271
|
-
[
|
|
272
|
-
[
|
|
499
|
+
[west - angularEpsilon, Math.max(-90, south - angularEpsilon)],
|
|
500
|
+
[east + angularEpsilon, Math.min(90, north + angularEpsilon)]
|
|
273
501
|
];
|
|
274
502
|
}
|
|
275
503
|
function getS2CellIndex(cell) {
|
|
276
504
|
return typeof cell === "bigint" ? cell : getS2IndexFromToken(cell);
|
|
277
505
|
}
|
|
506
|
+
function getS2RootBounds(face) {
|
|
507
|
+
const polarLatitude = Math.asin(Math.sqrt(1 / 3)) * 180 / Math.PI;
|
|
508
|
+
switch (face) {
|
|
509
|
+
case 0:
|
|
510
|
+
return [
|
|
511
|
+
[-45, -45],
|
|
512
|
+
[45, 45]
|
|
513
|
+
];
|
|
514
|
+
case 1:
|
|
515
|
+
return [
|
|
516
|
+
[45, -45],
|
|
517
|
+
[135, 45]
|
|
518
|
+
];
|
|
519
|
+
case 2:
|
|
520
|
+
return [
|
|
521
|
+
[-180, polarLatitude],
|
|
522
|
+
[180, 90]
|
|
523
|
+
];
|
|
524
|
+
case 3:
|
|
525
|
+
return [
|
|
526
|
+
[135, -45],
|
|
527
|
+
[225, 45]
|
|
528
|
+
];
|
|
529
|
+
case 4:
|
|
530
|
+
return [
|
|
531
|
+
[-135, -45],
|
|
532
|
+
[-45, 45]
|
|
533
|
+
];
|
|
534
|
+
case 5:
|
|
535
|
+
return [
|
|
536
|
+
[-180, -90],
|
|
537
|
+
[180, -polarLatitude]
|
|
538
|
+
];
|
|
539
|
+
default:
|
|
540
|
+
throw new Error(`Invalid S2 face: ${face}`);
|
|
541
|
+
}
|
|
542
|
+
}
|
|
278
543
|
//# sourceMappingURL=s2.cjs.map
|
package/dist/s2.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/s2.ts", "../src/s2-geometry/s2-token.ts", "../src/s2-geometry/s2-geometry.ts", "../src/s2-geometry/s2-to-boundary.ts", "../src/s2-decoder.ts"],
|
|
4
|
-
"mappings": "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",
|
|
3
|
+
"sources": ["../src/s2.ts", "../src/unwrap-dggs-boundary.ts", "../src/dggs-decoder.ts", "../src/s2-geometry/s2-token.ts", "../src/s2-geometry/s2-geometry.ts", "../src/s2-geometry/s2-to-boundary.ts", "../src/s2-decoder.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/s2.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
export { S2Decoder } from "./s2-decoder.js";
|
|
2
|
-
export { getS2ChildIndex } from "./s2-geometry/s2-token.js";
|
|
1
|
+
export { S2Decoder, getS2Bounds, getS2LngLat, getS2BoundaryFlat } from "./s2-decoder.js";
|
|
2
|
+
export { getS2ChildIndex, getS2IndexFromToken, getS2Level, getS2TokenFromIndex, isS2IndexValid, isS2TokenValid } from "./s2-geometry/s2-token.js";
|
|
3
|
+
export { getS2DescendantIndex, getS2IndexFromCell } from "./s2-geometry/s2-geometry.js";
|
|
4
|
+
export type { S2Cell } from "./s2-geometry/s2-geometry.js";
|
|
3
5
|
//# sourceMappingURL=s2.d.ts.map
|
package/dist/s2.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s2.d.ts","sourceRoot":"","sources":["../src/s2.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,SAAS,EAAC,wBAAqB;
|
|
1
|
+
{"version":3,"file":"s2.d.ts","sourceRoot":"","sources":["../src/s2.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAC,wBAAqB;AACpF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,cAAc,EACf,kCAA+B;AAChC,OAAO,EAAC,oBAAoB,EAAE,kBAAkB,EAAC,qCAAkC;AACnF,YAAY,EAAC,MAAM,EAAC,qCAAkC"}
|
package/dist/s2.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// math.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
|
-
// Copyright (c) vis.gl contributors
|
|
4
|
-
export { S2Decoder } from "./s2-decoder.js";
|
|
5
|
-
export { getS2ChildIndex } from "./s2-geometry/s2-token.js";
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
export { S2Decoder, getS2Bounds, getS2LngLat, getS2BoundaryFlat } from "./s2-decoder.js";
|
|
5
|
+
export { getS2ChildIndex, getS2IndexFromToken, getS2Level, getS2TokenFromIndex, isS2IndexValid, isS2TokenValid } from "./s2-geometry/s2-token.js";
|
|
6
|
+
export { getS2DescendantIndex, getS2IndexFromCell } from "./s2-geometry/s2-geometry.js";
|
|
6
7
|
//# sourceMappingURL=s2.js.map
|
package/dist/s2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s2.js","sourceRoot":"","sources":["../src/s2.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"s2.js","sourceRoot":"","sources":["../src/s2.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,4DAA4D;AAE5D,OAAO,EAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAC,wBAAqB;AACpF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,cAAc,EACf,kCAA+B;AAChC,OAAO,EAAC,oBAAoB,EAAE,kBAAkB,EAAC,qCAAkC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copy a cell boundary, unwrapping longitudes across the antimeridian.
|
|
3
|
+
* @param boundary Open or closed longitude/latitude pairs in degrees.
|
|
4
|
+
* @param referenceLongitude Optional longitude near which to place the first vertex.
|
|
5
|
+
* @returns Fresh pairs with each longitude nearest the preceding longitude. Exact
|
|
6
|
+
* 180-degree ties retain their direction. Latitudes and vertex order are preserved.
|
|
7
|
+
* @remarks Explicit boundaries spanning at least 360 degrees and closed rings with
|
|
8
|
+
* net longitude winding are copied unchanged. Polar cells need additional topology
|
|
9
|
+
* handling. This helper neither splits polygons nor calculates geodesic edges.
|
|
10
|
+
*/
|
|
11
|
+
export declare function unwrapDGGSBoundary(boundary: ReadonlyArray<readonly [number, number]>, referenceLongitude?: number): [number, number][];
|
|
12
|
+
//# sourceMappingURL=unwrap-dggs-boundary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unwrap-dggs-boundary.d.ts","sourceRoot":"","sources":["../src/unwrap-dggs-boundary.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAClD,kBAAkB,CAAC,EAAE,MAAM,GAC1B,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAoCpB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// math.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
/**
|
|
5
|
+
* Copy a cell boundary, unwrapping longitudes across the antimeridian.
|
|
6
|
+
* @param boundary Open or closed longitude/latitude pairs in degrees.
|
|
7
|
+
* @param referenceLongitude Optional longitude near which to place the first vertex.
|
|
8
|
+
* @returns Fresh pairs with each longitude nearest the preceding longitude. Exact
|
|
9
|
+
* 180-degree ties retain their direction. Latitudes and vertex order are preserved.
|
|
10
|
+
* @remarks Explicit boundaries spanning at least 360 degrees and closed rings with
|
|
11
|
+
* net longitude winding are copied unchanged. Polar cells need additional topology
|
|
12
|
+
* handling. This helper neither splits polygons nor calculates geodesic edges.
|
|
13
|
+
*/
|
|
14
|
+
export function unwrapDGGSBoundary(boundary, referenceLongitude) {
|
|
15
|
+
const result = boundary.map(([longitude, latitude]) => [longitude, latitude]);
|
|
16
|
+
if (result.length === 0) {
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
19
|
+
let west = Infinity;
|
|
20
|
+
let east = -Infinity;
|
|
21
|
+
for (const [longitude] of boundary) {
|
|
22
|
+
west = Math.min(west, longitude);
|
|
23
|
+
east = Math.max(east, longitude);
|
|
24
|
+
}
|
|
25
|
+
if (east - west >= 360) {
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
let previous = referenceLongitude ?? result[0][0];
|
|
29
|
+
for (const point of result) {
|
|
30
|
+
const delta = point[0] - previous;
|
|
31
|
+
if (delta > 180) {
|
|
32
|
+
point[0] -= 360 * Math.ceil((delta - 180) / 360);
|
|
33
|
+
}
|
|
34
|
+
else if (delta < -180) {
|
|
35
|
+
point[0] += 360 * Math.ceil((-delta - 180) / 360);
|
|
36
|
+
}
|
|
37
|
+
previous = point[0];
|
|
38
|
+
}
|
|
39
|
+
const first = boundary[0];
|
|
40
|
+
const last = boundary[boundary.length - 1];
|
|
41
|
+
if (first[0] === last[0] && first[1] === last[1]) {
|
|
42
|
+
if (Math.abs(result[result.length - 1][0] - result[0][0]) > 180) {
|
|
43
|
+
return boundary.map(([longitude, latitude]) => [longitude, latitude]);
|
|
44
|
+
}
|
|
45
|
+
result[result.length - 1] = [...result[0]];
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=unwrap-dggs-boundary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unwrap-dggs-boundary.js","sourceRoot":"","sources":["../src/unwrap-dggs-boundary.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,4DAA4D;AAE5D;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAkD,EAClD,kBAA2B;IAE3B,MAAM,MAAM,GAAuB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClG,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,IAAI,GAAG,QAAQ,CAAC;IACpB,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;IACrB,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,QAAQ,EAAE,CAAC;QACnC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,QAAQ,GAAG,kBAAkB,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QAClC,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;YAChB,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;YACxB,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACpD,CAAC;QACD,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;YAChE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
9
|
-
"version": "5.0.0-alpha.
|
|
9
|
+
"version": "5.0.0-alpha.20",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"javascript",
|
|
12
12
|
"math",
|
|
@@ -61,20 +61,27 @@
|
|
|
61
61
|
"types": "./dist/s2.d.ts",
|
|
62
62
|
"import": "./dist/s2.js",
|
|
63
63
|
"require": "./dist/s2.cjs"
|
|
64
|
+
},
|
|
65
|
+
"./expressions": {
|
|
66
|
+
"types": "./dist/expressions.d.ts",
|
|
67
|
+
"import": "./dist/expressions.js",
|
|
68
|
+
"require": "./dist/expressions.cjs"
|
|
64
69
|
}
|
|
65
70
|
},
|
|
66
71
|
"files": [
|
|
67
72
|
"dist",
|
|
68
|
-
"src"
|
|
73
|
+
"src",
|
|
74
|
+
"LICENSE",
|
|
75
|
+
"THIRD-PARTY-NOTICES.md"
|
|
69
76
|
],
|
|
70
77
|
"dependencies": {
|
|
71
|
-
"@math.gl/
|
|
72
|
-
"a5-js": "^0.
|
|
73
|
-
"h3-js": "^4.
|
|
78
|
+
"@math.gl/core": "5.0.0-alpha.20",
|
|
79
|
+
"a5-js": "^0.10.0",
|
|
80
|
+
"h3-js": "^4.5.0",
|
|
74
81
|
"open-location-code": "^1.0.3"
|
|
75
82
|
},
|
|
76
83
|
"devDependencies": {
|
|
77
84
|
"s2-geometry": "^1.2.10"
|
|
78
85
|
},
|
|
79
|
-
"gitHead": "
|
|
86
|
+
"gitHead": "ad8c205a98e5e057d9055300b1a71f422b275c73"
|
|
80
87
|
}
|
package/src/a5-decoder.ts
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
// math.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
|
-
// Copyright (c) vis.gl contributors
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
5
|
import {cellToBoundary, cellToLonLat, hexToU64, u64ToHex} from 'a5-js';
|
|
6
|
-
import {type Bounds2D} from '@math.gl/types';
|
|
7
|
-
import {
|
|
6
|
+
import {type Bounds2D} from '@math.gl/core/types';
|
|
7
|
+
import {
|
|
8
|
+
withDGGSBoundaryOptions,
|
|
9
|
+
type DGGSCell,
|
|
10
|
+
type DGGSDecoder,
|
|
11
|
+
getDGGSCellBounds
|
|
12
|
+
} from './dggs-decoder';
|
|
8
13
|
|
|
9
14
|
/** Lightweight cell geometry decoder for the A5 pentagonal DGGS. */
|
|
10
|
-
export const A5Decoder = {
|
|
15
|
+
export const A5Decoder = withDGGSBoundaryOptions({
|
|
11
16
|
name: 'a5',
|
|
12
17
|
hasNumericRepresentation: true,
|
|
13
18
|
cellColumnNames: [
|
|
@@ -27,7 +32,7 @@ export const A5Decoder = {
|
|
|
27
32
|
cellToBoundary: (cell: DGGSCell): [number, number][] => getA5Boundary(cell),
|
|
28
33
|
cellToBoundaryFlat: (cell: DGGSCell): number[] => getA5Boundary(cell).flat(),
|
|
29
34
|
cellToBounds: (cell: DGGSCell): Bounds2D => getDGGSCellBounds(getA5Boundary(cell))
|
|
30
|
-
} as const satisfies DGGSDecoder;
|
|
35
|
+
} as const satisfies DGGSDecoder);
|
|
31
36
|
|
|
32
37
|
function getA5CellIndex(cell: DGGSCell): bigint {
|
|
33
38
|
return typeof cell === 'bigint' ? cell : hexToU64(removeHexPrefix(cell));
|
package/src/a5.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// math.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
|
-
// Copyright (c) vis.gl contributors
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
5
|
import {getS2Cell} from '../s2-geometry/s2-geometry';
|
|
6
6
|
import {getS2Region} from './s2-to-region';
|
|
7
7
|
import {getS2IndexFromToken} from '../s2-geometry/s2-token';
|
|
8
8
|
|
|
9
|
-
// import {OrientedBoundingBox, makeOrientedBoundingBoxFromPoints} from '@math.gl/culling';
|
|
9
|
+
// import {OrientedBoundingBox, makeOrientedBoundingBoxFromPoints} from '@math.gl/geometry/culling';
|
|
10
10
|
// import {Ellipsoid} from '@math.gl/geospatial';
|
|
11
11
|
|
|
12
12
|
export type S2HeightInfo = {
|