@loaders.gl/wkt 3.4.14 → 3.4.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es5/bundle.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/index.js +6 -6
- package/dist/es5/lib/encode-wkb.js +62 -176
- package/dist/es5/lib/encode-wkb.js.map +1 -1
- package/dist/es5/lib/parse-wkb.js +75 -104
- package/dist/es5/lib/parse-wkb.js.map +1 -1
- package/dist/es5/lib/parse-wkt.js +24 -24
- package/dist/es5/lib/parse-wkt.js.map +1 -1
- package/dist/es5/lib/utils/binary-writer.js +101 -140
- package/dist/es5/lib/utils/binary-writer.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/lib/utils/version.js.map +1 -1
- package/dist/es5/wkb-loader.js +7 -27
- package/dist/es5/wkb-loader.js.map +1 -1
- package/dist/es5/wkb-writer.js +1 -1
- package/dist/es5/wkb-writer.js.map +1 -1
- package/dist/es5/wkt-loader.js +5 -25
- package/dist/es5/wkt-loader.js.map +1 -1
- package/dist/es5/wkt-writer.js +1 -1
- package/dist/es5/wkt-writer.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/wkt-worker.js +1 -1
- package/package.json +4 -4
package/dist/es5/bundle.js
CHANGED
package/dist/es5/bundle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
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"}
|
package/dist/es5/index.js
CHANGED
|
@@ -5,37 +5,37 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
Object.defineProperty(exports, "WKBLoader", {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: function
|
|
8
|
+
get: function () {
|
|
9
9
|
return _wkbLoader.WKBLoader;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "WKBWorkerLoader", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function
|
|
14
|
+
get: function () {
|
|
15
15
|
return _wkbLoader.WKBWorkerLoader;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
18
|
Object.defineProperty(exports, "WKBWriter", {
|
|
19
19
|
enumerable: true,
|
|
20
|
-
get: function
|
|
20
|
+
get: function () {
|
|
21
21
|
return _wkbWriter.WKBWriter;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "WKTLoader", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function
|
|
26
|
+
get: function () {
|
|
27
27
|
return _wktLoader.WKTLoader;
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
30
|
Object.defineProperty(exports, "WKTWorkerLoader", {
|
|
31
31
|
enumerable: true,
|
|
32
|
-
get: function
|
|
32
|
+
get: function () {
|
|
33
33
|
return _wktLoader.WKTWorkerLoader;
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
36
|
Object.defineProperty(exports, "WKTWriter", {
|
|
37
37
|
enumerable: true,
|
|
38
|
-
get: function
|
|
38
|
+
get: function () {
|
|
39
39
|
return _wktWriter.WKTWriter;
|
|
40
40
|
}
|
|
41
41
|
});
|
|
@@ -5,11 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = encodeWKB;
|
|
8
|
-
var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
|
|
9
8
|
var _binaryWriter = _interopRequireDefault(require("./utils/binary-writer"));
|
|
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
|
-
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
9
|
var WKB = function (WKB) {
|
|
14
10
|
WKB[WKB["Point"] = 1] = "Point";
|
|
15
11
|
WKB[WKB["LineString"] = 2] = "LineString";
|
|
@@ -21,7 +17,7 @@ var WKB = function (WKB) {
|
|
|
21
17
|
return WKB;
|
|
22
18
|
}(WKB || {});
|
|
23
19
|
function encodeWKB(geometry) {
|
|
24
|
-
|
|
20
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
25
21
|
if (geometry.type === 'Feature') {
|
|
26
22
|
geometry = geometry.geometry;
|
|
27
23
|
}
|
|
@@ -44,7 +40,7 @@ function encodeWKB(geometry) {
|
|
|
44
40
|
case 'GeometryCollection':
|
|
45
41
|
return encodeGeometryCollection(geometry, options);
|
|
46
42
|
default:
|
|
47
|
-
|
|
43
|
+
const exhaustiveCheck = geometry;
|
|
48
44
|
throw new Error("Unhandled case: ".concat(exhaustiveCheck));
|
|
49
45
|
}
|
|
50
46
|
}
|
|
@@ -65,12 +61,12 @@ function getGeometrySize(geometry, options) {
|
|
|
65
61
|
case 'GeometryCollection':
|
|
66
62
|
return getGeometryCollectionSize(geometry, options);
|
|
67
63
|
default:
|
|
68
|
-
|
|
64
|
+
const exhaustiveCheck = geometry;
|
|
69
65
|
throw new Error("Unhandled case: ".concat(exhaustiveCheck));
|
|
70
66
|
}
|
|
71
67
|
}
|
|
72
68
|
function encodePoint(coordinates, options) {
|
|
73
|
-
|
|
69
|
+
const writer = new _binaryWriter.default(getPointSize(options));
|
|
74
70
|
writer.writeInt8(1);
|
|
75
71
|
writeWkbType(writer, WKB.Point, options);
|
|
76
72
|
if (typeof coordinates[0] === 'undefined' && typeof coordinates[1] === 'undefined') {
|
|
@@ -98,251 +94,141 @@ function writeCoordinate(writer, coordinate, options) {
|
|
|
98
94
|
}
|
|
99
95
|
}
|
|
100
96
|
function getPointSize(options) {
|
|
101
|
-
|
|
97
|
+
const coordinateSize = getCoordinateSize(options);
|
|
102
98
|
return 1 + 4 + coordinateSize;
|
|
103
99
|
}
|
|
104
100
|
function encodeLineString(coordinates, options) {
|
|
105
|
-
|
|
106
|
-
|
|
101
|
+
const size = getLineStringSize(coordinates, options);
|
|
102
|
+
const writer = new _binaryWriter.default(size);
|
|
107
103
|
writer.writeInt8(1);
|
|
108
104
|
writeWkbType(writer, WKB.LineString, options);
|
|
109
105
|
writer.writeUInt32LE(coordinates.length);
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
try {
|
|
113
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
114
|
-
var coordinate = _step.value;
|
|
115
|
-
writeCoordinate(writer, coordinate, options);
|
|
116
|
-
}
|
|
117
|
-
} catch (err) {
|
|
118
|
-
_iterator.e(err);
|
|
119
|
-
} finally {
|
|
120
|
-
_iterator.f();
|
|
106
|
+
for (const coordinate of coordinates) {
|
|
107
|
+
writeCoordinate(writer, coordinate, options);
|
|
121
108
|
}
|
|
122
109
|
return writer.arrayBuffer;
|
|
123
110
|
}
|
|
124
111
|
function getLineStringSize(coordinates, options) {
|
|
125
|
-
|
|
112
|
+
const coordinateSize = getCoordinateSize(options);
|
|
126
113
|
return 1 + 4 + 4 + coordinates.length * coordinateSize;
|
|
127
114
|
}
|
|
128
115
|
function encodePolygon(coordinates, options) {
|
|
129
|
-
|
|
116
|
+
const writer = new _binaryWriter.default(getPolygonSize(coordinates, options));
|
|
130
117
|
writer.writeInt8(1);
|
|
131
118
|
writeWkbType(writer, WKB.Polygon, options);
|
|
132
|
-
|
|
133
|
-
exteriorRing = _coordinates[0],
|
|
134
|
-
interiorRings = _coordinates.slice(1);
|
|
119
|
+
const [exteriorRing, ...interiorRings] = coordinates;
|
|
135
120
|
if (exteriorRing.length > 0) {
|
|
136
121
|
writer.writeUInt32LE(1 + interiorRings.length);
|
|
137
122
|
writer.writeUInt32LE(exteriorRing.length);
|
|
138
123
|
} else {
|
|
139
124
|
writer.writeUInt32LE(0);
|
|
140
125
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
try {
|
|
144
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
145
|
-
var coordinate = _step2.value;
|
|
146
|
-
writeCoordinate(writer, coordinate, options);
|
|
147
|
-
}
|
|
148
|
-
} catch (err) {
|
|
149
|
-
_iterator2.e(err);
|
|
150
|
-
} finally {
|
|
151
|
-
_iterator2.f();
|
|
126
|
+
for (const coordinate of exteriorRing) {
|
|
127
|
+
writeCoordinate(writer, coordinate, options);
|
|
152
128
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
var interiorRing = _step3.value;
|
|
158
|
-
writer.writeUInt32LE(interiorRing.length);
|
|
159
|
-
var _iterator4 = _createForOfIteratorHelper(interiorRing),
|
|
160
|
-
_step4;
|
|
161
|
-
try {
|
|
162
|
-
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
163
|
-
var _coordinate = _step4.value;
|
|
164
|
-
writeCoordinate(writer, _coordinate, options);
|
|
165
|
-
}
|
|
166
|
-
} catch (err) {
|
|
167
|
-
_iterator4.e(err);
|
|
168
|
-
} finally {
|
|
169
|
-
_iterator4.f();
|
|
170
|
-
}
|
|
129
|
+
for (const interiorRing of interiorRings) {
|
|
130
|
+
writer.writeUInt32LE(interiorRing.length);
|
|
131
|
+
for (const coordinate of interiorRing) {
|
|
132
|
+
writeCoordinate(writer, coordinate, options);
|
|
171
133
|
}
|
|
172
|
-
} catch (err) {
|
|
173
|
-
_iterator3.e(err);
|
|
174
|
-
} finally {
|
|
175
|
-
_iterator3.f();
|
|
176
134
|
}
|
|
177
135
|
return writer.arrayBuffer;
|
|
178
136
|
}
|
|
179
137
|
function getPolygonSize(coordinates, options) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
interiorRings = _coordinates2.slice(1);
|
|
184
|
-
var size = 1 + 4 + 4;
|
|
138
|
+
const coordinateSize = getCoordinateSize(options);
|
|
139
|
+
const [exteriorRing, ...interiorRings] = coordinates;
|
|
140
|
+
let size = 1 + 4 + 4;
|
|
185
141
|
if (exteriorRing.length > 0) {
|
|
186
142
|
size += 4 + exteriorRing.length * coordinateSize;
|
|
187
143
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
try {
|
|
191
|
-
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
192
|
-
var interiorRing = _step5.value;
|
|
193
|
-
size += 4 + interiorRing.length * coordinateSize;
|
|
194
|
-
}
|
|
195
|
-
} catch (err) {
|
|
196
|
-
_iterator5.e(err);
|
|
197
|
-
} finally {
|
|
198
|
-
_iterator5.f();
|
|
144
|
+
for (const interiorRing of interiorRings) {
|
|
145
|
+
size += 4 + interiorRing.length * coordinateSize;
|
|
199
146
|
}
|
|
200
147
|
return size;
|
|
201
148
|
}
|
|
202
149
|
function encodeMultiPoint(multiPoint, options) {
|
|
203
|
-
|
|
204
|
-
|
|
150
|
+
const writer = new _binaryWriter.default(getMultiPointSize(multiPoint, options));
|
|
151
|
+
const points = multiPoint.coordinates;
|
|
205
152
|
writer.writeInt8(1);
|
|
206
153
|
writeWkbType(writer, WKB.MultiPoint, options);
|
|
207
154
|
writer.writeUInt32LE(points.length);
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
212
|
-
var point = _step6.value;
|
|
213
|
-
var arrayBuffer = encodePoint(point, options);
|
|
214
|
-
writer.writeBuffer(arrayBuffer);
|
|
215
|
-
}
|
|
216
|
-
} catch (err) {
|
|
217
|
-
_iterator6.e(err);
|
|
218
|
-
} finally {
|
|
219
|
-
_iterator6.f();
|
|
155
|
+
for (const point of points) {
|
|
156
|
+
const arrayBuffer = encodePoint(point, options);
|
|
157
|
+
writer.writeBuffer(arrayBuffer);
|
|
220
158
|
}
|
|
221
159
|
return writer.arrayBuffer;
|
|
222
160
|
}
|
|
223
161
|
function getMultiPointSize(multiPoint, options) {
|
|
224
|
-
|
|
225
|
-
|
|
162
|
+
let coordinateSize = getCoordinateSize(options);
|
|
163
|
+
const points = multiPoint.coordinates;
|
|
226
164
|
coordinateSize += 5;
|
|
227
165
|
return 1 + 4 + 4 + points.length * coordinateSize;
|
|
228
166
|
}
|
|
229
167
|
function encodeMultiLineString(multiLineString, options) {
|
|
230
|
-
|
|
231
|
-
|
|
168
|
+
const writer = new _binaryWriter.default(getMultiLineStringSize(multiLineString, options));
|
|
169
|
+
const lineStrings = multiLineString.coordinates;
|
|
232
170
|
writer.writeInt8(1);
|
|
233
171
|
writeWkbType(writer, WKB.MultiLineString, options);
|
|
234
172
|
writer.writeUInt32LE(lineStrings.length);
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
239
|
-
var lineString = _step7.value;
|
|
240
|
-
var encodedLineString = encodeLineString(lineString, options);
|
|
241
|
-
writer.writeBuffer(encodedLineString);
|
|
242
|
-
}
|
|
243
|
-
} catch (err) {
|
|
244
|
-
_iterator7.e(err);
|
|
245
|
-
} finally {
|
|
246
|
-
_iterator7.f();
|
|
173
|
+
for (const lineString of lineStrings) {
|
|
174
|
+
const encodedLineString = encodeLineString(lineString, options);
|
|
175
|
+
writer.writeBuffer(encodedLineString);
|
|
247
176
|
}
|
|
248
177
|
return writer.arrayBuffer;
|
|
249
178
|
}
|
|
250
179
|
function getMultiLineStringSize(multiLineString, options) {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
try {
|
|
256
|
-
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
257
|
-
var lineString = _step8.value;
|
|
258
|
-
size += getLineStringSize(lineString, options);
|
|
259
|
-
}
|
|
260
|
-
} catch (err) {
|
|
261
|
-
_iterator8.e(err);
|
|
262
|
-
} finally {
|
|
263
|
-
_iterator8.f();
|
|
180
|
+
let size = 1 + 4 + 4;
|
|
181
|
+
const lineStrings = multiLineString.coordinates;
|
|
182
|
+
for (const lineString of lineStrings) {
|
|
183
|
+
size += getLineStringSize(lineString, options);
|
|
264
184
|
}
|
|
265
185
|
return size;
|
|
266
186
|
}
|
|
267
187
|
function encodeMultiPolygon(multiPolygon, options) {
|
|
268
|
-
|
|
269
|
-
|
|
188
|
+
const writer = new _binaryWriter.default(getMultiPolygonSize(multiPolygon, options));
|
|
189
|
+
const polygons = multiPolygon.coordinates;
|
|
270
190
|
writer.writeInt8(1);
|
|
271
191
|
writeWkbType(writer, WKB.MultiPolygon, options);
|
|
272
192
|
writer.writeUInt32LE(polygons.length);
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
|
277
|
-
var polygon = _step9.value;
|
|
278
|
-
var encodedPolygon = encodePolygon(polygon, options);
|
|
279
|
-
writer.writeBuffer(encodedPolygon);
|
|
280
|
-
}
|
|
281
|
-
} catch (err) {
|
|
282
|
-
_iterator9.e(err);
|
|
283
|
-
} finally {
|
|
284
|
-
_iterator9.f();
|
|
193
|
+
for (const polygon of polygons) {
|
|
194
|
+
const encodedPolygon = encodePolygon(polygon, options);
|
|
195
|
+
writer.writeBuffer(encodedPolygon);
|
|
285
196
|
}
|
|
286
197
|
return writer.arrayBuffer;
|
|
287
198
|
}
|
|
288
199
|
function getMultiPolygonSize(multiPolygon, options) {
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
try {
|
|
294
|
-
for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
|
|
295
|
-
var polygon = _step10.value;
|
|
296
|
-
size += getPolygonSize(polygon, options);
|
|
297
|
-
}
|
|
298
|
-
} catch (err) {
|
|
299
|
-
_iterator10.e(err);
|
|
300
|
-
} finally {
|
|
301
|
-
_iterator10.f();
|
|
200
|
+
let size = 1 + 4 + 4;
|
|
201
|
+
const polygons = multiPolygon.coordinates;
|
|
202
|
+
for (const polygon of polygons) {
|
|
203
|
+
size += getPolygonSize(polygon, options);
|
|
302
204
|
}
|
|
303
205
|
return size;
|
|
304
206
|
}
|
|
305
207
|
function encodeGeometryCollection(collection, options) {
|
|
306
|
-
|
|
208
|
+
const writer = new _binaryWriter.default(getGeometryCollectionSize(collection, options));
|
|
307
209
|
writer.writeInt8(1);
|
|
308
210
|
writeWkbType(writer, WKB.GeometryCollection, options);
|
|
309
211
|
writer.writeUInt32LE(collection.geometries.length);
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
|
|
314
|
-
var geometry = _step11.value;
|
|
315
|
-
var arrayBuffer = encodeWKB(geometry, options);
|
|
316
|
-
writer.writeBuffer(arrayBuffer);
|
|
317
|
-
}
|
|
318
|
-
} catch (err) {
|
|
319
|
-
_iterator11.e(err);
|
|
320
|
-
} finally {
|
|
321
|
-
_iterator11.f();
|
|
212
|
+
for (const geometry of collection.geometries) {
|
|
213
|
+
const arrayBuffer = encodeWKB(geometry, options);
|
|
214
|
+
writer.writeBuffer(arrayBuffer);
|
|
322
215
|
}
|
|
323
216
|
return writer.arrayBuffer;
|
|
324
217
|
}
|
|
325
218
|
function getGeometryCollectionSize(collection, options) {
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
try {
|
|
330
|
-
for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
|
|
331
|
-
var geometry = _step12.value;
|
|
332
|
-
size += getGeometrySize(geometry, options);
|
|
333
|
-
}
|
|
334
|
-
} catch (err) {
|
|
335
|
-
_iterator12.e(err);
|
|
336
|
-
} finally {
|
|
337
|
-
_iterator12.f();
|
|
219
|
+
let size = 1 + 4 + 4;
|
|
220
|
+
for (const geometry of collection.geometries) {
|
|
221
|
+
size += getGeometrySize(geometry, options);
|
|
338
222
|
}
|
|
339
223
|
return size;
|
|
340
224
|
}
|
|
341
225
|
function writeWkbType(writer, geometryType, options) {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
226
|
+
const {
|
|
227
|
+
hasZ,
|
|
228
|
+
hasM,
|
|
229
|
+
srid
|
|
230
|
+
} = options;
|
|
231
|
+
let dimensionType = 0;
|
|
346
232
|
if (!srid) {
|
|
347
233
|
if (hasZ && hasM) {
|
|
348
234
|
dimensionType += 3000;
|
|
@@ -362,7 +248,7 @@ function writeWkbType(writer, geometryType, options) {
|
|
|
362
248
|
writer.writeUInt32LE(dimensionType + geometryType >>> 0);
|
|
363
249
|
}
|
|
364
250
|
function getCoordinateSize(options) {
|
|
365
|
-
|
|
251
|
+
let coordinateSize = 16;
|
|
366
252
|
if (options.hasZ) {
|
|
367
253
|
coordinateSize += 8;
|
|
368
254
|
}
|
|
@@ -1 +1 @@
|
|
|
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","arguments","undefined","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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"}
|
|
1
|
+
{"version":3,"file":"encode-wkb.js","names":["_binaryWriter","_interopRequireDefault","require","WKB","encodeWKB","geometry","options","arguments","length","undefined","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","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":";;;;;;;AAgBA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAiD,IAM5CC,GAAG,aAAHA,GAAG;EAAHA,GAAG,CAAHA,GAAG;EAAHA,GAAG,CAAHA,GAAG;EAAHA,GAAG,CAAHA,GAAG;EAAHA,GAAG,CAAHA,GAAG;EAAHA,GAAG,CAAHA,GAAG;EAAHA,GAAG,CAAHA,GAAG;EAAHA,GAAG,CAAHA,GAAG;EAAA,OAAHA,GAAG;AAAA,EAAHA,GAAG;AA6BO,SAASC,SAASA,CAC/BC,QAA4B,EAEf;EAAA,IADbC,OAAuC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAE5C,IAAIF,QAAQ,CAACK,IAAI,KAAK,SAAS,EAAE;IAC/BL,QAAQ,GAAGA,QAAQ,CAACA,QAAQ;EAC9B;EAIA,IAAI,KAAK,IAAIC,OAAO,EAAE;IACpBA,OAAO,GAAGA,OAAO,CAACK,GAAG;EACvB;EAEA,QAAQN,QAAQ,CAACK,IAAI;IACnB,KAAK,OAAO;MACV,OAAOE,WAAW,CAACP,QAAQ,CAACQ,WAAW,EAAEP,OAAO,CAAC;IACnD,KAAK,YAAY;MACf,OAAOQ,gBAAgB,CAACT,QAAQ,CAACQ,WAAW,EAAEP,OAAO,CAAC;IACxD,KAAK,SAAS;MACZ,OAAOS,aAAa,CAACV,QAAQ,CAACQ,WAAW,EAAEP,OAAO,CAAC;IACrD,KAAK,YAAY;MACf,OAAOU,gBAAgB,CAACX,QAAQ,EAAEC,OAAO,CAAC;IAC5C,KAAK,cAAc;MACjB,OAAOW,kBAAkB,CAACZ,QAAQ,EAAEC,OAAO,CAAC;IAC9C,KAAK,iBAAiB;MACpB,OAAOY,qBAAqB,CAACb,QAAQ,EAAEC,OAAO,CAAC;IACjD,KAAK,oBAAoB;MACvB,OAAOa,wBAAwB,CAACd,QAAQ,EAAEC,OAAO,CAAC;IACpD;MACE,MAAMc,eAAsB,GAAGf,QAAQ;MACvC,MAAM,IAAIgB,KAAK,oBAAAC,MAAA,CAAoBF,eAAe,CAAE,CAAC;EACzD;AACF;AAGA,SAASG,eAAeA,CAAClB,QAAkB,EAAEC,OAAmB,EAAU;EACxE,QAAQD,QAAQ,CAACK,IAAI;IACnB,KAAK,OAAO;MACV,OAAOc,YAAY,CAAClB,OAAO,CAAC;IAC9B,KAAK,YAAY;MACf,OAAOmB,iBAAiB,CAACpB,QAAQ,CAACQ,WAAW,EAAEP,OAAO,CAAC;IACzD,KAAK,SAAS;MACZ,OAAOoB,cAAc,CAACrB,QAAQ,CAACQ,WAAW,EAAEP,OAAO,CAAC;IACtD,KAAK,YAAY;MACf,OAAOqB,iBAAiB,CAACtB,QAAQ,EAAEC,OAAO,CAAC;IAC7C,KAAK,cAAc;MACjB,OAAOsB,mBAAmB,CAACvB,QAAQ,EAAEC,OAAO,CAAC;IAC/C,KAAK,iBAAiB;MACpB,OAAOuB,sBAAsB,CAACxB,QAAQ,EAAEC,OAAO,CAAC;IAClD,KAAK,oBAAoB;MACvB,OAAOwB,yBAAyB,CAACzB,QAAQ,EAAEC,OAAO,CAAC;IACrD;MACE,MAAMc,eAAsB,GAAGf,QAAQ;MACvC,MAAM,IAAIgB,KAAK,oBAAAC,MAAA,CAAoBF,eAAe,CAAE,CAAC;EACzD;AACF;AAGA,SAASR,WAAWA,CAACC,WAAiC,EAAEP,OAAmB,EAAe;EACxF,MAAMyB,MAAM,GAAG,IAAIC,qBAAY,CAACR,YAAY,CAAClB,OAAO,CAAC,CAAC;EAEtDyB,MAAM,CAACE,SAAS,CAAC,CAAC,CAAC;EACnBC,YAAY,CAACH,MAAM,EAAE5B,GAAG,CAACgC,KAAK,EAAE7B,OAAO,CAAC;EAGxC,IAAI,OAAOO,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,OAAOA,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;IAClFkB,MAAM,CAACK,aAAa,CAACC,GAAG,CAAC;IACzBN,MAAM,CAACK,aAAa,CAACC,GAAG,CAAC;IAEzB,IAAI/B,OAAO,CAACgC,IAAI,EAAE;MAChBP,MAAM,CAACK,aAAa,CAACC,GAAG,CAAC;IAC3B;IACA,IAAI/B,OAAO,CAACiC,IAAI,EAAE;MAChBR,MAAM,CAACK,aAAa,CAACC,GAAG,CAAC;IAC3B;EACF,CAAC,MAAM;IACLG,eAAe,CAACT,MAAM,EAAElB,WAAW,EAAEP,OAAO,CAAC;EAC/C;EAEA,OAAOyB,MAAM,CAACU,WAAW;AAC3B;AAGA,SAASD,eAAeA,CACtBT,MAAoB,EACpBW,UAAgC,EAChCpC,OAAmB,EACb;EACNyB,MAAM,CAACK,aAAa,CAACM,UAAU,CAAC,CAAC,CAAC,CAAC;EACnCX,MAAM,CAACK,aAAa,CAACM,UAAU,CAAC,CAAC,CAAC,CAAC;EAEnC,IAAIpC,OAAO,CAACgC,IAAI,EAAE;IAChBP,MAAM,CAACK,aAAa,CAACM,UAAU,CAAC,CAAC,CAAC,CAAC;EACrC;EACA,IAAIpC,OAAO,CAACiC,IAAI,EAAE;IAChBR,MAAM,CAACK,aAAa,CAACM,UAAU,CAAC,CAAC,CAAC,CAAC;EACrC;AACF;AAGA,SAASlB,YAAYA,CAAClB,OAAmB,EAAU;EACjD,MAAMqC,cAAc,GAAGC,iBAAiB,CAACtC,OAAO,CAAC;EACjD,OAAO,CAAC,GAAG,CAAC,GAAGqC,cAAc;AAC/B;AAGA,SAAS7B,gBAAgBA,CACvBD,WAAsC,EACtCP,OAAmB,EACN;EACb,MAAMuC,IAAI,GAAGpB,iBAAiB,CAACZ,WAAW,EAAEP,OAAO,CAAC;EAEpD,MAAMyB,MAAM,GAAG,IAAIC,qBAAY,CAACa,IAAI,CAAC;EAErCd,MAAM,CAACE,SAAS,CAAC,CAAC,CAAC;EAEnBC,YAAY,CAACH,MAAM,EAAE5B,GAAG,CAAC2C,UAAU,EAAExC,OAAO,CAAC;EAC7CyB,MAAM,CAACgB,aAAa,CAAClC,WAAW,CAACL,MAAM,CAAC;EAExC,KAAK,MAAMkC,UAAU,IAAI7B,WAAW,EAAE;IACpC2B,eAAe,CAACT,MAAM,EAAEW,UAAU,EAAEpC,OAAO,CAAC;EAC9C;EAEA,OAAOyB,MAAM,CAACU,WAAW;AAC3B;AAGA,SAAShB,iBAAiBA,CAACZ,WAAsC,EAAEP,OAAmB,EAAU;EAC9F,MAAMqC,cAAc,GAAGC,iBAAiB,CAACtC,OAAO,CAAC;EAEjD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAGO,WAAW,CAACL,MAAM,GAAGmC,cAAc;AACxD;AAGA,SAAS5B,aAAaA,CAACF,WAAmC,EAAEP,OAAmB,EAAe;EAC5F,MAAMyB,MAAM,GAAG,IAAIC,qBAAY,CAACN,cAAc,CAACb,WAAW,EAAEP,OAAO,CAAC,CAAC;EAErEyB,MAAM,CAACE,SAAS,CAAC,CAAC,CAAC;EAEnBC,YAAY,CAACH,MAAM,EAAE5B,GAAG,CAAC6C,OAAO,EAAE1C,OAAO,CAAC;EAC1C,MAAM,CAAC2C,YAAY,EAAE,GAAGC,aAAa,CAAC,GAAGrC,WAAW;EAEpD,IAAIoC,YAAY,CAACzC,MAAM,GAAG,CAAC,EAAE;IAC3BuB,MAAM,CAACgB,aAAa,CAAC,CAAC,GAAGG,aAAa,CAAC1C,MAAM,CAAC;IAC9CuB,MAAM,CAACgB,aAAa,CAACE,YAAY,CAACzC,MAAM,CAAC;EAC3C,CAAC,MAAM;IACLuB,MAAM,CAACgB,aAAa,CAAC,CAAC,CAAC;EACzB;EAEA,KAAK,MAAML,UAAU,IAAIO,YAAY,EAAE;IACrCT,eAAe,CAACT,MAAM,EAAEW,UAAU,EAAEpC,OAAO,CAAC;EAC9C;EAEA,KAAK,MAAM6C,YAAY,IAAID,aAAa,EAAE;IACxCnB,MAAM,CAACgB,aAAa,CAACI,YAAY,CAAC3C,MAAM,CAAC;IAEzC,KAAK,MAAMkC,UAAU,IAAIS,YAAY,EAAE;MACrCX,eAAe,CAACT,MAAM,EAAEW,UAAU,EAAEpC,OAAO,CAAC;IAC9C;EACF;EAEA,OAAOyB,MAAM,CAACU,WAAW;AAC3B;AAGA,SAASf,cAAcA,CAACb,WAAmC,EAAEP,OAAmB,EAAU;EACxF,MAAMqC,cAAc,GAAGC,iBAAiB,CAACtC,OAAO,CAAC;EACjD,MAAM,CAAC2C,YAAY,EAAE,GAAGC,aAAa,CAAC,GAAGrC,WAAW;EAEpD,IAAIgC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;EAEpB,IAAII,YAAY,CAACzC,MAAM,GAAG,CAAC,EAAE;IAC3BqC,IAAI,IAAI,CAAC,GAAGI,YAAY,CAACzC,MAAM,GAAGmC,cAAc;EAClD;EAEA,KAAK,MAAMQ,YAAY,IAAID,aAAa,EAAE;IACxCL,IAAI,IAAI,CAAC,GAAGM,YAAY,CAAC3C,MAAM,GAAGmC,cAAc;EAClD;EAEA,OAAOE,IAAI;AACb;AAGA,SAAS7B,gBAAgBA,CAACoC,UAAsB,EAAE9C,OAAmB,EAAE;EACrE,MAAMyB,MAAM,GAAG,IAAIC,qBAAY,CAACL,iBAAiB,CAACyB,UAAU,EAAE9C,OAAO,CAAC,CAAC;EACvE,MAAM+C,MAAM,GAAGD,UAAU,CAACvC,WAAW;EAErCkB,MAAM,CAACE,SAAS,CAAC,CAAC,CAAC;EAEnBC,YAAY,CAACH,MAAM,EAAE5B,GAAG,CAACmD,UAAU,EAAEhD,OAAO,CAAC;EAC7CyB,MAAM,CAACgB,aAAa,CAACM,MAAM,CAAC7C,MAAM,CAAC;EAEnC,KAAK,MAAM+C,KAAK,IAAIF,MAAM,EAAE;IAE1B,MAAMZ,WAAW,GAAG7B,WAAW,CAAC2C,KAAK,EAAEjD,OAAO,CAAC;IAC/CyB,MAAM,CAACyB,WAAW,CAACf,WAAW,CAAC;EACjC;EAEA,OAAOV,MAAM,CAACU,WAAW;AAC3B;AAGA,SAASd,iBAAiBA,CAACyB,UAAsB,EAAE9C,OAAmB,EAAE;EACtE,IAAIqC,cAAc,GAAGC,iBAAiB,CAACtC,OAAO,CAAC;EAC/C,MAAM+C,MAAM,GAAGD,UAAU,CAACvC,WAAW;EAGrC8B,cAAc,IAAI,CAAC;EAEnB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAGU,MAAM,CAAC7C,MAAM,GAAGmC,cAAc;AACnD;AAGA,SAASzB,qBAAqBA,CAACuC,eAAgC,EAAEnD,OAAmB,EAAE;EACpF,MAAMyB,MAAM,GAAG,IAAIC,qBAAY,CAACH,sBAAsB,CAAC4B,eAAe,EAAEnD,OAAO,CAAC,CAAC;EACjF,MAAMoD,WAAW,GAAGD,eAAe,CAAC5C,WAAW;EAE/CkB,MAAM,CAACE,SAAS,CAAC,CAAC,CAAC;EAEnBC,YAAY,CAACH,MAAM,EAAE5B,GAAG,CAACwD,eAAe,EAAErD,OAAO,CAAC;EAClDyB,MAAM,CAACgB,aAAa,CAACW,WAAW,CAAClD,MAAM,CAAC;EAExC,KAAK,MAAMoD,UAAU,IAAIF,WAAW,EAAE;IAEpC,MAAMG,iBAAiB,GAAG/C,gBAAgB,CAAC8C,UAAU,EAAEtD,OAAO,CAAC;IAC/DyB,MAAM,CAACyB,WAAW,CAACK,iBAAiB,CAAC;EACvC;EAEA,OAAO9B,MAAM,CAACU,WAAW;AAC3B;AAGA,SAASZ,sBAAsBA,CAAC4B,eAAgC,EAAEnD,OAAmB,EAAU;EAC7F,IAAIuC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;EACpB,MAAMa,WAAW,GAAGD,eAAe,CAAC5C,WAAW;EAE/C,KAAK,MAAM+C,UAAU,IAAIF,WAAW,EAAE;IACpCb,IAAI,IAAIpB,iBAAiB,CAACmC,UAAU,EAAEtD,OAAO,CAAC;EAChD;EAEA,OAAOuC,IAAI;AACb;AAEA,SAAS5B,kBAAkBA,CAAC6C,YAA0B,EAAExD,OAAmB,EAAe;EACxF,MAAMyB,MAAM,GAAG,IAAIC,qBAAY,CAACJ,mBAAmB,CAACkC,YAAY,EAAExD,OAAO,CAAC,CAAC;EAC3E,MAAMyD,QAAQ,GAAGD,YAAY,CAACjD,WAAW;EAEzCkB,MAAM,CAACE,SAAS,CAAC,CAAC,CAAC;EAEnBC,YAAY,CAACH,MAAM,EAAE5B,GAAG,CAAC6D,YAAY,EAAE1D,OAAO,CAAC;EAC/CyB,MAAM,CAACgB,aAAa,CAACgB,QAAQ,CAACvD,MAAM,CAAC;EAErC,KAAK,MAAMyD,OAAO,IAAIF,QAAQ,EAAE;IAC9B,MAAMG,cAAc,GAAGnD,aAAa,CAACkD,OAAO,EAAE3D,OAAO,CAAC;IACtDyB,MAAM,CAACyB,WAAW,CAACU,cAAc,CAAC;EACpC;EAEA,OAAOnC,MAAM,CAACU,WAAW;AAC3B;AAEA,SAASb,mBAAmBA,CAACkC,YAA0B,EAAExD,OAAmB,EAAU;EACpF,IAAIuC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;EACpB,MAAMkB,QAAQ,GAAGD,YAAY,CAACjD,WAAW;EAEzC,KAAK,MAAMoD,OAAO,IAAIF,QAAQ,EAAE;IAC9BlB,IAAI,IAAInB,cAAc,CAACuC,OAAO,EAAE3D,OAAO,CAAC;EAC1C;EAEA,OAAOuC,IAAI;AACb;AAEA,SAAS1B,wBAAwBA,CAC/BgD,UAA8B,EAC9B7D,OAAmB,EACN;EACb,MAAMyB,MAAM,GAAG,IAAIC,qBAAY,CAACF,yBAAyB,CAACqC,UAAU,EAAE7D,OAAO,CAAC,CAAC;EAE/EyB,MAAM,CAACE,SAAS,CAAC,CAAC,CAAC;EAEnBC,YAAY,CAACH,MAAM,EAAE5B,GAAG,CAACiE,kBAAkB,EAAE9D,OAAO,CAAC;EACrDyB,MAAM,CAACgB,aAAa,CAACoB,UAAU,CAACE,UAAU,CAAC7D,MAAM,CAAC;EAElD,KAAK,MAAMH,QAAQ,IAAI8D,UAAU,CAACE,UAAU,EAAE;IAE5C,MAAM5B,WAAW,GAAGrC,SAAS,CAACC,QAAQ,EAAEC,OAAO,CAAC;IAChDyB,MAAM,CAACyB,WAAW,CAACf,WAAW,CAAC;EACjC;EAEA,OAAOV,MAAM,CAACU,WAAW;AAC3B;AAEA,SAASX,yBAAyBA,CAACqC,UAA8B,EAAE7D,OAAmB,EAAU;EAC9F,IAAIuC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;EAEpB,KAAK,MAAMxC,QAAQ,IAAI8D,UAAU,CAACE,UAAU,EAAE;IAC5CxB,IAAI,IAAItB,eAAe,CAAClB,QAAQ,EAAEC,OAAO,CAAC;EAC5C;EAEA,OAAOuC,IAAI;AACb;AAQA,SAASX,YAAYA,CAACH,MAAoB,EAAEuC,YAAoB,EAAEhE,OAAmB,EAAQ;EAC3F,MAAM;IAACgC,IAAI;IAAEC,IAAI;IAAEgC;EAAI,CAAC,GAAGjE,OAAO;EAElC,IAAIkE,aAAa,GAAG,CAAC;EAErB,IAAI,CAACD,IAAI,EAAE;IACT,IAAIjC,IAAI,IAAIC,IAAI,EAAE;MAChBiC,aAAa,IAAI,IAAI;IACvB,CAAC,MAAM,IAAIlC,IAAI,EAAE;MACfkC,aAAa,IAAI,IAAI;IACvB,CAAC,MAAM,IAAIjC,IAAI,EAAE;MACfiC,aAAa,IAAI,IAAI;IACvB;EACF,CAAC,MAAM;IACL,IAAIlC,IAAI,EAAE;MACRkC,aAAa,IAAI,UAAU;IAC7B;IACA,IAAIjC,IAAI,EAAE;MACRiC,aAAa,IAAI,UAAU;IAC7B;EACF;EAEAzC,MAAM,CAACgB,aAAa,CAAEyB,aAAa,GAAGF,YAAY,KAAM,CAAC,CAAC;AAC5D;AAGA,SAAS1B,iBAAiBA,CAACtC,OAAmB,EAAU;EACtD,IAAIqC,cAAc,GAAG,EAAE;EAEvB,IAAIrC,OAAO,CAACgC,IAAI,EAAE;IAChBK,cAAc,IAAI,CAAC;EACrB;EACA,IAAIrC,OAAO,CAACiC,IAAI,EAAE;IAChBI,cAAc,IAAI,CAAC;EACrB;EAEA,OAAOA,cAAc;AACvB"}
|