@loaders.gl/mvt 4.0.0-alpha.5 → 4.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/dist/bundle.js +2 -2
- package/dist/dist.min.js +1748 -913
- package/dist/es5/bundle.js +6 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/helpers/binary-util-functions.js +82 -0
- package/dist/es5/helpers/binary-util-functions.js.map +1 -0
- package/dist/es5/helpers/mapbox-util-functions.js +50 -0
- package/dist/es5/helpers/mapbox-util-functions.js.map +1 -0
- package/dist/es5/index.js +26 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/lib/binary-vector-tile/vector-tile-feature.js +168 -0
- package/dist/es5/lib/binary-vector-tile/vector-tile-feature.js.map +1 -0
- package/dist/es5/lib/binary-vector-tile/vector-tile-layer.js +62 -0
- package/dist/es5/lib/binary-vector-tile/vector-tile-layer.js.map +1 -0
- package/dist/es5/lib/binary-vector-tile/vector-tile.js +28 -0
- package/dist/es5/lib/binary-vector-tile/vector-tile.js.map +1 -0
- package/dist/es5/lib/geojson-tiler/LICENSE +19 -0
- package/dist/es5/lib/geojson-tiler/clip.js +237 -0
- package/dist/es5/lib/geojson-tiler/clip.js.map +1 -0
- package/dist/es5/lib/geojson-tiler/convert.js +161 -0
- package/dist/es5/lib/geojson-tiler/convert.js.map +1 -0
- package/dist/es5/lib/geojson-tiler/feature.js +62 -0
- package/dist/es5/lib/geojson-tiler/feature.js.map +1 -0
- package/dist/es5/lib/geojson-tiler/geojson-tiler.js +186 -0
- package/dist/es5/lib/geojson-tiler/geojson-tiler.js.map +1 -0
- package/dist/es5/lib/geojson-tiler/simplify.js +52 -0
- package/dist/es5/lib/geojson-tiler/simplify.js.map +1 -0
- package/dist/es5/lib/geojson-tiler/tile.js +121 -0
- package/dist/es5/lib/geojson-tiler/tile.js.map +1 -0
- package/dist/es5/lib/geojson-tiler/transform.js +50 -0
- package/dist/es5/lib/geojson-tiler/transform.js.map +1 -0
- package/dist/es5/lib/geojson-tiler/wrap.js +122 -0
- package/dist/es5/lib/geojson-tiler/wrap.js.map +1 -0
- package/dist/es5/lib/mapbox-vector-tile/vector-tile-feature.js +184 -0
- package/dist/es5/lib/mapbox-vector-tile/vector-tile-feature.js.map +1 -0
- package/dist/es5/lib/mapbox-vector-tile/vector-tile-layer.js +62 -0
- package/dist/es5/lib/mapbox-vector-tile/vector-tile-layer.js.map +1 -0
- package/dist/es5/lib/mapbox-vector-tile/vector-tile.js +28 -0
- package/dist/es5/lib/mapbox-vector-tile/vector-tile.js.map +1 -0
- package/dist/es5/lib/parse-mvt.js +143 -0
- package/dist/es5/lib/parse-mvt.js.map +1 -0
- package/dist/es5/lib/types.js +2 -0
- package/dist/es5/lib/types.js.map +1 -0
- package/dist/es5/mvt-loader.js +58 -0
- package/dist/es5/mvt-loader.js.map +1 -0
- package/dist/es5/workers/mvt-worker.js +6 -0
- package/dist/es5/workers/mvt-worker.js.map +1 -0
- package/dist/esm/bundle.js +4 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/helpers/binary-util-functions.js +73 -0
- package/dist/esm/helpers/binary-util-functions.js.map +1 -0
- package/dist/esm/helpers/mapbox-util-functions.js +41 -0
- package/dist/esm/helpers/mapbox-util-functions.js.map +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/binary-vector-tile/LICENSE.txt +31 -0
- package/dist/esm/lib/binary-vector-tile/vector-tile-feature.js +136 -0
- package/dist/esm/lib/binary-vector-tile/vector-tile-feature.js.map +1 -0
- package/dist/esm/lib/binary-vector-tile/vector-tile-layer.js +47 -0
- package/dist/esm/lib/binary-vector-tile/vector-tile-layer.js.map +1 -0
- package/dist/esm/lib/binary-vector-tile/vector-tile.js +19 -0
- package/dist/esm/lib/binary-vector-tile/vector-tile.js.map +1 -0
- package/dist/esm/lib/geojson-tiler/LICENSE +19 -0
- package/dist/esm/lib/geojson-tiler/clip.js +173 -0
- package/dist/esm/lib/geojson-tiler/clip.js.map +1 -0
- package/dist/esm/lib/geojson-tiler/convert.js +116 -0
- package/dist/esm/lib/geojson-tiler/convert.js.map +1 -0
- package/dist/esm/lib/geojson-tiler/feature.js +35 -0
- package/dist/esm/lib/geojson-tiler/feature.js.map +1 -0
- package/dist/esm/lib/geojson-tiler/geojson-tiler.js +171 -0
- package/dist/esm/lib/geojson-tiler/geojson-tiler.js.map +1 -0
- package/dist/esm/lib/geojson-tiler/simplify.js +46 -0
- package/dist/esm/lib/geojson-tiler/simplify.js.map +1 -0
- package/dist/esm/lib/geojson-tiler/tile.js +103 -0
- package/dist/esm/lib/geojson-tiler/tile.js.map +1 -0
- package/dist/esm/lib/geojson-tiler/transform.js +32 -0
- package/dist/esm/lib/geojson-tiler/transform.js.map +1 -0
- package/dist/esm/lib/geojson-tiler/wrap.js +67 -0
- package/dist/esm/lib/geojson-tiler/wrap.js.map +1 -0
- package/dist/esm/lib/mapbox-vector-tile/LICENSE.txt +31 -0
- package/dist/esm/lib/mapbox-vector-tile/vector-tile-feature.js +163 -0
- package/dist/esm/lib/mapbox-vector-tile/vector-tile-feature.js.map +1 -0
- package/dist/esm/lib/mapbox-vector-tile/vector-tile-layer.js +47 -0
- package/dist/esm/lib/mapbox-vector-tile/vector-tile-layer.js.map +1 -0
- package/dist/esm/lib/mapbox-vector-tile/vector-tile.js +19 -0
- package/dist/esm/lib/mapbox-vector-tile/vector-tile.js.map +1 -0
- package/dist/esm/lib/parse-mvt.js +138 -0
- package/dist/esm/lib/parse-mvt.js.map +1 -0
- package/dist/esm/lib/types.js +2 -0
- package/dist/esm/lib/types.js.map +1 -0
- package/dist/esm/mvt-loader.js +29 -0
- package/dist/esm/mvt-loader.js.map +1 -0
- package/dist/esm/workers/mvt-worker.js +4 -0
- package/dist/esm/workers/mvt-worker.js.map +1 -0
- package/dist/helpers/binary-util-functions.js +111 -77
- package/dist/helpers/mapbox-util-functions.d.ts +2 -2
- package/dist/helpers/mapbox-util-functions.js +78 -45
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -2
- package/dist/lib/binary-vector-tile/vector-tile-feature.d.ts.map +1 -1
- package/dist/lib/binary-vector-tile/vector-tile-feature.js +142 -143
- package/dist/lib/binary-vector-tile/vector-tile-layer.js +85 -58
- package/dist/lib/binary-vector-tile/vector-tile.js +25 -19
- package/dist/lib/geojson-tiler/clip.d.ts +16 -0
- package/dist/lib/geojson-tiler/clip.d.ts.map +1 -0
- package/dist/lib/geojson-tiler/clip.js +209 -0
- package/dist/lib/geojson-tiler/convert.d.ts +10 -0
- package/dist/lib/geojson-tiler/convert.d.ts.map +1 -0
- package/dist/lib/geojson-tiler/convert.js +134 -0
- package/dist/lib/geojson-tiler/feature.d.ts +3 -0
- package/dist/lib/geojson-tiler/feature.d.ts.map +1 -0
- package/dist/lib/geojson-tiler/feature.js +46 -0
- package/dist/lib/geojson-tiler/geojson-tiler.d.ts +44 -0
- package/dist/lib/geojson-tiler/geojson-tiler.d.ts.map +1 -0
- package/dist/lib/geojson-tiler/geojson-tiler.js +210 -0
- package/dist/lib/geojson-tiler/simplify.d.ts +10 -0
- package/dist/lib/geojson-tiler/simplify.d.ts.map +1 -0
- package/dist/lib/geojson-tiler/simplify.js +68 -0
- package/dist/lib/geojson-tiler/tile.d.ts +38 -0
- package/dist/lib/geojson-tiler/tile.d.ts.map +1 -0
- package/dist/lib/geojson-tiler/tile.js +125 -0
- package/dist/lib/geojson-tiler/transform.d.ts +7 -0
- package/dist/lib/geojson-tiler/transform.d.ts.map +1 -0
- package/dist/lib/geojson-tiler/transform.js +43 -0
- package/dist/lib/geojson-tiler/wrap.d.ts +17 -0
- package/dist/lib/geojson-tiler/wrap.d.ts.map +1 -0
- package/dist/lib/geojson-tiler/wrap.js +86 -0
- package/dist/lib/mapbox-vector-tile/vector-tile-feature.d.ts +4 -4
- package/dist/lib/mapbox-vector-tile/vector-tile-feature.js +161 -193
- package/dist/lib/mapbox-vector-tile/vector-tile-layer.js +83 -58
- package/dist/lib/mapbox-vector-tile/vector-tile.js +25 -19
- package/dist/lib/parse-mvt.d.ts +6 -9
- package/dist/lib/parse-mvt.d.ts.map +1 -1
- package/dist/lib/parse-mvt.js +148 -98
- package/dist/lib/types.d.ts +48 -7
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +2 -2
- package/dist/mvt-loader.d.ts.map +1 -1
- package/dist/mvt-loader.js +43 -22
- package/dist/mvt-worker.js +903 -829
- package/dist/workers/mvt-worker.js +5 -4
- package/package.json +7 -7
- package/src/helpers/mapbox-util-functions.ts +2 -2
- package/src/index.ts +7 -0
- package/src/lib/binary-vector-tile/vector-tile-feature.ts +6 -1
- package/src/lib/geojson-tiler/LICENSE +19 -0
- package/src/lib/geojson-tiler/clip.ts +248 -0
- package/src/lib/geojson-tiler/convert.ts +158 -0
- package/src/lib/geojson-tiler/feature.ts +45 -0
- package/src/lib/geojson-tiler/geojson-tiler.ts +281 -0
- package/src/lib/geojson-tiler/simplify.ts +77 -0
- package/src/lib/geojson-tiler/tile.ts +185 -0
- package/src/lib/geojson-tiler/transform.ts +55 -0
- package/src/lib/geojson-tiler/wrap.ts +108 -0
- package/src/lib/mapbox-vector-tile/vector-tile-feature.ts +4 -4
- package/src/lib/parse-mvt.ts +136 -93
- package/src/lib/types.ts +53 -7
- package/src/mvt-loader.ts +13 -9
- package/dist/bundle.js.map +0 -1
- package/dist/helpers/binary-util-functions.js.map +0 -1
- package/dist/helpers/mapbox-util-functions.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/binary-vector-tile/vector-tile-feature.js.map +0 -1
- package/dist/lib/binary-vector-tile/vector-tile-layer.js.map +0 -1
- package/dist/lib/binary-vector-tile/vector-tile.js.map +0 -1
- package/dist/lib/mapbox-vector-tile/vector-tile-feature.js.map +0 -1
- package/dist/lib/mapbox-vector-tile/vector-tile-layer.js.map +0 -1
- package/dist/lib/mapbox-vector-tile/vector-tile.js.map +0 -1
- package/dist/lib/parse-mvt.js.map +0 -1
- package/dist/lib/types.js.map +0 -1
- package/dist/mvt-loader.js.map +0 -1
- package/dist/workers/mvt-worker.js.map +0 -1
- /package/dist/{lib → es5/lib}/binary-vector-tile/LICENSE.txt +0 -0
- /package/dist/{lib → es5/lib}/mapbox-vector-tile/LICENSE.txt +0 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.clip = clip;
|
|
8
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
11
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
12
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
13
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
|
+
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
var _feature = require("./feature");
|
|
17
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
18
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
19
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
20
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
21
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
22
|
+
function clip(features, scale, k1, k2, axis, minAll, maxAll, options) {
|
|
23
|
+
k1 /= scale;
|
|
24
|
+
k2 /= scale;
|
|
25
|
+
if (minAll >= k1 && maxAll < k2) {
|
|
26
|
+
return features;
|
|
27
|
+
} else if (maxAll < k1 || minAll >= k2) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
var clipped = [];
|
|
31
|
+
var _iterator = _createForOfIteratorHelper(features),
|
|
32
|
+
_step;
|
|
33
|
+
try {
|
|
34
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
35
|
+
var feature = _step.value;
|
|
36
|
+
var geometry = feature.geometry;
|
|
37
|
+
var type = feature.type;
|
|
38
|
+
var min = axis === 0 ? feature.minX : feature.minY;
|
|
39
|
+
var max = axis === 0 ? feature.maxX : feature.maxY;
|
|
40
|
+
if (min >= k1 && max < k2) {
|
|
41
|
+
clipped.push(feature);
|
|
42
|
+
continue;
|
|
43
|
+
} else if (max < k1 || min >= k2) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
var newGeometry = [];
|
|
47
|
+
if (type === 'Point' || type === 'MultiPoint') {
|
|
48
|
+
clipPoints(geometry, newGeometry, k1, k2, axis);
|
|
49
|
+
} else if (type === 'LineString') {
|
|
50
|
+
clipLine(geometry, newGeometry, k1, k2, axis, false, options.lineMetrics);
|
|
51
|
+
} else if (type === 'MultiLineString') {
|
|
52
|
+
clipLines(geometry, newGeometry, k1, k2, axis, false);
|
|
53
|
+
} else if (type === 'Polygon') {
|
|
54
|
+
clipLines(geometry, newGeometry, k1, k2, axis, true);
|
|
55
|
+
} else if (type === 'MultiPolygon') {
|
|
56
|
+
var _iterator2 = _createForOfIteratorHelper(geometry),
|
|
57
|
+
_step2;
|
|
58
|
+
try {
|
|
59
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
60
|
+
var polygon = _step2.value;
|
|
61
|
+
var newPolygon = [];
|
|
62
|
+
clipLines(polygon, newPolygon, k1, k2, axis, true);
|
|
63
|
+
if (newPolygon.length) {
|
|
64
|
+
newGeometry.push(newPolygon);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
} catch (err) {
|
|
68
|
+
_iterator2.e(err);
|
|
69
|
+
} finally {
|
|
70
|
+
_iterator2.f();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (newGeometry.length) {
|
|
74
|
+
if (options.lineMetrics && type === 'LineString') {
|
|
75
|
+
var _iterator3 = _createForOfIteratorHelper(newGeometry),
|
|
76
|
+
_step3;
|
|
77
|
+
try {
|
|
78
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
79
|
+
var line = _step3.value;
|
|
80
|
+
clipped.push((0, _feature.createFeature)(feature.id, type, line, feature.tags));
|
|
81
|
+
}
|
|
82
|
+
} catch (err) {
|
|
83
|
+
_iterator3.e(err);
|
|
84
|
+
} finally {
|
|
85
|
+
_iterator3.f();
|
|
86
|
+
}
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (type === 'LineString' || type === 'MultiLineString') {
|
|
90
|
+
if (newGeometry.length === 1) {
|
|
91
|
+
type = 'LineString';
|
|
92
|
+
newGeometry = newGeometry[0];
|
|
93
|
+
} else {
|
|
94
|
+
type = 'MultiLineString';
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (type === 'Point' || type === 'MultiPoint') {
|
|
98
|
+
type = newGeometry.length === 3 ? 'Point' : 'MultiPoint';
|
|
99
|
+
}
|
|
100
|
+
clipped.push((0, _feature.createFeature)(feature.id, type, newGeometry, feature.tags));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
} catch (err) {
|
|
104
|
+
_iterator.e(err);
|
|
105
|
+
} finally {
|
|
106
|
+
_iterator.f();
|
|
107
|
+
}
|
|
108
|
+
return clipped.length ? clipped : null;
|
|
109
|
+
}
|
|
110
|
+
function clipPoints(geom, newGeom, k1, k2, axis) {
|
|
111
|
+
for (var i = 0; i < geom.length; i += 3) {
|
|
112
|
+
var a = geom[i + axis];
|
|
113
|
+
if (a >= k1 && a <= k2) {
|
|
114
|
+
addPoint(newGeom, geom[i], geom[i + 1], geom[i + 2]);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function clipLine(geom, newGeom, k1, k2, axis, isPolygon, trackMetrics) {
|
|
119
|
+
var slice = newSlice(geom);
|
|
120
|
+
var intersect = axis === 0 ? intersectX : intersectY;
|
|
121
|
+
var len = geom.start;
|
|
122
|
+
var segLen;
|
|
123
|
+
var t;
|
|
124
|
+
for (var i = 0; i < geom.length - 3; i += 3) {
|
|
125
|
+
var _ax = geom[i];
|
|
126
|
+
var _ay = geom[i + 1];
|
|
127
|
+
var _az = geom[i + 2];
|
|
128
|
+
var bx = geom[i + 3];
|
|
129
|
+
var by = geom[i + 4];
|
|
130
|
+
var _a = axis === 0 ? _ax : _ay;
|
|
131
|
+
var b = axis === 0 ? bx : by;
|
|
132
|
+
var exited = false;
|
|
133
|
+
if (trackMetrics) {
|
|
134
|
+
segLen = Math.sqrt(Math.pow(_ax - bx, 2) + Math.pow(_ay - by, 2));
|
|
135
|
+
}
|
|
136
|
+
if (_a < k1) {
|
|
137
|
+
if (b > k1) {
|
|
138
|
+
t = intersect(slice, _ax, _ay, bx, by, k1);
|
|
139
|
+
if (trackMetrics) {
|
|
140
|
+
slice.start = len + segLen * t;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
} else if (_a > k2) {
|
|
144
|
+
if (b < k2) {
|
|
145
|
+
t = intersect(slice, _ax, _ay, bx, by, k2);
|
|
146
|
+
if (trackMetrics) {
|
|
147
|
+
slice.start = len + segLen * t;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
} else {
|
|
151
|
+
addPoint(slice, _ax, _ay, _az);
|
|
152
|
+
}
|
|
153
|
+
if (b < k1 && _a >= k1) {
|
|
154
|
+
t = intersect(slice, _ax, _ay, bx, by, k1);
|
|
155
|
+
exited = true;
|
|
156
|
+
}
|
|
157
|
+
if (b > k2 && _a <= k2) {
|
|
158
|
+
t = intersect(slice, _ax, _ay, bx, by, k2);
|
|
159
|
+
exited = true;
|
|
160
|
+
}
|
|
161
|
+
if (!isPolygon && exited) {
|
|
162
|
+
if (trackMetrics) {
|
|
163
|
+
slice.end = len + segLen * t;
|
|
164
|
+
}
|
|
165
|
+
newGeom.push(slice);
|
|
166
|
+
slice = newSlice(geom);
|
|
167
|
+
}
|
|
168
|
+
if (trackMetrics) {
|
|
169
|
+
len += segLen;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
var last = geom.length - 3;
|
|
173
|
+
var ax = geom[last];
|
|
174
|
+
var ay = geom[last + 1];
|
|
175
|
+
var az = geom[last + 2];
|
|
176
|
+
var a = axis === 0 ? ax : ay;
|
|
177
|
+
if (a >= k1 && a <= k2) addPoint(slice, ax, ay, az);
|
|
178
|
+
last = slice.length - 3;
|
|
179
|
+
if (isPolygon && last >= 3 && (slice[last] !== slice[0] || slice[last + 1] !== slice[1])) {
|
|
180
|
+
addPoint(slice, slice[0], slice[1], slice[2]);
|
|
181
|
+
}
|
|
182
|
+
if (slice.length) {
|
|
183
|
+
newGeom.push(slice);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
var Slice = function (_Array) {
|
|
187
|
+
(0, _inherits2.default)(Slice, _Array);
|
|
188
|
+
var _super = _createSuper(Slice);
|
|
189
|
+
function Slice() {
|
|
190
|
+
var _this;
|
|
191
|
+
(0, _classCallCheck2.default)(this, Slice);
|
|
192
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
193
|
+
args[_key] = arguments[_key];
|
|
194
|
+
}
|
|
195
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
196
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "size", void 0);
|
|
197
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "start", void 0);
|
|
198
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "end", void 0);
|
|
199
|
+
return _this;
|
|
200
|
+
}
|
|
201
|
+
return (0, _createClass2.default)(Slice);
|
|
202
|
+
}((0, _wrapNativeSuper2.default)(Array));
|
|
203
|
+
function newSlice(line) {
|
|
204
|
+
var slice = [];
|
|
205
|
+
slice.size = line.size;
|
|
206
|
+
slice.start = line.start;
|
|
207
|
+
slice.end = line.end;
|
|
208
|
+
return slice;
|
|
209
|
+
}
|
|
210
|
+
function clipLines(geom, newGeom, k1, k2, axis, isPolygon) {
|
|
211
|
+
var _iterator4 = _createForOfIteratorHelper(geom),
|
|
212
|
+
_step4;
|
|
213
|
+
try {
|
|
214
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
215
|
+
var line = _step4.value;
|
|
216
|
+
clipLine(line, newGeom, k1, k2, axis, isPolygon, false);
|
|
217
|
+
}
|
|
218
|
+
} catch (err) {
|
|
219
|
+
_iterator4.e(err);
|
|
220
|
+
} finally {
|
|
221
|
+
_iterator4.f();
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
function addPoint(out, x, y, z) {
|
|
225
|
+
out.push(x, y, z);
|
|
226
|
+
}
|
|
227
|
+
function intersectX(out, ax, ay, bx, by, x) {
|
|
228
|
+
var t = (x - ax) / (bx - ax);
|
|
229
|
+
addPoint(out, x, ay + (by - ay) * t, 1);
|
|
230
|
+
return t;
|
|
231
|
+
}
|
|
232
|
+
function intersectY(out, ax, ay, bx, by, y) {
|
|
233
|
+
var t = (y - ay) / (by - ay);
|
|
234
|
+
addPoint(out, ax + (bx - ax) * t, y, 1);
|
|
235
|
+
return t;
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=clip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clip.js","names":["_feature","require","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","return","minLen","_arrayLikeToArray","Object","toString","slice","name","from","test","arr","len","arr2","clip","features","scale","k1","k2","axis","minAll","maxAll","options","clipped","_iterator","_step","feature","geometry","type","min","minX","minY","max","maxX","maxY","push","newGeometry","clipPoints","clipLine","lineMetrics","clipLines","_iterator2","_step2","polygon","newPolygon","_iterator3","_step3","line","createFeature","id","tags","geom","newGeom","a","addPoint","isPolygon","trackMetrics","newSlice","intersect","intersectX","intersectY","start","segLen","t","ax","ay","az","bx","by","b","exited","Math","sqrt","pow","end","last","Slice","_Array","_inherits2","_super","_this","_classCallCheck2","_len","args","_key","concat","_defineProperty2","_assertThisInitialized2","_createClass2","_wrapNativeSuper2","size","_iterator4","_step4","out","x","y","z"],"sources":["../../../../src/lib/geojson-tiler/clip.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Forked from https://github.com/mapbox/geojson-vt under compatible ISC license\n\nimport type {GeoJSONTileFeature} from './tile';\nimport {createFeature} from './feature';\n\n/* eslint-disable no-continue */\n\n/**\n * Clip features between two vertical or horizontal axis-parallel lines:\n * | |\n * ___|___ | /\n * / | \\____|____/\n * | |\n *\n * @param k1 and k2 are the line coordinates\n * @param axis: 0 for x, 1 for y\n * @param minAll and maxAll: minimum and maximum coordinate value for all features\n */\n// eslint-disable-next-line max-params, complexity, max-statements\nexport function clip(\n features: GeoJSONTileFeature[],\n scale: number,\n k1: number,\n k2: number,\n axis,\n minAll: number,\n maxAll: number,\n options: {lineMetrics: boolean}\n): GeoJSONTileFeature[] | null {\n k1 /= scale;\n k2 /= scale;\n\n if (minAll >= k1 && maxAll < k2) {\n return features;\n }\n // trivial accept\n else if (maxAll < k1 || minAll >= k2) {\n return null; // trivial reject\n }\n\n const clipped: GeoJSONTileFeature[] = [];\n\n for (const feature of features) {\n const geometry = feature.geometry;\n let type = feature.type;\n\n const min = axis === 0 ? feature.minX : feature.minY;\n const max = axis === 0 ? feature.maxX : feature.maxY;\n\n if (min >= k1 && max < k2) {\n // trivial accept\n clipped.push(feature);\n continue;\n } else if (max < k1 || min >= k2) {\n // trivial reject\n continue;\n }\n\n let newGeometry: number[][][] | number[][] = [];\n\n if (type === 'Point' || type === 'MultiPoint') {\n clipPoints(geometry, newGeometry, k1, k2, axis);\n } else if (type === 'LineString') {\n clipLine(geometry, newGeometry, k1, k2, axis, false, options.lineMetrics);\n } else if (type === 'MultiLineString') {\n clipLines(geometry, newGeometry, k1, k2, axis, false);\n } else if (type === 'Polygon') {\n clipLines(geometry, newGeometry, k1, k2, axis, true);\n } else if (type === 'MultiPolygon') {\n for (const polygon of geometry) {\n const newPolygon = [];\n clipLines(polygon, newPolygon, k1, k2, axis, true);\n if (newPolygon.length) {\n newGeometry.push(newPolygon);\n }\n }\n }\n\n if (newGeometry.length) {\n if (options.lineMetrics && type === 'LineString') {\n for (const line of newGeometry) {\n clipped.push(createFeature(feature.id, type, line, feature.tags));\n }\n continue;\n }\n\n if (type === 'LineString' || type === 'MultiLineString') {\n if (newGeometry.length === 1) {\n type = 'LineString';\n // @ts-expect-error TODO - use proper GeoJSON geometry types\n newGeometry = newGeometry[0];\n } else {\n type = 'MultiLineString';\n }\n }\n if (type === 'Point' || type === 'MultiPoint') {\n type = newGeometry.length === 3 ? 'Point' : 'MultiPoint';\n }\n\n clipped.push(createFeature(feature.id, type, newGeometry, feature.tags));\n }\n }\n\n return clipped.length ? clipped : null;\n}\n\nfunction clipPoints(geom, newGeom, k1: number, k2: number, axis): void {\n for (let i = 0; i < geom.length; i += 3) {\n const a = geom[i + axis];\n\n if (a >= k1 && a <= k2) {\n addPoint(newGeom, geom[i], geom[i + 1], geom[i + 2]);\n }\n }\n}\n\n// eslint-disable-next-line max-params, complexity, max-statements\nfunction clipLine(\n geom,\n newGeom,\n k1: number,\n k2: number,\n axis,\n isPolygon: boolean,\n trackMetrics: boolean\n): void {\n let slice = newSlice(geom);\n const intersect = axis === 0 ? intersectX : intersectY;\n let len = geom.start;\n let segLen;\n let t;\n\n for (let i = 0; i < geom.length - 3; i += 3) {\n const ax = geom[i];\n const ay = geom[i + 1];\n const az = geom[i + 2];\n const bx = geom[i + 3];\n const by = geom[i + 4];\n const a = axis === 0 ? ax : ay;\n const b = axis === 0 ? bx : by;\n let exited = false;\n\n if (trackMetrics) {\n segLen = Math.sqrt(Math.pow(ax - bx, 2) + Math.pow(ay - by, 2));\n }\n\n if (a < k1) {\n // ---|--> | (line enters the clip region from the left)\n if (b > k1) {\n t = intersect(slice, ax, ay, bx, by, k1);\n if (trackMetrics) {\n slice.start = len + segLen * t;\n }\n }\n } else if (a > k2) {\n // | <--|--- (line enters the clip region from the right)\n if (b < k2) {\n t = intersect(slice, ax, ay, bx, by, k2);\n if (trackMetrics) {\n slice.start = len + segLen * t;\n }\n }\n } else {\n addPoint(slice, ax, ay, az);\n }\n if (b < k1 && a >= k1) {\n // <--|--- | or <--|-----|--- (line exits the clip region on the left)\n t = intersect(slice, ax, ay, bx, by, k1);\n exited = true;\n }\n if (b > k2 && a <= k2) {\n // | ---|--> or ---|-----|--> (line exits the clip region on the right)\n t = intersect(slice, ax, ay, bx, by, k2);\n exited = true;\n }\n\n if (!isPolygon && exited) {\n if (trackMetrics) {\n slice.end = len + segLen * t;\n }\n newGeom.push(slice);\n slice = newSlice(geom);\n }\n\n if (trackMetrics) {\n len += segLen;\n }\n }\n\n // add the last point\n let last = geom.length - 3;\n const ax = geom[last];\n const ay = geom[last + 1];\n const az = geom[last + 2];\n const a = axis === 0 ? ax : ay;\n if (a >= k1 && a <= k2) addPoint(slice, ax, ay, az);\n\n // close the polygon if its endpoints are not the same after clipping\n last = slice.length - 3;\n if (isPolygon && last >= 3 && (slice[last] !== slice[0] || slice[last + 1] !== slice[1])) {\n addPoint(slice, slice[0], slice[1], slice[2]);\n }\n\n // add the final slice\n if (slice.length) {\n newGeom.push(slice);\n }\n}\n\nclass Slice extends Array<number> {\n size?: number;\n start?: number;\n end?: number;\n}\n\nfunction newSlice(line: {size: number; start: number; end: number}): Slice {\n const slice: Slice = [];\n slice.size = line.size;\n slice.start = line.start;\n slice.end = line.end;\n return slice;\n}\n\n// eslint-disable-next-line max-params\nfunction clipLines(geom, newGeom, k1: number, k2: number, axis, isPolygon: boolean): void {\n for (const line of geom) {\n clipLine(line, newGeom, k1, k2, axis, isPolygon, false);\n }\n}\n\nfunction addPoint(out: number[], x: number, y: number, z: number): void {\n out.push(x, y, z);\n}\n\n// eslint-disable-next-line max-params\nfunction intersectX(out, ax: number, ay: number, bx: number, by: number, x: number): number {\n const t = (x - ax) / (bx - ax);\n addPoint(out, x, ay + (by - ay) * t, 1);\n return t;\n}\n\n// eslint-disable-next-line max-params\nfunction intersectY(out, ax: number, ay: number, bx: number, by: number, y): number {\n const t = (y - ay) / (by - ay);\n addPoint(out, ax + (bx - ax) * t, y, 1);\n return t;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.convert = convert;
|
|
7
|
+
var _simplify = require("./simplify");
|
|
8
|
+
var _feature = require("./feature");
|
|
9
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
10
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
11
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
12
|
+
function convert(data, options) {
|
|
13
|
+
var features = [];
|
|
14
|
+
if (data.type === 'FeatureCollection') {
|
|
15
|
+
for (var i = 0; i < data.features.length; i++) {
|
|
16
|
+
convertFeature(features, data.features[i], options, i);
|
|
17
|
+
}
|
|
18
|
+
} else if (data.type === 'Feature') {
|
|
19
|
+
convertFeature(features, data, options);
|
|
20
|
+
} else {
|
|
21
|
+
convertFeature(features, {
|
|
22
|
+
geometry: data
|
|
23
|
+
}, options);
|
|
24
|
+
}
|
|
25
|
+
return features;
|
|
26
|
+
}
|
|
27
|
+
function convertFeature(features, geojson, options, index) {
|
|
28
|
+
if (!geojson.geometry) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
var coords = geojson.geometry.coordinates;
|
|
32
|
+
var type = geojson.geometry.type;
|
|
33
|
+
var tolerance = Math.pow(options.tolerance / ((1 << options.maxZoom) * options.extent), 2);
|
|
34
|
+
var geometry = [];
|
|
35
|
+
var id = geojson.id;
|
|
36
|
+
if (options.promoteId) {
|
|
37
|
+
id = geojson.properties[options.promoteId];
|
|
38
|
+
} else if (options.generateId) {
|
|
39
|
+
id = index || 0;
|
|
40
|
+
}
|
|
41
|
+
if (type === 'Point') {
|
|
42
|
+
convertPoint(coords, geometry);
|
|
43
|
+
} else if (type === 'MultiPoint') {
|
|
44
|
+
var _iterator = _createForOfIteratorHelper(coords),
|
|
45
|
+
_step;
|
|
46
|
+
try {
|
|
47
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
48
|
+
var p = _step.value;
|
|
49
|
+
convertPoint(p, geometry);
|
|
50
|
+
}
|
|
51
|
+
} catch (err) {
|
|
52
|
+
_iterator.e(err);
|
|
53
|
+
} finally {
|
|
54
|
+
_iterator.f();
|
|
55
|
+
}
|
|
56
|
+
} else if (type === 'LineString') {
|
|
57
|
+
convertLine(coords, geometry, tolerance, false);
|
|
58
|
+
} else if (type === 'MultiLineString') {
|
|
59
|
+
if (options.lineMetrics) {
|
|
60
|
+
var _iterator2 = _createForOfIteratorHelper(coords),
|
|
61
|
+
_step2;
|
|
62
|
+
try {
|
|
63
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
64
|
+
var line = _step2.value;
|
|
65
|
+
geometry = [];
|
|
66
|
+
convertLine(line, geometry, tolerance, false);
|
|
67
|
+
features.push((0, _feature.createFeature)(id, 'LineString', geometry, geojson.properties));
|
|
68
|
+
}
|
|
69
|
+
} catch (err) {
|
|
70
|
+
_iterator2.e(err);
|
|
71
|
+
} finally {
|
|
72
|
+
_iterator2.f();
|
|
73
|
+
}
|
|
74
|
+
return;
|
|
75
|
+
} else {
|
|
76
|
+
convertLines(coords, geometry, tolerance, false);
|
|
77
|
+
}
|
|
78
|
+
} else if (type === 'Polygon') {
|
|
79
|
+
convertLines(coords, geometry, tolerance, true);
|
|
80
|
+
} else if (type === 'MultiPolygon') {
|
|
81
|
+
var _iterator3 = _createForOfIteratorHelper(coords),
|
|
82
|
+
_step3;
|
|
83
|
+
try {
|
|
84
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
85
|
+
var polygon = _step3.value;
|
|
86
|
+
var newPolygon = [];
|
|
87
|
+
convertLines(polygon, newPolygon, tolerance, true);
|
|
88
|
+
geometry.push(newPolygon);
|
|
89
|
+
}
|
|
90
|
+
} catch (err) {
|
|
91
|
+
_iterator3.e(err);
|
|
92
|
+
} finally {
|
|
93
|
+
_iterator3.f();
|
|
94
|
+
}
|
|
95
|
+
} else if (type === 'GeometryCollection') {
|
|
96
|
+
var _iterator4 = _createForOfIteratorHelper(geojson.geometry.geometries),
|
|
97
|
+
_step4;
|
|
98
|
+
try {
|
|
99
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
100
|
+
var singleGeometry = _step4.value;
|
|
101
|
+
convertFeature(features, {
|
|
102
|
+
id: id,
|
|
103
|
+
geometry: singleGeometry,
|
|
104
|
+
properties: geojson.properties
|
|
105
|
+
}, options, index);
|
|
106
|
+
}
|
|
107
|
+
} catch (err) {
|
|
108
|
+
_iterator4.e(err);
|
|
109
|
+
} finally {
|
|
110
|
+
_iterator4.f();
|
|
111
|
+
}
|
|
112
|
+
return;
|
|
113
|
+
} else {
|
|
114
|
+
throw new Error('Input data is not a valid GeoJSON object.');
|
|
115
|
+
}
|
|
116
|
+
features.push((0, _feature.createFeature)(id, type, geometry, geojson.properties));
|
|
117
|
+
}
|
|
118
|
+
function convertPoint(coords, out) {
|
|
119
|
+
out.push(projectX(coords[0]), projectY(coords[1]), 0);
|
|
120
|
+
}
|
|
121
|
+
function convertLine(ring, out, tolerance, isPolygon) {
|
|
122
|
+
var x0, y0;
|
|
123
|
+
var size = 0;
|
|
124
|
+
for (var j = 0; j < ring.length; j++) {
|
|
125
|
+
var x = projectX(ring[j][0]);
|
|
126
|
+
var y = projectY(ring[j][1]);
|
|
127
|
+
out.push(x, y, 0);
|
|
128
|
+
if (j > 0) {
|
|
129
|
+
if (isPolygon) {
|
|
130
|
+
size += (x0 * y - x * y0) / 2;
|
|
131
|
+
} else {
|
|
132
|
+
size += Math.sqrt(Math.pow(x - x0, 2) + Math.pow(y - y0, 2));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
x0 = x;
|
|
136
|
+
y0 = y;
|
|
137
|
+
}
|
|
138
|
+
var last = out.length - 3;
|
|
139
|
+
out[2] = 1;
|
|
140
|
+
(0, _simplify.simplify)(out, 0, last, tolerance);
|
|
141
|
+
out[last + 2] = 1;
|
|
142
|
+
out.size = Math.abs(size);
|
|
143
|
+
out.start = 0;
|
|
144
|
+
out.end = out.size;
|
|
145
|
+
}
|
|
146
|
+
function convertLines(rings, out, tolerance, isPolygon) {
|
|
147
|
+
for (var i = 0; i < rings.length; i++) {
|
|
148
|
+
var geom = [];
|
|
149
|
+
convertLine(rings[i], geom, tolerance, isPolygon);
|
|
150
|
+
out.push(geom);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function projectX(x) {
|
|
154
|
+
return x / 360 + 0.5;
|
|
155
|
+
}
|
|
156
|
+
function projectY(y) {
|
|
157
|
+
var sin = Math.sin(y * Math.PI / 180);
|
|
158
|
+
var y2 = 0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI;
|
|
159
|
+
return y2 < 0 ? 0 : y2 > 1 ? 1 : y2;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=convert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.js","names":["_simplify","require","_feature","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","convert","data","options","features","type","convertFeature","geometry","geojson","index","coords","coordinates","tolerance","Math","pow","maxZoom","extent","id","promoteId","properties","generateId","convertPoint","_iterator","_step","p","convertLine","lineMetrics","_iterator2","_step2","line","push","createFeature","convertLines","_iterator3","_step3","polygon","newPolygon","_iterator4","geometries","_step4","singleGeometry","Error","out","projectX","projectY","ring","isPolygon","x0","y0","size","j","x","y","sqrt","last","simplify","abs","start","end","rings","geom","sin","PI","y2","log"],"sources":["../../../../src/lib/geojson-tiler/convert.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Forked from https://github.com/mapbox/geojson-vt under compatible ISC license\n\n/* eslint-disable */\n// @ts-nocheck\n\nimport type {Feature} from '@loaders.gl/schema';\nimport type {GeoJSONTileFeature} from './tile';\n\nimport {simplify} from './simplify';\nimport {createFeature} from './feature';\n\n// converts GeoJSON feature into an intermediate projected JSON vector format with simplification data\n\nexport function convert(data: Feature, options): GeoJSONTileFeature[] {\n const features = [];\n if (data.type === 'FeatureCollection') {\n for (let i = 0; i < data.features.length; i++) {\n convertFeature(features, data.features[i], options, i);\n }\n } else if (data.type === 'Feature') {\n convertFeature(features, data, options);\n } else {\n // single geometry or a geometry collection\n convertFeature(features, {geometry: data}, options);\n }\n\n return features;\n}\n\nexport type ConvertFeatureOptions = {\n maxZoom?: number;\n tolerance: number;\n extent: number;\n lineMetrics: boolean;\n};\n\nfunction convertFeature(\n features: GeoJSONTileFeature[],\n geojson: Feature,\n options: ConvertFeatureOptions,\n index: number\n): void {\n if (!geojson.geometry) {\n return;\n }\n\n const coords = geojson.geometry.coordinates;\n const type = geojson.geometry.type;\n const tolerance = Math.pow(options.tolerance / ((1 << options.maxZoom) * options.extent), 2);\n let geometry = [];\n let id = geojson.id;\n if (options.promoteId) {\n id = geojson.properties[options.promoteId];\n } else if (options.generateId) {\n id = index || 0;\n }\n if (type === 'Point') {\n convertPoint(coords, geometry);\n } else if (type === 'MultiPoint') {\n for (const p of coords) {\n convertPoint(p, geometry);\n }\n } else if (type === 'LineString') {\n convertLine(coords, geometry, tolerance, false);\n } else if (type === 'MultiLineString') {\n if (options.lineMetrics) {\n // explode into linestrings to be able to track metrics\n for (const line of coords) {\n geometry = [];\n convertLine(line, geometry, tolerance, false);\n features.push(createFeature(id, 'LineString', geometry, geojson.properties));\n }\n return;\n } else {\n convertLines(coords, geometry, tolerance, false);\n }\n } else if (type === 'Polygon') {\n convertLines(coords, geometry, tolerance, true);\n } else if (type === 'MultiPolygon') {\n for (const polygon of coords) {\n const newPolygon = [];\n convertLines(polygon, newPolygon, tolerance, true);\n geometry.push(newPolygon);\n }\n } else if (type === 'GeometryCollection') {\n for (const singleGeometry of geojson.geometry.geometries) {\n convertFeature(\n features,\n {\n id,\n geometry: singleGeometry,\n properties: geojson.properties\n },\n options,\n index\n );\n }\n return;\n } else {\n throw new Error('Input data is not a valid GeoJSON object.');\n }\n\n features.push(createFeature(id, type, geometry, geojson.properties));\n}\n\nfunction convertPoint(coords, out): void {\n out.push(projectX(coords[0]), projectY(coords[1]), 0);\n}\n\nfunction convertLine(ring: number[], out, tolerance: number, isPolygon: boolean): void {\n let x0, y0;\n let size = 0;\n\n for (let j = 0; j < ring.length; j++) {\n const x = projectX(ring[j][0]);\n const y = projectY(ring[j][1]);\n\n out.push(x, y, 0);\n\n if (j > 0) {\n if (isPolygon) {\n size += (x0 * y - x * y0) / 2; // area\n } else {\n size += Math.sqrt(Math.pow(x - x0, 2) + Math.pow(y - y0, 2)); // length\n }\n }\n x0 = x;\n y0 = y;\n }\n\n const last = out.length - 3;\n out[2] = 1;\n simplify(out, 0, last, tolerance);\n out[last + 2] = 1;\n\n out.size = Math.abs(size);\n out.start = 0;\n out.end = out.size;\n}\n\nfunction convertLines(rings: number[][], out, tolerance: number, isPolygon: boolean): void {\n for (let i = 0; i < rings.length; i++) {\n const geom = [];\n convertLine(rings[i], geom, tolerance, isPolygon);\n out.push(geom);\n }\n}\n\nfunction projectX(x: number): number {\n return x / 360 + 0.5;\n}\n\nfunction projectY(y: number): number {\n const sin = Math.sin((y * Math.PI) / 180);\n const y2 = 0.5 - (0.25 * Math.log((1 + sin) / (1 - sin))) / Math.PI;\n return y2 < 0 ? 0 : y2 > 1 ? 1 : y2;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createFeature = createFeature;
|
|
7
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
8
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
9
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
10
|
+
function createFeature(id, type, geom, tags) {
|
|
11
|
+
var feature = {
|
|
12
|
+
id: id == null ? null : id,
|
|
13
|
+
type: type,
|
|
14
|
+
geometry: geom,
|
|
15
|
+
tags: tags,
|
|
16
|
+
minX: Infinity,
|
|
17
|
+
minY: Infinity,
|
|
18
|
+
maxX: -Infinity,
|
|
19
|
+
maxY: -Infinity
|
|
20
|
+
};
|
|
21
|
+
if (type === 'Point' || type === 'MultiPoint' || type === 'LineString') {
|
|
22
|
+
calcLineBBox(feature, geom);
|
|
23
|
+
} else if (type === 'Polygon') {
|
|
24
|
+
calcLineBBox(feature, geom[0]);
|
|
25
|
+
} else if (type === 'MultiLineString') {
|
|
26
|
+
var _iterator = _createForOfIteratorHelper(geom),
|
|
27
|
+
_step;
|
|
28
|
+
try {
|
|
29
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
30
|
+
var line = _step.value;
|
|
31
|
+
calcLineBBox(feature, line);
|
|
32
|
+
}
|
|
33
|
+
} catch (err) {
|
|
34
|
+
_iterator.e(err);
|
|
35
|
+
} finally {
|
|
36
|
+
_iterator.f();
|
|
37
|
+
}
|
|
38
|
+
} else if (type === 'MultiPolygon') {
|
|
39
|
+
var _iterator2 = _createForOfIteratorHelper(geom),
|
|
40
|
+
_step2;
|
|
41
|
+
try {
|
|
42
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
43
|
+
var polygon = _step2.value;
|
|
44
|
+
calcLineBBox(feature, polygon[0]);
|
|
45
|
+
}
|
|
46
|
+
} catch (err) {
|
|
47
|
+
_iterator2.e(err);
|
|
48
|
+
} finally {
|
|
49
|
+
_iterator2.f();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return feature;
|
|
53
|
+
}
|
|
54
|
+
function calcLineBBox(feature, geom) {
|
|
55
|
+
for (var i = 0; i < geom.length; i += 3) {
|
|
56
|
+
feature.minX = Math.min(feature.minX, geom[i]);
|
|
57
|
+
feature.minY = Math.min(feature.minY, geom[i + 1]);
|
|
58
|
+
feature.maxX = Math.max(feature.maxX, geom[i]);
|
|
59
|
+
feature.maxY = Math.max(feature.maxY, geom[i + 1]);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature.js","names":["createFeature","id","type","geom","tags","feature","geometry","minX","Infinity","minY","maxX","maxY","calcLineBBox","_iterator","_createForOfIteratorHelper","_step","s","n","done","line","value","err","e","f","_iterator2","_step2","polygon","i","length","Math","min","max"],"sources":["../../../../src/lib/geojson-tiler/feature.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Forked from https://github.com/mapbox/geojson-vt under compatible ISC license\n\nimport {GeoJSONTileFeature} from './tile';\n\nexport function createFeature(id, type, geom, tags): GeoJSONTileFeature {\n const feature: GeoJSONTileFeature = {\n // eslint-disable-next-line\n id: id == null ? null : id,\n type,\n geometry: geom,\n tags,\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity\n };\n\n if (type === 'Point' || type === 'MultiPoint' || type === 'LineString') {\n calcLineBBox(feature, geom);\n } else if (type === 'Polygon') {\n // the outer ring (ie [0]) contains all inner rings\n calcLineBBox(feature, geom[0]);\n } else if (type === 'MultiLineString') {\n for (const line of geom) {\n calcLineBBox(feature, line);\n }\n } else if (type === 'MultiPolygon') {\n for (const polygon of geom) {\n // the outer ring (ie [0]) contains all inner rings\n calcLineBBox(feature, polygon[0]);\n }\n }\n\n return feature;\n}\n\nfunction calcLineBBox(feature, geom) {\n for (let i = 0; i < geom.length; i += 3) {\n feature.minX = Math.min(feature.minX, geom[i]);\n feature.minY = Math.min(feature.minY, geom[i + 1]);\n feature.maxX = Math.max(feature.maxX, geom[i]);\n feature.maxY = Math.max(feature.maxY, geom[i + 1]);\n }\n}\n"],"mappings":";;;;;;;;;AAKO,SAASA,aAAaA,CAACC,EAAE,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAsB;EACtE,IAAMC,OAA2B,GAAG;IAElCJ,EAAE,EAAEA,EAAE,IAAI,IAAI,GAAG,IAAI,GAAGA,EAAE;IAC1BC,IAAI,EAAJA,IAAI;IACJI,QAAQ,EAAEH,IAAI;IACdC,IAAI,EAAJA,IAAI;IACJG,IAAI,EAAEC,QAAQ;IACdC,IAAI,EAAED,QAAQ;IACdE,IAAI,EAAE,CAACF,QAAQ;IACfG,IAAI,EAAE,CAACH;EACT,CAAC;EAED,IAAIN,IAAI,KAAK,OAAO,IAAIA,IAAI,KAAK,YAAY,IAAIA,IAAI,KAAK,YAAY,EAAE;IACtEU,YAAY,CAACP,OAAO,EAAEF,IAAI,CAAC;EAC7B,CAAC,MAAM,IAAID,IAAI,KAAK,SAAS,EAAE;IAE7BU,YAAY,CAACP,OAAO,EAAEF,IAAI,CAAC,CAAC,CAAC,CAAC;EAChC,CAAC,MAAM,IAAID,IAAI,KAAK,iBAAiB,EAAE;IAAA,IAAAW,SAAA,GAAAC,0BAAA,CAClBX,IAAI;MAAAY,KAAA;IAAA;MAAvB,KAAAF,SAAA,CAAAG,CAAA,MAAAD,KAAA,GAAAF,SAAA,CAAAI,CAAA,IAAAC,IAAA,GAAyB;QAAA,IAAdC,IAAI,GAAAJ,KAAA,CAAAK,KAAA;QACbR,YAAY,CAACP,OAAO,EAAEc,IAAI,CAAC;MAC7B;IAAC,SAAAE,GAAA;MAAAR,SAAA,CAAAS,CAAA,CAAAD,GAAA;IAAA;MAAAR,SAAA,CAAAU,CAAA;IAAA;EACH,CAAC,MAAM,IAAIrB,IAAI,KAAK,cAAc,EAAE;IAAA,IAAAsB,UAAA,GAAAV,0BAAA,CACZX,IAAI;MAAAsB,MAAA;IAAA;MAA1B,KAAAD,UAAA,CAAAR,CAAA,MAAAS,MAAA,GAAAD,UAAA,CAAAP,CAAA,IAAAC,IAAA,GAA4B;QAAA,IAAjBQ,OAAO,GAAAD,MAAA,CAAAL,KAAA;QAEhBR,YAAY,CAACP,OAAO,EAAEqB,OAAO,CAAC,CAAC,CAAC,CAAC;MACnC;IAAC,SAAAL,GAAA;MAAAG,UAAA,CAAAF,CAAA,CAAAD,GAAA;IAAA;MAAAG,UAAA,CAAAD,CAAA;IAAA;EACH;EAEA,OAAOlB,OAAO;AAChB;AAEA,SAASO,YAAYA,CAACP,OAAO,EAAEF,IAAI,EAAE;EACnC,KAAK,IAAIwB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxB,IAAI,CAACyB,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;IACvCtB,OAAO,CAACE,IAAI,GAAGsB,IAAI,CAACC,GAAG,CAACzB,OAAO,CAACE,IAAI,EAAEJ,IAAI,CAACwB,CAAC,CAAC,CAAC;IAC9CtB,OAAO,CAACI,IAAI,GAAGoB,IAAI,CAACC,GAAG,CAACzB,OAAO,CAACI,IAAI,EAAEN,IAAI,CAACwB,CAAC,GAAG,CAAC,CAAC,CAAC;IAClDtB,OAAO,CAACK,IAAI,GAAGmB,IAAI,CAACE,GAAG,CAAC1B,OAAO,CAACK,IAAI,EAAEP,IAAI,CAACwB,CAAC,CAAC,CAAC;IAC9CtB,OAAO,CAACM,IAAI,GAAGkB,IAAI,CAACE,GAAG,CAAC1B,OAAO,CAACM,IAAI,EAAER,IAAI,CAACwB,CAAC,GAAG,CAAC,CAAC,CAAC;EACpD;AACF"}
|