@loaders.gl/wkt 3.4.0-alpha.2 → 3.4.0-alpha.4

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.
Files changed (45) hide show
  1. package/dist/es5/index.js.map +1 -1
  2. package/dist/es5/lib/encode-wkb.js +4 -21
  3. package/dist/es5/lib/encode-wkb.js.map +1 -1
  4. package/dist/es5/lib/encode-wkt.js +0 -1
  5. package/dist/es5/lib/encode-wkt.js.map +1 -1
  6. package/dist/es5/lib/parse-wkb.js +1 -13
  7. package/dist/es5/lib/parse-wkb.js.map +1 -1
  8. package/dist/es5/lib/parse-wkt.js +0 -3
  9. package/dist/es5/lib/parse-wkt.js.map +1 -1
  10. package/dist/es5/lib/utils/binary-writer.js +3 -10
  11. package/dist/es5/lib/utils/binary-writer.js.map +1 -1
  12. package/dist/es5/lib/utils/version.js +1 -1
  13. package/dist/es5/lib/utils/version.js.map +1 -1
  14. package/dist/es5/wkb-loader.js +6 -9
  15. package/dist/es5/wkb-loader.js.map +1 -1
  16. package/dist/es5/wkb-writer.js.map +1 -1
  17. package/dist/es5/wkt-loader.js +6 -9
  18. package/dist/es5/wkt-loader.js.map +1 -1
  19. package/dist/es5/wkt-writer.js.map +1 -1
  20. package/dist/es5/workers/wkb-worker.js.map +1 -1
  21. package/dist/es5/workers/wkt-worker.js.map +1 -1
  22. package/dist/esm/bundle.js +0 -1
  23. package/dist/esm/bundle.js.map +1 -1
  24. package/dist/esm/lib/encode-wkb.js +3 -23
  25. package/dist/esm/lib/encode-wkb.js.map +1 -1
  26. package/dist/esm/lib/encode-wkt.js +0 -2
  27. package/dist/esm/lib/encode-wkt.js.map +1 -1
  28. package/dist/esm/lib/parse-wkb.js +0 -12
  29. package/dist/esm/lib/parse-wkb.js.map +1 -1
  30. package/dist/esm/lib/parse-wkt.js +0 -4
  31. package/dist/esm/lib/parse-wkt.js.map +1 -1
  32. package/dist/esm/lib/utils/binary-writer.js +0 -4
  33. package/dist/esm/lib/utils/binary-writer.js.map +1 -1
  34. package/dist/esm/lib/utils/version.js +1 -2
  35. package/dist/esm/lib/utils/version.js.map +1 -1
  36. package/dist/esm/wkb-loader.js +0 -2
  37. package/dist/esm/wkb-loader.js.map +1 -1
  38. package/dist/esm/wkb-writer.js +0 -1
  39. package/dist/esm/wkb-writer.js.map +1 -1
  40. package/dist/esm/wkt-loader.js +0 -2
  41. package/dist/esm/wkt-loader.js.map +1 -1
  42. package/dist/esm/wkt-writer.js +0 -1
  43. package/dist/esm/wkt-writer.js.map +1 -1
  44. package/dist/wkt-worker.js +1 -1
  45. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export {WKBLoader, WKBWorkerLoader} from './wkb-loader';\nexport {WKTLoader, WKTWorkerLoader} from './wkt-loader';\nexport {WKTWriter} from './wkt-writer';\nexport {WKBWriter} from './wkb-writer';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA"}
