@math.gl/dggs 5.0.0-alpha.4 → 5.0.0-alpha.6
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 +1 -1
- package/dist/index.cjs +210 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/s2-decoder.d.ts +10 -0
- package/dist/s2-decoder.d.ts.map +1 -1
- package/dist/s2-decoder.js +86 -19
- 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 +123 -0
- package/dist/s2-geometry/s2-geometry.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 +70 -4
- package/dist/s2-geometry/s2-token.js.map +1 -1
- package/dist/s2.cjs +211 -21
- package/dist/s2.cjs.map +1 -1
- package/dist/s2.d.ts +4 -2
- package/dist/s2.d.ts.map +1 -1
- package/dist/s2.js +3 -2
- package/dist/s2.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +11 -2
- package/src/s2-decoder.ts +87 -17
- package/src/s2-geometry/s2-geometry.ts +137 -0
- package/src/s2-geometry/s2-token.ts +73 -4
- package/src/s2.ts +11 -2
package/dist/s2.cjs
CHANGED
|
@@ -20,22 +20,42 @@ 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
|
|
|
27
37
|
// dist/s2-geometry/s2-token.js
|
|
38
|
+
var MAXIMUM_TOKEN_LENGTH = 16;
|
|
39
|
+
var MAXIMUM_S2_INDEX = (1n << 64n) - 1n;
|
|
40
|
+
var VALID_LOWEST_ON_BITS = 0x1555555555555555n;
|
|
41
|
+
var MAXIMUM_LEVEL = 30;
|
|
28
42
|
function getS2IndexFromToken(token) {
|
|
29
43
|
if (token === "X") {
|
|
30
|
-
|
|
44
|
+
return 0n;
|
|
31
45
|
}
|
|
32
|
-
|
|
46
|
+
if (!isS2TokenValid(token)) {
|
|
47
|
+
throw new Error(`Invalid S2 token: ${token}`);
|
|
48
|
+
}
|
|
49
|
+
const paddedToken = token.padEnd(MAXIMUM_TOKEN_LENGTH, "0");
|
|
33
50
|
return BigInt(`0x${paddedToken}`);
|
|
34
51
|
}
|
|
35
52
|
function getS2TokenFromIndex(cellId) {
|
|
36
53
|
if (cellId === 0n) {
|
|
37
54
|
return "X";
|
|
38
55
|
}
|
|
56
|
+
if (!isS2IndexValid(cellId)) {
|
|
57
|
+
throw new Error(`Invalid S2 index: ${cellId}`);
|
|
58
|
+
}
|
|
39
59
|
let numZeroDigits = countTrailingZeros(cellId);
|
|
40
60
|
const remainder = numZeroDigits % 4;
|
|
41
61
|
numZeroDigits = (numZeroDigits - remainder) / 4;
|
|
@@ -46,13 +66,43 @@ function getS2TokenFromIndex(cellId) {
|
|
|
46
66
|
const zeroString = Array(17 - trailingZeroHexChars - hexString.length).join("0");
|
|
47
67
|
return zeroString + hexString;
|
|
48
68
|
}
|
|
69
|
+
function isS2IndexValid(s2Index) {
|
|
70
|
+
if (typeof s2Index !== "bigint" || s2Index <= 0n || s2Index > MAXIMUM_S2_INDEX) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
const face = s2Index >> 61n;
|
|
74
|
+
const lowestOnBit = s2Index & -s2Index;
|
|
75
|
+
return face < 6n && (lowestOnBit & VALID_LOWEST_ON_BITS) !== 0n;
|
|
76
|
+
}
|
|
77
|
+
function isS2TokenValid(token) {
|
|
78
|
+
if (typeof token !== "string" || !/^[0-9a-fA-F]{1,16}$/.test(token) || token.endsWith("0")) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
const paddedToken = token.padEnd(MAXIMUM_TOKEN_LENGTH, "0");
|
|
82
|
+
return isS2IndexValid(BigInt(`0x${paddedToken}`));
|
|
83
|
+
}
|
|
84
|
+
function getS2Level(s2Index) {
|
|
85
|
+
if (!isS2IndexValid(s2Index)) {
|
|
86
|
+
throw new Error(`Invalid S2 index: ${s2Index}`);
|
|
87
|
+
}
|
|
88
|
+
return (60 - countTrailingZeros(s2Index)) / 2;
|
|
89
|
+
}
|
|
49
90
|
function getS2ChildIndex(s2Index, index) {
|
|
91
|
+
if (!isS2IndexValid(s2Index)) {
|
|
92
|
+
throw new Error(`Invalid S2 index: ${s2Index}`);
|
|
93
|
+
}
|
|
94
|
+
if (!Number.isInteger(index) || index < 0 || index > 3) {
|
|
95
|
+
throw new Error(`Invalid S2 child index: ${index}`);
|
|
96
|
+
}
|
|
97
|
+
if (getS2Level(s2Index) === MAXIMUM_LEVEL) {
|
|
98
|
+
throw new Error("Cannot subdivide an S2 leaf cell");
|
|
99
|
+
}
|
|
50
100
|
const newLsb = lsb(s2Index) >> 2n;
|
|
51
101
|
const childCellId = s2Index + BigInt(2 * index + 1 - 4) * newLsb;
|
|
52
102
|
return childCellId;
|
|
53
103
|
}
|
|
54
104
|
function lsb(cellId) {
|
|
55
|
-
return cellId & cellId
|
|
105
|
+
return cellId & -cellId;
|
|
56
106
|
}
|
|
57
107
|
function countTrailingZeros(n) {
|
|
58
108
|
let count = 0;
|
|
@@ -65,6 +115,9 @@ function countTrailingZeros(n) {
|
|
|
65
115
|
|
|
66
116
|
// dist/s2-geometry/s2-geometry.js
|
|
67
117
|
function getS2Cell(s2Index) {
|
|
118
|
+
if (!isS2IndexValid(s2Index)) {
|
|
119
|
+
throw new Error(`Invalid S2 index: ${s2Index}`);
|
|
120
|
+
}
|
|
68
121
|
const key = toHilbertQuadkey(s2Index);
|
|
69
122
|
const s2cell = fromHilbertQuadKey(key);
|
|
70
123
|
return s2cell;
|
|
@@ -73,7 +126,36 @@ var FACE_BITS = 3;
|
|
|
73
126
|
var MAX_LEVEL = 30;
|
|
74
127
|
var POS_BITS = 2 * MAX_LEVEL + 1;
|
|
75
128
|
var RADIAN_TO_DEGREE = 180 / Math.PI;
|
|
129
|
+
var HILBERT_MAP = {
|
|
130
|
+
a: [
|
|
131
|
+
[0, "d"],
|
|
132
|
+
[1, "a"],
|
|
133
|
+
[3, "b"],
|
|
134
|
+
[2, "a"]
|
|
135
|
+
],
|
|
136
|
+
b: [
|
|
137
|
+
[2, "b"],
|
|
138
|
+
[1, "b"],
|
|
139
|
+
[3, "a"],
|
|
140
|
+
[0, "c"]
|
|
141
|
+
],
|
|
142
|
+
c: [
|
|
143
|
+
[2, "c"],
|
|
144
|
+
[3, "d"],
|
|
145
|
+
[1, "c"],
|
|
146
|
+
[0, "b"]
|
|
147
|
+
],
|
|
148
|
+
d: [
|
|
149
|
+
[0, "a"],
|
|
150
|
+
[3, "c"],
|
|
151
|
+
[1, "d"],
|
|
152
|
+
[2, "d"]
|
|
153
|
+
]
|
|
154
|
+
};
|
|
76
155
|
function fromHilbertQuadKey(hilbertQuadkey) {
|
|
156
|
+
if (!/^[0-5]\/[0-3]{0,30}$/.test(hilbertQuadkey)) {
|
|
157
|
+
throw new Error(`Invalid S2 Hilbert quadkey: ${hilbertQuadkey}`);
|
|
158
|
+
}
|
|
77
159
|
const parts = hilbertQuadkey.split("/");
|
|
78
160
|
const face = parseInt(parts[0], 10);
|
|
79
161
|
const position = parts[1] || "";
|
|
@@ -106,6 +188,9 @@ function fromHilbertQuadKey(hilbertQuadkey) {
|
|
|
106
188
|
return { face, ij: point, level };
|
|
107
189
|
}
|
|
108
190
|
function toHilbertQuadkey(id) {
|
|
191
|
+
if (!isS2IndexValid(id)) {
|
|
192
|
+
throw new Error(`Invalid S2 index: ${id}`);
|
|
193
|
+
}
|
|
109
194
|
let bin = id.toString(2);
|
|
110
195
|
while (bin.length < FACE_BITS + POS_BITS) {
|
|
111
196
|
bin = "0" + bin;
|
|
@@ -124,6 +209,42 @@ function toHilbertQuadkey(id) {
|
|
|
124
209
|
}
|
|
125
210
|
return `${faceS}/${posS}`;
|
|
126
211
|
}
|
|
212
|
+
function getS2IndexFromCell(s2Cell) {
|
|
213
|
+
const { face, ij, level } = s2Cell;
|
|
214
|
+
if (!Number.isInteger(face) || face < 0 || face > 5) {
|
|
215
|
+
throw new Error(`Invalid S2 face: ${face}`);
|
|
216
|
+
}
|
|
217
|
+
if (!Number.isInteger(level) || level < 0 || level > MAX_LEVEL) {
|
|
218
|
+
throw new Error(`Invalid S2 level: ${level}`);
|
|
219
|
+
}
|
|
220
|
+
const maximumCoordinate = 2 ** level;
|
|
221
|
+
if (!Number.isInteger(ij[0]) || !Number.isInteger(ij[1]) || ij[0] < 0 || ij[1] < 0 || ij[0] >= maximumCoordinate || ij[1] >= maximumCoordinate) {
|
|
222
|
+
throw new Error(`Invalid S2 IJ coordinates: ${ij[0]}, ${ij[1]}`);
|
|
223
|
+
}
|
|
224
|
+
const positions = getHilbertQuadList(ij[0], ij[1], level, face);
|
|
225
|
+
let s2Index = BigInt(face) << 61n;
|
|
226
|
+
for (let positionIndex = 0; positionIndex < positions.length; positionIndex++) {
|
|
227
|
+
const bitOffset = 59 - positionIndex * 2;
|
|
228
|
+
s2Index |= BigInt(positions[positionIndex]) << BigInt(bitOffset);
|
|
229
|
+
}
|
|
230
|
+
s2Index |= 1n << BigInt(60 - level * 2);
|
|
231
|
+
return s2Index;
|
|
232
|
+
}
|
|
233
|
+
function getS2DescendantIndex(rootIndex, relativeLevel, x, y) {
|
|
234
|
+
const rootCell = getS2Cell(rootIndex);
|
|
235
|
+
if (!Number.isInteger(relativeLevel) || relativeLevel < 0 || rootCell.level + relativeLevel > MAX_LEVEL) {
|
|
236
|
+
throw new Error(`Invalid S2 relative level: ${relativeLevel}`);
|
|
237
|
+
}
|
|
238
|
+
const divisionCount = 2 ** relativeLevel;
|
|
239
|
+
if (!Number.isInteger(x) || !Number.isInteger(y) || x < 0 || y < 0 || x >= divisionCount || y >= divisionCount) {
|
|
240
|
+
throw new Error(`Invalid S2 descendant coordinates: ${x}, ${y}`);
|
|
241
|
+
}
|
|
242
|
+
return getS2IndexFromCell({
|
|
243
|
+
face: rootCell.face,
|
|
244
|
+
ij: [rootCell.ij[0] * divisionCount + x, rootCell.ij[1] * divisionCount + y],
|
|
245
|
+
level: rootCell.level + relativeLevel
|
|
246
|
+
});
|
|
247
|
+
}
|
|
127
248
|
function IJToST(ij, order, offsets) {
|
|
128
249
|
const maxSize = 1 << order;
|
|
129
250
|
return [(ij[0] + offsets[0]) / maxSize, (ij[1] + offsets[1]) / maxSize];
|
|
@@ -171,6 +292,19 @@ function rotateAndFlipQuadrant(n, point, rx, ry) {
|
|
|
171
292
|
point[1] = x;
|
|
172
293
|
}
|
|
173
294
|
}
|
|
295
|
+
function getHilbertQuadList(x, y, level, face) {
|
|
296
|
+
let orientation = face % 2 === 1 ? "d" : "a";
|
|
297
|
+
const positions = [];
|
|
298
|
+
for (let bit = level - 1; bit >= 0; bit--) {
|
|
299
|
+
const mask = 1 << bit;
|
|
300
|
+
const quadrantX = (x & mask) !== 0 ? 1 : 0;
|
|
301
|
+
const quadrantY = (y & mask) !== 0 ? 1 : 0;
|
|
302
|
+
const [position, nextOrientation] = HILBERT_MAP[orientation][quadrantX * 2 + quadrantY];
|
|
303
|
+
positions.push(position);
|
|
304
|
+
orientation = nextOrientation;
|
|
305
|
+
}
|
|
306
|
+
return positions;
|
|
307
|
+
}
|
|
174
308
|
|
|
175
309
|
// dist/s2-geometry/s2-to-boundary.js
|
|
176
310
|
var MAX_RESOLUTION = 100;
|
|
@@ -223,7 +357,7 @@ var S2Decoder = {
|
|
|
223
357
|
hasNumericRepresentation: true,
|
|
224
358
|
cellColumnNames: ["s2", "s2Token", "s2_token", "s2Cell", "s2_cell", "s2CellId", "s2_cell_id"],
|
|
225
359
|
tokenToCell: (s2Token) => getS2IndexFromToken(s2Token),
|
|
226
|
-
cellToToken: (cell) =>
|
|
360
|
+
cellToToken: (cell) => getS2TokenFromIndex(getS2CellIndex(cell)),
|
|
227
361
|
cellToLngLat: (cell) => getS2LngLat(cell),
|
|
228
362
|
cellToBoundary: (cell) => getS2Boundary(cell),
|
|
229
363
|
cellToBoundaryFlat: (cell) => getS2BoundaryFlat(cell),
|
|
@@ -252,27 +386,83 @@ function getS2Boundary(cell) {
|
|
|
252
386
|
return boundary;
|
|
253
387
|
}
|
|
254
388
|
function getS2Bounds(cell) {
|
|
255
|
-
const
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
389
|
+
const s2Cell = getS2Cell(getS2CellIndex(cell));
|
|
390
|
+
if (s2Cell.level === 0) {
|
|
391
|
+
return getS2RootBounds(s2Cell.face);
|
|
392
|
+
}
|
|
393
|
+
const offsets = [
|
|
394
|
+
[0, 0],
|
|
395
|
+
[0, 1],
|
|
396
|
+
[1, 1],
|
|
397
|
+
[1, 0]
|
|
398
|
+
];
|
|
399
|
+
let west = Infinity;
|
|
400
|
+
let south = Infinity;
|
|
401
|
+
let east = -Infinity;
|
|
402
|
+
let north = -Infinity;
|
|
403
|
+
let previousLongitude;
|
|
404
|
+
for (const offset of offsets) {
|
|
405
|
+
const st = IJToST(s2Cell.ij, s2Cell.level, offset);
|
|
406
|
+
const uv = STToUV(st);
|
|
407
|
+
const [x, y, z] = FaceUVToXYZ(s2Cell.face, uv);
|
|
408
|
+
let [longitude, latitude] = XYZToLngLat([x, y, z]);
|
|
409
|
+
if (x === 0 && y === 0 && previousLongitude !== void 0) {
|
|
410
|
+
longitude = previousLongitude;
|
|
411
|
+
}
|
|
412
|
+
if (previousLongitude !== void 0) {
|
|
413
|
+
const longitudeDelta = longitude - previousLongitude;
|
|
414
|
+
longitude += longitudeDelta > 180 ? -360 : longitudeDelta < -180 ? 360 : 0;
|
|
415
|
+
}
|
|
416
|
+
previousLongitude = longitude;
|
|
417
|
+
west = Math.min(west, longitude);
|
|
418
|
+
south = Math.min(south, latitude);
|
|
419
|
+
east = Math.max(east, longitude);
|
|
420
|
+
north = Math.max(north, latitude);
|
|
269
421
|
}
|
|
422
|
+
const angularEpsilon = 2 * Number.EPSILON * 180 / Math.PI;
|
|
270
423
|
return [
|
|
271
|
-
[
|
|
272
|
-
[
|
|
424
|
+
[west - angularEpsilon, Math.max(-90, south - angularEpsilon)],
|
|
425
|
+
[east + angularEpsilon, Math.min(90, north + angularEpsilon)]
|
|
273
426
|
];
|
|
274
427
|
}
|
|
275
428
|
function getS2CellIndex(cell) {
|
|
276
429
|
return typeof cell === "bigint" ? cell : getS2IndexFromToken(cell);
|
|
277
430
|
}
|
|
431
|
+
function getS2RootBounds(face) {
|
|
432
|
+
const polarLatitude = Math.asin(Math.sqrt(1 / 3)) * 180 / Math.PI;
|
|
433
|
+
switch (face) {
|
|
434
|
+
case 0:
|
|
435
|
+
return [
|
|
436
|
+
[-45, -45],
|
|
437
|
+
[45, 45]
|
|
438
|
+
];
|
|
439
|
+
case 1:
|
|
440
|
+
return [
|
|
441
|
+
[45, -45],
|
|
442
|
+
[135, 45]
|
|
443
|
+
];
|
|
444
|
+
case 2:
|
|
445
|
+
return [
|
|
446
|
+
[-180, polarLatitude],
|
|
447
|
+
[180, 90]
|
|
448
|
+
];
|
|
449
|
+
case 3:
|
|
450
|
+
return [
|
|
451
|
+
[135, -45],
|
|
452
|
+
[225, 45]
|
|
453
|
+
];
|
|
454
|
+
case 4:
|
|
455
|
+
return [
|
|
456
|
+
[-135, -45],
|
|
457
|
+
[-45, 45]
|
|
458
|
+
];
|
|
459
|
+
case 5:
|
|
460
|
+
return [
|
|
461
|
+
[-180, -90],
|
|
462
|
+
[180, -polarLatitude]
|
|
463
|
+
];
|
|
464
|
+
default:
|
|
465
|
+
throw new Error(`Invalid S2 face: ${face}`);
|
|
466
|
+
}
|
|
467
|
+
}
|
|
278
468
|
//# sourceMappingURL=s2.cjs.map
|
package/dist/s2.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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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",
|
|
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
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
-
export { S2Decoder } from "./s2-decoder.js";
|
|
5
|
-
export { getS2ChildIndex } from "./s2-geometry/s2-token.js";
|
|
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,oCAAoC;AAEpC,OAAO,EAAC,SAAS,EAAC,wBAAqB;
|
|
1
|
+
{"version":3,"file":"s2.js","sourceRoot":"","sources":["../src/s2.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,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"}
|
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.6",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"javascript",
|
|
12
12
|
"math",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"src"
|
|
69
69
|
],
|
|
70
70
|
"dependencies": {
|
|
71
|
-
"@math.gl/types": "5.0.0-alpha.
|
|
71
|
+
"@math.gl/types": "5.0.0-alpha.6",
|
|
72
72
|
"a5-js": "^0.10.0",
|
|
73
73
|
"h3-js": "^4.5.0",
|
|
74
74
|
"open-location-code": "^1.0.3"
|
|
@@ -76,5 +76,5 @@
|
|
|
76
76
|
"devDependencies": {
|
|
77
77
|
"s2-geometry": "^1.2.10"
|
|
78
78
|
},
|
|
79
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "c1c6ebefad1b81f33c4b17354a4236f3366fce0d"
|
|
80
80
|
}
|
package/src/index.ts
CHANGED
|
@@ -16,8 +16,17 @@ export {GeohashDecoder};
|
|
|
16
16
|
export {H3Decoder};
|
|
17
17
|
export {PlusCodeDecoder};
|
|
18
18
|
export {QuadkeyDecoder, quadkeyToWorldBounds} from './quadkey-decoder';
|
|
19
|
-
export {S2Decoder};
|
|
20
|
-
export {
|
|
19
|
+
export {S2Decoder, getS2Bounds, getS2LngLat, getS2BoundaryFlat} from './s2-decoder';
|
|
20
|
+
export {
|
|
21
|
+
getS2ChildIndex,
|
|
22
|
+
getS2IndexFromToken,
|
|
23
|
+
getS2Level,
|
|
24
|
+
getS2TokenFromIndex,
|
|
25
|
+
isS2IndexValid,
|
|
26
|
+
isS2TokenValid
|
|
27
|
+
} from './s2-geometry/s2-token';
|
|
28
|
+
export {getS2DescendantIndex, getS2IndexFromCell} from './s2-geometry/s2-geometry';
|
|
29
|
+
export type {S2Cell} from './s2-geometry/s2-geometry';
|
|
21
30
|
|
|
22
31
|
/** Lightweight decoders bundled with this module. */
|
|
23
32
|
export const DGGS_DECODERS: readonly DGGSDecoder[] = [
|
package/src/s2-decoder.ts
CHANGED
|
@@ -15,8 +15,7 @@ export const S2Decoder = {
|
|
|
15
15
|
hasNumericRepresentation: true,
|
|
16
16
|
cellColumnNames: ['s2', 's2Token', 's2_token', 's2Cell', 's2_cell', 's2CellId', 's2_cell_id'],
|
|
17
17
|
tokenToCell: (s2Token: string): bigint => getS2IndexFromToken(s2Token),
|
|
18
|
-
cellToToken: (cell: DGGSCell): string =>
|
|
19
|
-
typeof cell === 'string' ? cell : getS2TokenFromIndex(cell),
|
|
18
|
+
cellToToken: (cell: DGGSCell): string => getS2TokenFromIndex(getS2CellIndex(cell)),
|
|
20
19
|
cellToLngLat: (cell: DGGSCell): [number, number] => getS2LngLat(cell),
|
|
21
20
|
cellToBoundary: (cell: DGGSCell): [number, number][] => getS2Boundary(cell),
|
|
22
21
|
cellToBoundaryFlat: (cell: DGGSCell): number[] => getS2BoundaryFlat(cell),
|
|
@@ -60,28 +59,99 @@ function getS2Boundary(cell: DGGSCell): [number, number][] {
|
|
|
60
59
|
return boundary;
|
|
61
60
|
}
|
|
62
61
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Returns conservative longitude/latitude bounds for an S2 cell.
|
|
64
|
+
*
|
|
65
|
+
* Longitudes are unwrapped so `east >= west`; either endpoint may lie outside `[-180, 180]` for
|
|
66
|
+
* antimeridian cells. The two level-zero polar faces span a complete 360-degree longitude range.
|
|
67
|
+
*
|
|
68
|
+
* @param cell - S2 token or 64-bit cell index.
|
|
69
|
+
* @returns Bounds in `[[west, south], [east, north]]` order and degrees.
|
|
70
|
+
*/
|
|
71
|
+
export function getS2Bounds(cell: DGGSCell): Bounds2D {
|
|
72
|
+
const s2Cell = getS2Cell(getS2CellIndex(cell));
|
|
73
|
+
if (s2Cell.level === 0) {
|
|
74
|
+
return getS2RootBounds(s2Cell.face);
|
|
75
|
+
}
|
|
71
76
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
+
// For non-root S2 cells, latitude and longitude extrema occur at vertices. Root cells require
|
|
78
|
+
// the special cases above because their curved edges or interiors contain the extrema.
|
|
79
|
+
// https://github.com/google/s2geometry/blob/master/src/s2/s2cell.cc
|
|
80
|
+
const offsets: readonly [number, number][] = [
|
|
81
|
+
[0, 0],
|
|
82
|
+
[0, 1],
|
|
83
|
+
[1, 1],
|
|
84
|
+
[1, 0]
|
|
85
|
+
];
|
|
86
|
+
let west = Infinity;
|
|
87
|
+
let south = Infinity;
|
|
88
|
+
let east = -Infinity;
|
|
89
|
+
let north = -Infinity;
|
|
90
|
+
let previousLongitude: number | undefined;
|
|
91
|
+
for (const offset of offsets) {
|
|
92
|
+
const st = IJToST(s2Cell.ij, s2Cell.level, offset);
|
|
93
|
+
const uv = STToUV(st);
|
|
94
|
+
const [x, y, z] = FaceUVToXYZ(s2Cell.face, uv);
|
|
95
|
+
let [longitude, latitude] = XYZToLngLat([x, y, z]);
|
|
96
|
+
if (x === 0 && y === 0 && previousLongitude !== undefined) {
|
|
97
|
+
longitude = previousLongitude;
|
|
98
|
+
}
|
|
99
|
+
if (previousLongitude !== undefined) {
|
|
100
|
+
const longitudeDelta = longitude - previousLongitude;
|
|
101
|
+
longitude += longitudeDelta > 180 ? -360 : longitudeDelta < -180 ? 360 : 0;
|
|
102
|
+
}
|
|
103
|
+
previousLongitude = longitude;
|
|
104
|
+
west = Math.min(west, longitude);
|
|
105
|
+
south = Math.min(south, latitude);
|
|
106
|
+
east = Math.max(east, longitude);
|
|
107
|
+
north = Math.max(north, latitude);
|
|
77
108
|
}
|
|
78
109
|
|
|
110
|
+
const angularEpsilon = (2 * Number.EPSILON * 180) / Math.PI;
|
|
79
111
|
return [
|
|
80
|
-
[
|
|
81
|
-
[
|
|
112
|
+
[west - angularEpsilon, Math.max(-90, south - angularEpsilon)],
|
|
113
|
+
[east + angularEpsilon, Math.min(90, north + angularEpsilon)]
|
|
82
114
|
];
|
|
83
115
|
}
|
|
84
116
|
|
|
85
117
|
function getS2CellIndex(cell: DGGSCell): bigint {
|
|
86
118
|
return typeof cell === 'bigint' ? cell : getS2IndexFromToken(cell);
|
|
87
119
|
}
|
|
120
|
+
|
|
121
|
+
function getS2RootBounds(face: number): Bounds2D {
|
|
122
|
+
const polarLatitude = (Math.asin(Math.sqrt(1 / 3)) * 180) / Math.PI;
|
|
123
|
+
switch (face) {
|
|
124
|
+
case 0:
|
|
125
|
+
return [
|
|
126
|
+
[-45, -45],
|
|
127
|
+
[45, 45]
|
|
128
|
+
];
|
|
129
|
+
case 1:
|
|
130
|
+
return [
|
|
131
|
+
[45, -45],
|
|
132
|
+
[135, 45]
|
|
133
|
+
];
|
|
134
|
+
case 2:
|
|
135
|
+
return [
|
|
136
|
+
[-180, polarLatitude],
|
|
137
|
+
[180, 90]
|
|
138
|
+
];
|
|
139
|
+
case 3:
|
|
140
|
+
return [
|
|
141
|
+
[135, -45],
|
|
142
|
+
[225, 45]
|
|
143
|
+
];
|
|
144
|
+
case 4:
|
|
145
|
+
return [
|
|
146
|
+
[-135, -45],
|
|
147
|
+
[-45, 45]
|
|
148
|
+
];
|
|
149
|
+
case 5:
|
|
150
|
+
return [
|
|
151
|
+
[-180, -90],
|
|
152
|
+
[180, -polarLatitude]
|
|
153
|
+
];
|
|
154
|
+
default:
|
|
155
|
+
throw new Error(`Invalid S2 face: ${face}`);
|
|
156
|
+
}
|
|
157
|
+
}
|