@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.
@@ -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
- _ref$reproject = _ref.reproject,
83
- reproject = _ref$reproject === void 0 ? false : _ref$reproject,
84
- _ref$_targetCrs = _ref._targetCrs,
85
- _targetCrs = _ref$_targetCrs === void 0 ? 'WGS84' : _ref$_targetCrs;
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
- headerMeta = header;
92
- }),
93
- features = _deserializeGeoJson.features;
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, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, feature, crs;
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
- _iteratorNormalCompletion = true;
121
+ _iteratorAbruptCompletion = false;
147
122
  _didIteratorError = false;
148
123
  _context.prev = 5;
149
- _iterator = (0, _asyncIterator2.default)(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
- _iteratorNormalCompletion = _step.done;
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 = 22;
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
- case 20:
195
- _context.next = 24;
152
+ case 15:
153
+ _context.next = 19;
196
154
  break;
197
-
198
- case 22:
199
- _context.next = 24;
155
+ case 17:
156
+ _context.next = 19;
200
157
  return feature;
201
-
202
- case 24:
203
- _iteratorNormalCompletion = true;
158
+ case 19:
159
+ _iteratorAbruptCompletion = false;
204
160
  _context.next = 7;
205
161
  break;
206
-
207
- case 27:
208
- _context.next = 33;
162
+ case 22:
163
+ _context.next = 28;
209
164
  break;
210
-
211
- case 29:
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
- case 33:
218
- _context.prev = 33;
219
- _context.prev = 34;
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
- case 38:
230
- _context.prev = 38;
231
-
179
+ case 33:
180
+ _context.prev = 33;
232
181
  if (!_didIteratorError) {
233
- _context.next = 41;
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
- case 43:
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, 29, 33, 43], [34,, 38, 42]]);
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,"sources":["../../../src/lib/parse-flatgeobuf.ts"],"names":["binaryFromFeature","feature","header","geometry","geometryType","type","parsedGeometry","properties","columns","parseFlatGeobuf","arrayBuffer","options","shape","gis","format","flatgeobuf","table","data","parseFlatGeobufToGeoJSON","parseFlatGeobufToBinary","Error","array","Uint8Array","byteLength","reproject","_targetCrs","arr","headerMeta","features","crs","projection","Proj4Projection","from","wkt","to","e","coords","project","parseFlatGeobufInBatches","stream","parseFlatGeobufInBatchesToBinary","parseFlatGeobufInBatchesToGeoJSON","iterator","firstRecord"],"mappings":"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","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"],"file":"parse-flatgeobuf.js"}
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,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
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,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _loaderUtils = require("@loaders.gl/loader-utils");
4
-
5
4
  var _index = require("../index");
6
-
7
5
  (0, _loaderUtils.createLoaderWorker)(_index.FlatGeobufLoader);
8
6
  //# sourceMappingURL=flatgeobuf-worker.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/workers/flatgeobuf-worker.ts"],"names":["FlatGeobufLoader"],"mappings":";;AAAA;;AACA;;AAEA,qCAAmBA,uBAAnB","sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {FlatGeobufLoader} from '../index';\n\ncreateLoaderWorker(FlatGeobufLoader);\n"],"file":"flatgeobuf-worker.js"}
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"}
@@ -1,5 +1,5 @@
1
- const moduleExports = require('./index');
2
1
 
2
+ const moduleExports = require('./index');
3
3
  globalThis.loaders = globalThis.loaders || {};
4
4
  module.exports = Object.assign(globalThis.loaders, moduleExports);
5
5
  //# sourceMappingURL=bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":"AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
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,4 +1,5 @@
1
- const VERSION = typeof "3.2.12" !== 'undefined' ? "3.2.12" : 'latest';
1
+
2
+ const VERSION = typeof "3.3.0-alpha.10" !== 'undefined' ? "3.3.0-alpha.10" : 'latest';
2
3
  export const FlatGeobufLoader = {
3
4
  id: 'flatgeobuf',
4
5
  name: 'FlatGeobuf',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/flatgeobuf-loader.ts"],"names":["VERSION","FlatGeobufLoader","id","name","module","version","worker","extensions","mimeTypes","category","options","flatgeobuf","shape","_typecheckFlatGeobufLoader"],"mappings":"AAIA,MAAMA,OAAO,GAAG,oBAAuB,WAAvB,cAAmD,QAAnE;AAEA,OAAO,MAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,EAAE,EAAE,YAD0B;AAE9BC,EAAAA,IAAI,EAAE,YAFwB;AAG9BC,EAAAA,MAAM,EAAE,YAHsB;AAI9BC,EAAAA,OAAO,EAAEL,OAJqB;AAK9BM,EAAAA,MAAM,EAAE,IALsB;AAM9BC,EAAAA,UAAU,EAAE,CAAC,KAAD,CANkB;AAO9BC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAPmB;AAQ9BC,EAAAA,QAAQ,EAAE,UARoB;AAS9BC,EAAAA,OAAO,EAAE;AACPC,IAAAA,UAAU,EAAE;AAEVC,MAAAA,KAAK,EAAE;AAFG;AADL;AATqB,CAAzB;AAiBP,OAAO,MAAMC,0BAAkC,GAAGZ,gBAA3C","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"],"file":"flatgeobuf-loader.js"}
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 = { ...FlatGeobufWorkerLoader,
4
+ export const FlatGeobufLoader = {
5
+ ...FlatGeobufWorkerLoader,
5
6
  parse: async (arrayBuffer, options) => parseFlatGeobuf(arrayBuffer, options),
6
7
  parseSync: parseFlatGeobuf,
7
8
  parseInBatchesFromStream: parseFlatGeobufInBatches,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":["FlatGeobufLoader","FlatGeobufWorkerLoader","parseFlatGeobuf","parseFlatGeobufInBatches","parse","arrayBuffer","options","parseSync","parseInBatchesFromStream","binary","_typecheckFlatGeobufLoader"],"mappings":"AACA,SAAQA,gBAAgB,IAAIC,sBAA5B,QAAyD,qBAAzD;AACA,SAAQC,eAAR,EAAyBC,wBAAzB,QAAwD,wBAAxD;AAEA,SAAQF,sBAAR;AAEA,OAAO,MAAMD,gBAAgB,GAAG,EAC9B,GAAGC,sBAD2B;AAE9BG,EAAAA,KAAK,EAAE,OAAOC,WAAP,EAAoBC,OAApB,KAAgCJ,eAAe,CAACG,WAAD,EAAcC,OAAd,CAFxB;AAG9BC,EAAAA,SAAS,EAAEL,eAHmB;AAI9BM,EAAAA,wBAAwB,EAAEL,wBAJI;AAK9BM,EAAAA,MAAM,EAAE;AALsB,CAAzB;AAQP,OAAO,MAAMC,0BAA4C,GAAGV,gBAArD","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"],"file":"index.js"}
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
- concatPrimitivePolygonIndices.set(parsedPart.primitivePolygonIndices.value.subarray(1).map(x => x + positionCounter), primitivePolygonIndicesCounter);
75
- concatPolygonIndices.set(parsedPart.polygonIndices.value.subarray(1).map(x => x + positionCounter), polygonIndicesCounter);
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"}