1
+ {"version":3,"file":"index.js","names":["_wkbLoader","require","_wktLoader","_wktWriter","_wkbWriter"],"sources":["../../src/index.ts"],"sourcesContent":["export {WKBLoader, WKBWorkerLoader} from './wkb-loader';\nexport {WKTLoader, WKTWorkerLoader} from './wkt-loader';\nexport {WKTWriter} from './wkt-writer';\nexport {WKBWriter} from './wkb-writer';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA"}
@@ -9,9 +9,8 @@ var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray")
9
9
  var _binaryWriter = _interopRequireDefault(require("./utils/binary-writer"));
10
10
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
11
11
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
12
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
13
- var WKB;
14
- (function (WKB) {
12
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
13
+ var WKB = function (WKB) {
15
14
  WKB[WKB["Point"] = 1] = "Point";
16
15
  WKB[WKB["LineString"] = 2] = "LineString";
17
16
  WKB[WKB["Polygon"] = 3] = "Polygon";
@@ -19,12 +18,12 @@ var WKB;
19
18
  WKB[WKB["MultiLineString"] = 5] = "MultiLineString";
20
19
  WKB[WKB["MultiPolygon"] = 6] = "MultiPolygon";
21
20
  WKB[WKB["GeometryCollection"] = 7] = "GeometryCollection";
22
- })(WKB || (WKB = {}));
21
+ return WKB;
22
+ }(WKB || {});
23
23
  function encodeWKB(geometry, options) {
24
24
  if (geometry.type === 'Feature') {
25
25
  geometry = geometry.geometry;
26
26
  }
27
-
28
27
  if ('wkb' in options) {
29
28
  options = options.wkb;
30
29
  }
@@ -48,7 +47,6 @@ function encodeWKB(geometry, options) {
48
47
  throw new Error("Unhandled case: ".concat(exhaustiveCheck));
49
48
  }
50
49
  }
51
-
52
50
  function getGeometrySize(geometry, options) {
53
51
  switch (geometry.type) {
54
52
  case 'Point':
@@ -70,12 +68,10 @@ function getGeometrySize(geometry, options) {
70
68
  throw new Error("Unhandled case: ".concat(exhaustiveCheck));
71
69
  }
72
70
  }
73
-
74
71
  function encodePoint(coordinates, options) {
75
72
  var writer = new _binaryWriter.default(getPointSize(options));
76
73
  writer.writeInt8(1);
77
74
  writeWkbType(writer, WKB.Point, options);
78
-
79
75
  if (typeof coordinates[0] === 'undefined' && typeof coordinates[1] === 'undefined') {
80
76
  writer.writeDoubleLE(NaN);
81
77
  writer.writeDoubleLE(NaN);
@@ -90,7 +86,6 @@ function encodePoint(coordinates, options) {
90
86
  }
91
87
  return writer.arrayBuffer;
92
88
  }
93
-
94
89
  function writeCoordinate(writer, coordinate, options) {
95
90
  writer.writeDoubleLE(coordinate[0]);
96
91
  writer.writeDoubleLE(coordinate[1]);
@@ -101,12 +96,10 @@ function writeCoordinate(writer, coordinate, options) {
101
96
  writer.writeDoubleLE(coordinate[3]);
102
97
  }
103
98
  }
104
-
105
99
  function getPointSize(options) {
106
100
  var coordinateSize = getCoordinateSize(options);
107
101
  return 1 + 4 + coordinateSize;
108
102
  }
109
-
110
103
  function encodeLineString(coordinates, options) {
111
104
  var size = getLineStringSize(coordinates, options);
112
105
  var writer = new _binaryWriter.default(size);
@@ -127,12 +120,10 @@ function encodeLineString(coordinates, options) {
127
120
  }
128
121
  return writer.arrayBuffer;
129
122
  }
130
-
131
123
  function getLineStringSize(coordinates, options) {
132
124
  var coordinateSize = getCoordinateSize(options);
133
125
  return 1 + 4 + 4 + coordinates.length * coordinateSize;
134
126
  }
135
-
136
127
  function encodePolygon(coordinates, options) {
137
128
  var writer = new _binaryWriter.default(getPolygonSize(coordinates, options));
138
129
  writer.writeInt8(1);
@@ -184,7 +175,6 @@ function encodePolygon(coordinates, options) {
184
175
  }
185
176
  return writer.arrayBuffer;
186
177
  }
187
-
188
178
  function getPolygonSize(coordinates, options) {
189
179
  var coordinateSize = getCoordinateSize(options);
190
180
  var _coordinates2 = (0, _toArray2.default)(coordinates),
@@ -208,7 +198,6 @@ function getPolygonSize(coordinates, options) {
208
198
  }
209
199
  return size;
210
200
  }
211
-
212
201
  function encodeMultiPoint(multiPoint, options) {
213
202
  var writer = new _binaryWriter.default(getMultiPointSize(multiPoint, options));
214
203
  var points = multiPoint.coordinates;
@@ -230,15 +219,12 @@ function encodeMultiPoint(multiPoint, options) {
230
219
  }
231
220
  return writer.arrayBuffer;
232
221
  }
233
-
234
222
  function getMultiPointSize(multiPoint, options) {
235
223
  var coordinateSize = getCoordinateSize(options);
236
224
  var points = multiPoint.coordinates;
237
-
238
225
  coordinateSize += 5;
239
226
  return 1 + 4 + 4 + points.length * coordinateSize;
240
227
  }
241
-
242
228
  function encodeMultiLineString(multiLineString, options) {
243
229
  var writer = new _binaryWriter.default(getMultiLineStringSize(multiLineString, options));
244
230
  var lineStrings = multiLineString.coordinates;
@@ -260,7 +246,6 @@ function encodeMultiLineString(multiLineString, options) {
260
246
  }
261
247
  return writer.arrayBuffer;
262
248
  }
263
-
264
249
  function getMultiLineStringSize(multiLineString, options) {
265
250
  var size = 1 + 4 + 4;
266
251
  var lineStrings = multiLineString.coordinates;
@@ -352,7 +337,6 @@ function getGeometryCollectionSize(collection, options) {
352
337
  }
353
338
  return size;
354
339
  }
355
-
356
340
  function writeWkbType(writer, geometryType, options) {
357
341
  var hasZ = options.hasZ,
358
342
  hasM = options.hasM,
@@ -376,7 +360,6 @@ function writeWkbType(writer, geometryType, options) {
376
360
  }
377
361
  writer.writeUInt32LE(dimensionType + geometryType >>> 0);
378
362
  }
379
-
380
363
  function getCoordinateSize(options) {
381
364
  var coordinateSize = 16;
382
365
  if (options.hasZ) {
@@ -1 +1 @@
1
- {"version":3,"file":"encode-wkb.js","names":["WKB","encodeWKB","geometry","options","type","wkb","encodePoint","coordinates","encodeLineString","encodePolygon","encodeMultiPoint","encodeMultiPolygon","encodeMultiLineString","encodeGeometryCollection","exhaustiveCheck","Error","getGeometrySize","getPointSize","getLineStringSize","getPolygonSize","getMultiPointSize","getMultiPolygonSize","getMultiLineStringSize","getGeometryCollectionSize","writer","BinaryWriter","writeInt8","writeWkbType","Point","writeDoubleLE","NaN","hasZ","hasM","writeCoordinate","arrayBuffer","coordinate","coordinateSize","getCoordinateSize","size","LineString","writeUInt32LE","length","Polygon","exteriorRing","interiorRings","interiorRing","multiPoint","points","MultiPoint","point","writeBuffer","multiLineString","lineStrings","MultiLineString","lineString","encodedLineString","multiPolygon","polygons","MultiPolygon","polygon","encodedPolygon","collection","GeometryCollection","geometries","geometryType","srid","dimensionType"],"sources":["../../../src/lib/encode-wkb.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Forked from https://github.com/cschwarz/wkx under MIT license, Copyright (c) 2013 Christian Schwarz\n// Reference: https://www.ogc.org/standards/sfa\n\nimport type {\n Feature,\n Geometry,\n Point,\n MultiPoint,\n LineString,\n MultiLineString,\n Polygon,\n MultiPolygon,\n GeometryCollection\n} from '@loaders.gl/schema';\n\nimport BinaryWriter from './utils/binary-writer';\n\n/**\n * Integer code for geometry type\n * Reference: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary\n */\nenum WKB {\n Point = 1,\n LineString = 2,\n Polygon = 3,\n MultiPoint = 4,\n MultiLineString = 5,\n MultiPolygon = 6,\n GeometryCollection = 7\n}\n\n/**\n * Options for encodeWKB\n */\ninterface WKBOptions {\n /** Does the GeoJSON input have Z values? */\n hasZ?: boolean;\n\n /** Does the GeoJSON input have M values? */\n hasM?: boolean;\n\n /** Spatial reference for input GeoJSON */\n srid?: any;\n}\n\n/**\n * Encodes a GeoJSON object into WKB\n * @param geojson A GeoJSON Feature or Geometry\n * @returns string\n */\nexport default function encodeWKB(\n geometry: Geometry | Feature,\n options: WKBOptions | {wkb: WKBOptions}\n): ArrayBuffer {\n if (geometry.type === 'Feature') {\n geometry = geometry.geometry;\n }\n\n // Options should be wrapped in a `wkb` key, but we allow top-level options here for backwards\n // compatibility\n if ('wkb' in options) {\n options = options.wkb;\n }\n\n switch (geometry.type) {\n case 'Point':\n return encodePoint(geometry.coordinates, options);\n case 'LineString':\n return encodeLineString(geometry.coordinates, options);\n case 'Polygon':\n return encodePolygon(geometry.coordinates, options);\n case 'MultiPoint':\n return encodeMultiPoint(geometry, options);\n case 'MultiPolygon':\n return encodeMultiPolygon(geometry, options);\n case 'MultiLineString':\n return encodeMultiLineString(geometry, options);\n case 'GeometryCollection':\n return encodeGeometryCollection(geometry, options);\n default:\n const exhaustiveCheck: never = geometry;\n throw new Error(`Unhandled case: ${exhaustiveCheck}`);\n }\n}\n\n/** Calculate the binary size (in the WKB encoding) of a specific GeoJSON geometry */\nfunction getGeometrySize(geometry: Geometry, options: WKBOptions): number {\n switch (geometry.type) {\n case 'Point':\n return getPointSize(options);\n case 'LineString':\n return getLineStringSize(geometry.coordinates, options);\n case 'Polygon':\n return getPolygonSize(geometry.coordinates, options);\n case 'MultiPoint':\n return getMultiPointSize(geometry, options);\n case 'MultiPolygon':\n return getMultiPolygonSize(geometry, options);\n case 'MultiLineString':\n return getMultiLineStringSize(geometry, options);\n case 'GeometryCollection':\n return getGeometryCollectionSize(geometry, options);\n default:\n const exhaustiveCheck: never = geometry;\n throw new Error(`Unhandled case: ${exhaustiveCheck}`);\n }\n}\n\n/** Encode Point geometry as WKB ArrayBuffer */\nfunction encodePoint(coordinates: Point['coordinates'], options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getPointSize(options));\n\n writer.writeInt8(1);\n writeWkbType(writer, WKB.Point, options);\n\n // I believe this special case is to handle writing Point(NaN, NaN) correctly\n if (typeof coordinates[0] === 'undefined' && typeof coordinates[1] === 'undefined') {\n writer.writeDoubleLE(NaN);\n writer.writeDoubleLE(NaN);\n\n if (options.hasZ) {\n writer.writeDoubleLE(NaN);\n }\n if (options.hasM) {\n writer.writeDoubleLE(NaN);\n }\n } else {\n writeCoordinate(writer, coordinates, options);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Write coordinate to buffer */\nfunction writeCoordinate(\n writer: BinaryWriter,\n coordinate: Point['coordinates'],\n options: WKBOptions\n): void {\n writer.writeDoubleLE(coordinate[0]);\n writer.writeDoubleLE(coordinate[1]);\n\n if (options.hasZ) {\n writer.writeDoubleLE(coordinate[2]);\n }\n if (options.hasM) {\n writer.writeDoubleLE(coordinate[3]);\n }\n}\n\n/** Get encoded size of Point geometry */\nfunction getPointSize(options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n return 1 + 4 + coordinateSize;\n}\n\n/** Encode LineString geometry as WKB ArrayBuffer */\nfunction encodeLineString(\n coordinates: LineString['coordinates'],\n options: WKBOptions\n): ArrayBuffer {\n const size = getLineStringSize(coordinates, options);\n\n const writer = new BinaryWriter(size);\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.LineString, options);\n writer.writeUInt32LE(coordinates.length);\n\n for (const coordinate of coordinates) {\n writeCoordinate(writer, coordinate, options);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of LineString geometry */\nfunction getLineStringSize(coordinates: LineString['coordinates'], options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n\n return 1 + 4 + 4 + coordinates.length * coordinateSize;\n}\n\n/** Encode Polygon geometry as WKB ArrayBuffer */\nfunction encodePolygon(coordinates: Polygon['coordinates'], options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getPolygonSize(coordinates, options));\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.Polygon, options);\n const [exteriorRing, ...interiorRings] = coordinates;\n\n if (exteriorRing.length > 0) {\n writer.writeUInt32LE(1 + interiorRings.length);\n writer.writeUInt32LE(exteriorRing.length);\n } else {\n writer.writeUInt32LE(0);\n }\n\n for (const coordinate of exteriorRing) {\n writeCoordinate(writer, coordinate, options);\n }\n\n for (const interiorRing of interiorRings) {\n writer.writeUInt32LE(interiorRing.length);\n\n for (const coordinate of interiorRing) {\n writeCoordinate(writer, coordinate, options);\n }\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of Polygon geometry */\nfunction getPolygonSize(coordinates: Polygon['coordinates'], options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n const [exteriorRing, ...interiorRings] = coordinates;\n\n let size = 1 + 4 + 4;\n\n if (exteriorRing.length > 0) {\n size += 4 + exteriorRing.length * coordinateSize;\n }\n\n for (const interiorRing of interiorRings) {\n size += 4 + interiorRing.length * coordinateSize;\n }\n\n return size;\n}\n\n/** Encode MultiPoint geometry as WKB ArrayBufer */\nfunction encodeMultiPoint(multiPoint: MultiPoint, options: WKBOptions) {\n const writer = new BinaryWriter(getMultiPointSize(multiPoint, options));\n const points = multiPoint.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiPoint, options);\n writer.writeUInt32LE(points.length);\n\n for (const point of points) {\n // TODO: add srid to this options object? {srid: multiPoint.srid}\n const arrayBuffer = encodePoint(point, options);\n writer.writeBuffer(arrayBuffer);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of MultiPoint geometry */\nfunction getMultiPointSize(multiPoint: MultiPoint, options: WKBOptions) {\n let coordinateSize = getCoordinateSize(options);\n const points = multiPoint.coordinates;\n\n // This is because each point has a 5-byte header?\n coordinateSize += 5;\n\n return 1 + 4 + 4 + points.length * coordinateSize;\n}\n\n/** Encode MultiLineString geometry as WKB ArrayBufer */\nfunction encodeMultiLineString(multiLineString: MultiLineString, options: WKBOptions) {\n const writer = new BinaryWriter(getMultiLineStringSize(multiLineString, options));\n const lineStrings = multiLineString.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiLineString, options);\n writer.writeUInt32LE(lineStrings.length);\n\n for (const lineString of lineStrings) {\n // TODO: Handle srid?\n const encodedLineString = encodeLineString(lineString, options);\n writer.writeBuffer(encodedLineString);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of MultiLineString geometry */\nfunction getMultiLineStringSize(multiLineString: MultiLineString, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n const lineStrings = multiLineString.coordinates;\n\n for (const lineString of lineStrings) {\n size += getLineStringSize(lineString, options);\n }\n\n return size;\n}\n\nfunction encodeMultiPolygon(multiPolygon: MultiPolygon, options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getMultiPolygonSize(multiPolygon, options));\n const polygons = multiPolygon.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiPolygon, options);\n writer.writeUInt32LE(polygons.length);\n\n for (const polygon of polygons) {\n const encodedPolygon = encodePolygon(polygon, options);\n writer.writeBuffer(encodedPolygon);\n }\n\n return writer.arrayBuffer;\n}\n\nfunction getMultiPolygonSize(multiPolygon: MultiPolygon, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n const polygons = multiPolygon.coordinates;\n\n for (const polygon of polygons) {\n size += getPolygonSize(polygon, options);\n }\n\n return size;\n}\n\nfunction encodeGeometryCollection(\n collection: GeometryCollection,\n options: WKBOptions\n): ArrayBuffer {\n const writer = new BinaryWriter(getGeometryCollectionSize(collection, options));\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.GeometryCollection, options);\n writer.writeUInt32LE(collection.geometries.length);\n\n for (const geometry of collection.geometries) {\n // TODO: handle srid? {srid: collection.srid}\n const arrayBuffer = encodeWKB(geometry, options);\n writer.writeBuffer(arrayBuffer);\n }\n\n return writer.arrayBuffer;\n}\n\nfunction getGeometryCollectionSize(collection: GeometryCollection, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n\n for (const geometry of collection.geometries) {\n size += getGeometrySize(geometry, options);\n }\n\n return size;\n}\n\n// HELPERS\n\n/**\n * Construct and write WKB integer code\n * Reference: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary\n */\nfunction writeWkbType(writer: BinaryWriter, geometryType: number, options: WKBOptions): void {\n const {hasZ, hasM, srid} = options;\n\n let dimensionType = 0;\n\n if (!srid) {\n if (hasZ && hasM) {\n dimensionType += 3000;\n } else if (hasZ) {\n dimensionType += 1000;\n } else if (hasM) {\n dimensionType += 2000;\n }\n } else {\n if (hasZ) {\n dimensionType |= 0x80000000;\n }\n if (hasM) {\n dimensionType |= 0x40000000;\n }\n }\n\n writer.writeUInt32LE((dimensionType + geometryType) >>> 0);\n}\n\n/** Get coordinate size given Z/M dimensions */\nfunction getCoordinateSize(options: WKBOptions): number {\n let coordinateSize = 16;\n\n if (options.hasZ) {\n coordinateSize += 8;\n }\n if (options.hasM) {\n coordinateSize += 8;\n }\n\n return coordinateSize;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"encode-wkb.js","names":["_binaryWriter","_interopRequireDefault","require","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","WKB","encodeWKB","geometry","options","type","wkb","encodePoint","coordinates","encodeLineString","encodePolygon","encodeMultiPoint","encodeMultiPolygon","encodeMultiLineString","encodeGeometryCollection","exhaustiveCheck","Error","concat","getGeometrySize","getPointSize","getLineStringSize","getPolygonSize","getMultiPointSize","getMultiPolygonSize","getMultiLineStringSize","getGeometryCollectionSize","writer","BinaryWriter","writeInt8","writeWkbType","Point","writeDoubleLE","NaN","hasZ","hasM","writeCoordinate","arrayBuffer","coordinate","coordinateSize","getCoordinateSize","size","LineString","writeUInt32LE","_iterator","_step","Polygon","_coordinates","_toArray2","default","exteriorRing","interiorRings","_iterator2","_step2","_iterator3","_step3","interiorRing","_iterator4","_step4","_coordinates2","_iterator5","_step5","multiPoint","points","MultiPoint","_iterator6","_step6","point","writeBuffer","multiLineString","lineStrings","MultiLineString","_iterator7","_step7","lineString","encodedLineString","_iterator8","_step8","multiPolygon","polygons","MultiPolygon","_iterator9","_step9","polygon","encodedPolygon","_iterator10","_step10","collection","GeometryCollection","geometries","_iterator11","_step11","_iterator12","_step12","geometryType","srid","dimensionType"],"sources":["../../../src/lib/encode-wkb.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Forked from https://github.com/cschwarz/wkx under MIT license, Copyright (c) 2013 Christian Schwarz\n// Reference: https://www.ogc.org/standards/sfa\n\nimport type {\n Feature,\n Geometry,\n Point,\n MultiPoint,\n LineString,\n MultiLineString,\n Polygon,\n MultiPolygon,\n GeometryCollection\n} from '@loaders.gl/schema';\n\nimport BinaryWriter from './utils/binary-writer';\n\n/**\n * Integer code for geometry type\n * Reference: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary\n */\nenum WKB {\n Point = 1,\n LineString = 2,\n Polygon = 3,\n MultiPoint = 4,\n MultiLineString = 5,\n MultiPolygon = 6,\n GeometryCollection = 7\n}\n\n/**\n * Options for encodeWKB\n */\ninterface WKBOptions {\n /** Does the GeoJSON input have Z values? */\n hasZ?: boolean;\n\n /** Does the GeoJSON input have M values? */\n hasM?: boolean;\n\n /** Spatial reference for input GeoJSON */\n srid?: any;\n}\n\n/**\n * Encodes a GeoJSON object into WKB\n * @param geojson A GeoJSON Feature or Geometry\n * @returns string\n */\nexport default function encodeWKB(\n geometry: Geometry | Feature,\n options: WKBOptions | {wkb: WKBOptions}\n): ArrayBuffer {\n if (geometry.type === 'Feature') {\n geometry = geometry.geometry;\n }\n\n // Options should be wrapped in a `wkb` key, but we allow top-level options here for backwards\n // compatibility\n if ('wkb' in options) {\n options = options.wkb;\n }\n\n switch (geometry.type) {\n case 'Point':\n return encodePoint(geometry.coordinates, options);\n case 'LineString':\n return encodeLineString(geometry.coordinates, options);\n case 'Polygon':\n return encodePolygon(geometry.coordinates, options);\n case 'MultiPoint':\n return encodeMultiPoint(geometry, options);\n case 'MultiPolygon':\n return encodeMultiPolygon(geometry, options);\n case 'MultiLineString':\n return encodeMultiLineString(geometry, options);\n case 'GeometryCollection':\n return encodeGeometryCollection(geometry, options);\n default:\n const exhaustiveCheck: never = geometry;\n throw new Error(`Unhandled case: ${exhaustiveCheck}`);\n }\n}\n\n/** Calculate the binary size (in the WKB encoding) of a specific GeoJSON geometry */\nfunction getGeometrySize(geometry: Geometry, options: WKBOptions): number {\n switch (geometry.type) {\n case 'Point':\n return getPointSize(options);\n case 'LineString':\n return getLineStringSize(geometry.coordinates, options);\n case 'Polygon':\n return getPolygonSize(geometry.coordinates, options);\n case 'MultiPoint':\n return getMultiPointSize(geometry, options);\n case 'MultiPolygon':\n return getMultiPolygonSize(geometry, options);\n case 'MultiLineString':\n return getMultiLineStringSize(geometry, options);\n case 'GeometryCollection':\n return getGeometryCollectionSize(geometry, options);\n default:\n const exhaustiveCheck: never = geometry;\n throw new Error(`Unhandled case: ${exhaustiveCheck}`);\n }\n}\n\n/** Encode Point geometry as WKB ArrayBuffer */\nfunction encodePoint(coordinates: Point['coordinates'], options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getPointSize(options));\n\n writer.writeInt8(1);\n writeWkbType(writer, WKB.Point, options);\n\n // I believe this special case is to handle writing Point(NaN, NaN) correctly\n if (typeof coordinates[0] === 'undefined' && typeof coordinates[1] === 'undefined') {\n writer.writeDoubleLE(NaN);\n writer.writeDoubleLE(NaN);\n\n if (options.hasZ) {\n writer.writeDoubleLE(NaN);\n }\n if (options.hasM) {\n writer.writeDoubleLE(NaN);\n }\n } else {\n writeCoordinate(writer, coordinates, options);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Write coordinate to buffer */\nfunction writeCoordinate(\n writer: BinaryWriter,\n coordinate: Point['coordinates'],\n options: WKBOptions\n): void {\n writer.writeDoubleLE(coordinate[0]);\n writer.writeDoubleLE(coordinate[1]);\n\n if (options.hasZ) {\n writer.writeDoubleLE(coordinate[2]);\n }\n if (options.hasM) {\n writer.writeDoubleLE(coordinate[3]);\n }\n}\n\n/** Get encoded size of Point geometry */\nfunction getPointSize(options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n return 1 + 4 + coordinateSize;\n}\n\n/** Encode LineString geometry as WKB ArrayBuffer */\nfunction encodeLineString(\n coordinates: LineString['coordinates'],\n options: WKBOptions\n): ArrayBuffer {\n const size = getLineStringSize(coordinates, options);\n\n const writer = new BinaryWriter(size);\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.LineString, options);\n writer.writeUInt32LE(coordinates.length);\n\n for (const coordinate of coordinates) {\n writeCoordinate(writer, coordinate, options);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of LineString geometry */\nfunction getLineStringSize(coordinates: LineString['coordinates'], options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n\n return 1 + 4 + 4 + coordinates.length * coordinateSize;\n}\n\n/** Encode Polygon geometry as WKB ArrayBuffer */\nfunction encodePolygon(coordinates: Polygon['coordinates'], options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getPolygonSize(coordinates, options));\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.Polygon, options);\n const [exteriorRing, ...interiorRings] = coordinates;\n\n if (exteriorRing.length > 0) {\n writer.writeUInt32LE(1 + interiorRings.length);\n writer.writeUInt32LE(exteriorRing.length);\n } else {\n writer.writeUInt32LE(0);\n }\n\n for (const coordinate of exteriorRing) {\n writeCoordinate(writer, coordinate, options);\n }\n\n for (const interiorRing of interiorRings) {\n writer.writeUInt32LE(interiorRing.length);\n\n for (const coordinate of interiorRing) {\n writeCoordinate(writer, coordinate, options);\n }\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of Polygon geometry */\nfunction getPolygonSize(coordinates: Polygon['coordinates'], options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n const [exteriorRing, ...interiorRings] = coordinates;\n\n let size = 1 + 4 + 4;\n\n if (exteriorRing.length > 0) {\n size += 4 + exteriorRing.length * coordinateSize;\n }\n\n for (const interiorRing of interiorRings) {\n size += 4 + interiorRing.length * coordinateSize;\n }\n\n return size;\n}\n\n/** Encode MultiPoint geometry as WKB ArrayBufer */\nfunction encodeMultiPoint(multiPoint: MultiPoint, options: WKBOptions) {\n const writer = new BinaryWriter(getMultiPointSize(multiPoint, options));\n const points = multiPoint.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiPoint, options);\n writer.writeUInt32LE(points.length);\n\n for (const point of points) {\n // TODO: add srid to this options object? {srid: multiPoint.srid}\n const arrayBuffer = encodePoint(point, options);\n writer.writeBuffer(arrayBuffer);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of MultiPoint geometry */\nfunction getMultiPointSize(multiPoint: MultiPoint, options: WKBOptions) {\n let coordinateSize = getCoordinateSize(options);\n const points = multiPoint.coordinates;\n\n // This is because each point has a 5-byte header?\n coordinateSize += 5;\n\n return 1 + 4 + 4 + points.length * coordinateSize;\n}\n\n/** Encode MultiLineString geometry as WKB ArrayBufer */\nfunction encodeMultiLineString(multiLineString: MultiLineString, options: WKBOptions) {\n const writer = new BinaryWriter(getMultiLineStringSize(multiLineString, options));\n const lineStrings = multiLineString.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiLineString, options);\n writer.writeUInt32LE(lineStrings.length);\n\n for (const lineString of lineStrings) {\n // TODO: Handle srid?\n const encodedLineString = encodeLineString(lineString, options);\n writer.writeBuffer(encodedLineString);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of MultiLineString geometry */\nfunction getMultiLineStringSize(multiLineString: MultiLineString, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n const lineStrings = multiLineString.coordinates;\n\n for (const lineString of lineStrings) {\n size += getLineStringSize(lineString, options);\n }\n\n return size;\n}\n\nfunction encodeMultiPolygon(multiPolygon: MultiPolygon, options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getMultiPolygonSize(multiPolygon, options));\n const polygons = multiPolygon.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiPolygon, options);\n writer.writeUInt32LE(polygons.length);\n\n for (const polygon of polygons) {\n const encodedPolygon = encodePolygon(polygon, options);\n writer.writeBuffer(encodedPolygon);\n }\n\n return writer.arrayBuffer;\n}\n\nfunction getMultiPolygonSize(multiPolygon: MultiPolygon, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n const polygons = multiPolygon.coordinates;\n\n for (const polygon of polygons) {\n size += getPolygonSize(polygon, options);\n }\n\n return size;\n}\n\nfunction encodeGeometryCollection(\n collection: GeometryCollection,\n options: WKBOptions\n): ArrayBuffer {\n const writer = new BinaryWriter(getGeometryCollectionSize(collection, options));\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.GeometryCollection, options);\n writer.writeUInt32LE(collection.geometries.length);\n\n for (const geometry of collection.geometries) {\n // TODO: handle srid? {srid: collection.srid}\n const arrayBuffer = encodeWKB(geometry, options);\n writer.writeBuffer(arrayBuffer);\n }\n\n return writer.arrayBuffer;\n}\n\nfunction getGeometryCollectionSize(collection: GeometryCollection, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n\n for (const geometry of collection.geometries) {\n size += getGeometrySize(geometry, options);\n }\n\n return size;\n}\n\n// HELPERS\n\n/**\n * Construct and write WKB integer code\n * Reference: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary\n */\nfunction writeWkbType(writer: BinaryWriter, geometryType: number, options: WKBOptions): void {\n const {hasZ, hasM, srid} = options;\n\n let dimensionType = 0;\n\n if (!srid) {\n if (hasZ && hasM) {\n dimensionType += 3000;\n } else if (hasZ) {\n dimensionType += 1000;\n } else if (hasM) {\n dimensionType += 2000;\n }\n } else {\n if (hasZ) {\n dimensionType |= 0x80000000;\n }\n if (hasM) {\n dimensionType |= 0x40000000;\n }\n }\n\n writer.writeUInt32LE((dimensionType + geometryType) >>> 0);\n}\n\n/** Get coordinate size given Z/M dimensions */\nfunction getCoordinateSize(options: WKBOptions): number {\n let coordinateSize = 16;\n\n if (options.hasZ) {\n coordinateSize += 8;\n }\n if (options.hasM) {\n coordinateSize += 8;\n }\n\n return coordinateSize;\n}\n"],"mappings":"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"}
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = encodeWKT;
7
-
8
7
  function encodeWKT(geometry) {
9
8
  if (geometry.type === 'Feature') {
10
9
  geometry = geometry.geometry;
@@ -1 +1 @@
1
- {"version":3,"file":"encode-wkt.js","names":["encodeWKT","geometry","type","wrapParens","pairWKT","coordinates","ringWKT","ringsWKT","multiRingsWKT","geometries","map","join","Error","c","r","s"],"sources":["../../../src/lib/encode-wkt.ts"],"sourcesContent":["// Fork of https://github.com/mapbox/wellknown under ISC license (MIT/BSD-2-clause equivalent)\n// eslint-disable-next-line import/no-unresolved\nimport type {Feature, Geometry} from '@loaders.gl/schema';\n\n/**\n * Stringifies a GeoJSON object into WKT\n * @param geojson\n * @returns string\n */\nexport default function encodeWKT(geometry: Geometry | Feature): string {\n if (geometry.type === 'Feature') {\n geometry = geometry.geometry;\n }\n\n switch (geometry.type) {\n case 'Point':\n return `POINT ${wrapParens(pairWKT(geometry.coordinates))}`;\n case 'LineString':\n return `LINESTRING ${wrapParens(ringWKT(geometry.coordinates))}`;\n case 'Polygon':\n return `POLYGON ${wrapParens(ringsWKT(geometry.coordinates))}`;\n case 'MultiPoint':\n return `MULTIPOINT ${wrapParens(ringWKT(geometry.coordinates))}`;\n case 'MultiPolygon':\n return `MULTIPOLYGON ${wrapParens(multiRingsWKT(geometry.coordinates))}`;\n case 'MultiLineString':\n return `MULTILINESTRING ${wrapParens(ringsWKT(geometry.coordinates))}`;\n case 'GeometryCollection':\n return `GEOMETRYCOLLECTION ${wrapParens(geometry.geometries.map(encodeWKT).join(', '))}`;\n default:\n throw new Error('stringify requires a valid GeoJSON Feature or geometry object as input');\n }\n}\n\nfunction pairWKT(c: number[]): string {\n return c.join(' ');\n}\n\nfunction ringWKT(r: number[][]): string {\n return r.map(pairWKT).join(', ');\n}\n\nfunction ringsWKT(r: number[][][]): string {\n return r.map(ringWKT).map(wrapParens).join(', ');\n}\n\nfunction multiRingsWKT(r: number[][][][]): string {\n return r.map(ringsWKT).map(wrapParens).join(', ');\n}\n\nfunction wrapParens(s: string): string {\n return `(${s})`;\n}\n"],"mappings":";;;;;;;AASe,SAASA,SAAS,CAACC,QAA4B,EAAU;EACtE,IAAIA,QAAQ,CAACC,IAAI,KAAK,SAAS,EAAE;IAC/BD,QAAQ,GAAGA,QAAQ,CAACA,QAAQ;EAC9B;EAEA,QAAQA,QAAQ,CAACC,IAAI;IACnB,KAAK,OAAO;MACV,uBAAgBC,UAAU,CAACC,OAAO,CAACH,QAAQ,CAACI,WAAW,CAAC,CAAC;IAC3D,KAAK,YAAY;MACf,4BAAqBF,UAAU,CAACG,OAAO,CAACL,QAAQ,CAACI,WAAW,CAAC,CAAC;IAChE,KAAK,SAAS;MACZ,yBAAkBF,UAAU,CAACI,QAAQ,CAACN,QAAQ,CAACI,WAAW,CAAC,CAAC;IAC9D,KAAK,YAAY;MACf,4BAAqBF,UAAU,CAACG,OAAO,CAACL,QAAQ,CAACI,WAAW,CAAC,CAAC;IAChE,KAAK,cAAc;MACjB,8BAAuBF,UAAU,CAACK,aAAa,CAACP,QAAQ,CAACI,WAAW,CAAC,CAAC;IACxE,KAAK,iBAAiB;MACpB,iCAA0BF,UAAU,CAACI,QAAQ,CAACN,QAAQ,CAACI,WAAW,CAAC,CAAC;IACtE,KAAK,oBAAoB;MACvB,oCAA6BF,UAAU,CAACF,QAAQ,CAACQ,UAAU,CAACC,GAAG,CAACV,SAAS,CAAC,CAACW,IAAI,CAAC,IAAI,CAAC,CAAC;IACxF;MACE,MAAM,IAAIC,KAAK,CAAC,wEAAwE,CAAC;EAAC;AAEhG;AAEA,SAASR,OAAO,CAACS,CAAW,EAAU;EACpC,OAAOA,CAAC,CAACF,IAAI,CAAC,GAAG,CAAC;AACpB;AAEA,SAASL,OAAO,CAACQ,CAAa,EAAU;EACtC,OAAOA,CAAC,CAACJ,GAAG,CAACN,OAAO,CAAC,CAACO,IAAI,CAAC,IAAI,CAAC;AAClC;AAEA,SAASJ,QAAQ,CAACO,CAAe,EAAU;EACzC,OAAOA,CAAC,CAACJ,GAAG,CAACJ,OAAO,CAAC,CAACI,GAAG,CAACP,UAAU,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC;AAClD;AAEA,SAASH,aAAa,CAACM,CAAiB,EAAU;EAChD,OAAOA,CAAC,CAACJ,GAAG,CAACH,QAAQ,CAAC,CAACG,GAAG,CAACP,UAAU,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC;AACnD;AAEA,SAASR,UAAU,CAACY,CAAS,EAAU;EACrC,kBAAWA,CAAC;AACd"}
1
+ {"version":3,"file":"encode-wkt.js","names":["encodeWKT","geometry","type","concat","wrapParens","pairWKT","coordinates","ringWKT","ringsWKT","multiRingsWKT","geometries","map","join","Error","c","r","s"],"sources":["../../../src/lib/encode-wkt.ts"],"sourcesContent":["// Fork of https://github.com/mapbox/wellknown under ISC license (MIT/BSD-2-clause equivalent)\n// eslint-disable-next-line import/no-unresolved\nimport type {Feature, Geometry} from '@loaders.gl/schema';\n\n/**\n * Stringifies a GeoJSON object into WKT\n * @param geojson\n * @returns string\n */\nexport default function encodeWKT(geometry: Geometry | Feature): string {\n if (geometry.type === 'Feature') {\n geometry = geometry.geometry;\n }\n\n switch (geometry.type) {\n case 'Point':\n return `POINT ${wrapParens(pairWKT(geometry.coordinates))}`;\n case 'LineString':\n return `LINESTRING ${wrapParens(ringWKT(geometry.coordinates))}`;\n case 'Polygon':\n return `POLYGON ${wrapParens(ringsWKT(geometry.coordinates))}`;\n case 'MultiPoint':\n return `MULTIPOINT ${wrapParens(ringWKT(geometry.coordinates))}`;\n case 'MultiPolygon':\n return `MULTIPOLYGON ${wrapParens(multiRingsWKT(geometry.coordinates))}`;\n case 'MultiLineString':\n return `MULTILINESTRING ${wrapParens(ringsWKT(geometry.coordinates))}`;\n case 'GeometryCollection':\n return `GEOMETRYCOLLECTION ${wrapParens(geometry.geometries.map(encodeWKT).join(', '))}`;\n default:\n throw new Error('stringify requires a valid GeoJSON Feature or geometry object as input');\n }\n}\n\nfunction pairWKT(c: number[]): string {\n return c.join(' ');\n}\n\nfunction ringWKT(r: number[][]): string {\n return r.map(pairWKT).join(', ');\n}\n\nfunction ringsWKT(r: number[][][]): string {\n return r.map(ringWKT).map(wrapParens).join(', ');\n}\n\nfunction multiRingsWKT(r: number[][][][]): string {\n return r.map(ringsWKT).map(wrapParens).join(', ');\n}\n\nfunction wrapParens(s: string): string {\n return `(${s})`;\n}\n"],"mappings":";;;;;;AASe,SAASA,SAASA,CAACC,QAA4B,EAAU;EACtE,IAAIA,QAAQ,CAACC,IAAI,KAAK,SAAS,EAAE;IAC/BD,QAAQ,GAAGA,QAAQ,CAACA,QAAQ;EAC9B;EAEA,QAAQA,QAAQ,CAACC,IAAI;IACnB,KAAK,OAAO;MACV,gBAAAC,MAAA,CAAgBC,UAAU,CAACC,OAAO,CAACJ,QAAQ,CAACK,WAAW,CAAC,CAAC;IAC3D,KAAK,YAAY;MACf,qBAAAH,MAAA,CAAqBC,UAAU,CAACG,OAAO,CAACN,QAAQ,CAACK,WAAW,CAAC,CAAC;IAChE,KAAK,SAAS;MACZ,kBAAAH,MAAA,CAAkBC,UAAU,CAACI,QAAQ,CAACP,QAAQ,CAACK,WAAW,CAAC,CAAC;IAC9D,KAAK,YAAY;MACf,qBAAAH,MAAA,CAAqBC,UAAU,CAACG,OAAO,CAACN,QAAQ,CAACK,WAAW,CAAC,CAAC;IAChE,KAAK,cAAc;MACjB,uBAAAH,MAAA,CAAuBC,UAAU,CAACK,aAAa,CAACR,QAAQ,CAACK,WAAW,CAAC,CAAC;IACxE,KAAK,iBAAiB;MACpB,0BAAAH,MAAA,CAA0BC,UAAU,CAACI,QAAQ,CAACP,QAAQ,CAACK,WAAW,CAAC,CAAC;IACtE,KAAK,oBAAoB;MACvB,6BAAAH,MAAA,CAA6BC,UAAU,CAACH,QAAQ,CAACS,UAAU,CAACC,GAAG,CAACX,SAAS,CAAC,CAACY,IAAI,CAAC,IAAI,CAAC,CAAC;IACxF;MACE,MAAM,IAAIC,KAAK,CAAC,wEAAwE,CAAC;EAC7F;AACF;AAEA,SAASR,OAAOA,CAACS,CAAW,EAAU;EACpC,OAAOA,CAAC,CAACF,IAAI,CAAC,GAAG,CAAC;AACpB;AAEA,SAASL,OAAOA,CAACQ,CAAa,EAAU;EACtC,OAAOA,CAAC,CAACJ,GAAG,CAACN,OAAO,CAAC,CAACO,IAAI,CAAC,IAAI,CAAC;AAClC;AAEA,SAASJ,QAAQA,CAACO,CAAe,EAAU;EACzC,OAAOA,CAAC,CAACJ,GAAG,CAACJ,OAAO,CAAC,CAACI,GAAG,CAACP,UAAU,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC;AAClD;AAEA,SAASH,aAAaA,CAACM,CAAiB,EAAU;EAChD,OAAOA,CAAC,CAACJ,GAAG,CAACH,QAAQ,CAAC,CAACG,GAAG,CAACP,UAAU,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC;AACnD;AAEA,SAASR,UAAUA,CAACY,CAAS,EAAU;EACrC,WAAAb,MAAA,CAAWa,CAAC;AACd"}
@@ -8,21 +8,18 @@ exports.default = parseWKB;
8
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
9
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
10
10
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
11
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
11
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
12
12
  var NUM_DIMENSIONS = {
13
13
  0: 2,
14
14
  1: 3,
15
15
  2: 3,
16
16
  3: 4
17
17
  };
18
-
19
18
  function parseWKB(arrayBuffer) {
20
19
  var view = new DataView(arrayBuffer);
21
20
  var offset = 0;
22
-
23
21
  var littleEndian = view.getUint8(offset) === 1;
24
22
  offset++;
25
-
26
23
  var geometryCode = view.getUint32(offset, littleEndian);
27
24
  offset += 4;
28
25
  var geometryType = geometryCode % 1000;
@@ -54,7 +51,6 @@ function parseWKB(arrayBuffer) {
54
51
  throw new Error("WKB: Unsupported geometry type: ".concat(geometryType));
55
52
  }
56
53
  }
57
-
58
54
  function parsePoint(view, offset, dimension, littleEndian) {
59
55
  var positions = new Float64Array(dimension);
60
56
  for (var i = 0; i < dimension; i++) {
@@ -75,7 +71,6 @@ function parsePoint(view, offset, dimension, littleEndian) {
75
71
  function parseLineString(view, offset, dimension, littleEndian) {
76
72
  var nPoints = view.getUint32(offset, littleEndian);
77
73
  offset += 4;
78
-
79
74
  var positions = new Float64Array(nPoints * dimension);
80
75
  for (var i = 0; i < nPoints * dimension; i++) {
81
76
  positions[i] = view.getFloat64(offset, littleEndian);
@@ -100,7 +95,6 @@ function parseLineString(view, offset, dimension, littleEndian) {
100
95
  offset: offset
101
96
  };
102
97
  }
103
-
104
98
  var cumulativeSum = function cumulativeSum(sum) {
105
99
  return function (value) {
106
100
  return sum += value;
@@ -151,7 +145,6 @@ function parseMultiPoint(view, offset, dimension, littleEndian) {
151
145
  for (var i = 0; i < nPoints; i++) {
152
146
  var littleEndianPoint = view.getUint8(offset) === 1;
153
147
  offset++;
154
-
155
148
  if (view.getUint32(offset, littleEndianPoint) % 1000 !== 1) {
156
149
  throw new Error('WKB: Inner geometries of MultiPoint not of type Point');
157
150
  }
@@ -169,7 +162,6 @@ function parseMultiLineString(view, offset, dimension, littleEndian) {
169
162
  for (var i = 0; i < nLines; i++) {
170
163
  var littleEndianLine = view.getUint8(offset) === 1;
171
164
  offset++;
172
-
173
165
  if (view.getUint32(offset, littleEndianLine) % 1000 !== 2) {
174
166
  throw new Error('WKB: Inner geometries of MultiLineString not of type LineString');
175
167
  }
@@ -187,7 +179,6 @@ function parseMultiPolygon(view, offset, dimension, littleEndian) {
187
179
  for (var i = 0; i < nPolygons; i++) {
188
180
  var littleEndianPolygon = view.getUint8(offset) === 1;
189
181
  offset++;
190
-
191
182
  if (view.getUint32(offset, littleEndianPolygon) % 1000 !== 3) {
192
183
  throw new Error('WKB: Inner geometries of MultiPolygon not of type Polygon');
193
184
  }
@@ -198,7 +189,6 @@ function parseMultiPolygon(view, offset, dimension, littleEndian) {
198
189
  }
199
190
  return concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension);
200
191
  }
201
-
202
192
  function concatenateBinaryPointGeometries(binaryPointGeometries, dimension) {
203
193
  var positions = binaryPointGeometries.map(function (geometry) {
204
194
  return geometry.positions.value;
@@ -256,7 +246,6 @@ function concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension)
256
246
  return p.length / dimension;
257
247
  }).map(cumulativeSum(0));
258
248
  polygonIndices.unshift(0);
259
-
260
249
  var primitivePolygonIndices = [0];
261
250
  for (var _i = 0, _primitivePolygons = primitivePolygons; _i < _primitivePolygons.length; _i++) {
262
251
  var primitivePolygon = _primitivePolygons[_i];
@@ -282,7 +271,6 @@ function concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension)
282
271
  }
283
272
  };
284
273
  }
285
-
286
274
  function concatTypedArrays(arrays) {
287
275
  var byteLength = 0;
288
276
  for (var i = 0; i < arrays.length; ++i) {
@@ -1 +1 @@
1
- {"version":3,"file":"parse-wkb.js","names":["NUM_DIMENSIONS","parseWKB","arrayBuffer","view","DataView","offset","littleEndian","getUint8","geometryCode","getUint32","geometryType","type","dimension","point","parsePoint","geometry","line","parseLineString","polygon","parsePolygon","multiPoint","parseMultiPoint","multiLine","parseMultiLineString","multiPolygon","parseMultiPolygon","Error","positions","Float64Array","i","getFloat64","value","size","nPoints","pathIndices","push","Uint16Array","cumulativeSum","sum","nRings","rings","parsed","concatenatedPositions","concatTypedArrays","buffer","polygonIndices","length","primitivePolygonIndices","map","l","unshift","binaryPointGeometries","littleEndianPoint","concatenateBinaryPointGeometries","nLines","binaryLineGeometries","littleEndianLine","concatenateBinaryLineGeometries","nPolygons","binaryPolygonGeometries","littleEndianPolygon","concatenateBinaryPolygonGeometries","lines","polygons","primitivePolygons","binaryPolygon","p","primitivePolygon","filter","x","arrays","byteLength","Uint8Array","byteOffset","data","j"],"sources":["../../../src/lib/parse-wkb.ts"],"sourcesContent":["import type {\n TypedArray,\n BinaryGeometry,\n BinaryPointGeometry,\n BinaryLineGeometry,\n BinaryPolygonGeometry\n} from '@loaders.gl/schema';\n\nconst NUM_DIMENSIONS = {\n 0: 2, // 2D\n 1: 3, // 3D (Z)\n 2: 3, // 3D (M)\n 3: 4 // 4D (ZM)\n};\n\nexport default function parseWKB(arrayBuffer: ArrayBuffer): BinaryGeometry {\n const view = new DataView(arrayBuffer);\n let offset = 0;\n\n // Check endianness of data\n const littleEndian = view.getUint8(offset) === 1;\n offset++;\n\n // 4-digit code representing dimension and type of geometry\n const geometryCode = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const geometryType = geometryCode % 1000;\n const type = ((geometryCode - geometryType) / 1000) as 0 | 1 | 2 | 3;\n const dimension = NUM_DIMENSIONS[type];\n\n switch (geometryType) {\n case 1:\n const point = parsePoint(view, offset, dimension, littleEndian);\n return point.geometry;\n case 2:\n const line = parseLineString(view, offset, dimension, littleEndian);\n return line.geometry;\n case 3:\n const polygon = parsePolygon(view, offset, dimension, littleEndian);\n return polygon.geometry;\n case 4:\n const multiPoint = parseMultiPoint(view, offset, dimension, littleEndian);\n multiPoint.type = 'Point';\n return multiPoint;\n case 5:\n const multiLine = parseMultiLineString(view, offset, dimension, littleEndian);\n multiLine.type = 'LineString';\n return multiLine;\n case 6:\n const multiPolygon = parseMultiPolygon(view, offset, dimension, littleEndian);\n multiPolygon.type = 'Polygon';\n return multiPolygon;\n // case 7:\n // TODO: handle GeometryCollections\n // return parseGeometryCollection(view, offset, dimension, littleEndian);\n default:\n throw new Error(`WKB: Unsupported geometry type: ${geometryType}`);\n }\n}\n\n// Primitives; parse point and linear ring\nfunction parsePoint(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryPointGeometry; offset: number} {\n const positions = new Float64Array(dimension);\n for (let i = 0; i < dimension; i++) {\n positions[i] = view.getFloat64(offset, littleEndian);\n offset += 8;\n }\n\n return {\n geometry: {type: 'Point', positions: {value: positions, size: dimension}},\n offset\n };\n}\n\nfunction parseLineString(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryLineGeometry; offset: number} {\n const nPoints = view.getUint32(offset, littleEndian);\n offset += 4;\n\n // Instantiate array\n const positions = new Float64Array(nPoints * dimension);\n for (let i = 0; i < nPoints * dimension; i++) {\n positions[i] = view.getFloat64(offset, littleEndian);\n offset += 8;\n }\n\n const pathIndices = [0];\n if (nPoints > 0) {\n pathIndices.push(nPoints);\n }\n\n return {\n geometry: {\n type: 'LineString',\n positions: {value: positions, size: dimension},\n pathIndices: {value: new Uint16Array(pathIndices), size: 1}\n },\n offset\n };\n}\n\n// https://stackoverflow.com/a/55261098\nconst cumulativeSum = (sum: number) => (value: number) => (sum += value);\n\nfunction parsePolygon(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryPolygonGeometry; offset: number} {\n const nRings = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const rings: TypedArray[] = [];\n for (let i = 0; i < nRings; i++) {\n const parsed = parseLineString(view, offset, dimension, littleEndian);\n const {positions} = parsed.geometry;\n offset = parsed.offset;\n rings.push(positions.value);\n }\n\n const concatenatedPositions = new Float64Array(concatTypedArrays(rings).buffer);\n const polygonIndices = [0];\n if (concatenatedPositions.length > 0) {\n polygonIndices.push(concatenatedPositions.length / dimension);\n }\n const primitivePolygonIndices = rings.map((l) => l.length / dimension).map(cumulativeSum(0));\n primitivePolygonIndices.unshift(0);\n\n return {\n geometry: {\n type: 'Polygon',\n positions: {value: concatenatedPositions, size: dimension},\n polygonIndices: {\n value: new Uint16Array(polygonIndices),\n size: 1\n },\n primitivePolygonIndices: {value: new Uint16Array(primitivePolygonIndices), size: 1}\n },\n offset\n };\n}\n\nfunction parseMultiPoint(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryPointGeometry {\n const nPoints = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryPointGeometries: BinaryPointGeometry[] = [];\n for (let i = 0; i < nPoints; i++) {\n // Byte order for point\n const littleEndianPoint = view.getUint8(offset) === 1;\n offset++;\n\n // Assert point type\n if (view.getUint32(offset, littleEndianPoint) % 1000 !== 1) {\n throw new Error('WKB: Inner geometries of MultiPoint not of type Point');\n }\n\n offset += 4;\n\n const parsed = parsePoint(view, offset, dimension, littleEndianPoint);\n offset = parsed.offset;\n binaryPointGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryPointGeometries(binaryPointGeometries, dimension);\n}\n\nfunction parseMultiLineString(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryLineGeometry {\n const nLines = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryLineGeometries: BinaryLineGeometry[] = [];\n for (let i = 0; i < nLines; i++) {\n // Byte order for line\n const littleEndianLine = view.getUint8(offset) === 1;\n offset++;\n\n // Assert type LineString\n if (view.getUint32(offset, littleEndianLine) % 1000 !== 2) {\n throw new Error('WKB: Inner geometries of MultiLineString not of type LineString');\n }\n offset += 4;\n\n const parsed = parseLineString(view, offset, dimension, littleEndianLine);\n offset = parsed.offset;\n binaryLineGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryLineGeometries(binaryLineGeometries, dimension);\n}\n\nfunction parseMultiPolygon(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryPolygonGeometry {\n const nPolygons = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryPolygonGeometries: BinaryPolygonGeometry[] = [];\n for (let i = 0; i < nPolygons; i++) {\n // Byte order for polygon\n const littleEndianPolygon = view.getUint8(offset) === 1;\n offset++;\n\n // Assert type Polygon\n if (view.getUint32(offset, littleEndianPolygon) % 1000 !== 3) {\n throw new Error('WKB: Inner geometries of MultiPolygon not of type Polygon');\n }\n offset += 4;\n\n const parsed = parsePolygon(view, offset, dimension, littleEndianPolygon);\n offset = parsed.offset;\n binaryPolygonGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension);\n}\n\n// TODO - move to loaders.gl/schema/gis\n\nfunction concatenateBinaryPointGeometries(\n binaryPointGeometries: BinaryPointGeometry[],\n dimension: number\n): BinaryPointGeometry {\n const positions: TypedArray[] = binaryPointGeometries.map((geometry) => geometry.positions.value);\n const concatenatedPositions = new Float64Array(concatTypedArrays(positions).buffer);\n\n return {\n type: 'Point',\n positions: {value: concatenatedPositions, size: dimension}\n };\n}\n\nfunction concatenateBinaryLineGeometries(\n binaryLineGeometries: BinaryLineGeometry[],\n dimension: number\n): BinaryLineGeometry {\n const lines: TypedArray[] = binaryLineGeometries.map((geometry) => geometry.positions.value);\n const concatenatedPositions = new Float64Array(concatTypedArrays(lines).buffer);\n const pathIndices = lines.map((line) => line.length / dimension).map(cumulativeSum(0));\n pathIndices.unshift(0);\n\n return {\n type: 'LineString',\n positions: {value: concatenatedPositions, size: dimension},\n pathIndices: {value: new Uint16Array(pathIndices), size: 1}\n };\n}\n\nfunction concatenateBinaryPolygonGeometries(\n binaryPolygonGeometries: BinaryPolygonGeometry[],\n dimension: number\n): BinaryPolygonGeometry {\n const polygons: TypedArray[] = [];\n const primitivePolygons: TypedArray[] = [];\n\n for (const binaryPolygon of binaryPolygonGeometries) {\n const {positions, primitivePolygonIndices} = binaryPolygon;\n polygons.push(positions.value);\n primitivePolygons.push(primitivePolygonIndices.value);\n }\n\n const concatenatedPositions = new Float64Array(concatTypedArrays(polygons).buffer);\n const polygonIndices = polygons.map((p) => p.length / dimension).map(cumulativeSum(0));\n polygonIndices.unshift(0);\n\n // Combine primitivePolygonIndices from each individual polygon\n const primitivePolygonIndices = [0];\n for (const primitivePolygon of primitivePolygons) {\n primitivePolygonIndices.push(\n ...primitivePolygon\n .filter((x: number) => x > 0)\n .map((x: number) => x + primitivePolygonIndices[primitivePolygonIndices.length - 1])\n );\n }\n\n return {\n type: 'Polygon',\n positions: {value: concatenatedPositions, size: dimension},\n polygonIndices: {value: new Uint16Array(polygonIndices), size: 1},\n primitivePolygonIndices: {value: new Uint16Array(primitivePolygonIndices), size: 1}\n };\n}\n\n// TODO: remove copy; import from typed-array-utils\n// modules/math/src/geometry/typed-arrays/typed-array-utils.js\nfunction concatTypedArrays(arrays: TypedArray[]): TypedArray {\n let byteLength = 0;\n for (let i = 0; i < arrays.length; ++i) {\n byteLength += arrays[i].byteLength;\n }\n const buffer = new Uint8Array(byteLength);\n\n let byteOffset = 0;\n for (let i = 0; i < arrays.length; ++i) {\n const data = new Uint8Array(arrays[i].buffer);\n byteLength = data.length;\n for (let j = 0; j < byteLength; ++j) {\n buffer[byteOffset++] = data[j];\n }\n }\n return buffer;\n}\n"],"mappings":";;;;;;;;;;;AAQA,IAAMA,cAAc,GAAG;EACrB,CAAC,EAAE,CAAC;EACJ,CAAC,EAAE,CAAC;EACJ,CAAC,EAAE,CAAC;EACJ,CAAC,EAAE;AACL,CAAC;;AAEc,SAASC,QAAQ,CAACC,WAAwB,EAAkB;EACzE,IAAMC,IAAI,GAAG,IAAIC,QAAQ,CAACF,WAAW,CAAC;EACtC,IAAIG,MAAM,GAAG,CAAC;;EAGd,IAAMC,YAAY,GAAGH,IAAI,CAACI,QAAQ,CAACF,MAAM,CAAC,KAAK,CAAC;EAChDA,MAAM,EAAE;;EAGR,IAAMG,YAAY,GAAGL,IAAI,CAACM,SAAS,CAACJ,MAAM,EAAEC,YAAY,CAAC;EACzDD,MAAM,IAAI,CAAC;EAEX,IAAMK,YAAY,GAAGF,YAAY,GAAG,IAAI;EACxC,IAAMG,IAAI,GAAI,CAACH,YAAY,GAAGE,YAAY,IAAI,IAAsB;EACpE,IAAME,SAAS,GAAGZ,cAAc,CAACW,IAAI,CAAC;EAEtC,QAAQD,YAAY;IAClB,KAAK,CAAC;MACJ,IAAMG,KAAK,GAAGC,UAAU,CAACX,IAAI,EAAEE,MAAM,EAAEO,SAAS,EAAEN,YAAY,CAAC;MAC/D,OAAOO,KAAK,CAACE,QAAQ;IACvB,KAAK,CAAC;MACJ,IAAMC,IAAI,GAAGC,eAAe,CAACd,IAAI,EAAEE,MAAM,EAAEO,SAAS,EAAEN,YAAY,CAAC;MACnE,OAAOU,IAAI,CAACD,QAAQ;IACtB,KAAK,CAAC;MACJ,IAAMG,OAAO,GAAGC,YAAY,CAAChB,IAAI,EAAEE,MAAM,EAAEO,SAAS,EAAEN,YAAY,CAAC;MACnE,OAAOY,OAAO,CAACH,QAAQ;IACzB,KAAK,CAAC;MACJ,IAAMK,UAAU,GAAGC,eAAe,CAAClB,IAAI,EAAEE,MAAM,EAAEO,SAAS,EAAEN,YAAY,CAAC;MACzEc,UAAU,CAACT,IAAI,GAAG,OAAO;MACzB,OAAOS,UAAU;IACnB,KAAK,CAAC;MACJ,IAAME,SAAS,GAAGC,oBAAoB,CAACpB,IAAI,EAAEE,MAAM,EAAEO,SAAS,EAAEN,YAAY,CAAC;MAC7EgB,SAAS,CAACX,IAAI,GAAG,YAAY;MAC7B,OAAOW,SAAS;IAClB,KAAK,CAAC;MACJ,IAAME,YAAY,GAAGC,iBAAiB,CAACtB,IAAI,EAAEE,MAAM,EAAEO,SAAS,EAAEN,YAAY,CAAC;MAC7EkB,YAAY,CAACb,IAAI,GAAG,SAAS;MAC7B,OAAOa,YAAY;IAIrB;MACE,MAAM,IAAIE,KAAK,2CAAoChB,YAAY,EAAG;EAAC;AAEzE;;AAGA,SAASI,UAAU,CACjBX,IAAc,EACdE,MAAc,EACdO,SAAiB,EACjBN,YAAqB,EAC4B;EACjD,IAAMqB,SAAS,GAAG,IAAIC,YAAY,CAAChB,SAAS,CAAC;EAC7C,KAAK,IAAIiB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGjB,SAAS,EAAEiB,CAAC,EAAE,EAAE;IAClCF,SAAS,CAACE,CAAC,CAAC,GAAG1B,IAAI,CAAC2B,UAAU,CAACzB,MAAM,EAAEC,YAAY,CAAC;IACpDD,MAAM,IAAI,CAAC;EACb;EAEA,OAAO;IACLU,QAAQ,EAAE;MAACJ,IAAI,EAAE,OAAO;MAAEgB,SAAS,EAAE;QAACI,KAAK,EAAEJ,SAAS;QAAEK,IAAI,EAAEpB;MAAS;IAAC,CAAC;IACzEP,MAAM,EAANA;EACF,CAAC;AACH;AAEA,SAASY,eAAe,CACtBd,IAAc,EACdE,MAAc,EACdO,SAAiB,EACjBN,YAAqB,EAC2B;EAChD,IAAM2B,OAAO,GAAG9B,IAAI,CAACM,SAAS,CAACJ,MAAM,EAAEC,YAAY,CAAC;EACpDD,MAAM,IAAI,CAAC;;EAGX,IAAMsB,SAAS,GAAG,IAAIC,YAAY,CAACK,OAAO,GAAGrB,SAAS,CAAC;EACvD,KAAK,IAAIiB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGI,OAAO,GAAGrB,SAAS,EAAEiB,CAAC,EAAE,EAAE;IAC5CF,SAAS,CAACE,CAAC,CAAC,GAAG1B,IAAI,CAAC2B,UAAU,CAACzB,MAAM,EAAEC,YAAY,CAAC;IACpDD,MAAM,IAAI,CAAC;EACb;EAEA,IAAM6B,WAAW,GAAG,CAAC,CAAC,CAAC;EACvB,IAAID,OAAO,GAAG,CAAC,EAAE;IACfC,WAAW,CAACC,IAAI,CAACF,OAAO,CAAC;EAC3B;EAEA,OAAO;IACLlB,QAAQ,EAAE;MACRJ,IAAI,EAAE,YAAY;MAClBgB,SAAS,EAAE;QAACI,KAAK,EAAEJ,SAAS;QAAEK,IAAI,EAAEpB;MAAS,CAAC;MAC9CsB,WAAW,EAAE;QAACH,KAAK,EAAE,IAAIK,WAAW,CAACF,WAAW,CAAC;QAAEF,IAAI,EAAE;MAAC;IAC5D,CAAC;IACD3B,MAAM,EAANA;EACF,CAAC;AACH;;AAGA,IAAMgC,aAAa,GAAG,SAAhBA,aAAa,CAAIC,GAAW;EAAA,OAAK,UAACP,KAAa;IAAA,OAAMO,GAAG,IAAIP,KAAK;EAAA,CAAC;AAAA;AAExE,SAASZ,YAAY,CACnBhB,IAAc,EACdE,MAAc,EACdO,SAAiB,EACjBN,YAAqB,EAC8B;EACnD,IAAMiC,MAAM,GAAGpC,IAAI,CAACM,SAAS,CAACJ,MAAM,EAAEC,YAAY,CAAC;EACnDD,MAAM,IAAI,CAAC;EAEX,IAAMmC,KAAmB,GAAG,EAAE;EAC9B,KAAK,IAAIX,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGU,MAAM,EAAEV,CAAC,EAAE,EAAE;IAC/B,IAAMY,MAAM,GAAGxB,eAAe,CAACd,IAAI,EAAEE,MAAM,EAAEO,SAAS,EAAEN,YAAY,CAAC;IACrE,IAAOqB,SAAS,GAAIc,MAAM,CAAC1B,QAAQ,CAA5BY,SAAS;IAChBtB,MAAM,GAAGoC,MAAM,CAACpC,MAAM;IACtBmC,KAAK,CAACL,IAAI,CAACR,SAAS,CAACI,KAAK,CAAC;EAC7B;EAEA,IAAMW,qBAAqB,GAAG,IAAId,YAAY,CAACe,iBAAiB,CAACH,KAAK,CAAC,CAACI,MAAM,CAAC;EAC/E,IAAMC,cAAc,GAAG,CAAC,CAAC,CAAC;EAC1B,IAAIH,qBAAqB,CAACI,MAAM,GAAG,CAAC,EAAE;IACpCD,cAAc,CAACV,IAAI,CAACO,qBAAqB,CAACI,MAAM,GAAGlC,SAAS,CAAC;EAC/D;EACA,IAAMmC,uBAAuB,GAAGP,KAAK,CAACQ,GAAG,CAAC,UAACC,CAAC;IAAA,OAAKA,CAAC,CAACH,MAAM,GAAGlC,SAAS;EAAA,EAAC,CAACoC,GAAG,CAACX,aAAa,CAAC,CAAC,CAAC,CAAC;EAC5FU,uBAAuB,CAACG,OAAO,CAAC,CAAC,CAAC;EAElC,OAAO;IACLnC,QAAQ,EAAE;MACRJ,IAAI,EAAE,SAAS;MACfgB,SAAS,EAAE;QAACI,KAAK,EAAEW,qBAAqB;QAAEV,IAAI,EAAEpB;MAAS,CAAC;MAC1DiC,cAAc,EAAE;QACdd,KAAK,EAAE,IAAIK,WAAW,CAACS,cAAc,CAAC;QACtCb,IAAI,EAAE;MACR,CAAC;MACDe,uBAAuB,EAAE;QAAChB,KAAK,EAAE,IAAIK,WAAW,CAACW,uBAAuB,CAAC;QAAEf,IAAI,EAAE;MAAC;IACpF,CAAC;IACD3B,MAAM,EAANA;EACF,CAAC;AACH;AAEA,SAASgB,eAAe,CACtBlB,IAAc,EACdE,MAAc,EACdO,SAAiB,EACjBN,YAAqB,EACA;EACrB,IAAM2B,OAAO,GAAG9B,IAAI,CAACM,SAAS,CAACJ,MAAM,EAAEC,YAAY,CAAC;EACpDD,MAAM,IAAI,CAAC;EAEX,IAAM8C,qBAA4C,GAAG,EAAE;EACvD,KAAK,IAAItB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGI,OAAO,EAAEJ,CAAC,EAAE,EAAE;IAEhC,IAAMuB,iBAAiB,GAAGjD,IAAI,CAACI,QAAQ,CAACF,MAAM,CAAC,KAAK,CAAC;IACrDA,MAAM,EAAE;;IAGR,IAAIF,IAAI,CAACM,SAAS,CAACJ,MAAM,EAAE+C,iBAAiB,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;MAC1D,MAAM,IAAI1B,KAAK,CAAC,uDAAuD,CAAC;IAC1E;IAEArB,MAAM,IAAI,CAAC;IAEX,IAAMoC,MAAM,GAAG3B,UAAU,CAACX,IAAI,EAAEE,MAAM,EAAEO,SAAS,EAAEwC,iBAAiB,CAAC;IACrE/C,MAAM,GAAGoC,MAAM,CAACpC,MAAM;IACtB8C,qBAAqB,CAAChB,IAAI,CAACM,MAAM,CAAC1B,QAAQ,CAAC;EAC7C;EAEA,OAAOsC,gCAAgC,CAACF,qBAAqB,EAAEvC,SAAS,CAAC;AAC3E;AAEA,SAASW,oBAAoB,CAC3BpB,IAAc,EACdE,MAAc,EACdO,SAAiB,EACjBN,YAAqB,EACD;EACpB,IAAMgD,MAAM,GAAGnD,IAAI,CAACM,SAAS,CAACJ,MAAM,EAAEC,YAAY,CAAC;EACnDD,MAAM,IAAI,CAAC;EAEX,IAAMkD,oBAA0C,GAAG,EAAE;EACrD,KAAK,IAAI1B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyB,MAAM,EAAEzB,CAAC,EAAE,EAAE;IAE/B,IAAM2B,gBAAgB,GAAGrD,IAAI,CAACI,QAAQ,CAACF,MAAM,CAAC,KAAK,CAAC;IACpDA,MAAM,EAAE;;IAGR,IAAIF,IAAI,CAACM,SAAS,CAACJ,MAAM,EAAEmD,gBAAgB,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;MACzD,MAAM,IAAI9B,KAAK,CAAC,iEAAiE,CAAC;IACpF;IACArB,MAAM,IAAI,CAAC;IAEX,IAAMoC,MAAM,GAAGxB,eAAe,CAACd,IAAI,EAAEE,MAAM,EAAEO,SAAS,EAAE4C,gBAAgB,CAAC;IACzEnD,MAAM,GAAGoC,MAAM,CAACpC,MAAM;IACtBkD,oBAAoB,CAACpB,IAAI,CAACM,MAAM,CAAC1B,QAAQ,CAAC;EAC5C;EAEA,OAAO0C,+BAA+B,CAACF,oBAAoB,EAAE3C,SAAS,CAAC;AACzE;AAEA,SAASa,iBAAiB,CACxBtB,IAAc,EACdE,MAAc,EACdO,SAAiB,EACjBN,YAAqB,EACE;EACvB,IAAMoD,SAAS,GAAGvD,IAAI,CAACM,SAAS,CAACJ,MAAM,EAAEC,YAAY,CAAC;EACtDD,MAAM,IAAI,CAAC;EAEX,IAAMsD,uBAAgD,GAAG,EAAE;EAC3D,KAAK,IAAI9B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6B,SAAS,EAAE7B,CAAC,EAAE,EAAE;IAElC,IAAM+B,mBAAmB,GAAGzD,IAAI,CAACI,QAAQ,CAACF,MAAM,CAAC,KAAK,CAAC;IACvDA,MAAM,EAAE;;IAGR,IAAIF,IAAI,CAACM,SAAS,CAACJ,MAAM,EAAEuD,mBAAmB,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;MAC5D,MAAM,IAAIlC,KAAK,CAAC,2DAA2D,CAAC;IAC9E;IACArB,MAAM,IAAI,CAAC;IAEX,IAAMoC,MAAM,GAAGtB,YAAY,CAAChB,IAAI,EAAEE,MAAM,EAAEO,SAAS,EAAEgD,mBAAmB,CAAC;IACzEvD,MAAM,GAAGoC,MAAM,CAACpC,MAAM;IACtBsD,uBAAuB,CAACxB,IAAI,CAACM,MAAM,CAAC1B,QAAQ,CAAC;EAC/C;EAEA,OAAO8C,kCAAkC,CAACF,uBAAuB,EAAE/C,SAAS,CAAC;AAC/E;;AAIA,SAASyC,gCAAgC,CACvCF,qBAA4C,EAC5CvC,SAAiB,EACI;EACrB,IAAMe,SAAuB,GAAGwB,qBAAqB,CAACH,GAAG,CAAC,UAACjC,QAAQ;IAAA,OAAKA,QAAQ,CAACY,SAAS,CAACI,KAAK;EAAA,EAAC;EACjG,IAAMW,qBAAqB,GAAG,IAAId,YAAY,CAACe,iBAAiB,CAAChB,SAAS,CAAC,CAACiB,MAAM,CAAC;EAEnF,OAAO;IACLjC,IAAI,EAAE,OAAO;IACbgB,SAAS,EAAE;MAACI,KAAK,EAAEW,qBAAqB;MAAEV,IAAI,EAAEpB;IAAS;EAC3D,CAAC;AACH;AAEA,SAAS6C,+BAA+B,CACtCF,oBAA0C,EAC1C3C,SAAiB,EACG;EACpB,IAAMkD,KAAmB,GAAGP,oBAAoB,CAACP,GAAG,CAAC,UAACjC,QAAQ;IAAA,OAAKA,QAAQ,CAACY,SAAS,CAACI,KAAK;EAAA,EAAC;EAC5F,IAAMW,qBAAqB,GAAG,IAAId,YAAY,CAACe,iBAAiB,CAACmB,KAAK,CAAC,CAAClB,MAAM,CAAC;EAC/E,IAAMV,WAAW,GAAG4B,KAAK,CAACd,GAAG,CAAC,UAAChC,IAAI;IAAA,OAAKA,IAAI,CAAC8B,MAAM,GAAGlC,SAAS;EAAA,EAAC,CAACoC,GAAG,CAACX,aAAa,CAAC,CAAC,CAAC,CAAC;EACtFH,WAAW,CAACgB,OAAO,CAAC,CAAC,CAAC;EAEtB,OAAO;IACLvC,IAAI,EAAE,YAAY;IAClBgB,SAAS,EAAE;MAACI,KAAK,EAAEW,qBAAqB;MAAEV,IAAI,EAAEpB;IAAS,CAAC;IAC1DsB,WAAW,EAAE;MAACH,KAAK,EAAE,IAAIK,WAAW,CAACF,WAAW,CAAC;MAAEF,IAAI,EAAE;IAAC;EAC5D,CAAC;AACH;AAEA,SAAS6B,kCAAkC,CACzCF,uBAAgD,EAChD/C,SAAiB,EACM;EACvB,IAAMmD,QAAsB,GAAG,EAAE;EACjC,IAAMC,iBAA+B,GAAG,EAAE;EAAC,2CAEfL,uBAAuB;IAAA;EAAA;IAAnD,oDAAqD;MAAA,IAA1CM,aAAa;MACtB,IAAOtC,SAAS,GAA6BsC,aAAa,CAAnDtC,SAAS;QAAEoB,wBAAuB,GAAIkB,aAAa,CAAxClB,uBAAuB;MACzCgB,QAAQ,CAAC5B,IAAI,CAACR,SAAS,CAACI,KAAK,CAAC;MAC9BiC,iBAAiB,CAAC7B,IAAI,CAACY,wBAAuB,CAAChB,KAAK,CAAC;IACvD;EAAC;IAAA;EAAA;IAAA;EAAA;EAED,IAAMW,qBAAqB,GAAG,IAAId,YAAY,CAACe,iBAAiB,CAACoB,QAAQ,CAAC,CAACnB,MAAM,CAAC;EAClF,IAAMC,cAAc,GAAGkB,QAAQ,CAACf,GAAG,CAAC,UAACkB,CAAC;IAAA,OAAKA,CAAC,CAACpB,MAAM,GAAGlC,SAAS;EAAA,EAAC,CAACoC,GAAG,CAACX,aAAa,CAAC,CAAC,CAAC,CAAC;EACtFQ,cAAc,CAACK,OAAO,CAAC,CAAC,CAAC;;EAGzB,IAAMH,uBAAuB,GAAG,CAAC,CAAC,CAAC;EACnC,sCAA+BiB,iBAAiB,wCAAE;IAA7C,IAAMG,gBAAgB;IACzBpB,uBAAuB,CAACZ,IAAI,OAA5BY,uBAAuB,mCAClBoB,gBAAgB,CAChBC,MAAM,CAAC,UAACC,CAAS;MAAA,OAAKA,CAAC,GAAG,CAAC;IAAA,EAAC,CAC5BrB,GAAG,CAAC,UAACqB,CAAS;MAAA,OAAKA,CAAC,GAAGtB,uBAAuB,CAACA,uBAAuB,CAACD,MAAM,GAAG,CAAC,CAAC;IAAA,EAAC,EACvF;EACH;EAEA,OAAO;IACLnC,IAAI,EAAE,SAAS;IACfgB,SAAS,EAAE;MAACI,KAAK,EAAEW,qBAAqB;MAAEV,IAAI,EAAEpB;IAAS,CAAC;IAC1DiC,cAAc,EAAE;MAACd,KAAK,EAAE,IAAIK,WAAW,CAACS,cAAc,CAAC;MAAEb,IAAI,EAAE;IAAC,CAAC;IACjEe,uBAAuB,EAAE;MAAChB,KAAK,EAAE,IAAIK,WAAW,CAACW,uBAAuB,CAAC;MAAEf,IAAI,EAAE;IAAC;EACpF,CAAC;AACH;;AAIA,SAASW,iBAAiB,CAAC2B,MAAoB,EAAc;EAC3D,IAAIC,UAAU,GAAG,CAAC;EAClB,KAAK,IAAI1C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyC,MAAM,CAACxB,MAAM,EAAE,EAAEjB,CAAC,EAAE;IACtC0C,UAAU,IAAID,MAAM,CAACzC,CAAC,CAAC,CAAC0C,UAAU;EACpC;EACA,IAAM3B,MAAM,GAAG,IAAI4B,UAAU,CAACD,UAAU,CAAC;EAEzC,IAAIE,UAAU,GAAG,CAAC;EAClB,KAAK,IAAI5C,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAGyC,MAAM,CAACxB,MAAM,EAAE,EAAEjB,GAAC,EAAE;IACtC,IAAM6C,IAAI,GAAG,IAAIF,UAAU,CAACF,MAAM,CAACzC,GAAC,CAAC,CAACe,MAAM,CAAC;IAC7C2B,UAAU,GAAGG,IAAI,CAAC5B,MAAM;IACxB,KAAK,IAAI6B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,UAAU,EAAE,EAAEI,CAAC,EAAE;MACnC/B,MAAM,CAAC6B,UAAU,EAAE,CAAC,GAAGC,IAAI,CAACC,CAAC,CAAC;IAChC;EACF;EACA,OAAO/B,MAAM;AACf"}
1
+ {"version":3,"file":"parse-wkb.js","names":["NUM_DIMENSIONS","parseWKB","arrayBuffer","view","DataView","offset","littleEndian","getUint8","geometryCode","getUint32","geometryType","type","dimension","point","parsePoint","geometry","line","parseLineString","polygon","parsePolygon","multiPoint","parseMultiPoint","multiLine","parseMultiLineString","multiPolygon","parseMultiPolygon","Error","concat","positions","Float64Array","i","getFloat64","value","size","nPoints","pathIndices","push","Uint16Array","cumulativeSum","sum","nRings","rings","parsed","concatenatedPositions","concatTypedArrays","buffer","polygonIndices","length","primitivePolygonIndices","map","l","unshift","binaryPointGeometries","littleEndianPoint","concatenateBinaryPointGeometries","nLines","binaryLineGeometries","littleEndianLine","concatenateBinaryLineGeometries","nPolygons","binaryPolygonGeometries","littleEndianPolygon","concatenateBinaryPolygonGeometries","lines","polygons","primitivePolygons","_iterator","_createForOfIteratorHelper","_step","s","n","done","binaryPolygon","err","e","f","p","_i","_primitivePolygons","primitivePolygon","apply","_toConsumableArray2","default","filter","x","arrays","byteLength","Uint8Array","byteOffset","data","j"],"sources":["../../../src/lib/parse-wkb.ts"],"sourcesContent":["import type {\n TypedArray,\n BinaryGeometry,\n BinaryPointGeometry,\n BinaryLineGeometry,\n BinaryPolygonGeometry\n} from '@loaders.gl/schema';\n\nconst NUM_DIMENSIONS = {\n 0: 2, // 2D\n 1: 3, // 3D (Z)\n 2: 3, // 3D (M)\n 3: 4 // 4D (ZM)\n};\n\nexport default function parseWKB(arrayBuffer: ArrayBuffer): BinaryGeometry {\n const view = new DataView(arrayBuffer);\n let offset = 0;\n\n // Check endianness of data\n const littleEndian = view.getUint8(offset) === 1;\n offset++;\n\n // 4-digit code representing dimension and type of geometry\n const geometryCode = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const geometryType = geometryCode % 1000;\n const type = ((geometryCode - geometryType) / 1000) as 0 | 1 | 2 | 3;\n const dimension = NUM_DIMENSIONS[type];\n\n switch (geometryType) {\n case 1:\n const point = parsePoint(view, offset, dimension, littleEndian);\n return point.geometry;\n case 2:\n const line = parseLineString(view, offset, dimension, littleEndian);\n return line.geometry;\n case 3:\n const polygon = parsePolygon(view, offset, dimension, littleEndian);\n return polygon.geometry;\n case 4:\n const multiPoint = parseMultiPoint(view, offset, dimension, littleEndian);\n multiPoint.type = 'Point';\n return multiPoint;\n case 5:\n const multiLine = parseMultiLineString(view, offset, dimension, littleEndian);\n multiLine.type = 'LineString';\n return multiLine;\n case 6:\n const multiPolygon = parseMultiPolygon(view, offset, dimension, littleEndian);\n multiPolygon.type = 'Polygon';\n return multiPolygon;\n // case 7:\n // TODO: handle GeometryCollections\n // return parseGeometryCollection(view, offset, dimension, littleEndian);\n default:\n throw new Error(`WKB: Unsupported geometry type: ${geometryType}`);\n }\n}\n\n// Primitives; parse point and linear ring\nfunction parsePoint(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryPointGeometry; offset: number} {\n const positions = new Float64Array(dimension);\n for (let i = 0; i < dimension; i++) {\n positions[i] = view.getFloat64(offset, littleEndian);\n offset += 8;\n }\n\n return {\n geometry: {type: 'Point', positions: {value: positions, size: dimension}},\n offset\n };\n}\n\nfunction parseLineString(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryLineGeometry; offset: number} {\n const nPoints = view.getUint32(offset, littleEndian);\n offset += 4;\n\n // Instantiate array\n const positions = new Float64Array(nPoints * dimension);\n for (let i = 0; i < nPoints * dimension; i++) {\n positions[i] = view.getFloat64(offset, littleEndian);\n offset += 8;\n }\n\n const pathIndices = [0];\n if (nPoints > 0) {\n pathIndices.push(nPoints);\n }\n\n return {\n geometry: {\n type: 'LineString',\n positions: {value: positions, size: dimension},\n pathIndices: {value: new Uint16Array(pathIndices), size: 1}\n },\n offset\n };\n}\n\n// https://stackoverflow.com/a/55261098\nconst cumulativeSum = (sum: number) => (value: number) => (sum += value);\n\nfunction parsePolygon(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryPolygonGeometry; offset: number} {\n const nRings = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const rings: TypedArray[] = [];\n for (let i = 0; i < nRings; i++) {\n const parsed = parseLineString(view, offset, dimension, littleEndian);\n const {positions} = parsed.geometry;\n offset = parsed.offset;\n rings.push(positions.value);\n }\n\n const concatenatedPositions = new Float64Array(concatTypedArrays(rings).buffer);\n const polygonIndices = [0];\n if (concatenatedPositions.length > 0) {\n polygonIndices.push(concatenatedPositions.length / dimension);\n }\n const primitivePolygonIndices = rings.map((l) => l.length / dimension).map(cumulativeSum(0));\n primitivePolygonIndices.unshift(0);\n\n return {\n geometry: {\n type: 'Polygon',\n positions: {value: concatenatedPositions, size: dimension},\n polygonIndices: {\n value: new Uint16Array(polygonIndices),\n size: 1\n },\n primitivePolygonIndices: {value: new Uint16Array(primitivePolygonIndices), size: 1}\n },\n offset\n };\n}\n\nfunction parseMultiPoint(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryPointGeometry {\n const nPoints = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryPointGeometries: BinaryPointGeometry[] = [];\n for (let i = 0; i < nPoints; i++) {\n // Byte order for point\n const littleEndianPoint = view.getUint8(offset) === 1;\n offset++;\n\n // Assert point type\n if (view.getUint32(offset, littleEndianPoint) % 1000 !== 1) {\n throw new Error('WKB: Inner geometries of MultiPoint not of type Point');\n }\n\n offset += 4;\n\n const parsed = parsePoint(view, offset, dimension, littleEndianPoint);\n offset = parsed.offset;\n binaryPointGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryPointGeometries(binaryPointGeometries, dimension);\n}\n\nfunction parseMultiLineString(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryLineGeometry {\n const nLines = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryLineGeometries: BinaryLineGeometry[] = [];\n for (let i = 0; i < nLines; i++) {\n // Byte order for line\n const littleEndianLine = view.getUint8(offset) === 1;\n offset++;\n\n // Assert type LineString\n if (view.getUint32(offset, littleEndianLine) % 1000 !== 2) {\n throw new Error('WKB: Inner geometries of MultiLineString not of type LineString');\n }\n offset += 4;\n\n const parsed = parseLineString(view, offset, dimension, littleEndianLine);\n offset = parsed.offset;\n binaryLineGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryLineGeometries(binaryLineGeometries, dimension);\n}\n\nfunction parseMultiPolygon(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryPolygonGeometry {\n const nPolygons = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryPolygonGeometries: BinaryPolygonGeometry[] = [];\n for (let i = 0; i < nPolygons; i++) {\n // Byte order for polygon\n const littleEndianPolygon = view.getUint8(offset) === 1;\n offset++;\n\n // Assert type Polygon\n if (view.getUint32(offset, littleEndianPolygon) % 1000 !== 3) {\n throw new Error('WKB: Inner geometries of MultiPolygon not of type Polygon');\n }\n offset += 4;\n\n const parsed = parsePolygon(view, offset, dimension, littleEndianPolygon);\n offset = parsed.offset;\n binaryPolygonGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension);\n}\n\n// TODO - move to loaders.gl/schema/gis\n\nfunction concatenateBinaryPointGeometries(\n binaryPointGeometries: BinaryPointGeometry[],\n dimension: number\n): BinaryPointGeometry {\n const positions: TypedArray[] = binaryPointGeometries.map((geometry) => geometry.positions.value);\n const concatenatedPositions = new Float64Array(concatTypedArrays(positions).buffer);\n\n return {\n type: 'Point',\n positions: {value: concatenatedPositions, size: dimension}\n };\n}\n\nfunction concatenateBinaryLineGeometries(\n binaryLineGeometries: BinaryLineGeometry[],\n dimension: number\n): BinaryLineGeometry {\n const lines: TypedArray[] = binaryLineGeometries.map((geometry) => geometry.positions.value);\n const concatenatedPositions = new Float64Array(concatTypedArrays(lines).buffer);\n const pathIndices = lines.map((line) => line.length / dimension).map(cumulativeSum(0));\n pathIndices.unshift(0);\n\n return {\n type: 'LineString',\n positions: {value: concatenatedPositions, size: dimension},\n pathIndices: {value: new Uint16Array(pathIndices), size: 1}\n };\n}\n\nfunction concatenateBinaryPolygonGeometries(\n binaryPolygonGeometries: BinaryPolygonGeometry[],\n dimension: number\n): BinaryPolygonGeometry {\n const polygons: TypedArray[] = [];\n const primitivePolygons: TypedArray[] = [];\n\n for (const binaryPolygon of binaryPolygonGeometries) {\n const {positions, primitivePolygonIndices} = binaryPolygon;\n polygons.push(positions.value);\n primitivePolygons.push(primitivePolygonIndices.value);\n }\n\n const concatenatedPositions = new Float64Array(concatTypedArrays(polygons).buffer);\n const polygonIndices = polygons.map((p) => p.length / dimension).map(cumulativeSum(0));\n polygonIndices.unshift(0);\n\n // Combine primitivePolygonIndices from each individual polygon\n const primitivePolygonIndices = [0];\n for (const primitivePolygon of primitivePolygons) {\n primitivePolygonIndices.push(\n ...primitivePolygon\n .filter((x: number) => x > 0)\n .map((x: number) => x + primitivePolygonIndices[primitivePolygonIndices.length - 1])\n );\n }\n\n return {\n type: 'Polygon',\n positions: {value: concatenatedPositions, size: dimension},\n polygonIndices: {value: new Uint16Array(polygonIndices), size: 1},\n primitivePolygonIndices: {value: new Uint16Array(primitivePolygonIndices), size: 1}\n };\n}\n\n// TODO: remove copy; import from typed-array-utils\n// modules/math/src/geometry/typed-arrays/typed-array-utils.js\nfunction concatTypedArrays(arrays: TypedArray[]): TypedArray {\n let byteLength = 0;\n for (let i = 0; i < arrays.length; ++i) {\n byteLength += arrays[i].byteLength;\n }\n const buffer = new Uint8Array(byteLength);\n\n let byteOffset = 0;\n for (let i = 0; i < arrays.length; ++i) {\n const data = new Uint8Array(arrays[i].buffer);\n byteLength = data.length;\n for (let j = 0; j < byteLength; ++j) {\n buffer[byteOffset++] = data[j];\n }\n }\n return buffer;\n}\n"],"mappings":"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"}
@@ -4,10 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = parseWKT;
7
-
8
7
  var numberRegexp = /[-+]?([0-9]*\.[0-9]+|[0-9]+)([eE][-+]?[0-9]+)?/;
9
8
  var tuples = new RegExp('^' + numberRegexp.source + '(\\s' + numberRegexp.source + '){1,}');
10
-
11
9
  function parseWKT(input) {
12
10
  var parts = input.split(';');
13
11
  var _ = parts.pop();
@@ -49,7 +47,6 @@ function parseWKT(input) {
49
47
  depth++;
50
48
  } else if (elem === ')') {
51
49
  if (pointer.length === 0) return null;
52
-
53
50
  pointer = stack.pop();
54
51
  if (!pointer) return null;
55
52
  depth--;
@@ -1 +1 @@
1
- {"version":3,"file":"parse-wkt.js","names":["numberRegexp","tuples","RegExp","source","parseWKT","input","parts","split","_","pop","srid","shift","i","$","re","match","substring","length","crs","obj","type","properties","name","white","multicoords","depth","rings","stack","pointer","elem","push","some","isNaN","Array","prototype","apply","map","parseFloat","coords","list","item","pt","point","c","coordinates","multipoint","newCoordsFormat","indexOf","replace","multilinestring","linestring","polygon","multipolygon","geometrycollection","geometries","geometry","root"],"sources":["../../../src/lib/parse-wkt.ts"],"sourcesContent":["// Fork of https://github.com/mapbox/wellknown under ISC license (MIT/BSD-2-clause equivalent)\n\n/* eslint-disable */\n// @ts-nocheck\n\nconst numberRegexp = /[-+]?([0-9]*\\.[0-9]+|[0-9]+)([eE][-+]?[0-9]+)?/;\n// Matches sequences like '100 100' or '100 100 100'.\nconst tuples = new RegExp('^' + numberRegexp.source + '(\\\\s' + numberRegexp.source + '){1,}');\n\n/**\n * Parse WKT and return GeoJSON.\n *\n * @param {string} _ A WKT geometry\n * @return {?Object} A GeoJSON geometry object\n **/\nexport default function parseWKT(input) {\n const parts = input.split(';');\n let _ = parts.pop();\n const srid = (parts.shift() || '').split('=').pop();\n\n let i = 0;\n\n function $(re) {\n const match = _.substring(i).match(re);\n if (!match) return null;\n else {\n i += match[0].length;\n return match[0];\n }\n }\n\n function crs(obj) {\n if (obj && srid.match(/\\d+/)) {\n obj.crs = {\n type: 'name',\n properties: {\n name: 'urn:ogc:def:crs:EPSG::' + srid\n }\n };\n }\n\n return obj;\n }\n\n function white() {\n $(/^\\s*/);\n }\n\n function multicoords() {\n white();\n let depth = 0;\n const rings = [];\n const stack = [rings];\n let pointer = rings;\n let elem;\n\n while ((elem = $(/^(\\()/) || $(/^(\\))/) || $(/^(,)/) || $(tuples))) {\n if (elem === '(') {\n stack.push(pointer);\n pointer = [];\n stack[stack.length - 1].push(pointer);\n depth++;\n } else if (elem === ')') {\n // For the case: Polygon(), ...\n if (pointer.length === 0) return null;\n\n // @ts-ignore\n pointer = stack.pop();\n // the stack was empty, input was malformed\n if (!pointer) return null;\n depth--;\n if (depth === 0) break;\n } else if (elem === ',') {\n pointer = [];\n stack[stack.length - 1].push(pointer);\n } else if (!elem.split(/\\s/g).some(isNaN)) {\n Array.prototype.push.apply(pointer, elem.split(/\\s/g).map(parseFloat));\n } else {\n return null;\n }\n white();\n }\n\n if (depth !== 0) return null;\n\n return rings;\n }\n\n function coords() {\n const list = [];\n let item;\n let pt;\n while ((pt = $(tuples) || $(/^(,)/))) {\n if (pt === ',') {\n list.push(item);\n item = [];\n } else if (!pt.split(/\\s/g).some(isNaN)) {\n if (!item) item = [];\n Array.prototype.push.apply(item, pt.split(/\\s/g).map(parseFloat));\n }\n white();\n }\n\n if (item) list.push(item);\n else return null;\n\n return list.length ? list : null;\n }\n\n function point() {\n if (!$(/^(point(\\sz)?)/i)) return null;\n white();\n if (!$(/^(\\()/)) return null;\n const c = coords();\n if (!c) return null;\n white();\n if (!$(/^(\\))/)) return null;\n return {\n type: 'Point',\n coordinates: c[0]\n };\n }\n\n function multipoint() {\n if (!$(/^(multipoint)/i)) return null;\n white();\n const newCoordsFormat = _.substring(_.indexOf('(') + 1, _.length - 1)\n .replace(/\\(/g, '')\n .replace(/\\)/g, '');\n _ = 'MULTIPOINT (' + newCoordsFormat + ')';\n const c = multicoords();\n if (!c) return null;\n white();\n return {\n type: 'MultiPoint',\n coordinates: c\n };\n }\n\n function multilinestring() {\n if (!$(/^(multilinestring)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n white();\n return {\n type: 'MultiLineString',\n coordinates: c\n };\n }\n\n function linestring() {\n if (!$(/^(linestring(\\sz)?)/i)) return null;\n white();\n if (!$(/^(\\()/)) return null;\n const c = coords();\n if (!c) return null;\n if (!$(/^(\\))/)) return null;\n return {\n type: 'LineString',\n coordinates: c\n };\n }\n\n function polygon() {\n if (!$(/^(polygon(\\sz)?)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n return {\n type: 'Polygon',\n coordinates: c\n };\n }\n\n function multipolygon() {\n if (!$(/^(multipolygon)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n return {\n type: 'MultiPolygon',\n coordinates: c\n };\n }\n\n function geometrycollection() {\n const geometries = [];\n let geometry;\n\n if (!$(/^(geometrycollection)/i)) return null;\n white();\n\n if (!$(/^(\\()/)) return null;\n while ((geometry = root())) {\n geometries.push(geometry);\n white();\n $(/^(,)/);\n white();\n }\n if (!$(/^(\\))/)) return null;\n\n return {\n type: 'GeometryCollection',\n geometries: geometries\n };\n }\n\n function root() {\n return (\n point() ||\n linestring() ||\n polygon() ||\n multipoint() ||\n multilinestring() ||\n multipolygon() ||\n geometrycollection()\n );\n }\n\n return crs(root());\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-wkt.js","names":["numberRegexp","tuples","RegExp","source","parseWKT","input","parts","split","_","pop","srid","shift","i","$","re","match","substring","length","crs","obj","type","properties","name","white","multicoords","depth","rings","stack","pointer","elem","push","some","isNaN","Array","prototype","apply","map","parseFloat","coords","list","item","pt","point","c","coordinates","multipoint","newCoordsFormat","indexOf","replace","multilinestring","linestring","polygon","multipolygon","geometrycollection","geometries","geometry","root"],"sources":["../../../src/lib/parse-wkt.ts"],"sourcesContent":["// Fork of https://github.com/mapbox/wellknown under ISC license (MIT/BSD-2-clause equivalent)\n\n/* eslint-disable */\n// @ts-nocheck\n\nconst numberRegexp = /[-+]?([0-9]*\\.[0-9]+|[0-9]+)([eE][-+]?[0-9]+)?/;\n// Matches sequences like '100 100' or '100 100 100'.\nconst tuples = new RegExp('^' + numberRegexp.source + '(\\\\s' + numberRegexp.source + '){1,}');\n\n/**\n * Parse WKT and return GeoJSON.\n *\n * @param {string} _ A WKT geometry\n * @return {?Object} A GeoJSON geometry object\n **/\nexport default function parseWKT(input) {\n const parts = input.split(';');\n let _ = parts.pop();\n const srid = (parts.shift() || '').split('=').pop();\n\n let i = 0;\n\n function $(re) {\n const match = _.substring(i).match(re);\n if (!match) return null;\n else {\n i += match[0].length;\n return match[0];\n }\n }\n\n function crs(obj) {\n if (obj && srid.match(/\\d+/)) {\n obj.crs = {\n type: 'name',\n properties: {\n name: 'urn:ogc:def:crs:EPSG::' + srid\n }\n };\n }\n\n return obj;\n }\n\n function white() {\n $(/^\\s*/);\n }\n\n function multicoords() {\n white();\n let depth = 0;\n const rings = [];\n const stack = [rings];\n let pointer = rings;\n let elem;\n\n while ((elem = $(/^(\\()/) || $(/^(\\))/) || $(/^(,)/) || $(tuples))) {\n if (elem === '(') {\n stack.push(pointer);\n pointer = [];\n stack[stack.length - 1].push(pointer);\n depth++;\n } else if (elem === ')') {\n // For the case: Polygon(), ...\n if (pointer.length === 0) return null;\n\n // @ts-ignore\n pointer = stack.pop();\n // the stack was empty, input was malformed\n if (!pointer) return null;\n depth--;\n if (depth === 0) break;\n } else if (elem === ',') {\n pointer = [];\n stack[stack.length - 1].push(pointer);\n } else if (!elem.split(/\\s/g).some(isNaN)) {\n Array.prototype.push.apply(pointer, elem.split(/\\s/g).map(parseFloat));\n } else {\n return null;\n }\n white();\n }\n\n if (depth !== 0) return null;\n\n return rings;\n }\n\n function coords() {\n const list = [];\n let item;\n let pt;\n while ((pt = $(tuples) || $(/^(,)/))) {\n if (pt === ',') {\n list.push(item);\n item = [];\n } else if (!pt.split(/\\s/g).some(isNaN)) {\n if (!item) item = [];\n Array.prototype.push.apply(item, pt.split(/\\s/g).map(parseFloat));\n }\n white();\n }\n\n if (item) list.push(item);\n else return null;\n\n return list.length ? list : null;\n }\n\n function point() {\n if (!$(/^(point(\\sz)?)/i)) return null;\n white();\n if (!$(/^(\\()/)) return null;\n const c = coords();\n if (!c) return null;\n white();\n if (!$(/^(\\))/)) return null;\n return {\n type: 'Point',\n coordinates: c[0]\n };\n }\n\n function multipoint() {\n if (!$(/^(multipoint)/i)) return null;\n white();\n const newCoordsFormat = _.substring(_.indexOf('(') + 1, _.length - 1)\n .replace(/\\(/g, '')\n .replace(/\\)/g, '');\n _ = 'MULTIPOINT (' + newCoordsFormat + ')';\n const c = multicoords();\n if (!c) return null;\n white();\n return {\n type: 'MultiPoint',\n coordinates: c\n };\n }\n\n function multilinestring() {\n if (!$(/^(multilinestring)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n white();\n return {\n type: 'MultiLineString',\n coordinates: c\n };\n }\n\n function linestring() {\n if (!$(/^(linestring(\\sz)?)/i)) return null;\n white();\n if (!$(/^(\\()/)) return null;\n const c = coords();\n if (!c) return null;\n if (!$(/^(\\))/)) return null;\n return {\n type: 'LineString',\n coordinates: c\n };\n }\n\n function polygon() {\n if (!$(/^(polygon(\\sz)?)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n return {\n type: 'Polygon',\n coordinates: c\n };\n }\n\n function multipolygon() {\n if (!$(/^(multipolygon)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n return {\n type: 'MultiPolygon',\n coordinates: c\n };\n }\n\n function geometrycollection() {\n const geometries = [];\n let geometry;\n\n if (!$(/^(geometrycollection)/i)) return null;\n white();\n\n if (!$(/^(\\()/)) return null;\n while ((geometry = root())) {\n geometries.push(geometry);\n white();\n $(/^(,)/);\n white();\n }\n if (!$(/^(\\))/)) return null;\n\n return {\n type: 'GeometryCollection',\n geometries: geometries\n };\n }\n\n function root() {\n return (\n point() ||\n linestring() ||\n polygon() ||\n multipoint() ||\n multilinestring() ||\n multipolygon() ||\n geometrycollection()\n );\n }\n\n return crs(root());\n}\n"],"mappings":"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"}
@@ -8,7 +8,6 @@ exports.default = void 0;
8
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
11
  var LE = true;
13
12
  var BE = false;
14
13
  var BinaryWriter = function () {
@@ -121,11 +120,9 @@ var BinaryWriter = function () {
121
120
  this.dataView.setFloat64(this.byteOffset, value, BE);
122
121
  this.byteOffset += 8;
123
122
  }
124
-
125
123
  }, {
126
124
  key: "writeVarInt",
127
- value:
128
- function writeVarInt(value) {
125
+ value: function writeVarInt(value) {
129
126
  var length = 1;
130
127
  while ((value & 0xffffff80) !== 0) {
131
128
  this.writeUInt8(value & 0x7f | 0x80);
@@ -135,21 +132,17 @@ var BinaryWriter = function () {
135
132
  this.writeUInt8(value & 0x7f);
136
133
  return length;
137
134
  }
138
-
139
135
  }, {
140
136
  key: "writeBuffer",
141
- value:
142
- function writeBuffer(arrayBuffer) {
137
+ value: function writeBuffer(arrayBuffer) {
143
138
  this._ensureSize(arrayBuffer.byteLength);
144
139
  var tempArray = new Uint8Array(this.arrayBuffer);
145
140
  tempArray.set(new Uint8Array(arrayBuffer), this.byteOffset);
146
141
  this.byteOffset += arrayBuffer.byteLength;
147
142
  }
148
-
149
143
  }, {
150
144
  key: "_ensureSize",
151
- value:
152
- function _ensureSize(size) {
145
+ value: function _ensureSize(size) {
153
146
  if (this.arrayBuffer.byteLength < this.byteOffset + size) {
154
147
  if (this.allowResize) {
155
148
  var newArrayBuffer = new ArrayBuffer(this.byteOffset + size);