@loaders.gl/flatgeobuf 3.2.12 → 3.3.0-alpha.10
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/dist.min.js +51 -15
- package/dist/es5/bundle.js +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/flatgeobuf-loader.js +1 -1
- package/dist/es5/flatgeobuf-loader.js.map +1 -1
- package/dist/es5/index.js +4 -16
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/binary-geometries.js +8 -19
- package/dist/es5/lib/binary-geometries.js.map +1 -1
- package/dist/es5/lib/parse-flatgeobuf.js +47 -102
- package/dist/es5/lib/parse-flatgeobuf.js.map +1 -1
- package/dist/es5/lib/types.js.map +1 -1
- package/dist/es5/workers/flatgeobuf-worker.js +0 -2
- package/dist/es5/workers/flatgeobuf-worker.js.map +1 -1
- package/dist/esm/bundle.js +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/flatgeobuf-loader.js +2 -1
- package/dist/esm/flatgeobuf-loader.js.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/binary-geometries.js +8 -17
- package/dist/esm/lib/binary-geometries.js.map +1 -1
- package/dist/esm/lib/parse-flatgeobuf.js +7 -20
- package/dist/esm/lib/parse-flatgeobuf.js.map +1 -1
- package/dist/esm/lib/types.js.map +1 -1
- package/dist/esm/workers/flatgeobuf-worker.js.map +1 -1
- package/dist/flatgeobuf-worker.js +44 -13
- package/dist/lib/types.d.ts +1 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1,46 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.parseFlatGeobuf = parseFlatGeobuf;
|
|
9
8
|
exports.parseFlatGeobufInBatches = parseFlatGeobufInBatches;
|
|
10
|
-
|
|
11
9
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
12
|
-
|
|
13
10
|
var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
|
|
14
|
-
|
|
15
11
|
var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
|
|
16
|
-
|
|
17
|
-
var _asyncIterator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncIterator"));
|
|
18
|
-
|
|
19
12
|
var _proj = require("@math.gl/proj4");
|
|
20
|
-
|
|
21
13
|
var _gis = require("@loaders.gl/gis");
|
|
22
|
-
|
|
23
14
|
var _geojson = require("flatgeobuf/lib/cjs/geojson");
|
|
24
|
-
|
|
25
15
|
var _generic = require("flatgeobuf/lib/cjs/generic");
|
|
26
|
-
|
|
27
16
|
var _feature = require("flatgeobuf/lib/cjs/generic/feature");
|
|
28
|
-
|
|
29
17
|
var _binaryGeometries = require("./binary-geometries");
|
|
30
|
-
|
|
18
|
+
function _asyncIterator(iterable) { var method, async, sync, retry = 2; for ("undefined" != typeof Symbol && (async = Symbol.asyncIterator, sync = Symbol.iterator); retry--;) { if (async && null != (method = iterable[async])) return method.call(iterable); if (sync && null != (method = iterable[sync])) return new AsyncFromSyncIterator(method.call(iterable)); async = "@@asyncIterator", sync = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
|
|
19
|
+
function AsyncFromSyncIterator(s) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var done = r.done; return Promise.resolve(r.value).then(function (value) { return { value: value, done: done }; }); } return AsyncFromSyncIterator = function AsyncFromSyncIterator(s) { this.s = s, this.n = s.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function next() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, return: function _return(value) { var ret = this.s.return; return void 0 === ret ? Promise.resolve({ value: value, done: !0 }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments)); }, throw: function _throw(value) { var thr = this.s.return; return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(s); }
|
|
31
20
|
function binaryFromFeature(feature, header) {
|
|
32
21
|
var geometry = feature.geometry();
|
|
22
|
+
|
|
33
23
|
var geometryType = header.geometryType || geometry.type();
|
|
34
24
|
var parsedGeometry = (0, _binaryGeometries.fromGeometry)(geometry, geometryType);
|
|
35
25
|
parsedGeometry.properties = (0, _feature.parseProperties)(feature, header.columns);
|
|
26
|
+
|
|
36
27
|
return parsedGeometry;
|
|
37
28
|
}
|
|
38
29
|
|
|
39
30
|
function parseFlatGeobuf(arrayBuffer, options) {
|
|
40
31
|
var _options$gis, _options$flatgeobuf;
|
|
41
|
-
|
|
42
32
|
var shape = (options === null || options === void 0 ? void 0 : (_options$gis = options.gis) === null || _options$gis === void 0 ? void 0 : _options$gis.format) || (options === null || options === void 0 ? void 0 : (_options$flatgeobuf = options.flatgeobuf) === null || _options$flatgeobuf === void 0 ? void 0 : _options$flatgeobuf.shape);
|
|
43
|
-
|
|
44
33
|
switch (shape) {
|
|
45
34
|
case 'geojson-row-table':
|
|
46
35
|
{
|
|
@@ -50,66 +39,55 @@ function parseFlatGeobuf(arrayBuffer, options) {
|
|
|
50
39
|
};
|
|
51
40
|
return table;
|
|
52
41
|
}
|
|
53
|
-
|
|
54
42
|
case 'columnar-table':
|
|
55
43
|
return {
|
|
56
44
|
shape: 'columnar-table',
|
|
57
45
|
data: parseFlatGeobufToBinary(arrayBuffer, options)
|
|
58
46
|
};
|
|
59
|
-
|
|
60
47
|
case 'geojson':
|
|
61
48
|
return parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
62
|
-
|
|
63
49
|
case 'binary':
|
|
64
50
|
return parseFlatGeobufToBinary(arrayBuffer, options);
|
|
65
|
-
|
|
66
51
|
default:
|
|
67
52
|
throw new Error(shape);
|
|
68
53
|
}
|
|
69
54
|
}
|
|
70
|
-
|
|
71
55
|
function parseFlatGeobufToBinary(arrayBuffer, options) {
|
|
56
|
+
|
|
72
57
|
var array = new Uint8Array(arrayBuffer);
|
|
73
58
|
return (0, _generic.deserialize)(array, binaryFromFeature);
|
|
74
59
|
}
|
|
75
|
-
|
|
76
60
|
function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
|
|
77
61
|
if (arrayBuffer.byteLength === 0) {
|
|
78
62
|
return [];
|
|
79
63
|
}
|
|
80
|
-
|
|
81
64
|
var _ref = options && options.gis || {},
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
65
|
+
_ref$reproject = _ref.reproject,
|
|
66
|
+
reproject = _ref$reproject === void 0 ? false : _ref$reproject,
|
|
67
|
+
_ref$_targetCrs = _ref._targetCrs,
|
|
68
|
+
_targetCrs = _ref$_targetCrs === void 0 ? 'WGS84' : _ref$_targetCrs;
|
|
87
69
|
var arr = new Uint8Array(arrayBuffer);
|
|
88
70
|
var headerMeta;
|
|
89
|
-
|
|
90
71
|
var _deserializeGeoJson = (0, _geojson.deserialize)(arr, false, function (header) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
72
|
+
headerMeta = header;
|
|
73
|
+
}),
|
|
74
|
+
features = _deserializeGeoJson.features;
|
|
95
75
|
var crs = headerMeta && headerMeta.crs;
|
|
96
76
|
var projection;
|
|
97
|
-
|
|
98
77
|
if (reproject && crs) {
|
|
99
78
|
try {
|
|
100
79
|
projection = new _proj.Proj4Projection({
|
|
101
80
|
from: crs.wkt,
|
|
102
81
|
to: _targetCrs
|
|
103
82
|
});
|
|
104
|
-
} catch (e) {
|
|
83
|
+
} catch (e) {
|
|
84
|
+
}
|
|
105
85
|
}
|
|
106
|
-
|
|
107
86
|
if (projection) {
|
|
108
87
|
return (0, _gis.transformGeoJsonCoords)(features, function (coords) {
|
|
109
88
|
return projection.project(coords);
|
|
110
89
|
});
|
|
111
90
|
}
|
|
112
|
-
|
|
113
91
|
return features;
|
|
114
92
|
}
|
|
115
93
|
|
|
@@ -117,11 +95,10 @@ function parseFlatGeobufInBatches(stream, options) {
|
|
|
117
95
|
if (options && options.gis && options.gis.format === 'binary') {
|
|
118
96
|
return parseFlatGeobufInBatchesToBinary(stream, options);
|
|
119
97
|
}
|
|
120
|
-
|
|
121
98
|
return parseFlatGeobufInBatchesToGeoJSON(stream, options);
|
|
122
99
|
}
|
|
123
|
-
|
|
124
100
|
function parseFlatGeobufInBatchesToBinary(stream, options) {
|
|
101
|
+
|
|
125
102
|
var iterator = (0, _generic.deserialize)(stream, binaryFromFeature);
|
|
126
103
|
return iterator;
|
|
127
104
|
}
|
|
@@ -129,11 +106,9 @@ function parseFlatGeobufInBatchesToBinary(stream, options) {
|
|
|
129
106
|
function parseFlatGeobufInBatchesToGeoJSON(_x, _x2) {
|
|
130
107
|
return _parseFlatGeobufInBatchesToGeoJSON.apply(this, arguments);
|
|
131
108
|
}
|
|
132
|
-
|
|
133
109
|
function _parseFlatGeobufInBatchesToGeoJSON() {
|
|
134
110
|
_parseFlatGeobufInBatchesToGeoJSON = (0, _wrapAsyncGenerator2.default)(_regenerator.default.mark(function _callee(stream, options) {
|
|
135
|
-
var _ref2, _ref2$reproject, reproject, _ref2$_targetCrs, _targetCrs, headerMeta, iterator, projection, firstRecord,
|
|
136
|
-
|
|
111
|
+
var _ref2, _ref2$reproject, reproject, _ref2$_targetCrs, _targetCrs, headerMeta, iterator, projection, firstRecord, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, feature, crs;
|
|
137
112
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
138
113
|
while (1) {
|
|
139
114
|
switch (_context.prev = _context.next) {
|
|
@@ -143,111 +118,81 @@ function _parseFlatGeobufInBatchesToGeoJSON() {
|
|
|
143
118
|
headerMeta = header;
|
|
144
119
|
});
|
|
145
120
|
firstRecord = true;
|
|
146
|
-
|
|
121
|
+
_iteratorAbruptCompletion = false;
|
|
147
122
|
_didIteratorError = false;
|
|
148
123
|
_context.prev = 5;
|
|
149
|
-
_iterator = (
|
|
150
|
-
|
|
124
|
+
_iterator = _asyncIterator(iterator);
|
|
151
125
|
case 7:
|
|
152
126
|
_context.next = 9;
|
|
153
127
|
return (0, _awaitAsyncGenerator2.default)(_iterator.next());
|
|
154
|
-
|
|
155
128
|
case 9:
|
|
156
|
-
_step = _context.sent
|
|
157
|
-
|
|
158
|
-
_context.next = 13;
|
|
159
|
-
return (0, _awaitAsyncGenerator2.default)(_step.value);
|
|
160
|
-
|
|
161
|
-
case 13:
|
|
162
|
-
_value = _context.sent;
|
|
163
|
-
|
|
164
|
-
if (_iteratorNormalCompletion) {
|
|
165
|
-
_context.next = 27;
|
|
129
|
+
if (!(_iteratorAbruptCompletion = !(_step = _context.sent).done)) {
|
|
130
|
+
_context.next = 22;
|
|
166
131
|
break;
|
|
167
132
|
}
|
|
168
|
-
|
|
169
|
-
feature = _value;
|
|
170
|
-
|
|
133
|
+
feature = _step.value;
|
|
171
134
|
if (firstRecord) {
|
|
172
135
|
crs = headerMeta && headerMeta.crs;
|
|
173
|
-
|
|
174
136
|
if (reproject && crs) {
|
|
175
137
|
projection = new _proj.Proj4Projection({
|
|
176
138
|
from: crs.wkt,
|
|
177
139
|
to: _targetCrs
|
|
178
140
|
});
|
|
179
141
|
}
|
|
180
|
-
|
|
181
142
|
firstRecord = false;
|
|
182
143
|
}
|
|
183
|
-
|
|
184
144
|
if (!(reproject && projection)) {
|
|
185
|
-
_context.next =
|
|
145
|
+
_context.next = 17;
|
|
186
146
|
break;
|
|
187
147
|
}
|
|
188
|
-
|
|
189
|
-
_context.next = 20;
|
|
148
|
+
_context.next = 15;
|
|
190
149
|
return (0, _gis.transformGeoJsonCoords)([feature], function (coords) {
|
|
191
150
|
return projection.project(coords);
|
|
192
151
|
});
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
_context.next = 24;
|
|
152
|
+
case 15:
|
|
153
|
+
_context.next = 19;
|
|
196
154
|
break;
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
_context.next = 24;
|
|
155
|
+
case 17:
|
|
156
|
+
_context.next = 19;
|
|
200
157
|
return feature;
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
_iteratorNormalCompletion = true;
|
|
158
|
+
case 19:
|
|
159
|
+
_iteratorAbruptCompletion = false;
|
|
204
160
|
_context.next = 7;
|
|
205
161
|
break;
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
_context.next = 33;
|
|
162
|
+
case 22:
|
|
163
|
+
_context.next = 28;
|
|
209
164
|
break;
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
_context.prev = 29;
|
|
165
|
+
case 24:
|
|
166
|
+
_context.prev = 24;
|
|
213
167
|
_context.t0 = _context["catch"](5);
|
|
214
168
|
_didIteratorError = true;
|
|
215
169
|
_iteratorError = _context.t0;
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
_context.prev =
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
if (!(!_iteratorNormalCompletion && _iterator.return != null)) {
|
|
222
|
-
_context.next = 38;
|
|
170
|
+
case 28:
|
|
171
|
+
_context.prev = 28;
|
|
172
|
+
_context.prev = 29;
|
|
173
|
+
if (!(_iteratorAbruptCompletion && _iterator.return != null)) {
|
|
174
|
+
_context.next = 33;
|
|
223
175
|
break;
|
|
224
176
|
}
|
|
225
|
-
|
|
226
|
-
_context.next = 38;
|
|
177
|
+
_context.next = 33;
|
|
227
178
|
return (0, _awaitAsyncGenerator2.default)(_iterator.return());
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
_context.prev = 38;
|
|
231
|
-
|
|
179
|
+
case 33:
|
|
180
|
+
_context.prev = 33;
|
|
232
181
|
if (!_didIteratorError) {
|
|
233
|
-
_context.next =
|
|
182
|
+
_context.next = 36;
|
|
234
183
|
break;
|
|
235
184
|
}
|
|
236
|
-
|
|
237
185
|
throw _iteratorError;
|
|
238
|
-
|
|
239
|
-
case 41:
|
|
240
|
-
return _context.finish(38);
|
|
241
|
-
|
|
242
|
-
case 42:
|
|
186
|
+
case 36:
|
|
243
187
|
return _context.finish(33);
|
|
244
|
-
|
|
245
|
-
|
|
188
|
+
case 37:
|
|
189
|
+
return _context.finish(28);
|
|
190
|
+
case 38:
|
|
246
191
|
case "end":
|
|
247
192
|
return _context.stop();
|
|
248
193
|
}
|
|
249
194
|
}
|
|
250
|
-
}, _callee, null, [[5,
|
|
195
|
+
}, _callee, null, [[5, 24, 28, 38], [29,, 33, 37]]);
|
|
251
196
|
}));
|
|
252
197
|
return _parseFlatGeobufInBatchesToGeoJSON.apply(this, arguments);
|
|
253
198
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"parse-flatgeobuf.js","names":["binaryFromFeature","feature","header","geometry","geometryType","type","parsedGeometry","binaryFromGeometry","properties","parsePropertiesBinary","columns","parseFlatGeobuf","arrayBuffer","options","shape","gis","format","flatgeobuf","table","data","parseFlatGeobufToGeoJSON","parseFlatGeobufToBinary","Error","array","Uint8Array","deserializeGeneric","byteLength","reproject","_targetCrs","arr","headerMeta","deserializeGeoJson","features","crs","projection","Proj4Projection","from","wkt","to","e","transformGeoJsonCoords","coords","project","parseFlatGeobufInBatches","stream","parseFlatGeobufInBatchesToBinary","parseFlatGeobufInBatchesToGeoJSON","iterator","firstRecord"],"sources":["../../../src/lib/parse-flatgeobuf.ts"],"sourcesContent":["// @ts-nocheck\nimport {Proj4Projection} from '@math.gl/proj4';\nimport {transformGeoJsonCoords} from '@loaders.gl/gis';\n\nimport {deserialize as deserializeGeoJson} from 'flatgeobuf/lib/cjs/geojson';\nimport {deserialize as deserializeGeneric} from 'flatgeobuf/lib/cjs/generic';\nimport {parseProperties as parsePropertiesBinary} from 'flatgeobuf/lib/cjs/generic/feature';\n\nimport {fromGeometry as binaryFromGeometry} from './binary-geometries';\nimport {FlatGeobufLoaderOptions} from './types';\nimport {GeoJSONRowTable, Feature} from '@loaders.gl/schema';\n\n// TODO: reproject binary features\nfunction binaryFromFeature(feature, header) {\n const geometry = feature.geometry();\n\n // FlatGeobuf files can only hold a single geometry type per file, otherwise\n // GeometryType is GeometryCollection\n // I believe geometry.type() is null (0) except when the geometry type isn't\n // known in the header?\n const geometryType = header.geometryType || geometry.type();\n const parsedGeometry = binaryFromGeometry(geometry, geometryType);\n parsedGeometry.properties = parsePropertiesBinary(feature, header.columns);\n\n // TODO: wrap binary data either in points, lines, or polygons key\n return parsedGeometry;\n}\n\n/*\n * Parse FlatGeobuf arrayBuffer and return GeoJSON.\n *\n * @param arrayBuffer A FlatGeobuf arrayBuffer\n * @return A GeoJSON geometry object\n */\nexport function parseFlatGeobuf(arrayBuffer: ArrayBuffer, options?: FlatGeobufLoaderOptions) {\n const shape = options?.gis?.format || options?.flatgeobuf?.shape;\n\n switch (shape) {\n case 'geojson-row-table': {\n const table: GeoJSONRowTable = {\n shape: 'geojson-row-table',\n data: parseFlatGeobufToGeoJSON(arrayBuffer, options)\n };\n return table;\n }\n case 'columnar-table': // binary + some JS arrays\n return {shape: 'columnar-table', data: parseFlatGeobufToBinary(arrayBuffer, options)};\n case 'geojson':\n return parseFlatGeobufToGeoJSON(arrayBuffer, options);\n case 'binary':\n return parseFlatGeobufToBinary(arrayBuffer, options);\n default:\n throw new Error(shape);\n }\n}\n\nfunction parseFlatGeobufToBinary(arrayBuffer: ArrayBuffer, options: FlatGeobufLoaderOptions) {\n // TODO: reproject binary features\n // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const array = new Uint8Array(arrayBuffer);\n return deserializeGeneric(array, binaryFromFeature);\n}\n\nfunction parseFlatGeobufToGeoJSON(\n arrayBuffer: ArrayBuffer,\n options: FlatGeobufLoaderOptions\n): Feature[] {\n if (arrayBuffer.byteLength === 0) {\n return [];\n }\n\n const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const arr = new Uint8Array(arrayBuffer);\n\n let headerMeta;\n const {features} = deserializeGeoJson(arr, false, (header) => {\n headerMeta = header;\n });\n\n const crs = headerMeta && headerMeta.crs;\n let projection;\n if (reproject && crs) {\n // Constructing the projection may fail for some invalid WKT strings\n try {\n projection = new Proj4Projection({from: crs.wkt, to: _targetCrs});\n } catch (e) {\n // no op\n }\n }\n\n if (projection) {\n return transformGeoJsonCoords(features, (coords) => projection.project(coords));\n }\n\n return features;\n}\n\n/*\n * Parse FlatGeobuf arrayBuffer and return GeoJSON.\n *\n * @param {ReadableStream} _ A FlatGeobuf arrayBuffer\n * @return A GeoJSON geometry object iterator\n */\n// eslint-disable-next-line complexity\nexport function parseFlatGeobufInBatches(stream, options: FlatGeobufLoaderOptions) {\n if (options && options.gis && options.gis.format === 'binary') {\n return parseFlatGeobufInBatchesToBinary(stream, options);\n }\n\n return parseFlatGeobufInBatchesToGeoJSON(stream, options);\n}\n\nfunction parseFlatGeobufInBatchesToBinary(stream, options: FlatGeobufLoaderOptions) {\n // TODO: reproject binary streaming features\n // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const iterator = deserializeGeneric(stream, binaryFromFeature);\n return iterator;\n}\n\n// eslint-disable-next-line complexity\nasync function* parseFlatGeobufInBatchesToGeoJSON(stream, options: FlatGeobufLoaderOptions) {\n const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n let headerMeta;\n const iterator = deserializeGeoJson(stream, false, (header) => {\n headerMeta = header;\n });\n\n let projection;\n let firstRecord = true;\n for await (const feature of iterator) {\n if (firstRecord) {\n const crs = headerMeta && headerMeta.crs;\n if (reproject && crs) {\n projection = new Proj4Projection({from: crs.wkt, to: _targetCrs});\n }\n\n firstRecord = false;\n }\n\n if (reproject && projection) {\n // eslint-disable-next-line\n yield transformGeoJsonCoords([feature], (coords) => projection.project(coords));\n } else {\n yield feature;\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../src/lib/types.ts"],"sourcesContent":["import type {LoaderOptions} from '@loaders.gl/loader-utils';\n\nexport type FlatGeobufLoaderOptions = LoaderOptions & {\n flatgeobuf?: {\n shape?: 'geojson-row-table' | 'columnar-table' | 'geojson' | 'binary';\n };\n gis?: {\n reproject?: boolean;\n _targetCrs?: string;\n /** @deprecated Use options.flatgeobuf.shape */\n format?: 'geojson-row-table' | 'columnar-table' | 'geojson' | 'binary';\n };\n};\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"flatgeobuf-worker.js","names":["createLoaderWorker","FlatGeobufLoader"],"sources":["../../../src/workers/flatgeobuf-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {FlatGeobufLoader} from '../index';\n\ncreateLoaderWorker(FlatGeobufLoader);\n"],"mappings":";;AAAA;AACA;AAEA,IAAAA,+BAAkB,EAACC,uBAAgB,CAAC"}
|
package/dist/esm/bundle.js
CHANGED
package/dist/esm/bundle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"flatgeobuf-loader.js","names":["VERSION","FlatGeobufLoader","id","name","module","version","worker","extensions","mimeTypes","category","options","flatgeobuf","shape","_typecheckFlatGeobufLoader"],"sources":["../../src/flatgeobuf-loader.ts"],"sourcesContent":["import type {Loader} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport const FlatGeobufLoader = {\n id: 'flatgeobuf',\n name: 'FlatGeobuf',\n module: 'flatgeobuf',\n version: VERSION,\n worker: true,\n extensions: ['fgb'],\n mimeTypes: ['application/octet-stream'],\n category: 'geometry',\n options: {\n flatgeobuf: {\n // Set to GeoJSON for backwards compatibility\n shape: 'geojson'\n }\n }\n};\n\nexport const _typecheckFlatGeobufLoader: Loader = FlatGeobufLoader;\n"],"mappings":";AAIA,MAAMA,OAAO,GAAG,uBAAkB,KAAK,WAAW,sBAAiB,QAAQ;AAE3E,OAAO,MAAMC,gBAAgB,GAAG;EAC9BC,EAAE,EAAE,YAAY;EAChBC,IAAI,EAAE,YAAY;EAClBC,MAAM,EAAE,YAAY;EACpBC,OAAO,EAAEL,OAAO;EAChBM,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,QAAQ,EAAE,UAAU;EACpBC,OAAO,EAAE;IACPC,UAAU,EAAE;MAEVC,KAAK,EAAE;IACT;EACF;AACF,CAAC;AAED,OAAO,MAAMC,0BAAkC,GAAGZ,gBAAgB"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { FlatGeobufLoader as FlatGeobufWorkerLoader } from './flatgeobuf-loader';
|
|
2
2
|
import { parseFlatGeobuf, parseFlatGeobufInBatches } from './lib/parse-flatgeobuf';
|
|
3
3
|
export { FlatGeobufWorkerLoader };
|
|
4
|
-
export const FlatGeobufLoader = {
|
|
4
|
+
export const FlatGeobufLoader = {
|
|
5
|
+
...FlatGeobufWorkerLoader,
|
|
5
6
|
parse: async (arrayBuffer, options) => parseFlatGeobuf(arrayBuffer, options),
|
|
6
7
|
parseSync: parseFlatGeobuf,
|
|
7
8
|
parseInBatchesFromStream: parseFlatGeobufInBatches,
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["FlatGeobufLoader","FlatGeobufWorkerLoader","parseFlatGeobuf","parseFlatGeobufInBatches","parse","arrayBuffer","options","parseSync","parseInBatchesFromStream","binary","_typecheckFlatGeobufLoader"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {FlatGeobufLoader as FlatGeobufWorkerLoader} from './flatgeobuf-loader';\nimport {parseFlatGeobuf, parseFlatGeobufInBatches} from './lib/parse-flatgeobuf';\n\nexport {FlatGeobufWorkerLoader};\n\nexport const FlatGeobufLoader = {\n ...FlatGeobufWorkerLoader,\n parse: async (arrayBuffer, options) => parseFlatGeobuf(arrayBuffer, options),\n parseSync: parseFlatGeobuf,\n parseInBatchesFromStream: parseFlatGeobufInBatches,\n binary: true\n};\n\nexport const _typecheckFlatGeobufLoader: LoaderWithParser = FlatGeobufLoader;\n"],"mappings":"AACA,SAAQA,gBAAgB,IAAIC,sBAAsB,QAAO,qBAAqB;AAC9E,SAAQC,eAAe,EAAEC,wBAAwB,QAAO,wBAAwB;AAEhF,SAAQF,sBAAsB;AAE9B,OAAO,MAAMD,gBAAgB,GAAG;EAC9B,GAAGC,sBAAsB;EACzBG,KAAK,EAAE,OAAOC,WAAW,EAAEC,OAAO,KAAKJ,eAAe,CAACG,WAAW,EAAEC,OAAO,CAAC;EAC5EC,SAAS,EAAEL,eAAe;EAC1BM,wBAAwB,EAAEL,wBAAwB;EAClDM,MAAM,EAAE;AACV,CAAC;AAED,OAAO,MAAMC,0BAA4C,GAAGV,gBAAgB"}
|
|
@@ -8,11 +8,11 @@ function parsePoint(geometry) {
|
|
|
8
8
|
positions
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
|
-
|
|
12
11
|
function parseLines(geometry) {
|
|
13
12
|
const xy = geometry.xyArray();
|
|
14
13
|
const z = geometry.zArray();
|
|
15
14
|
const positions = blitArrays(xy, z);
|
|
15
|
+
|
|
16
16
|
const ends = geometry.endsArray() && Array.from(geometry.endsArray()) || [xy.length / 2];
|
|
17
17
|
ends.unshift(0);
|
|
18
18
|
const pathIndices = {
|
|
@@ -24,11 +24,11 @@ function parseLines(geometry) {
|
|
|
24
24
|
pathIndices
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
|
-
|
|
28
27
|
function parsePolygons(geometry) {
|
|
29
28
|
const xy = geometry.xyArray();
|
|
30
29
|
const z = geometry.zArray();
|
|
31
30
|
const positions = blitArrays(xy, z);
|
|
31
|
+
|
|
32
32
|
const ends = geometry.endsArray() && Array.from(geometry.endsArray()) || [xy.length / 2];
|
|
33
33
|
ends.unshift(0);
|
|
34
34
|
const primitivePolygonIndices = {
|
|
@@ -51,7 +51,6 @@ function parseMultiPolygons(geometry) {
|
|
|
51
51
|
let nPositions = 0;
|
|
52
52
|
let nPrimitivePolygonIndices = 1;
|
|
53
53
|
let nPolygonIndices = 1;
|
|
54
|
-
|
|
55
54
|
for (let i = 0; i < geometry.partsLength(); i++) {
|
|
56
55
|
const part = geometry.parts(i);
|
|
57
56
|
const polygon = parsePolygons(part);
|
|
@@ -60,24 +59,25 @@ function parseMultiPolygons(geometry) {
|
|
|
60
59
|
nPolygonIndices += polygon.polygonIndices.value.length - 1;
|
|
61
60
|
parsedParts.push(polygon);
|
|
62
61
|
}
|
|
63
|
-
|
|
64
62
|
const concatPositions = new Float64Array(nPositions);
|
|
65
63
|
const concatPrimitivePolygonIndices = new Uint32Array(nPrimitivePolygonIndices);
|
|
66
64
|
const concatPolygonIndices = new Uint32Array(nPolygonIndices);
|
|
67
65
|
let positionCounter = 0;
|
|
68
66
|
let primitivePolygonIndicesCounter = 1;
|
|
69
67
|
let polygonIndicesCounter = 1;
|
|
70
|
-
const positionSize = parsedParts[0].positions.size;
|
|
71
68
|
|
|
69
|
+
const positionSize = parsedParts[0].positions.size;
|
|
72
70
|
for (const parsedPart of parsedParts) {
|
|
73
71
|
concatPositions.set(parsedPart.positions.value, positionCounter * positionSize);
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
|
|
73
|
+
concatPrimitivePolygonIndices.set(
|
|
74
|
+
parsedPart.primitivePolygonIndices.value.subarray(1).map(x => x + positionCounter), primitivePolygonIndicesCounter);
|
|
75
|
+
concatPolygonIndices.set(
|
|
76
|
+
parsedPart.polygonIndices.value.subarray(1).map(x => x + positionCounter), polygonIndicesCounter);
|
|
76
77
|
positionCounter += parsedPart.positions.value.length / positionSize;
|
|
77
78
|
primitivePolygonIndicesCounter += parsedPart.primitivePolygonIndices.value.length - 1;
|
|
78
79
|
polygonIndicesCounter += parsedPart.polygonIndices.value.length - 1;
|
|
79
80
|
}
|
|
80
|
-
|
|
81
81
|
return {
|
|
82
82
|
positions: {
|
|
83
83
|
value: concatPositions,
|
|
@@ -101,42 +101,33 @@ function blitArrays(xy, z) {
|
|
|
101
101
|
size: 2
|
|
102
102
|
};
|
|
103
103
|
}
|
|
104
|
-
|
|
105
104
|
if (z.length * 2 !== xy.length) {
|
|
106
105
|
throw new Error('Z array must be half XY array\'s length');
|
|
107
106
|
}
|
|
108
|
-
|
|
109
107
|
const totalLength = xy.length + z.length;
|
|
110
108
|
const xyz = new Float64Array(totalLength);
|
|
111
|
-
|
|
112
109
|
for (let i = 0; i < xy.length / 2; i++) {
|
|
113
110
|
xyz[i * 3 + 0] = xy[i * 2 + 0];
|
|
114
111
|
xyz[i * 3 + 1] = xy[i * 2 + 1];
|
|
115
112
|
xyz[i * 3 + 2] = z[i];
|
|
116
113
|
}
|
|
117
|
-
|
|
118
114
|
return {
|
|
119
115
|
value: xyz,
|
|
120
116
|
size: 3
|
|
121
117
|
};
|
|
122
118
|
}
|
|
123
|
-
|
|
124
119
|
export function fromGeometry(geometry, type) {
|
|
125
120
|
switch (type) {
|
|
126
121
|
case GeometryType.Point:
|
|
127
122
|
case GeometryType.MultiPoint:
|
|
128
123
|
return parsePoint(geometry);
|
|
129
|
-
|
|
130
124
|
case GeometryType.LineString:
|
|
131
125
|
case GeometryType.MultiLineString:
|
|
132
126
|
return parseLines(geometry);
|
|
133
|
-
|
|
134
127
|
case GeometryType.Polygon:
|
|
135
128
|
return parsePolygons(geometry);
|
|
136
|
-
|
|
137
129
|
case GeometryType.MultiPolygon:
|
|
138
130
|
return parseMultiPolygons(geometry);
|
|
139
|
-
|
|
140
131
|
default:
|
|
141
132
|
throw new Error("Unimplemented geometry type: ".concat(type));
|
|
142
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/binary-geometries.ts"],"names":["GeometryType","parsePoint","geometry","xy","xyArray","z","zArray","positions","blitArrays","parseLines","ends","endsArray","Array","from","length","unshift","pathIndices","value","Uint16Array","size","parsePolygons","primitivePolygonIndices","polygonIndices","parseMultiPolygons","parsedParts","nPositions","nPrimitivePolygonIndices","nPolygonIndices","i","partsLength","part","parts","polygon","push","concatPositions","Float64Array","concatPrimitivePolygonIndices","Uint32Array","concatPolygonIndices","positionCounter","primitivePolygonIndicesCounter","polygonIndicesCounter","positionSize","parsedPart","set","subarray","map","x","Error","totalLength","xyz","fromGeometry","type","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon"],"mappings":"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","sourcesContent":["import {GeometryType} from 'flatgeobuf/lib/cjs/header_generated';\n\n// Parse Point to flat array\nfunction parsePoint(geometry) {\n const xy = geometry.xyArray();\n const z = geometry.zArray();\n const positions = blitArrays(xy, z);\n return {positions};\n}\n\nfunction parseLines(geometry) {\n const xy = geometry.xyArray();\n const z = geometry.zArray();\n const positions = blitArrays(xy, z);\n\n // If endsArray is null, a single LineString. Otherwise, contains the end\n // indices of each part of the MultiLineString. geometry.endsArray() omits the\n // initial 0 that we have in our internal format.\n const ends = (geometry.endsArray() && Array.from(geometry.endsArray())) || [xy.length / 2];\n ends.unshift(0);\n\n const pathIndices = {value: new Uint16Array(ends), size: 1};\n\n return {\n positions,\n pathIndices\n };\n}\n\nfunction parsePolygons(geometry) {\n const xy = geometry.xyArray();\n const z = geometry.zArray();\n const positions = blitArrays(xy, z);\n\n // If endsArray is null, a simple Polygon with no inner rings. Otherwise,\n // contains the end indices of each ring of the Polygon. geometry.endsArray()\n // omits the initial 0 that we have in our internal format.\n const ends = (geometry.endsArray() && Array.from(geometry.endsArray())) || [xy.length / 2];\n ends.unshift(0);\n\n const primitivePolygonIndices = {value: new Uint16Array(ends), size: 1};\n const polygonIndices = {value: new Uint16Array([0, xy.length / 2]), size: 1};\n\n return {\n positions,\n primitivePolygonIndices,\n polygonIndices\n };\n}\n\n// eslint-disable-next-line max-statements\nfunction parseMultiPolygons(geometry) {\n // Create arrays for each geometry part, then concatenate\n const parsedParts: any[] = [];\n let nPositions = 0;\n let nPrimitivePolygonIndices = 1;\n let nPolygonIndices = 1;\n\n for (let i = 0; i < geometry.partsLength(); i++) {\n const part = geometry.parts(i);\n const polygon = parsePolygons(part);\n\n nPositions += polygon.positions.value.length;\n nPrimitivePolygonIndices += polygon.primitivePolygonIndices.value.length - 1;\n nPolygonIndices += polygon.polygonIndices.value.length - 1;\n\n parsedParts.push(polygon);\n }\n\n const concatPositions = new Float64Array(nPositions);\n const concatPrimitivePolygonIndices = new Uint32Array(nPrimitivePolygonIndices);\n const concatPolygonIndices = new Uint32Array(nPolygonIndices);\n\n let positionCounter = 0;\n let primitivePolygonIndicesCounter = 1;\n let polygonIndicesCounter = 1;\n\n // Assumes all parts of the multipolygon have the same size\n const positionSize = parsedParts[0].positions.size;\n\n for (const parsedPart of parsedParts) {\n concatPositions.set(parsedPart.positions.value, positionCounter * positionSize);\n\n // For indices, need to add positionCounter so that position indices are\n // correct in the concatenated positions\n concatPrimitivePolygonIndices.set(\n // eslint-disable-next-line\n parsedPart.primitivePolygonIndices.value.subarray(1).map((x) => x + positionCounter),\n primitivePolygonIndicesCounter\n );\n concatPolygonIndices.set(\n // eslint-disable-next-line\n parsedPart.polygonIndices.value.subarray(1).map((x) => x + positionCounter),\n polygonIndicesCounter\n );\n\n positionCounter += parsedPart.positions.value.length / positionSize;\n primitivePolygonIndicesCounter += parsedPart.primitivePolygonIndices.value.length - 1;\n polygonIndicesCounter += parsedPart.polygonIndices.value.length - 1;\n }\n\n return {\n positions: {value: concatPositions, size: positionSize},\n primitivePolygonIndices: {value: concatPrimitivePolygonIndices, size: 1},\n polygonIndices: {value: concatPolygonIndices, size: 1}\n };\n}\n\n// Combine xy and z arrays\nfunction blitArrays(xy, z) {\n if (!z) {\n return {value: xy, size: 2};\n }\n\n if (z.length * 2 !== xy.length) {\n throw new Error('Z array must be half XY array\\'s length');\n }\n const totalLength = xy.length + z.length;\n\n const xyz = new Float64Array(totalLength);\n for (let i = 0; i < xy.length / 2; i++) {\n xyz[i * 3 + 0] = xy[i * 2 + 0];\n xyz[i * 3 + 1] = xy[i * 2 + 1];\n xyz[i * 3 + 2] = z[i];\n }\n return {value: xyz, size: 3};\n}\n\nexport function fromGeometry(geometry, type) {\n switch (type) {\n case GeometryType.Point:\n case GeometryType.MultiPoint:\n return parsePoint(geometry);\n case GeometryType.LineString:\n case GeometryType.MultiLineString:\n return parseLines(geometry);\n case GeometryType.Polygon:\n return parsePolygons(geometry);\n case GeometryType.MultiPolygon:\n return parseMultiPolygons(geometry);\n default:\n throw new Error(`Unimplemented geometry type: ${type}`);\n }\n}\n"],"file":"binary-geometries.js"}
|
|
1
|
+
{"version":3,"file":"binary-geometries.js","names":["GeometryType","parsePoint","geometry","xy","xyArray","z","zArray","positions","blitArrays","parseLines","ends","endsArray","Array","from","length","unshift","pathIndices","value","Uint16Array","size","parsePolygons","primitivePolygonIndices","polygonIndices","parseMultiPolygons","parsedParts","nPositions","nPrimitivePolygonIndices","nPolygonIndices","i","partsLength","part","parts","polygon","push","concatPositions","Float64Array","concatPrimitivePolygonIndices","Uint32Array","concatPolygonIndices","positionCounter","primitivePolygonIndicesCounter","polygonIndicesCounter","positionSize","parsedPart","set","subarray","map","x","Error","totalLength","xyz","fromGeometry","type","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon"],"sources":["../../../src/lib/binary-geometries.ts"],"sourcesContent":["import {GeometryType} from 'flatgeobuf/lib/cjs/header_generated';\n\n// Parse Point to flat array\nfunction parsePoint(geometry) {\n const xy = geometry.xyArray();\n const z = geometry.zArray();\n const positions = blitArrays(xy, z);\n return {positions};\n}\n\nfunction parseLines(geometry) {\n const xy = geometry.xyArray();\n const z = geometry.zArray();\n const positions = blitArrays(xy, z);\n\n // If endsArray is null, a single LineString. Otherwise, contains the end\n // indices of each part of the MultiLineString. geometry.endsArray() omits the\n // initial 0 that we have in our internal format.\n const ends = (geometry.endsArray() && Array.from(geometry.endsArray())) || [xy.length / 2];\n ends.unshift(0);\n\n const pathIndices = {value: new Uint16Array(ends), size: 1};\n\n return {\n positions,\n pathIndices\n };\n}\n\nfunction parsePolygons(geometry) {\n const xy = geometry.xyArray();\n const z = geometry.zArray();\n const positions = blitArrays(xy, z);\n\n // If endsArray is null, a simple Polygon with no inner rings. Otherwise,\n // contains the end indices of each ring of the Polygon. geometry.endsArray()\n // omits the initial 0 that we have in our internal format.\n const ends = (geometry.endsArray() && Array.from(geometry.endsArray())) || [xy.length / 2];\n ends.unshift(0);\n\n const primitivePolygonIndices = {value: new Uint16Array(ends), size: 1};\n const polygonIndices = {value: new Uint16Array([0, xy.length / 2]), size: 1};\n\n return {\n positions,\n primitivePolygonIndices,\n polygonIndices\n };\n}\n\n// eslint-disable-next-line max-statements\nfunction parseMultiPolygons(geometry) {\n // Create arrays for each geometry part, then concatenate\n const parsedParts: any[] = [];\n let nPositions = 0;\n let nPrimitivePolygonIndices = 1;\n let nPolygonIndices = 1;\n\n for (let i = 0; i < geometry.partsLength(); i++) {\n const part = geometry.parts(i);\n const polygon = parsePolygons(part);\n\n nPositions += polygon.positions.value.length;\n nPrimitivePolygonIndices += polygon.primitivePolygonIndices.value.length - 1;\n nPolygonIndices += polygon.polygonIndices.value.length - 1;\n\n parsedParts.push(polygon);\n }\n\n const concatPositions = new Float64Array(nPositions);\n const concatPrimitivePolygonIndices = new Uint32Array(nPrimitivePolygonIndices);\n const concatPolygonIndices = new Uint32Array(nPolygonIndices);\n\n let positionCounter = 0;\n let primitivePolygonIndicesCounter = 1;\n let polygonIndicesCounter = 1;\n\n // Assumes all parts of the multipolygon have the same size\n const positionSize = parsedParts[0].positions.size;\n\n for (const parsedPart of parsedParts) {\n concatPositions.set(parsedPart.positions.value, positionCounter * positionSize);\n\n // For indices, need to add positionCounter so that position indices are\n // correct in the concatenated positions\n concatPrimitivePolygonIndices.set(\n // eslint-disable-next-line\n parsedPart.primitivePolygonIndices.value.subarray(1).map((x) => x + positionCounter),\n primitivePolygonIndicesCounter\n );\n concatPolygonIndices.set(\n // eslint-disable-next-line\n parsedPart.polygonIndices.value.subarray(1).map((x) => x + positionCounter),\n polygonIndicesCounter\n );\n\n positionCounter += parsedPart.positions.value.length / positionSize;\n primitivePolygonIndicesCounter += parsedPart.primitivePolygonIndices.value.length - 1;\n polygonIndicesCounter += parsedPart.polygonIndices.value.length - 1;\n }\n\n return {\n positions: {value: concatPositions, size: positionSize},\n primitivePolygonIndices: {value: concatPrimitivePolygonIndices, size: 1},\n polygonIndices: {value: concatPolygonIndices, size: 1}\n };\n}\n\n// Combine xy and z arrays\nfunction blitArrays(xy, z) {\n if (!z) {\n return {value: xy, size: 2};\n }\n\n if (z.length * 2 !== xy.length) {\n throw new Error('Z array must be half XY array\\'s length');\n }\n const totalLength = xy.length + z.length;\n\n const xyz = new Float64Array(totalLength);\n for (let i = 0; i < xy.length / 2; i++) {\n xyz[i * 3 + 0] = xy[i * 2 + 0];\n xyz[i * 3 + 1] = xy[i * 2 + 1];\n xyz[i * 3 + 2] = z[i];\n }\n return {value: xyz, size: 3};\n}\n\nexport function fromGeometry(geometry, type) {\n switch (type) {\n case GeometryType.Point:\n case GeometryType.MultiPoint:\n return parsePoint(geometry);\n case GeometryType.LineString:\n case GeometryType.MultiLineString:\n return parseLines(geometry);\n case GeometryType.Polygon:\n return parsePolygons(geometry);\n case GeometryType.MultiPolygon:\n return parseMultiPolygons(geometry);\n default:\n throw new Error(`Unimplemented geometry type: ${type}`);\n }\n}\n"],"mappings":"AAAA,SAAQA,YAAY,QAAO,qCAAqC;;AAGhE,SAASC,UAAU,CAACC,QAAQ,EAAE;EAC5B,MAAMC,EAAE,GAAGD,QAAQ,CAACE,OAAO,EAAE;EAC7B,MAAMC,CAAC,GAAGH,QAAQ,CAACI,MAAM,EAAE;EAC3B,MAAMC,SAAS,GAAGC,UAAU,CAACL,EAAE,EAAEE,CAAC,CAAC;EACnC,OAAO;IAACE;EAAS,CAAC;AACpB;AAEA,SAASE,UAAU,CAACP,QAAQ,EAAE;EAC5B,MAAMC,EAAE,GAAGD,QAAQ,CAACE,OAAO,EAAE;EAC7B,MAAMC,CAAC,GAAGH,QAAQ,CAACI,MAAM,EAAE;EAC3B,MAAMC,SAAS,GAAGC,UAAU,CAACL,EAAE,EAAEE,CAAC,CAAC;;EAKnC,MAAMK,IAAI,GAAIR,QAAQ,CAACS,SAAS,EAAE,IAAIC,KAAK,CAACC,IAAI,CAACX,QAAQ,CAACS,SAAS,EAAE,CAAC,IAAK,CAACR,EAAE,CAACW,MAAM,GAAG,CAAC,CAAC;EAC1FJ,IAAI,CAACK,OAAO,CAAC,CAAC,CAAC;EAEf,MAAMC,WAAW,GAAG;IAACC,KAAK,EAAE,IAAIC,WAAW,CAACR,IAAI,CAAC;IAAES,IAAI,EAAE;EAAC,CAAC;EAE3D,OAAO;IACLZ,SAAS;IACTS;EACF,CAAC;AACH;AAEA,SAASI,aAAa,CAAClB,QAAQ,EAAE;EAC/B,MAAMC,EAAE,GAAGD,QAAQ,CAACE,OAAO,EAAE;EAC7B,MAAMC,CAAC,GAAGH,QAAQ,CAACI,MAAM,EAAE;EAC3B,MAAMC,SAAS,GAAGC,UAAU,CAACL,EAAE,EAAEE,CAAC,CAAC;;EAKnC,MAAMK,IAAI,GAAIR,QAAQ,CAACS,SAAS,EAAE,IAAIC,KAAK,CAACC,IAAI,CAACX,QAAQ,CAACS,SAAS,EAAE,CAAC,IAAK,CAACR,EAAE,CAACW,MAAM,GAAG,CAAC,CAAC;EAC1FJ,IAAI,CAACK,OAAO,CAAC,CAAC,CAAC;EAEf,MAAMM,uBAAuB,GAAG;IAACJ,KAAK,EAAE,IAAIC,WAAW,CAACR,IAAI,CAAC;IAAES,IAAI,EAAE;EAAC,CAAC;EACvE,MAAMG,cAAc,GAAG;IAACL,KAAK,EAAE,IAAIC,WAAW,CAAC,CAAC,CAAC,EAAEf,EAAE,CAACW,MAAM,GAAG,CAAC,CAAC,CAAC;IAAEK,IAAI,EAAE;EAAC,CAAC;EAE5E,OAAO;IACLZ,SAAS;IACTc,uBAAuB;IACvBC;EACF,CAAC;AACH;;AAGA,SAASC,kBAAkB,CAACrB,QAAQ,EAAE;EAEpC,MAAMsB,WAAkB,GAAG,EAAE;EAC7B,IAAIC,UAAU,GAAG,CAAC;EAClB,IAAIC,wBAAwB,GAAG,CAAC;EAChC,IAAIC,eAAe,GAAG,CAAC;EAEvB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG1B,QAAQ,CAAC2B,WAAW,EAAE,EAAED,CAAC,EAAE,EAAE;IAC/C,MAAME,IAAI,GAAG5B,QAAQ,CAAC6B,KAAK,CAACH,CAAC,CAAC;IAC9B,MAAMI,OAAO,GAAGZ,aAAa,CAACU,IAAI,CAAC;IAEnCL,UAAU,IAAIO,OAAO,CAACzB,SAAS,CAACU,KAAK,CAACH,MAAM;IAC5CY,wBAAwB,IAAIM,OAAO,CAACX,uBAAuB,CAACJ,KAAK,CAACH,MAAM,GAAG,CAAC;IAC5Ea,eAAe,IAAIK,OAAO,CAACV,cAAc,CAACL,KAAK,CAACH,MAAM,GAAG,CAAC;IAE1DU,WAAW,CAACS,IAAI,CAACD,OAAO,CAAC;EAC3B;EAEA,MAAME,eAAe,GAAG,IAAIC,YAAY,CAACV,UAAU,CAAC;EACpD,MAAMW,6BAA6B,GAAG,IAAIC,WAAW,CAACX,wBAAwB,CAAC;EAC/E,MAAMY,oBAAoB,GAAG,IAAID,WAAW,CAACV,eAAe,CAAC;EAE7D,IAAIY,eAAe,GAAG,CAAC;EACvB,IAAIC,8BAA8B,GAAG,CAAC;EACtC,IAAIC,qBAAqB,GAAG,CAAC;;EAG7B,MAAMC,YAAY,GAAGlB,WAAW,CAAC,CAAC,CAAC,CAACjB,SAAS,CAACY,IAAI;EAElD,KAAK,MAAMwB,UAAU,IAAInB,WAAW,EAAE;IACpCU,eAAe,CAACU,GAAG,CAACD,UAAU,CAACpC,SAAS,CAACU,KAAK,EAAEsB,eAAe,GAAGG,YAAY,CAAC;;IAI/EN,6BAA6B,CAACQ,GAAG;IAE/BD,UAAU,CAACtB,uBAAuB,CAACJ,KAAK,CAAC4B,QAAQ,CAAC,CAAC,CAAC,CAACC,GAAG,CAAEC,CAAC,IAAKA,CAAC,GAAGR,eAAe,CAAC,EACpFC,8BAA8B,CAC/B;IACDF,oBAAoB,CAACM,GAAG;IAEtBD,UAAU,CAACrB,cAAc,CAACL,KAAK,CAAC4B,QAAQ,CAAC,CAAC,CAAC,CAACC,GAAG,CAAEC,CAAC,IAAKA,CAAC,GAAGR,eAAe,CAAC,EAC3EE,qBAAqB,CACtB;IAEDF,eAAe,IAAII,UAAU,CAACpC,SAAS,CAACU,KAAK,CAACH,MAAM,GAAG4B,YAAY;IACnEF,8BAA8B,IAAIG,UAAU,CAACtB,uBAAuB,CAACJ,KAAK,CAACH,MAAM,GAAG,CAAC;IACrF2B,qBAAqB,IAAIE,UAAU,CAACrB,cAAc,CAACL,KAAK,CAACH,MAAM,GAAG,CAAC;EACrE;EAEA,OAAO;IACLP,SAAS,EAAE;MAACU,KAAK,EAAEiB,eAAe;MAAEf,IAAI,EAAEuB;IAAY,CAAC;IACvDrB,uBAAuB,EAAE;MAACJ,KAAK,EAAEmB,6BAA6B;MAAEjB,IAAI,EAAE;IAAC,CAAC;IACxEG,cAAc,EAAE;MAACL,KAAK,EAAEqB,oBAAoB;MAAEnB,IAAI,EAAE;IAAC;EACvD,CAAC;AACH;;AAGA,SAASX,UAAU,CAACL,EAAE,EAAEE,CAAC,EAAE;EACzB,IAAI,CAACA,CAAC,EAAE;IACN,OAAO;MAACY,KAAK,EAAEd,EAAE;MAAEgB,IAAI,EAAE;IAAC,CAAC;EAC7B;EAEA,IAAId,CAAC,CAACS,MAAM,GAAG,CAAC,KAAKX,EAAE,CAACW,MAAM,EAAE;IAC9B,MAAM,IAAIkC,KAAK,CAAC,yCAAyC,CAAC;EAC5D;EACA,MAAMC,WAAW,GAAG9C,EAAE,CAACW,MAAM,GAAGT,CAAC,CAACS,MAAM;EAExC,MAAMoC,GAAG,GAAG,IAAIf,YAAY,CAACc,WAAW,CAAC;EACzC,KAAK,IAAIrB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGzB,EAAE,CAACW,MAAM,GAAG,CAAC,EAAEc,CAAC,EAAE,EAAE;IACtCsB,GAAG,CAACtB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAGzB,EAAE,CAACyB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9BsB,GAAG,CAACtB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAGzB,EAAE,CAACyB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9BsB,GAAG,CAACtB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAGvB,CAAC,CAACuB,CAAC,CAAC;EACvB;EACA,OAAO;IAACX,KAAK,EAAEiC,GAAG;IAAE/B,IAAI,EAAE;EAAC,CAAC;AAC9B;AAEA,OAAO,SAASgC,YAAY,CAACjD,QAAQ,EAAEkD,IAAI,EAAE;EAC3C,QAAQA,IAAI;IACV,KAAKpD,YAAY,CAACqD,KAAK;IACvB,KAAKrD,YAAY,CAACsD,UAAU;MAC1B,OAAOrD,UAAU,CAACC,QAAQ,CAAC;IAC7B,KAAKF,YAAY,CAACuD,UAAU;IAC5B,KAAKvD,YAAY,CAACwD,eAAe;MAC/B,OAAO/C,UAAU,CAACP,QAAQ,CAAC;IAC7B,KAAKF,YAAY,CAACyD,OAAO;MACvB,OAAOrC,aAAa,CAAClB,QAAQ,CAAC;IAChC,KAAKF,YAAY,CAAC0D,YAAY;MAC5B,OAAOnC,kBAAkB,CAACrB,QAAQ,CAAC;IACrC;MACE,MAAM,IAAI8C,KAAK,wCAAiCI,IAAI,EAAG;EAAC;AAE9D"}
|