@map-colonies/mc-utils 3.0.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -0
- package/dist/arrays/index.d.ts +0 -0
- package/dist/arrays/index.d.ts.map +0 -0
- package/dist/arrays/index.js +0 -0
- package/dist/arrays/index.js.map +0 -0
- package/dist/arrays/subGroups.d.ts +0 -0
- package/dist/arrays/subGroups.d.ts.map +0 -0
- package/dist/arrays/subGroups.js +20 -125
- package/dist/arrays/subGroups.js.map +1 -1
- package/dist/communication/http/httpClient.d.ts +0 -0
- package/dist/communication/http/httpClient.d.ts.map +1 -1
- package/dist/communication/http/httpClient.js +206 -311
- package/dist/communication/http/httpClient.js.map +1 -1
- package/dist/communication/http/index.d.ts +0 -0
- package/dist/communication/http/index.d.ts.map +0 -0
- package/dist/communication/http/index.js +0 -0
- package/dist/communication/http/index.js.map +0 -0
- package/dist/communication/index.d.ts +0 -0
- package/dist/communication/index.d.ts.map +0 -0
- package/dist/communication/index.js +0 -0
- package/dist/communication/index.js.map +0 -0
- package/dist/dateTime/getUTCDate.d.ts +0 -0
- package/dist/dateTime/getUTCDate.d.ts.map +0 -0
- package/dist/dateTime/getUTCDate.js +4 -4
- package/dist/dateTime/getUTCDate.js.map +1 -1
- package/dist/dateTime/index.d.ts +0 -0
- package/dist/dateTime/index.d.ts.map +0 -0
- package/dist/dateTime/index.js +0 -0
- package/dist/dateTime/index.js.map +0 -0
- package/dist/geo/bboxUtils.d.ts +0 -0
- package/dist/geo/bboxUtils.d.ts.map +0 -0
- package/dist/geo/bboxUtils.js +24 -24
- package/dist/geo/bboxUtils.js.map +1 -1
- package/dist/geo/geoConvertor.d.ts +0 -0
- package/dist/geo/geoConvertor.d.ts.map +0 -0
- package/dist/geo/geoConvertor.js +13 -15
- package/dist/geo/geoConvertor.js.map +1 -1
- package/dist/geo/geoHash.d.ts +0 -0
- package/dist/geo/geoHash.d.ts.map +0 -0
- package/dist/geo/geoHash.js +65 -205
- package/dist/geo/geoHash.js.map +1 -1
- package/dist/geo/geoIntersection.d.ts +0 -0
- package/dist/geo/geoIntersection.d.ts.map +0 -0
- package/dist/geo/geoIntersection.js +14 -14
- package/dist/geo/geoIntersection.js.map +1 -1
- package/dist/geo/index.d.ts +0 -0
- package/dist/geo/index.d.ts.map +0 -0
- package/dist/geo/index.js +0 -0
- package/dist/geo/index.js.map +0 -0
- package/dist/geo/tileBatcher.d.ts +0 -0
- package/dist/geo/tileBatcher.d.ts.map +0 -0
- package/dist/geo/tileBatcher.js +65 -161
- package/dist/geo/tileBatcher.js.map +1 -1
- package/dist/geo/tileRanger.d.ts +0 -0
- package/dist/geo/tileRanger.d.ts.map +0 -0
- package/dist/geo/tileRanger.js +165 -316
- package/dist/geo/tileRanger.js.map +1 -1
- package/dist/geo/tiles.d.ts +0 -0
- package/dist/geo/tiles.d.ts.map +0 -0
- package/dist/geo/tiles.js +29 -56
- package/dist/geo/tiles.js.map +1 -1
- package/dist/geo/tilesGenerator.d.ts +0 -0
- package/dist/geo/tilesGenerator.d.ts.map +0 -0
- package/dist/geo/tilesGenerator.js +11 -105
- package/dist/geo/tilesGenerator.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/models/enums/gdal/dataType.d.ts +0 -0
- package/dist/models/enums/gdal/dataType.d.ts.map +0 -0
- package/dist/models/enums/gdal/dataType.js +0 -0
- package/dist/models/enums/gdal/dataType.js.map +0 -0
- package/dist/models/enums/gdal/index.d.ts +0 -0
- package/dist/models/enums/gdal/index.d.ts.map +0 -0
- package/dist/models/enums/gdal/index.js +0 -0
- package/dist/models/enums/gdal/index.js.map +0 -0
- package/dist/models/enums/gdal/resamplingMethod.d.ts +0 -0
- package/dist/models/enums/gdal/resamplingMethod.d.ts.map +0 -0
- package/dist/models/enums/gdal/resamplingMethod.js +0 -0
- package/dist/models/enums/gdal/resamplingMethod.js.map +0 -0
- package/dist/models/enums/geo/index.d.ts +0 -0
- package/dist/models/enums/geo/index.d.ts.map +0 -0
- package/dist/models/enums/geo/index.js +0 -0
- package/dist/models/enums/geo/index.js.map +0 -0
- package/dist/models/enums/geo/tileOrigin.d.ts +0 -0
- package/dist/models/enums/geo/tileOrigin.d.ts.map +0 -0
- package/dist/models/enums/geo/tileOrigin.js +0 -0
- package/dist/models/enums/geo/tileOrigin.js.map +0 -0
- package/dist/models/enums/index.d.ts +0 -0
- package/dist/models/enums/index.d.ts.map +0 -0
- package/dist/models/enums/index.js +0 -0
- package/dist/models/enums/index.js.map +0 -0
- package/dist/models/index.d.ts +0 -0
- package/dist/models/index.d.ts.map +0 -0
- package/dist/models/index.js +0 -0
- package/dist/models/index.js.map +0 -0
- package/dist/models/interfaces/geo/iPoint.d.ts +0 -0
- package/dist/models/interfaces/geo/iPoint.d.ts.map +0 -0
- package/dist/models/interfaces/geo/iPoint.js +0 -0
- package/dist/models/interfaces/geo/iPoint.js.map +0 -0
- package/dist/models/interfaces/geo/iTile.d.ts +0 -0
- package/dist/models/interfaces/geo/iTile.d.ts.map +0 -0
- package/dist/models/interfaces/geo/iTile.js +0 -0
- package/dist/models/interfaces/geo/iTile.js.map +0 -0
- package/dist/models/interfaces/geo/index.d.ts +0 -0
- package/dist/models/interfaces/geo/index.d.ts.map +0 -0
- package/dist/models/interfaces/geo/index.js +0 -0
- package/dist/models/interfaces/geo/index.js.map +0 -0
- package/dist/models/interfaces/index.d.ts +0 -0
- package/dist/models/interfaces/index.d.ts.map +0 -0
- package/dist/models/interfaces/index.js +0 -0
- package/dist/models/interfaces/index.js.map +0 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +18 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/timeout.d.ts +3 -0
- package/dist/utils/timeout.d.ts.map +1 -1
- package/dist/utils/timeout.js +18 -43
- package/dist/utils/timeout.js.map +1 -1
- package/package.json +2 -2
package/dist/geo/tileRanger.js
CHANGED
|
@@ -1,72 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
3
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
4
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
5
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
6
|
-
function step(op) {
|
|
7
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
8
|
-
while (_) try {
|
|
9
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
10
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
11
|
-
switch (op[0]) {
|
|
12
|
-
case 0: case 1: t = op; break;
|
|
13
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
14
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
15
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
16
|
-
default:
|
|
17
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
18
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
19
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
20
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
21
|
-
if (t[2]) _.ops.pop();
|
|
22
|
-
_.trys.pop(); continue;
|
|
23
|
-
}
|
|
24
|
-
op = body.call(thisArg, _);
|
|
25
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
26
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
|
30
|
-
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
31
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
32
|
-
var m = o[Symbol.asyncIterator], i;
|
|
33
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
34
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
35
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
36
|
-
};
|
|
37
|
-
var __asyncDelegator = (this && this.__asyncDelegator) || function (o) {
|
|
38
|
-
var i, p;
|
|
39
|
-
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
|
40
|
-
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
|
|
41
|
-
};
|
|
42
|
-
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
43
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
44
|
-
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
45
|
-
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
46
|
-
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
|
47
|
-
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
48
|
-
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
49
|
-
function fulfill(value) { resume("next", value); }
|
|
50
|
-
function reject(value) { resume("throw", value); }
|
|
51
|
-
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
52
|
-
};
|
|
53
|
-
var __values = (this && this.__values) || function(o) {
|
|
54
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
55
|
-
if (m) return m.call(o);
|
|
56
|
-
if (o && typeof o.length === "number") return {
|
|
57
|
-
next: function () {
|
|
58
|
-
if (o && i >= o.length) o = void 0;
|
|
59
|
-
return { value: o && o[i++], done: !o };
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
63
|
-
};
|
|
64
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
65
3
|
exports.TileRanger = void 0;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
4
|
+
const turf_1 = require("@turf/turf");
|
|
5
|
+
const bboxUtils_1 = require("./bboxUtils");
|
|
6
|
+
const tiles_1 = require("./tiles");
|
|
7
|
+
const tilesGenerator_1 = require("./tilesGenerator");
|
|
70
8
|
var TileIntersectionState;
|
|
71
9
|
(function (TileIntersectionState) {
|
|
72
10
|
TileIntersectionState["FULL"] = "full";
|
|
@@ -76,127 +14,82 @@ var TileIntersectionState;
|
|
|
76
14
|
/**
|
|
77
15
|
* class for generating and decoding tile hashes
|
|
78
16
|
*/
|
|
79
|
-
|
|
80
|
-
function TileRanger() {
|
|
81
|
-
this.tileFootprintIntersection = function (tile, intersectionParams) {
|
|
82
|
-
var tileBbox = (0, tiles_1.tileToBbox)(tile);
|
|
83
|
-
var tilePoly = (0, turf_1.bboxPolygon)(tileBbox);
|
|
84
|
-
var intersection = (0, turf_1.intersect)(intersectionParams.footprint, tilePoly);
|
|
85
|
-
if (intersection === null) {
|
|
86
|
-
return TileIntersectionState.NONE;
|
|
87
|
-
}
|
|
88
|
-
// stop condition
|
|
89
|
-
if (tile.zoom === intersectionParams.maxZoom) {
|
|
90
|
-
return TileIntersectionState.FULL;
|
|
91
|
-
}
|
|
92
|
-
var intArea = (0, turf_1.area)(intersection);
|
|
93
|
-
var hashArea = (0, turf_1.area)(tilePoly);
|
|
94
|
-
if (intArea == hashArea) {
|
|
95
|
-
return TileIntersectionState.FULL;
|
|
96
|
-
}
|
|
97
|
-
return TileIntersectionState.PARTIAL;
|
|
98
|
-
};
|
|
99
|
-
}
|
|
17
|
+
class TileRanger {
|
|
100
18
|
/**
|
|
101
19
|
* converts tile to tile range of specified zoom level
|
|
102
20
|
* @param tile
|
|
103
21
|
* @param zoom target tile range zoom
|
|
104
22
|
* @returns
|
|
105
23
|
*/
|
|
106
|
-
|
|
107
|
-
|
|
24
|
+
tileToRange(tile, zoom) {
|
|
25
|
+
let minX, minY, maxX, maxY;
|
|
108
26
|
minX = tile.x;
|
|
109
27
|
maxX = tile.x + 1;
|
|
110
28
|
minY = tile.y;
|
|
111
29
|
maxY = tile.y + 1;
|
|
112
30
|
if (tile.zoom < zoom) {
|
|
113
|
-
|
|
31
|
+
const dz = zoom - tile.zoom;
|
|
114
32
|
minX = minX << dz;
|
|
115
33
|
maxX = maxX << dz;
|
|
116
34
|
minY = minY << dz;
|
|
117
35
|
maxY = maxY << dz;
|
|
118
36
|
}
|
|
119
37
|
else if (tile.zoom > zoom) {
|
|
120
|
-
|
|
38
|
+
const dz = tile.zoom - zoom;
|
|
121
39
|
minX = minX >> dz;
|
|
122
40
|
minY = minY >> dz;
|
|
123
41
|
maxX = minX + 1;
|
|
124
42
|
maxY = minY + 1;
|
|
125
43
|
}
|
|
126
44
|
return {
|
|
127
|
-
minX
|
|
128
|
-
minY
|
|
129
|
-
maxX
|
|
130
|
-
maxY
|
|
131
|
-
zoom
|
|
45
|
+
minX,
|
|
46
|
+
minY,
|
|
47
|
+
maxX,
|
|
48
|
+
maxY,
|
|
49
|
+
zoom,
|
|
132
50
|
};
|
|
133
|
-
}
|
|
51
|
+
}
|
|
134
52
|
/**
|
|
135
53
|
* generate tile hashes
|
|
136
54
|
* @param footprint footprint to cover with generated tile hashes
|
|
137
55
|
* @param zoom max hash zoom
|
|
138
56
|
* @returns
|
|
139
57
|
*/
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
}
|
|
173
|
-
return [4 /*yield*/, __await(Promise.resolve(this.generateRanges(bbox, zoom, intersectionParams, this.tileFootprintIntersection, verbose)))];
|
|
174
|
-
case 5: return [5 /*yield**/, __values(__asyncDelegator.apply(void 0, [__asyncValues.apply(void 0, [_a.sent()])]))];
|
|
175
|
-
case 6: return [4 /*yield*/, __await.apply(void 0, [_a.sent()])];
|
|
176
|
-
case 7:
|
|
177
|
-
_a.sent();
|
|
178
|
-
_a.label = 8;
|
|
179
|
-
case 8: return [2 /*return*/];
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
});
|
|
183
|
-
};
|
|
184
|
-
TileRanger.prototype.generateTiles = function (area, zoom) {
|
|
185
|
-
var gen;
|
|
58
|
+
async *encodeFootprint(footprint, zoom, verbose = false) {
|
|
59
|
+
////////////////////////////////
|
|
60
|
+
/// Step 1: check if the footprint is identical to its bbox
|
|
61
|
+
////////////////////////////////
|
|
62
|
+
if (verbose) {
|
|
63
|
+
console.log('encode footprint');
|
|
64
|
+
}
|
|
65
|
+
////////////////////////////////
|
|
66
|
+
/// Step 2: convert footprint to BBOX
|
|
67
|
+
////////////////////////////////
|
|
68
|
+
const bbox = (0, turf_1.bbox)(footprint);
|
|
69
|
+
if (this.isBbox(footprint)) {
|
|
70
|
+
// if it is convert its bbox directly to tile range and return it (bbox to tiles conversion is fast and direct mathematical conversion)
|
|
71
|
+
const tileRange = (0, bboxUtils_1.bboxToTileRange)(bbox, zoom);
|
|
72
|
+
if (verbose) {
|
|
73
|
+
console.log(`footprint is identical to its bbox - return BBOX tile range zoom: ${tileRange.zoom} : X ${tileRange.minX} - ${tileRange.maxX} : Y ${tileRange.minY} - ${tileRange.maxY}`);
|
|
74
|
+
}
|
|
75
|
+
yield await Promise.resolve(tileRange);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
const intersectionParams = {
|
|
79
|
+
footprint,
|
|
80
|
+
maxZoom: zoom,
|
|
81
|
+
};
|
|
82
|
+
if (verbose) {
|
|
83
|
+
console.log('footprint is different from its bbox - generateRanges');
|
|
84
|
+
}
|
|
85
|
+
yield* await Promise.resolve(this.generateRanges(bbox, zoom, intersectionParams, this.tileFootprintIntersection, verbose));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
generateTiles(area, zoom) {
|
|
89
|
+
let gen;
|
|
186
90
|
if (Array.isArray(area)) {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
return __generator(this, function (_a) {
|
|
190
|
-
switch (_a.label) {
|
|
191
|
-
case 0: return [4 /*yield*/, __await(Promise.resolve((0, bboxUtils_1.bboxToTileRange)(area, zoom)))];
|
|
192
|
-
case 1: return [4 /*yield*/, __await.apply(void 0, [_a.sent()])];
|
|
193
|
-
case 2: return [4 /*yield*/, _a.sent()];
|
|
194
|
-
case 3:
|
|
195
|
-
_a.sent();
|
|
196
|
-
return [2 /*return*/];
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
});
|
|
91
|
+
const tileRangeGen = async function* tileRangeGenerator() {
|
|
92
|
+
yield await Promise.resolve((0, bboxUtils_1.bboxToTileRange)(area, zoom));
|
|
200
93
|
};
|
|
201
94
|
gen = tileRangeGen();
|
|
202
95
|
}
|
|
@@ -204,99 +97,72 @@ var TileRanger = /** @class */ (function () {
|
|
|
204
97
|
gen = this.encodeFootprint(area, zoom);
|
|
205
98
|
}
|
|
206
99
|
return (0, tilesGenerator_1.tilesGenerator)(gen);
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
case 4: return [4 /*yield*/, _a.sent()];
|
|
264
|
-
case 5:
|
|
265
|
-
_a.sent();
|
|
266
|
-
return [3 /*break*/, 10];
|
|
267
|
-
case 6:
|
|
268
|
-
if (!(intersection === TileIntersectionState.PARTIAL)) return [3 /*break*/, 10];
|
|
269
|
-
return [4 /*yield*/, __await(Promise.resolve(this.optimizeHash(tile, zoom, intersectionTarget, intersectionFunction, verbose)))];
|
|
270
|
-
case 7:
|
|
271
|
-
/// if it partly covered:
|
|
272
|
-
// calculate the sub tiles contained in the current tile (in the next zoom level)
|
|
273
|
-
// for every sub tile recursively run step 6
|
|
274
|
-
//optimize partial base hashes
|
|
275
|
-
return [5 /*yield**/, __values(__asyncDelegator.apply(void 0, [__asyncValues.apply(void 0, [_a.sent()])]))];
|
|
276
|
-
case 8:
|
|
100
|
+
}
|
|
101
|
+
async *generateRanges(bbox, zoom, intersectionTarget, intersectionFunction, verbose = false) {
|
|
102
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
103
|
+
/// Step 3: Convert the bbox to tile range of the requested zoom
|
|
104
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
105
|
+
if (verbose) {
|
|
106
|
+
console.log('Convert the bbox to tile range of the requested zoom');
|
|
107
|
+
}
|
|
108
|
+
const boundingRange = (0, bboxUtils_1.bboxToTileRange)(bbox, zoom);
|
|
109
|
+
if (verbose) {
|
|
110
|
+
const bboxString = `BBOX[0]: ${bbox[0]}, BBOX[1]: ${bbox[1]}, BBOX[2]: ${bbox[2]}, BBOX[3]: ${bbox[3]}`;
|
|
111
|
+
console.log(`${bboxString}, Zoom: ${zoom}, bounding range: minX: ${boundingRange.minX}, maxX: ${boundingRange.maxX}, minY: ${boundingRange.minY}, maxY: ${boundingRange.maxY}`);
|
|
112
|
+
}
|
|
113
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
114
|
+
/// Step 4: Use range size to calculate zoom level where the target area is smaller then 1 tile
|
|
115
|
+
/// (use zoom zero in-case there is no such zoom, for example in global bbox).
|
|
116
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
117
|
+
// find minimal zoom where the the area can be converted by area the size of single tile to skip levels that can't have full hashes
|
|
118
|
+
if (verbose) {
|
|
119
|
+
console.log("find minimal zoom where the the area can be converted by area the size of single tile to skip levels that can't have full hashes");
|
|
120
|
+
}
|
|
121
|
+
const dx = boundingRange.maxX - boundingRange.minX;
|
|
122
|
+
const dy = boundingRange.maxY - boundingRange.minY;
|
|
123
|
+
const minXZoom = Math.max(Math.floor(Math.log2(1 << (zoom + 1)) / dx) - 1, 0);
|
|
124
|
+
const minYZoom = Math.max(Math.floor(Math.log2(1 << zoom) / dy), 0);
|
|
125
|
+
const minZoom = Math.min(minXZoom, minYZoom);
|
|
126
|
+
if (verbose) {
|
|
127
|
+
console.log(`MinZoom: ${minZoom}`);
|
|
128
|
+
}
|
|
129
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
130
|
+
/// Step 5: convert the requested bbox to to tile range of the zoom level calculated in step 3 (this reduce the iteration required for the calculation)
|
|
131
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
132
|
+
//find base hashes
|
|
133
|
+
const minimalRange = (0, bboxUtils_1.bboxToTileRange)(bbox, minZoom);
|
|
134
|
+
for (let x = minimalRange.minX; x < minimalRange.maxX; x++) {
|
|
135
|
+
for (let y = minimalRange.minY; y < minimalRange.maxY; y++) {
|
|
136
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
137
|
+
/// Step 6: for every tile in the current range:
|
|
138
|
+
/// Step 7: check the tile intersection with the footprint
|
|
139
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
140
|
+
const tile = { x, y, zoom: minimalRange.zoom };
|
|
141
|
+
const intersection = intersectionFunction(tile, intersectionTarget);
|
|
142
|
+
if (verbose) {
|
|
143
|
+
console.log(`Tile X: ${tile.x}, Y: ${tile.y} zoom ${tile.zoom}, intersection: ${intersection}`);
|
|
144
|
+
}
|
|
145
|
+
/// if it is completely covered or the tile is in the requested zoom:
|
|
146
|
+
if (intersection === TileIntersectionState.FULL) {
|
|
147
|
+
/// convert it to tile range of the requested resolution
|
|
148
|
+
/// add the range to the result set (yield is used for lazy calculation to improve memory usage)
|
|
149
|
+
const tileRange = this.tileToRange(tile, zoom);
|
|
150
|
+
if (verbose) {
|
|
151
|
+
console.log(`return BBOX tile range zoom: ${tileRange.zoom} : X ${tileRange.minX} - ${tileRange.maxX} : Y ${tileRange.minY} - ${tileRange.maxY}`);
|
|
152
|
+
}
|
|
153
|
+
yield await Promise.resolve(tileRange);
|
|
154
|
+
}
|
|
155
|
+
else if (intersection === TileIntersectionState.PARTIAL) {
|
|
277
156
|
/// if it partly covered:
|
|
278
157
|
// calculate the sub tiles contained in the current tile (in the next zoom level)
|
|
279
158
|
// for every sub tile recursively run step 6
|
|
280
159
|
//optimize partial base hashes
|
|
281
|
-
|
|
282
|
-
case 9:
|
|
283
|
-
/// if it partly covered:
|
|
284
|
-
// calculate the sub tiles contained in the current tile (in the next zoom level)
|
|
285
|
-
// for every sub tile recursively run step 6
|
|
286
|
-
//optimize partial base hashes
|
|
287
|
-
_a.sent();
|
|
288
|
-
_a.label = 10;
|
|
289
|
-
case 10:
|
|
290
|
-
y++;
|
|
291
|
-
return [3 /*break*/, 2];
|
|
292
|
-
case 11:
|
|
293
|
-
x++;
|
|
294
|
-
return [3 /*break*/, 1];
|
|
295
|
-
case 12: return [2 /*return*/];
|
|
160
|
+
yield* await Promise.resolve(this.optimizeHash(tile, zoom, intersectionTarget, intersectionFunction, verbose));
|
|
296
161
|
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
162
|
+
/// else do nothing as this tiles aren't intersected with the original footprint
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
300
166
|
/**
|
|
301
167
|
* generate tile
|
|
302
168
|
* @param tile tile to get all intersecting tiles from
|
|
@@ -304,81 +170,64 @@ var TileRanger = /** @class */ (function () {
|
|
|
304
170
|
* @param intersectionTarget original zoom level and footprint to intersect
|
|
305
171
|
* @param intersectionFunction the intersection function to be called
|
|
306
172
|
*/
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
}
|
|
318
|
-
tiles = this.generateSubTiles(tile);
|
|
319
|
-
_b.label = 1;
|
|
320
|
-
case 1:
|
|
321
|
-
_b.trys.push([1, 8, 9, 10]);
|
|
322
|
-
tiles_2 = __values(tiles), tiles_2_1 = tiles_2.next();
|
|
323
|
-
_b.label = 2;
|
|
324
|
-
case 2:
|
|
325
|
-
if (!!tiles_2_1.done) return [3 /*break*/, 7];
|
|
326
|
-
subTile = tiles_2_1.value;
|
|
327
|
-
intersection = intersectionFunction(subTile, intersectionTarget);
|
|
328
|
-
if (verbose) {
|
|
329
|
-
console.log("Tile X: ".concat(subTile.x, ", Y: ").concat(subTile.y, " zoom ").concat(subTile.zoom, ", intersection: ").concat(intersection));
|
|
330
|
-
}
|
|
331
|
-
if (!(intersection === TileIntersectionState.FULL)) return [3 /*break*/, 4];
|
|
332
|
-
tileRange = this.tileToRange(subTile, targetZoom);
|
|
333
|
-
if (verbose) {
|
|
334
|
-
console.log("return BBOX tile range zoom: ".concat(tileRange.zoom, " : X ").concat(tileRange.minX, " - ").concat(tileRange.maxX, " : Y ").concat(tileRange.minY, " - ").concat(tileRange.maxY));
|
|
335
|
-
}
|
|
336
|
-
return [4 /*yield*/, tileRange];
|
|
337
|
-
case 3:
|
|
338
|
-
_b.sent();
|
|
339
|
-
return [3 /*break*/, 6];
|
|
340
|
-
case 4:
|
|
341
|
-
if (!(intersection === TileIntersectionState.PARTIAL)) return [3 /*break*/, 6];
|
|
342
|
-
/// if it partly covered:
|
|
343
|
-
// calculate the sub tiles contained in the current tile (in the next zoom level) - recursive
|
|
344
|
-
return [5 /*yield**/, __values(this.optimizeHash(subTile, targetZoom, intersectionTarget, intersectionFunction, verbose))];
|
|
345
|
-
case 5:
|
|
346
|
-
/// if it partly covered:
|
|
347
|
-
// calculate the sub tiles contained in the current tile (in the next zoom level) - recursive
|
|
348
|
-
_b.sent();
|
|
349
|
-
_b.label = 6;
|
|
350
|
-
case 6:
|
|
351
|
-
tiles_2_1 = tiles_2.next();
|
|
352
|
-
return [3 /*break*/, 2];
|
|
353
|
-
case 7: return [3 /*break*/, 10];
|
|
354
|
-
case 8:
|
|
355
|
-
e_1_1 = _b.sent();
|
|
356
|
-
e_1 = { error: e_1_1 };
|
|
357
|
-
return [3 /*break*/, 10];
|
|
358
|
-
case 9:
|
|
359
|
-
try {
|
|
360
|
-
if (tiles_2_1 && !tiles_2_1.done && (_a = tiles_2.return)) _a.call(tiles_2);
|
|
361
|
-
}
|
|
362
|
-
finally { if (e_1) throw e_1.error; }
|
|
363
|
-
return [7 /*endfinally*/];
|
|
364
|
-
case 10: return [2 /*return*/];
|
|
173
|
+
*optimizeHash(tile, targetZoom, intersectionTarget, intersectionFunction, verbose = false) {
|
|
174
|
+
/// generate from a tile the next zoom level tiles that compose the tile
|
|
175
|
+
if (verbose) {
|
|
176
|
+
console.log(`optimizeHash: Tile X: ${tile.x}, Y: ${tile.y} zoom ${tile.zoom}, intersectionTarget ${intersectionTarget.maxZoom}, - generate from a tile the next zoom level tiles that compose the tile`);
|
|
177
|
+
}
|
|
178
|
+
const tiles = this.generateSubTiles(tile);
|
|
179
|
+
for (const subTile of tiles) {
|
|
180
|
+
const intersection = intersectionFunction(subTile, intersectionTarget);
|
|
181
|
+
if (verbose) {
|
|
182
|
+
console.log(`Tile X: ${subTile.x}, Y: ${subTile.y} zoom ${subTile.zoom}, intersection: ${intersection}`);
|
|
365
183
|
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
184
|
+
if (intersection === TileIntersectionState.FULL) {
|
|
185
|
+
/// convert it to tile range of the requested resolution
|
|
186
|
+
/// add the range to the result set (yield is used for lazy calculation to improve memory usage)
|
|
187
|
+
const tileRange = this.tileToRange(subTile, targetZoom);
|
|
188
|
+
if (verbose) {
|
|
189
|
+
console.log(`return BBOX tile range zoom: ${tileRange.zoom} : X ${tileRange.minX} - ${tileRange.maxX} : Y ${tileRange.minY} - ${tileRange.maxY}`);
|
|
190
|
+
}
|
|
191
|
+
yield tileRange;
|
|
192
|
+
}
|
|
193
|
+
else if (intersection === TileIntersectionState.PARTIAL) {
|
|
194
|
+
/// if it partly covered:
|
|
195
|
+
// calculate the sub tiles contained in the current tile (in the next zoom level) - recursive
|
|
196
|
+
yield* this.optimizeHash(subTile, targetZoom, intersectionTarget, intersectionFunction, verbose);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
generateSubTiles(tile) {
|
|
201
|
+
const tile0 = { x: tile.x << 1, y: tile.y << 1, zoom: tile.zoom + 1 };
|
|
202
|
+
const tile1 = { x: tile0.x + 1, y: tile0.y, zoom: tile0.zoom };
|
|
203
|
+
const tile2 = { x: tile0.x, y: tile0.y + 1, zoom: tile0.zoom };
|
|
204
|
+
const tile3 = { x: tile0.x + 1, y: tile0.y + 1, zoom: tile0.zoom };
|
|
205
|
+
const tiles = [tile0, tile1, tile2, tile3];
|
|
374
206
|
return tiles;
|
|
207
|
+
}
|
|
208
|
+
tileFootprintIntersection = (tile, intersectionParams) => {
|
|
209
|
+
const tileBbox = (0, tiles_1.tileToBbox)(tile);
|
|
210
|
+
const tilePoly = (0, turf_1.bboxPolygon)(tileBbox);
|
|
211
|
+
const intersection = (0, turf_1.intersect)(intersectionParams.footprint, tilePoly);
|
|
212
|
+
if (intersection === null) {
|
|
213
|
+
return TileIntersectionState.NONE;
|
|
214
|
+
}
|
|
215
|
+
// stop condition
|
|
216
|
+
if (tile.zoom === intersectionParams.maxZoom) {
|
|
217
|
+
return TileIntersectionState.FULL;
|
|
218
|
+
}
|
|
219
|
+
const intArea = (0, turf_1.area)(intersection);
|
|
220
|
+
const hashArea = (0, turf_1.area)(tilePoly);
|
|
221
|
+
if (intArea == hashArea) {
|
|
222
|
+
return TileIntersectionState.FULL;
|
|
223
|
+
}
|
|
224
|
+
return TileIntersectionState.PARTIAL;
|
|
375
225
|
};
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
226
|
+
isBbox(footprint) {
|
|
227
|
+
const bbox = (0, turf_1.bbox)(footprint);
|
|
228
|
+
const bboxPoly = (0, turf_1.bboxPolygon)(bbox);
|
|
379
229
|
return (0, turf_1.booleanEqual)(footprint, bboxPoly);
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
}());
|
|
230
|
+
}
|
|
231
|
+
}
|
|
383
232
|
exports.TileRanger = TileRanger;
|
|
384
233
|
//# sourceMappingURL=tileRanger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tileRanger.js","sourceRoot":"","sources":["../../src/geo/tileRanger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tileRanger.js","sourceRoot":"","sources":["../../src/geo/tileRanger.ts"],"names":[],"mappings":"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"}
|
package/dist/geo/tiles.d.ts
CHANGED
|
File without changes
|
package/dist/geo/tiles.d.ts.map
CHANGED
|
File without changes
|