@loaders.gl/wkt 3.3.0-alpha.1 → 3.3.0-alpha.11
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 +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/index.js +6 -10
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/encode-wkb.js +19 -96
- package/dist/es5/lib/encode-wkb.js.map +1 -1
- package/dist/es5/lib/encode-wkt.js +0 -13
- package/dist/es5/lib/encode-wkt.js.map +1 -1
- package/dist/es5/lib/parse-wkb.js +6 -51
- package/dist/es5/lib/parse-wkb.js.map +1 -1
- package/dist/es5/lib/parse-wkt.js +2 -28
- package/dist/es5/lib/parse-wkt.js.map +1 -1
- package/dist/es5/lib/utils/binary-writer.js +9 -27
- 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 +4 -17
- package/dist/es5/wkb-loader.js.map +1 -1
- package/dist/es5/wkb-writer.js +0 -4
- package/dist/es5/wkb-writer.js.map +1 -1
- package/dist/es5/wkt-loader.js +4 -17
- package/dist/es5/wkt-loader.js.map +1 -1
- package/dist/es5/wkt-writer.js +0 -4
- package/dist/es5/wkt-writer.js.map +1 -1
- package/dist/es5/workers/wkb-worker.js +0 -2
- package/dist/es5/workers/wkb-worker.js.map +1 -1
- package/dist/es5/workers/wkt-worker.js +0 -2
- package/dist/es5/workers/wkt-worker.js.map +1 -1
- package/dist/esm/bundle.js +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/encode-wkb.js +4 -56
- package/dist/esm/lib/encode-wkb.js.map +1 -1
- package/dist/esm/lib/encode-wkt.js +2 -13
- package/dist/esm/lib/encode-wkt.js.map +1 -1
- package/dist/esm/lib/parse-wkb.js +5 -42
- package/dist/esm/lib/parse-wkb.js.map +1 -1
- package/dist/esm/lib/parse-wkt.js +4 -28
- package/dist/esm/lib/parse-wkt.js.map +1 -1
- package/dist/esm/lib/utils/binary-writer.js +1 -36
- package/dist/esm/lib/utils/binary-writer.js.map +1 -1
- package/dist/esm/lib/utils/version.js +2 -1
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/wkb-loader.js +4 -1
- package/dist/esm/wkb-loader.js.map +1 -1
- package/dist/esm/wkb-writer.js +1 -0
- package/dist/esm/wkb-writer.js.map +1 -1
- package/dist/esm/wkt-loader.js +4 -1
- package/dist/esm/wkt-loader.js.map +1 -1
- package/dist/esm/wkt-writer.js +1 -0
- package/dist/esm/wkt-writer.js.map +1 -1
- package/dist/esm/workers/wkb-worker.js.map +1 -1
- package/dist/esm/workers/wkt-worker.js.map +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,"
|
|
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,IAAMA,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
|
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "WKBWorkerLoader", {
|
|
|
15
15
|
return _wkbLoader.WKBWorkerLoader;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "WKBWriter", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function get() {
|
|
21
|
+
return _wkbWriter.WKBWriter;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
18
24
|
Object.defineProperty(exports, "WKTLoader", {
|
|
19
25
|
enumerable: true,
|
|
20
26
|
get: function get() {
|
|
@@ -33,18 +39,8 @@ Object.defineProperty(exports, "WKTWriter", {
|
|
|
33
39
|
return _wktWriter.WKTWriter;
|
|
34
40
|
}
|
|
35
41
|
});
|
|
36
|
-
Object.defineProperty(exports, "WKBWriter", {
|
|
37
|
-
enumerable: true,
|
|
38
|
-
get: function get() {
|
|
39
|
-
return _wkbWriter.WKBWriter;
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
|
|
43
42
|
var _wkbLoader = require("./wkb-loader");
|
|
44
|
-
|
|
45
43
|
var _wktLoader = require("./wkt-loader");
|
|
46
|
-
|
|
47
44
|
var _wktWriter = require("./wkt-writer");
|
|
48
|
-
|
|
49
45
|
var _wkbWriter = require("./wkb-writer");
|
|
50
46
|
//# sourceMappingURL=index.js.map
|
package/dist/es5/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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,24 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = encodeWKB;
|
|
9
|
-
|
|
10
8
|
var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
|
|
11
|
-
|
|
12
9
|
var _binaryWriter = _interopRequireDefault(require("./utils/binary-writer"));
|
|
13
|
-
|
|
14
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; } } }; }
|
|
15
|
-
|
|
16
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); }
|
|
17
|
-
|
|
18
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; }
|
|
19
|
-
|
|
20
13
|
var WKB;
|
|
21
|
-
|
|
22
14
|
(function (WKB) {
|
|
23
15
|
WKB[WKB["Point"] = 1] = "Point";
|
|
24
16
|
WKB[WKB["LineString"] = 2] = "LineString";
|
|
@@ -28,7 +20,6 @@ var WKB;
|
|
|
28
20
|
WKB[WKB["MultiPolygon"] = 6] = "MultiPolygon";
|
|
29
21
|
WKB[WKB["GeometryCollection"] = 7] = "GeometryCollection";
|
|
30
22
|
})(WKB || (WKB = {}));
|
|
31
|
-
|
|
32
23
|
function encodeWKB(geometry, options) {
|
|
33
24
|
if (geometry.type === 'Feature') {
|
|
34
25
|
geometry = geometry.geometry;
|
|
@@ -37,29 +28,21 @@ function encodeWKB(geometry, options) {
|
|
|
37
28
|
if ('wkb' in options) {
|
|
38
29
|
options = options.wkb;
|
|
39
30
|
}
|
|
40
|
-
|
|
41
31
|
switch (geometry.type) {
|
|
42
32
|
case 'Point':
|
|
43
33
|
return encodePoint(geometry.coordinates, options);
|
|
44
|
-
|
|
45
34
|
case 'LineString':
|
|
46
35
|
return encodeLineString(geometry.coordinates, options);
|
|
47
|
-
|
|
48
36
|
case 'Polygon':
|
|
49
37
|
return encodePolygon(geometry.coordinates, options);
|
|
50
|
-
|
|
51
38
|
case 'MultiPoint':
|
|
52
39
|
return encodeMultiPoint(geometry, options);
|
|
53
|
-
|
|
54
40
|
case 'MultiPolygon':
|
|
55
41
|
return encodeMultiPolygon(geometry, options);
|
|
56
|
-
|
|
57
42
|
case 'MultiLineString':
|
|
58
43
|
return encodeMultiLineString(geometry, options);
|
|
59
|
-
|
|
60
44
|
case 'GeometryCollection':
|
|
61
45
|
return encodeGeometryCollection(geometry, options);
|
|
62
|
-
|
|
63
46
|
default:
|
|
64
47
|
var exhaustiveCheck = geometry;
|
|
65
48
|
throw new Error("Unhandled case: ".concat(exhaustiveCheck));
|
|
@@ -70,25 +53,18 @@ function getGeometrySize(geometry, options) {
|
|
|
70
53
|
switch (geometry.type) {
|
|
71
54
|
case 'Point':
|
|
72
55
|
return getPointSize(options);
|
|
73
|
-
|
|
74
56
|
case 'LineString':
|
|
75
57
|
return getLineStringSize(geometry.coordinates, options);
|
|
76
|
-
|
|
77
58
|
case 'Polygon':
|
|
78
59
|
return getPolygonSize(geometry.coordinates, options);
|
|
79
|
-
|
|
80
60
|
case 'MultiPoint':
|
|
81
61
|
return getMultiPointSize(geometry, options);
|
|
82
|
-
|
|
83
62
|
case 'MultiPolygon':
|
|
84
63
|
return getMultiPolygonSize(geometry, options);
|
|
85
|
-
|
|
86
64
|
case 'MultiLineString':
|
|
87
65
|
return getMultiLineStringSize(geometry, options);
|
|
88
|
-
|
|
89
66
|
case 'GeometryCollection':
|
|
90
67
|
return getGeometryCollectionSize(geometry, options);
|
|
91
|
-
|
|
92
68
|
default:
|
|
93
69
|
var exhaustiveCheck = geometry;
|
|
94
70
|
throw new Error("Unhandled case: ".concat(exhaustiveCheck));
|
|
@@ -103,29 +79,24 @@ function encodePoint(coordinates, options) {
|
|
|
103
79
|
if (typeof coordinates[0] === 'undefined' && typeof coordinates[1] === 'undefined') {
|
|
104
80
|
writer.writeDoubleLE(NaN);
|
|
105
81
|
writer.writeDoubleLE(NaN);
|
|
106
|
-
|
|
107
82
|
if (options.hasZ) {
|
|
108
83
|
writer.writeDoubleLE(NaN);
|
|
109
84
|
}
|
|
110
|
-
|
|
111
85
|
if (options.hasM) {
|
|
112
86
|
writer.writeDoubleLE(NaN);
|
|
113
87
|
}
|
|
114
88
|
} else {
|
|
115
89
|
writeCoordinate(writer, coordinates, options);
|
|
116
90
|
}
|
|
117
|
-
|
|
118
91
|
return writer.arrayBuffer;
|
|
119
92
|
}
|
|
120
93
|
|
|
121
94
|
function writeCoordinate(writer, coordinate, options) {
|
|
122
95
|
writer.writeDoubleLE(coordinate[0]);
|
|
123
96
|
writer.writeDoubleLE(coordinate[1]);
|
|
124
|
-
|
|
125
97
|
if (options.hasZ) {
|
|
126
98
|
writer.writeDoubleLE(coordinate[2]);
|
|
127
99
|
}
|
|
128
|
-
|
|
129
100
|
if (options.hasM) {
|
|
130
101
|
writer.writeDoubleLE(coordinate[3]);
|
|
131
102
|
}
|
|
@@ -142,10 +113,8 @@ function encodeLineString(coordinates, options) {
|
|
|
142
113
|
writer.writeInt8(1);
|
|
143
114
|
writeWkbType(writer, WKB.LineString, options);
|
|
144
115
|
writer.writeUInt32LE(coordinates.length);
|
|
145
|
-
|
|
146
116
|
var _iterator = _createForOfIteratorHelper(coordinates),
|
|
147
|
-
|
|
148
|
-
|
|
117
|
+
_step;
|
|
149
118
|
try {
|
|
150
119
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
151
120
|
var coordinate = _step.value;
|
|
@@ -156,7 +125,6 @@ function encodeLineString(coordinates, options) {
|
|
|
156
125
|
} finally {
|
|
157
126
|
_iterator.f();
|
|
158
127
|
}
|
|
159
|
-
|
|
160
128
|
return writer.arrayBuffer;
|
|
161
129
|
}
|
|
162
130
|
|
|
@@ -169,21 +137,17 @@ function encodePolygon(coordinates, options) {
|
|
|
169
137
|
var writer = new _binaryWriter.default(getPolygonSize(coordinates, options));
|
|
170
138
|
writer.writeInt8(1);
|
|
171
139
|
writeWkbType(writer, WKB.Polygon, options);
|
|
172
|
-
|
|
173
140
|
var _coordinates = (0, _toArray2.default)(coordinates),
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
141
|
+
exteriorRing = _coordinates[0],
|
|
142
|
+
interiorRings = _coordinates.slice(1);
|
|
177
143
|
if (exteriorRing.length > 0) {
|
|
178
144
|
writer.writeUInt32LE(1 + interiorRings.length);
|
|
179
145
|
writer.writeUInt32LE(exteriorRing.length);
|
|
180
146
|
} else {
|
|
181
147
|
writer.writeUInt32LE(0);
|
|
182
148
|
}
|
|
183
|
-
|
|
184
149
|
var _iterator2 = _createForOfIteratorHelper(exteriorRing),
|
|
185
|
-
|
|
186
|
-
|
|
150
|
+
_step2;
|
|
187
151
|
try {
|
|
188
152
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
189
153
|
var coordinate = _step2.value;
|
|
@@ -194,18 +158,14 @@ function encodePolygon(coordinates, options) {
|
|
|
194
158
|
} finally {
|
|
195
159
|
_iterator2.f();
|
|
196
160
|
}
|
|
197
|
-
|
|
198
161
|
var _iterator3 = _createForOfIteratorHelper(interiorRings),
|
|
199
|
-
|
|
200
|
-
|
|
162
|
+
_step3;
|
|
201
163
|
try {
|
|
202
164
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
203
165
|
var interiorRing = _step3.value;
|
|
204
166
|
writer.writeUInt32LE(interiorRing.length);
|
|
205
|
-
|
|
206
167
|
var _iterator4 = _createForOfIteratorHelper(interiorRing),
|
|
207
|
-
|
|
208
|
-
|
|
168
|
+
_step4;
|
|
209
169
|
try {
|
|
210
170
|
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
211
171
|
var _coordinate = _step4.value;
|
|
@@ -222,26 +182,20 @@ function encodePolygon(coordinates, options) {
|
|
|
222
182
|
} finally {
|
|
223
183
|
_iterator3.f();
|
|
224
184
|
}
|
|
225
|
-
|
|
226
185
|
return writer.arrayBuffer;
|
|
227
186
|
}
|
|
228
187
|
|
|
229
188
|
function getPolygonSize(coordinates, options) {
|
|
230
189
|
var coordinateSize = getCoordinateSize(options);
|
|
231
|
-
|
|
232
190
|
var _coordinates2 = (0, _toArray2.default)(coordinates),
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
191
|
+
exteriorRing = _coordinates2[0],
|
|
192
|
+
interiorRings = _coordinates2.slice(1);
|
|
236
193
|
var size = 1 + 4 + 4;
|
|
237
|
-
|
|
238
194
|
if (exteriorRing.length > 0) {
|
|
239
195
|
size += 4 + exteriorRing.length * coordinateSize;
|
|
240
196
|
}
|
|
241
|
-
|
|
242
197
|
var _iterator5 = _createForOfIteratorHelper(interiorRings),
|
|
243
|
-
|
|
244
|
-
|
|
198
|
+
_step5;
|
|
245
199
|
try {
|
|
246
200
|
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
247
201
|
var interiorRing = _step5.value;
|
|
@@ -252,7 +206,6 @@ function getPolygonSize(coordinates, options) {
|
|
|
252
206
|
} finally {
|
|
253
207
|
_iterator5.f();
|
|
254
208
|
}
|
|
255
|
-
|
|
256
209
|
return size;
|
|
257
210
|
}
|
|
258
211
|
|
|
@@ -262,10 +215,8 @@ function encodeMultiPoint(multiPoint, options) {
|
|
|
262
215
|
writer.writeInt8(1);
|
|
263
216
|
writeWkbType(writer, WKB.MultiPoint, options);
|
|
264
217
|
writer.writeUInt32LE(points.length);
|
|
265
|
-
|
|
266
218
|
var _iterator6 = _createForOfIteratorHelper(points),
|
|
267
|
-
|
|
268
|
-
|
|
219
|
+
_step6;
|
|
269
220
|
try {
|
|
270
221
|
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
271
222
|
var point = _step6.value;
|
|
@@ -277,13 +228,13 @@ function encodeMultiPoint(multiPoint, options) {
|
|
|
277
228
|
} finally {
|
|
278
229
|
_iterator6.f();
|
|
279
230
|
}
|
|
280
|
-
|
|
281
231
|
return writer.arrayBuffer;
|
|
282
232
|
}
|
|
283
233
|
|
|
284
234
|
function getMultiPointSize(multiPoint, options) {
|
|
285
235
|
var coordinateSize = getCoordinateSize(options);
|
|
286
236
|
var points = multiPoint.coordinates;
|
|
237
|
+
|
|
287
238
|
coordinateSize += 5;
|
|
288
239
|
return 1 + 4 + 4 + points.length * coordinateSize;
|
|
289
240
|
}
|
|
@@ -294,10 +245,8 @@ function encodeMultiLineString(multiLineString, options) {
|
|
|
294
245
|
writer.writeInt8(1);
|
|
295
246
|
writeWkbType(writer, WKB.MultiLineString, options);
|
|
296
247
|
writer.writeUInt32LE(lineStrings.length);
|
|
297
|
-
|
|
298
248
|
var _iterator7 = _createForOfIteratorHelper(lineStrings),
|
|
299
|
-
|
|
300
|
-
|
|
249
|
+
_step7;
|
|
301
250
|
try {
|
|
302
251
|
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
303
252
|
var lineString = _step7.value;
|
|
@@ -309,17 +258,14 @@ function encodeMultiLineString(multiLineString, options) {
|
|
|
309
258
|
} finally {
|
|
310
259
|
_iterator7.f();
|
|
311
260
|
}
|
|
312
|
-
|
|
313
261
|
return writer.arrayBuffer;
|
|
314
262
|
}
|
|
315
263
|
|
|
316
264
|
function getMultiLineStringSize(multiLineString, options) {
|
|
317
265
|
var size = 1 + 4 + 4;
|
|
318
266
|
var lineStrings = multiLineString.coordinates;
|
|
319
|
-
|
|
320
267
|
var _iterator8 = _createForOfIteratorHelper(lineStrings),
|
|
321
|
-
|
|
322
|
-
|
|
268
|
+
_step8;
|
|
323
269
|
try {
|
|
324
270
|
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
325
271
|
var lineString = _step8.value;
|
|
@@ -330,20 +276,16 @@ function getMultiLineStringSize(multiLineString, options) {
|
|
|
330
276
|
} finally {
|
|
331
277
|
_iterator8.f();
|
|
332
278
|
}
|
|
333
|
-
|
|
334
279
|
return size;
|
|
335
280
|
}
|
|
336
|
-
|
|
337
281
|
function encodeMultiPolygon(multiPolygon, options) {
|
|
338
282
|
var writer = new _binaryWriter.default(getMultiPolygonSize(multiPolygon, options));
|
|
339
283
|
var polygons = multiPolygon.coordinates;
|
|
340
284
|
writer.writeInt8(1);
|
|
341
285
|
writeWkbType(writer, WKB.MultiPolygon, options);
|
|
342
286
|
writer.writeUInt32LE(polygons.length);
|
|
343
|
-
|
|
344
287
|
var _iterator9 = _createForOfIteratorHelper(polygons),
|
|
345
|
-
|
|
346
|
-
|
|
288
|
+
_step9;
|
|
347
289
|
try {
|
|
348
290
|
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
|
349
291
|
var polygon = _step9.value;
|
|
@@ -355,17 +297,13 @@ function encodeMultiPolygon(multiPolygon, options) {
|
|
|
355
297
|
} finally {
|
|
356
298
|
_iterator9.f();
|
|
357
299
|
}
|
|
358
|
-
|
|
359
300
|
return writer.arrayBuffer;
|
|
360
301
|
}
|
|
361
|
-
|
|
362
302
|
function getMultiPolygonSize(multiPolygon, options) {
|
|
363
303
|
var size = 1 + 4 + 4;
|
|
364
304
|
var polygons = multiPolygon.coordinates;
|
|
365
|
-
|
|
366
305
|
var _iterator10 = _createForOfIteratorHelper(polygons),
|
|
367
|
-
|
|
368
|
-
|
|
306
|
+
_step10;
|
|
369
307
|
try {
|
|
370
308
|
for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
|
|
371
309
|
var polygon = _step10.value;
|
|
@@ -376,19 +314,15 @@ function getMultiPolygonSize(multiPolygon, options) {
|
|
|
376
314
|
} finally {
|
|
377
315
|
_iterator10.f();
|
|
378
316
|
}
|
|
379
|
-
|
|
380
317
|
return size;
|
|
381
318
|
}
|
|
382
|
-
|
|
383
319
|
function encodeGeometryCollection(collection, options) {
|
|
384
320
|
var writer = new _binaryWriter.default(getGeometryCollectionSize(collection, options));
|
|
385
321
|
writer.writeInt8(1);
|
|
386
322
|
writeWkbType(writer, WKB.GeometryCollection, options);
|
|
387
323
|
writer.writeUInt32LE(collection.geometries.length);
|
|
388
|
-
|
|
389
324
|
var _iterator11 = _createForOfIteratorHelper(collection.geometries),
|
|
390
|
-
|
|
391
|
-
|
|
325
|
+
_step11;
|
|
392
326
|
try {
|
|
393
327
|
for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
|
|
394
328
|
var geometry = _step11.value;
|
|
@@ -400,16 +334,12 @@ function encodeGeometryCollection(collection, options) {
|
|
|
400
334
|
} finally {
|
|
401
335
|
_iterator11.f();
|
|
402
336
|
}
|
|
403
|
-
|
|
404
337
|
return writer.arrayBuffer;
|
|
405
338
|
}
|
|
406
|
-
|
|
407
339
|
function getGeometryCollectionSize(collection, options) {
|
|
408
340
|
var size = 1 + 4 + 4;
|
|
409
|
-
|
|
410
341
|
var _iterator12 = _createForOfIteratorHelper(collection.geometries),
|
|
411
|
-
|
|
412
|
-
|
|
342
|
+
_step12;
|
|
413
343
|
try {
|
|
414
344
|
for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
|
|
415
345
|
var geometry = _step12.value;
|
|
@@ -420,16 +350,14 @@ function getGeometryCollectionSize(collection, options) {
|
|
|
420
350
|
} finally {
|
|
421
351
|
_iterator12.f();
|
|
422
352
|
}
|
|
423
|
-
|
|
424
353
|
return size;
|
|
425
354
|
}
|
|
426
355
|
|
|
427
356
|
function writeWkbType(writer, geometryType, options) {
|
|
428
357
|
var hasZ = options.hasZ,
|
|
429
|
-
|
|
430
|
-
|
|
358
|
+
hasM = options.hasM,
|
|
359
|
+
srid = options.srid;
|
|
431
360
|
var dimensionType = 0;
|
|
432
|
-
|
|
433
361
|
if (!srid) {
|
|
434
362
|
if (hasZ && hasM) {
|
|
435
363
|
dimensionType += 3000;
|
|
@@ -442,26 +370,21 @@ function writeWkbType(writer, geometryType, options) {
|
|
|
442
370
|
if (hasZ) {
|
|
443
371
|
dimensionType |= 0x80000000;
|
|
444
372
|
}
|
|
445
|
-
|
|
446
373
|
if (hasM) {
|
|
447
374
|
dimensionType |= 0x40000000;
|
|
448
375
|
}
|
|
449
376
|
}
|
|
450
|
-
|
|
451
377
|
writer.writeUInt32LE(dimensionType + geometryType >>> 0);
|
|
452
378
|
}
|
|
453
379
|
|
|
454
380
|
function getCoordinateSize(options) {
|
|
455
381
|
var coordinateSize = 16;
|
|
456
|
-
|
|
457
382
|
if (options.hasZ) {
|
|
458
383
|
coordinateSize += 8;
|
|
459
384
|
}
|
|
460
|
-
|
|
461
385
|
if (options.hasM) {
|
|
462
386
|
coordinateSize += 8;
|
|
463
387
|
}
|
|
464
|
-
|
|
465
388
|
return coordinateSize;
|
|
466
389
|
}
|
|
467
390
|
//# sourceMappingURL=encode-wkb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/encode-wkb.ts"],"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"],"mappings":"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","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"],"file":"encode-wkb.js"}
|
|
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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"}
|
|
@@ -9,50 +9,37 @@ function encodeWKT(geometry) {
|
|
|
9
9
|
if (geometry.type === 'Feature') {
|
|
10
10
|
geometry = geometry.geometry;
|
|
11
11
|
}
|
|
12
|
-
|
|
13
12
|
switch (geometry.type) {
|
|
14
13
|
case 'Point':
|
|
15
14
|
return "POINT ".concat(wrapParens(pairWKT(geometry.coordinates)));
|
|
16
|
-
|
|
17
15
|
case 'LineString':
|
|
18
16
|
return "LINESTRING ".concat(wrapParens(ringWKT(geometry.coordinates)));
|
|
19
|
-
|
|
20
17
|
case 'Polygon':
|
|
21
18
|
return "POLYGON ".concat(wrapParens(ringsWKT(geometry.coordinates)));
|
|
22
|
-
|
|
23
19
|
case 'MultiPoint':
|
|
24
20
|
return "MULTIPOINT ".concat(wrapParens(ringWKT(geometry.coordinates)));
|
|
25
|
-
|
|
26
21
|
case 'MultiPolygon':
|
|
27
22
|
return "MULTIPOLYGON ".concat(wrapParens(multiRingsWKT(geometry.coordinates)));
|
|
28
|
-
|
|
29
23
|
case 'MultiLineString':
|
|
30
24
|
return "MULTILINESTRING ".concat(wrapParens(ringsWKT(geometry.coordinates)));
|
|
31
|
-
|
|
32
25
|
case 'GeometryCollection':
|
|
33
26
|
return "GEOMETRYCOLLECTION ".concat(wrapParens(geometry.geometries.map(encodeWKT).join(', ')));
|
|
34
|
-
|
|
35
27
|
default:
|
|
36
28
|
throw new Error('stringify requires a valid GeoJSON Feature or geometry object as input');
|
|
37
29
|
}
|
|
38
30
|
}
|
|
39
|
-
|
|
40
31
|
function pairWKT(c) {
|
|
41
32
|
return c.join(' ');
|
|
42
33
|
}
|
|
43
|
-
|
|
44
34
|
function ringWKT(r) {
|
|
45
35
|
return r.map(pairWKT).join(', ');
|
|
46
36
|
}
|
|
47
|
-
|
|
48
37
|
function ringsWKT(r) {
|
|
49
38
|
return r.map(ringWKT).map(wrapParens).join(', ');
|
|
50
39
|
}
|
|
51
|
-
|
|
52
40
|
function multiRingsWKT(r) {
|
|
53
41
|
return r.map(ringsWKT).map(wrapParens).join(', ');
|
|
54
42
|
}
|
|
55
|
-
|
|
56
43
|
function wrapParens(s) {
|
|
57
44
|
return "(".concat(s, ")");
|
|
58
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|