@loaders.gl/wkt 3.1.0-beta.2 → 3.1.0
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 +5 -5
- package/dist/es5/lib/encode-wkt.js +2 -2
- package/dist/es5/lib/encode-wkt.js.map +1 -1
- package/dist/es5/lib/parse-wkb.js +113 -77
- 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/version.js +1 -1
- package/dist/es5/lib/utils/version.js.map +1 -1
- package/dist/es5/wkb-loader.js +39 -6
- package/dist/es5/wkb-loader.js.map +1 -1
- package/dist/es5/wkt-loader.js +37 -4
- 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/esm/lib/utils/version.js.map +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,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":";;AACA,
|
|
1
|
+
{"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":";;AACA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
|
package/dist/es5/index.js
CHANGED
|
@@ -5,31 +5,31 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
Object.defineProperty(exports, "WKBLoader", {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: function () {
|
|
8
|
+
get: function get() {
|
|
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 get() {
|
|
15
15
|
return _wkbLoader.WKBWorkerLoader;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
18
|
Object.defineProperty(exports, "WKTLoader", {
|
|
19
19
|
enumerable: true,
|
|
20
|
-
get: function () {
|
|
20
|
+
get: function get() {
|
|
21
21
|
return _wktLoader.WKTLoader;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "WKTWorkerLoader", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function () {
|
|
26
|
+
get: function get() {
|
|
27
27
|
return _wktLoader.WKTWorkerLoader;
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
30
|
Object.defineProperty(exports, "WKTWriter", {
|
|
31
31
|
enumerable: true,
|
|
32
|
-
get: function () {
|
|
32
|
+
get: function get() {
|
|
33
33
|
return _wktWriter.WKTWriter;
|
|
34
34
|
}
|
|
35
35
|
});
|
|
@@ -53,9 +53,9 @@ function encodeWKT(gj) {
|
|
|
53
53
|
return "GEOMETRYCOLLECTION ".concat(wrapParens(gj.geometries.map(encodeWKT).join(', ')));
|
|
54
54
|
|
|
55
55
|
default:
|
|
56
|
-
return (_x
|
|
56
|
+
return function (_x) {
|
|
57
57
|
throw new Error('stringify requires a valid GeoJSON Feature or geometry object as input');
|
|
58
|
-
}
|
|
58
|
+
}(gj);
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
//# sourceMappingURL=encode-wkt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/encode-wkt.ts"],"names":["encodeWKT","gj","type","geometry","pairWKT","c","join","ringWKT","r","map","ringsWKT","wrapParens","multiRingsWKT","s","coordinates","geometries","_x","Error"],"mappings":";;;;;;;AASe,SAASA,SAAT,CAAmBC,EAAnB,EAAmD;AAChE,MAAIA,EAAE,CAACC,IAAH,KAAY,SAAhB,EAA2B;AACzBD,IAAAA,EAAE,GAAGA,EAAE,CAACE,QAAR;AACD;;AAED,WAASC,OAAT,CAAiBC,CAAjB,EAA8B;AAC5B,WAAOA,CAAC,CAACC,IAAF,CAAO,GAAP,CAAP;AACD;;AAED,WAASC,OAAT,CAAiBC,CAAjB,EAAgC;AAC9B,WAAOA,CAAC,CAACC,GAAF,CAAML,OAAN,EAAeE,IAAf,CAAoB,IAApB,CAAP;AACD;;AAED,WAASI,QAAT,CAAkBF,CAAlB,EAAmC;AACjC,WAAOA,CAAC,CAACC,GAAF,CAAMF,OAAN,EAAeE,GAAf,CAAmBE,UAAnB,EAA+BL,IAA/B,CAAoC,IAApC,CAAP;AACD;;AAED,WAASM,aAAT,CAAuBJ,CAAvB,EAA0C;AACxC,WAAOA,CAAC,CAACC,GAAF,CAAMC,QAAN,EAAgBD,GAAhB,CAAoBE,UAApB,EAAgCL,IAAhC,CAAqC,IAArC,CAAP;AACD;;AAED,WAASK,UAAT,CAAoBE,CAApB,EAA+B;AAC7B,sBAAWA,CAAX;AACD;;AAED,UAAQZ,EAAE,CAACC,IAAX;AACE,SAAK,OAAL;AACE,6BAAgBS,UAAU,CAACP,OAAO,CAACH,EAAE,CAACa,WAAJ,CAAR,CAA1B;;AACF,SAAK,YAAL;AACE,kCAAqBH,UAAU,CAACJ,OAAO,CAACN,EAAE,CAACa,WAAJ,CAAR,CAA/B;;AACF,SAAK,SAAL;AACE,+BAAkBH,UAAU,CAACD,QAAQ,CAACT,EAAE,CAACa,WAAJ,CAAT,CAA5B;;AACF,SAAK,YAAL;AACE,kCAAqBH,UAAU,CAACJ,OAAO,CAACN,EAAE,CAACa,WAAJ,CAAR,CAA/B;;AACF,SAAK,cAAL;AACE,oCAAuBH,UAAU,CAACC,aAAa,CAACX,EAAE,CAACa,WAAJ,CAAd,CAAjC;;AACF,SAAK,iBAAL;AACE,uCAA0BH,UAAU,CAACD,QAAQ,CAACT,EAAE,CAACa,WAAJ,CAAT,CAApC;;AACF,SAAK,oBAAL;AACE,0CAA6BH,UAAU,CAACV,EAAE,CAACc,UAAH,CAAcN,GAAd,CAAkBT,SAAlB,EAA6BM,IAA7B,CAAkC,IAAlC,CAAD,CAAvC;;AACF;AACE,
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/encode-wkt.ts"],"names":["encodeWKT","gj","type","geometry","pairWKT","c","join","ringWKT","r","map","ringsWKT","wrapParens","multiRingsWKT","s","coordinates","geometries","_x","Error"],"mappings":";;;;;;;AASe,SAASA,SAAT,CAAmBC,EAAnB,EAAmD;AAChE,MAAIA,EAAE,CAACC,IAAH,KAAY,SAAhB,EAA2B;AACzBD,IAAAA,EAAE,GAAGA,EAAE,CAACE,QAAR;AACD;;AAED,WAASC,OAAT,CAAiBC,CAAjB,EAA8B;AAC5B,WAAOA,CAAC,CAACC,IAAF,CAAO,GAAP,CAAP;AACD;;AAED,WAASC,OAAT,CAAiBC,CAAjB,EAAgC;AAC9B,WAAOA,CAAC,CAACC,GAAF,CAAML,OAAN,EAAeE,IAAf,CAAoB,IAApB,CAAP;AACD;;AAED,WAASI,QAAT,CAAkBF,CAAlB,EAAmC;AACjC,WAAOA,CAAC,CAACC,GAAF,CAAMF,OAAN,EAAeE,GAAf,CAAmBE,UAAnB,EAA+BL,IAA/B,CAAoC,IAApC,CAAP;AACD;;AAED,WAASM,aAAT,CAAuBJ,CAAvB,EAA0C;AACxC,WAAOA,CAAC,CAACC,GAAF,CAAMC,QAAN,EAAgBD,GAAhB,CAAoBE,UAApB,EAAgCL,IAAhC,CAAqC,IAArC,CAAP;AACD;;AAED,WAASK,UAAT,CAAoBE,CAApB,EAA+B;AAC7B,sBAAWA,CAAX;AACD;;AAED,UAAQZ,EAAE,CAACC,IAAX;AACE,SAAK,OAAL;AACE,6BAAgBS,UAAU,CAACP,OAAO,CAACH,EAAE,CAACa,WAAJ,CAAR,CAA1B;;AACF,SAAK,YAAL;AACE,kCAAqBH,UAAU,CAACJ,OAAO,CAACN,EAAE,CAACa,WAAJ,CAAR,CAA/B;;AACF,SAAK,SAAL;AACE,+BAAkBH,UAAU,CAACD,QAAQ,CAACT,EAAE,CAACa,WAAJ,CAAT,CAA5B;;AACF,SAAK,YAAL;AACE,kCAAqBH,UAAU,CAACJ,OAAO,CAACN,EAAE,CAACa,WAAJ,CAAR,CAA/B;;AACF,SAAK,cAAL;AACE,oCAAuBH,UAAU,CAACC,aAAa,CAACX,EAAE,CAACa,WAAJ,CAAd,CAAjC;;AACF,SAAK,iBAAL;AACE,uCAA0BH,UAAU,CAACD,QAAQ,CAACT,EAAE,CAACa,WAAJ,CAAT,CAApC;;AACF,SAAK,oBAAL;AACE,0CAA6BH,UAAU,CAACV,EAAE,CAACc,UAAH,CAAcN,GAAd,CAAkBT,SAAlB,EAA6BM,IAA7B,CAAkC,IAAlC,CAAD,CAAvC;;AACF;AACE,aAAQ,UAACU,EAAD,EAAsB;AAC5B,cAAM,IAAIC,KAAJ,CAAU,wEAAV,CAAN;AACD,OAFM,CAEJhB,EAFI,CAAP;AAhBJ;AAoBD","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 'geojson';\n/**\n * Stringifies a GeoJSON object into WKT\n * @param geojson\n * @returns string\n */\n\nexport default function encodeWKT(gj: Geometry | Feature): string {\n if (gj.type === 'Feature') {\n gj = gj.geometry;\n }\n\n function pairWKT(c: number[]) {\n return c.join(' ');\n }\n\n function ringWKT(r: number[][]) {\n return r.map(pairWKT).join(', ');\n }\n\n function ringsWKT(r: number[][][]) {\n return r.map(ringWKT).map(wrapParens).join(', ');\n }\n\n function multiRingsWKT(r: number[][][][]) {\n return r.map(ringsWKT).map(wrapParens).join(', ');\n }\n\n function wrapParens(s: string) {\n return `(${s})`;\n }\n\n switch (gj.type) {\n case 'Point':\n return `POINT ${wrapParens(pairWKT(gj.coordinates))}`;\n case 'LineString':\n return `LINESTRING ${wrapParens(ringWKT(gj.coordinates))}`;\n case 'Polygon':\n return `POLYGON ${wrapParens(ringsWKT(gj.coordinates))}`;\n case 'MultiPoint':\n return `MULTIPOINT ${wrapParens(ringWKT(gj.coordinates))}`;\n case 'MultiPolygon':\n return `MULTIPOLYGON ${wrapParens(multiRingsWKT(gj.coordinates))}`;\n case 'MultiLineString':\n return `MULTILINESTRING ${wrapParens(ringsWKT(gj.coordinates))}`;\n case 'GeometryCollection':\n return `GEOMETRYCOLLECTION ${wrapParens(gj.geometries.map(encodeWKT).join(', '))}`;\n default:\n return ((_x: never): never => {\n throw new Error('stringify requires a valid GeoJSON Feature or geometry object as input');\n })(gj);\n }\n}\n"],"file":"encode-wkt.js"}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
8
|
exports.default = parseWKB;
|
|
7
|
-
|
|
9
|
+
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
+
|
|
12
|
+
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; } } }; }
|
|
13
|
+
|
|
14
|
+
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); }
|
|
15
|
+
|
|
16
|
+
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; }
|
|
17
|
+
|
|
18
|
+
var NUM_DIMENSIONS = {
|
|
8
19
|
0: 2,
|
|
9
20
|
1: 3,
|
|
10
21
|
2: 3,
|
|
@@ -12,41 +23,41 @@ const NUM_DIMENSIONS = {
|
|
|
12
23
|
};
|
|
13
24
|
|
|
14
25
|
function parseWKB(arrayBuffer) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
26
|
+
var view = new DataView(arrayBuffer);
|
|
27
|
+
var offset = 0;
|
|
28
|
+
var littleEndian = view.getUint8(offset) === 1;
|
|
18
29
|
offset++;
|
|
19
|
-
|
|
30
|
+
var geometryCode = view.getUint32(offset, littleEndian);
|
|
20
31
|
offset += 4;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
32
|
+
var geometryType = geometryCode % 1000;
|
|
33
|
+
var type = (geometryCode - geometryType) / 1000;
|
|
34
|
+
var dimension = NUM_DIMENSIONS[type];
|
|
24
35
|
|
|
25
36
|
switch (geometryType) {
|
|
26
37
|
case 1:
|
|
27
|
-
|
|
38
|
+
var point = parsePoint(view, offset, dimension, littleEndian);
|
|
28
39
|
return point.geometry;
|
|
29
40
|
|
|
30
41
|
case 2:
|
|
31
|
-
|
|
42
|
+
var line = parseLineString(view, offset, dimension, littleEndian);
|
|
32
43
|
return line.geometry;
|
|
33
44
|
|
|
34
45
|
case 3:
|
|
35
|
-
|
|
46
|
+
var polygon = parsePolygon(view, offset, dimension, littleEndian);
|
|
36
47
|
return polygon.geometry;
|
|
37
48
|
|
|
38
49
|
case 4:
|
|
39
|
-
|
|
50
|
+
var multiPoint = parseMultiPoint(view, offset, dimension, littleEndian);
|
|
40
51
|
multiPoint.type = 'Point';
|
|
41
52
|
return multiPoint;
|
|
42
53
|
|
|
43
54
|
case 5:
|
|
44
|
-
|
|
55
|
+
var multiLine = parseMultiLineString(view, offset, dimension, littleEndian);
|
|
45
56
|
multiLine.type = 'LineString';
|
|
46
57
|
return multiLine;
|
|
47
58
|
|
|
48
59
|
case 6:
|
|
49
|
-
|
|
60
|
+
var multiPolygon = parseMultiPolygon(view, offset, dimension, littleEndian);
|
|
50
61
|
multiPolygon.type = 'Polygon';
|
|
51
62
|
return multiPolygon;
|
|
52
63
|
|
|
@@ -56,9 +67,9 @@ function parseWKB(arrayBuffer) {
|
|
|
56
67
|
}
|
|
57
68
|
|
|
58
69
|
function parsePoint(view, offset, dimension, littleEndian) {
|
|
59
|
-
|
|
70
|
+
var positions = new Float64Array(dimension);
|
|
60
71
|
|
|
61
|
-
for (
|
|
72
|
+
for (var i = 0; i < dimension; i++) {
|
|
62
73
|
positions[i] = view.getFloat64(offset, littleEndian);
|
|
63
74
|
offset += 8;
|
|
64
75
|
}
|
|
@@ -71,21 +82,21 @@ function parsePoint(view, offset, dimension, littleEndian) {
|
|
|
71
82
|
size: dimension
|
|
72
83
|
}
|
|
73
84
|
},
|
|
74
|
-
offset
|
|
85
|
+
offset: offset
|
|
75
86
|
};
|
|
76
87
|
}
|
|
77
88
|
|
|
78
89
|
function parseLineString(view, offset, dimension, littleEndian) {
|
|
79
|
-
|
|
90
|
+
var nPoints = view.getUint32(offset, littleEndian);
|
|
80
91
|
offset += 4;
|
|
81
|
-
|
|
92
|
+
var positions = new Float64Array(nPoints * dimension);
|
|
82
93
|
|
|
83
|
-
for (
|
|
94
|
+
for (var i = 0; i < nPoints * dimension; i++) {
|
|
84
95
|
positions[i] = view.getFloat64(offset, littleEndian);
|
|
85
96
|
offset += 8;
|
|
86
97
|
}
|
|
87
98
|
|
|
88
|
-
|
|
99
|
+
var pathIndices = [0];
|
|
89
100
|
|
|
90
101
|
if (nPoints > 0) {
|
|
91
102
|
pathIndices.push(nPoints);
|
|
@@ -103,34 +114,38 @@ function parseLineString(view, offset, dimension, littleEndian) {
|
|
|
103
114
|
size: 1
|
|
104
115
|
}
|
|
105
116
|
},
|
|
106
|
-
offset
|
|
117
|
+
offset: offset
|
|
107
118
|
};
|
|
108
119
|
}
|
|
109
120
|
|
|
110
|
-
|
|
121
|
+
var cumulativeSum = function cumulativeSum(sum) {
|
|
122
|
+
return function (value) {
|
|
123
|
+
return sum += value;
|
|
124
|
+
};
|
|
125
|
+
};
|
|
111
126
|
|
|
112
127
|
function parsePolygon(view, offset, dimension, littleEndian) {
|
|
113
|
-
|
|
128
|
+
var nRings = view.getUint32(offset, littleEndian);
|
|
114
129
|
offset += 4;
|
|
115
|
-
|
|
130
|
+
var rings = [];
|
|
116
131
|
|
|
117
|
-
for (
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
positions
|
|
121
|
-
} = parsed.geometry;
|
|
132
|
+
for (var i = 0; i < nRings; i++) {
|
|
133
|
+
var parsed = parseLineString(view, offset, dimension, littleEndian);
|
|
134
|
+
var positions = parsed.geometry.positions;
|
|
122
135
|
offset = parsed.offset;
|
|
123
136
|
rings.push(positions.value);
|
|
124
137
|
}
|
|
125
138
|
|
|
126
|
-
|
|
127
|
-
|
|
139
|
+
var concatenatedPositions = new Float64Array(concatTypedArrays(rings).buffer);
|
|
140
|
+
var polygonIndices = [0];
|
|
128
141
|
|
|
129
142
|
if (concatenatedPositions.length > 0) {
|
|
130
143
|
polygonIndices.push(concatenatedPositions.length / dimension);
|
|
131
144
|
}
|
|
132
145
|
|
|
133
|
-
|
|
146
|
+
var primitivePolygonIndices = rings.map(function (l) {
|
|
147
|
+
return l.length / dimension;
|
|
148
|
+
}).map(cumulativeSum(0));
|
|
134
149
|
primitivePolygonIndices.unshift(0);
|
|
135
150
|
return {
|
|
136
151
|
geometry: {
|
|
@@ -148,17 +163,17 @@ function parsePolygon(view, offset, dimension, littleEndian) {
|
|
|
148
163
|
size: 1
|
|
149
164
|
}
|
|
150
165
|
},
|
|
151
|
-
offset
|
|
166
|
+
offset: offset
|
|
152
167
|
};
|
|
153
168
|
}
|
|
154
169
|
|
|
155
170
|
function parseMultiPoint(view, offset, dimension, littleEndian) {
|
|
156
|
-
|
|
171
|
+
var nPoints = view.getUint32(offset, littleEndian);
|
|
157
172
|
offset += 4;
|
|
158
|
-
|
|
173
|
+
var binaryPointGeometries = [];
|
|
159
174
|
|
|
160
|
-
for (
|
|
161
|
-
|
|
175
|
+
for (var i = 0; i < nPoints; i++) {
|
|
176
|
+
var littleEndianPoint = view.getUint8(offset) === 1;
|
|
162
177
|
offset++;
|
|
163
178
|
|
|
164
179
|
if (view.getUint32(offset, littleEndianPoint) % 1000 !== 1) {
|
|
@@ -166,7 +181,7 @@ function parseMultiPoint(view, offset, dimension, littleEndian) {
|
|
|
166
181
|
}
|
|
167
182
|
|
|
168
183
|
offset += 4;
|
|
169
|
-
|
|
184
|
+
var parsed = parsePoint(view, offset, dimension, littleEndianPoint);
|
|
170
185
|
offset = parsed.offset;
|
|
171
186
|
binaryPointGeometries.push(parsed.geometry);
|
|
172
187
|
}
|
|
@@ -175,12 +190,12 @@ function parseMultiPoint(view, offset, dimension, littleEndian) {
|
|
|
175
190
|
}
|
|
176
191
|
|
|
177
192
|
function parseMultiLineString(view, offset, dimension, littleEndian) {
|
|
178
|
-
|
|
193
|
+
var nLines = view.getUint32(offset, littleEndian);
|
|
179
194
|
offset += 4;
|
|
180
|
-
|
|
195
|
+
var binaryLineGeometries = [];
|
|
181
196
|
|
|
182
|
-
for (
|
|
183
|
-
|
|
197
|
+
for (var i = 0; i < nLines; i++) {
|
|
198
|
+
var littleEndianLine = view.getUint8(offset) === 1;
|
|
184
199
|
offset++;
|
|
185
200
|
|
|
186
201
|
if (view.getUint32(offset, littleEndianLine) % 1000 !== 2) {
|
|
@@ -188,7 +203,7 @@ function parseMultiLineString(view, offset, dimension, littleEndian) {
|
|
|
188
203
|
}
|
|
189
204
|
|
|
190
205
|
offset += 4;
|
|
191
|
-
|
|
206
|
+
var parsed = parseLineString(view, offset, dimension, littleEndianLine);
|
|
192
207
|
offset = parsed.offset;
|
|
193
208
|
binaryLineGeometries.push(parsed.geometry);
|
|
194
209
|
}
|
|
@@ -197,12 +212,12 @@ function parseMultiLineString(view, offset, dimension, littleEndian) {
|
|
|
197
212
|
}
|
|
198
213
|
|
|
199
214
|
function parseMultiPolygon(view, offset, dimension, littleEndian) {
|
|
200
|
-
|
|
215
|
+
var nPolygons = view.getUint32(offset, littleEndian);
|
|
201
216
|
offset += 4;
|
|
202
|
-
|
|
217
|
+
var binaryPolygonGeometries = [];
|
|
203
218
|
|
|
204
|
-
for (
|
|
205
|
-
|
|
219
|
+
for (var i = 0; i < nPolygons; i++) {
|
|
220
|
+
var littleEndianPolygon = view.getUint8(offset) === 1;
|
|
206
221
|
offset++;
|
|
207
222
|
|
|
208
223
|
if (view.getUint32(offset, littleEndianPolygon) % 1000 !== 3) {
|
|
@@ -210,7 +225,7 @@ function parseMultiPolygon(view, offset, dimension, littleEndian) {
|
|
|
210
225
|
}
|
|
211
226
|
|
|
212
227
|
offset += 4;
|
|
213
|
-
|
|
228
|
+
var parsed = parsePolygon(view, offset, dimension, littleEndianPolygon);
|
|
214
229
|
offset = parsed.offset;
|
|
215
230
|
binaryPolygonGeometries.push(parsed.geometry);
|
|
216
231
|
}
|
|
@@ -219,8 +234,10 @@ function parseMultiPolygon(view, offset, dimension, littleEndian) {
|
|
|
219
234
|
}
|
|
220
235
|
|
|
221
236
|
function concatenateBinaryPointGeometries(binaryPointGeometries, dimension) {
|
|
222
|
-
|
|
223
|
-
|
|
237
|
+
var positions = binaryPointGeometries.map(function (geometry) {
|
|
238
|
+
return geometry.positions.value;
|
|
239
|
+
});
|
|
240
|
+
var concatenatedPositions = new Float64Array(concatTypedArrays(positions).buffer);
|
|
224
241
|
return {
|
|
225
242
|
type: 'Point',
|
|
226
243
|
positions: {
|
|
@@ -231,9 +248,13 @@ function concatenateBinaryPointGeometries(binaryPointGeometries, dimension) {
|
|
|
231
248
|
}
|
|
232
249
|
|
|
233
250
|
function concatenateBinaryLineGeometries(binaryLineGeometries, dimension) {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
251
|
+
var lines = binaryLineGeometries.map(function (geometry) {
|
|
252
|
+
return geometry.positions.value;
|
|
253
|
+
});
|
|
254
|
+
var concatenatedPositions = new Float64Array(concatTypedArrays(lines).buffer);
|
|
255
|
+
var pathIndices = lines.map(function (line) {
|
|
256
|
+
return line.length / dimension;
|
|
257
|
+
}).map(cumulativeSum(0));
|
|
237
258
|
pathIndices.unshift(0);
|
|
238
259
|
return {
|
|
239
260
|
type: 'LineString',
|
|
@@ -249,25 +270,40 @@ function concatenateBinaryLineGeometries(binaryLineGeometries, dimension) {
|
|
|
249
270
|
}
|
|
250
271
|
|
|
251
272
|
function concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension) {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
273
|
+
var polygons = [];
|
|
274
|
+
var primitivePolygons = [];
|
|
275
|
+
|
|
276
|
+
var _iterator = _createForOfIteratorHelper(binaryPolygonGeometries),
|
|
277
|
+
_step;
|
|
278
|
+
|
|
279
|
+
try {
|
|
280
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
281
|
+
var binaryPolygon = _step.value;
|
|
282
|
+
var positions = binaryPolygon.positions,
|
|
283
|
+
_primitivePolygonIndices = binaryPolygon.primitivePolygonIndices;
|
|
284
|
+
polygons.push(positions.value);
|
|
285
|
+
primitivePolygons.push(_primitivePolygonIndices.value);
|
|
286
|
+
}
|
|
287
|
+
} catch (err) {
|
|
288
|
+
_iterator.e(err);
|
|
289
|
+
} finally {
|
|
290
|
+
_iterator.f();
|
|
262
291
|
}
|
|
263
292
|
|
|
264
|
-
|
|
265
|
-
|
|
293
|
+
var concatenatedPositions = new Float64Array(concatTypedArrays(polygons).buffer);
|
|
294
|
+
var polygonIndices = polygons.map(function (p) {
|
|
295
|
+
return p.length / dimension;
|
|
296
|
+
}).map(cumulativeSum(0));
|
|
266
297
|
polygonIndices.unshift(0);
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
for (
|
|
270
|
-
|
|
298
|
+
var primitivePolygonIndices = [0];
|
|
299
|
+
|
|
300
|
+
for (var _i = 0, _primitivePolygons = primitivePolygons; _i < _primitivePolygons.length; _i++) {
|
|
301
|
+
var primitivePolygon = _primitivePolygons[_i];
|
|
302
|
+
primitivePolygonIndices.push.apply(primitivePolygonIndices, (0, _toConsumableArray2.default)(primitivePolygon.filter(function (x) {
|
|
303
|
+
return x > 0;
|
|
304
|
+
}).map(function (x) {
|
|
305
|
+
return x + primitivePolygonIndices[primitivePolygonIndices.length - 1];
|
|
306
|
+
})));
|
|
271
307
|
}
|
|
272
308
|
|
|
273
309
|
return {
|
|
@@ -288,20 +324,20 @@ function concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension)
|
|
|
288
324
|
}
|
|
289
325
|
|
|
290
326
|
function concatTypedArrays(arrays) {
|
|
291
|
-
|
|
327
|
+
var byteLength = 0;
|
|
292
328
|
|
|
293
|
-
for (
|
|
329
|
+
for (var i = 0; i < arrays.length; ++i) {
|
|
294
330
|
byteLength += arrays[i].byteLength;
|
|
295
331
|
}
|
|
296
332
|
|
|
297
|
-
|
|
298
|
-
|
|
333
|
+
var buffer = new Uint8Array(byteLength);
|
|
334
|
+
var byteOffset = 0;
|
|
299
335
|
|
|
300
|
-
for (
|
|
301
|
-
|
|
336
|
+
for (var _i2 = 0; _i2 < arrays.length; ++_i2) {
|
|
337
|
+
var data = new Uint8Array(arrays[_i2].buffer);
|
|
302
338
|
byteLength = data.length;
|
|
303
339
|
|
|
304
|
-
for (
|
|
340
|
+
for (var j = 0; j < byteLength; ++j) {
|
|
305
341
|
buffer[byteOffset++] = data[j];
|
|
306
342
|
}
|
|
307
343
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/parse-wkb.ts"],"names":["NUM_DIMENSIONS","parseWKB","arrayBuffer","view","DataView","offset","littleEndian","getUint8","geometryCode","getUint32","geometryType","type","dimension","point","parsePoint","geometry","line","parseLineString","polygon","parsePolygon","multiPoint","parseMultiPoint","multiLine","parseMultiLineString","multiPolygon","parseMultiPolygon","Error","positions","Float64Array","i","getFloat64","value","size","nPoints","pathIndices","push","Uint16Array","cumulativeSum","sum","nRings","rings","parsed","concatenatedPositions","concatTypedArrays","buffer","polygonIndices","length","primitivePolygonIndices","map","l","unshift","binaryPointGeometries","littleEndianPoint","concatenateBinaryPointGeometries","nLines","binaryLineGeometries","littleEndianLine","concatenateBinaryLineGeometries","nPolygons","binaryPolygonGeometries","littleEndianPolygon","concatenateBinaryPolygonGeometries","lines","polygons","primitivePolygons","binaryPolygon","p","primitivePolygon","filter","x","arrays","byteLength","Uint8Array","byteOffset","data","j"],"mappings":"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","sourcesContent":["import type {\n TypedArray,\n BinaryGeometry,\n BinaryPointGeometry,\n BinaryLineGeometry,\n BinaryPolygonGeometry\n} from '@loaders.gl/schema';\n\nconst NUM_DIMENSIONS = {\n 0: 2, // 2D\n 1: 3, // 3D (Z)\n 2: 3, // 3D (M)\n 3: 4 // 4D (ZM)\n};\n\nexport default function parseWKB(arrayBuffer: ArrayBuffer): BinaryGeometry {\n const view = new DataView(arrayBuffer);\n let offset = 0;\n\n // Check endianness of data\n const littleEndian = view.getUint8(offset) === 1;\n offset++;\n\n // 4-digit code representing dimension and type of geometry\n const geometryCode = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const geometryType = geometryCode % 1000;\n const type = ((geometryCode - geometryType) / 1000) as 0 | 1 | 2 | 3;\n const dimension = NUM_DIMENSIONS[type];\n\n switch (geometryType) {\n case 1:\n const point = parsePoint(view, offset, dimension, littleEndian);\n return point.geometry;\n case 2:\n const line = parseLineString(view, offset, dimension, littleEndian);\n return line.geometry;\n case 3:\n const polygon = parsePolygon(view, offset, dimension, littleEndian);\n return polygon.geometry;\n case 4:\n const multiPoint = parseMultiPoint(view, offset, dimension, littleEndian);\n multiPoint.type = 'Point';\n return multiPoint;\n case 5:\n const multiLine = parseMultiLineString(view, offset, dimension, littleEndian);\n multiLine.type = 'LineString';\n return multiLine;\n case 6:\n const multiPolygon = parseMultiPolygon(view, offset, dimension, littleEndian);\n multiPolygon.type = 'Polygon';\n return multiPolygon;\n // case 7:\n // TODO: handle GeometryCollections\n // return parseGeometryCollection(view, offset, dimension, littleEndian);\n default:\n throw new Error(`WKB: Unsupported geometry type: ${geometryType}`);\n }\n}\n\n// Primitives; parse point and linear ring\nfunction parsePoint(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryPointGeometry; offset: number} {\n const positions = new Float64Array(dimension);\n for (let i = 0; i < dimension; i++) {\n positions[i] = view.getFloat64(offset, littleEndian);\n offset += 8;\n }\n\n return {\n geometry: {type: 'Point', positions: {value: positions, size: dimension}},\n offset\n };\n}\n\nfunction parseLineString(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryLineGeometry; offset: number} {\n const nPoints = view.getUint32(offset, littleEndian);\n offset += 4;\n\n // Instantiate array\n const positions = new Float64Array(nPoints * dimension);\n for (let i = 0; i < nPoints * dimension; i++) {\n positions[i] = view.getFloat64(offset, littleEndian);\n offset += 8;\n }\n\n const pathIndices = [0];\n if (nPoints > 0) {\n pathIndices.push(nPoints);\n }\n\n return {\n geometry: {\n type: 'LineString',\n positions: {value: positions, size: dimension},\n pathIndices: {value: new Uint16Array(pathIndices), size: 1}\n },\n offset\n };\n}\n\n// https://stackoverflow.com/a/55261098\nconst cumulativeSum = (sum: number) => (value: number) => (sum += value);\n\nfunction parsePolygon(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryPolygonGeometry; offset: number} {\n const nRings = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const rings: TypedArray[] = [];\n for (let i = 0; i < nRings; i++) {\n const parsed = parseLineString(view, offset, dimension, littleEndian);\n const {positions} = parsed.geometry;\n offset = parsed.offset;\n rings.push(positions.value);\n }\n\n const concatenatedPositions = new Float64Array(concatTypedArrays(rings).buffer);\n const polygonIndices = [0];\n if (concatenatedPositions.length > 0) {\n polygonIndices.push(concatenatedPositions.length / dimension);\n }\n const primitivePolygonIndices = rings.map((l) => l.length / dimension).map(cumulativeSum(0));\n primitivePolygonIndices.unshift(0);\n\n return {\n geometry: {\n type: 'Polygon',\n positions: {value: concatenatedPositions, size: dimension},\n polygonIndices: {\n value: new Uint16Array(polygonIndices),\n size: 1\n },\n primitivePolygonIndices: {value: new Uint16Array(primitivePolygonIndices), size: 1}\n },\n offset\n };\n}\n\nfunction parseMultiPoint(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryPointGeometry {\n const nPoints = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryPointGeometries: BinaryPointGeometry[] = [];\n for (let i = 0; i < nPoints; i++) {\n // Byte order for point\n const littleEndianPoint = view.getUint8(offset) === 1;\n offset++;\n\n // Assert point type\n if (view.getUint32(offset, littleEndianPoint) % 1000 !== 1) {\n throw new Error('WKB: Inner geometries of MultiPoint not of type Point');\n }\n\n offset += 4;\n\n const parsed = parsePoint(view, offset, dimension, littleEndianPoint);\n offset = parsed.offset;\n binaryPointGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryPointGeometries(binaryPointGeometries, dimension);\n}\n\nfunction parseMultiLineString(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryLineGeometry {\n const nLines = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryLineGeometries: BinaryLineGeometry[] = [];\n for (let i = 0; i < nLines; i++) {\n // Byte order for line\n const littleEndianLine = view.getUint8(offset) === 1;\n offset++;\n\n // Assert type LineString\n if (view.getUint32(offset, littleEndianLine) % 1000 !== 2) {\n throw new Error('WKB: Inner geometries of MultiLineString not of type LineString');\n }\n offset += 4;\n\n const parsed = parseLineString(view, offset, dimension, littleEndianLine);\n offset = parsed.offset;\n binaryLineGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryLineGeometries(binaryLineGeometries, dimension);\n}\n\nfunction parseMultiPolygon(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryPolygonGeometry {\n const nPolygons = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryPolygonGeometries: BinaryPolygonGeometry[] = [];\n for (let i = 0; i < nPolygons; i++) {\n // Byte order for polygon\n const littleEndianPolygon = view.getUint8(offset) === 1;\n offset++;\n\n // Assert type Polygon\n if (view.getUint32(offset, littleEndianPolygon) % 1000 !== 3) {\n throw new Error('WKB: Inner geometries of MultiPolygon not of type Polygon');\n }\n offset += 4;\n\n const parsed = parsePolygon(view, offset, dimension, littleEndianPolygon);\n offset = parsed.offset;\n binaryPolygonGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension);\n}\n\n// TODO - move to loaders.gl/schema/gis\n\nfunction concatenateBinaryPointGeometries(\n binaryPointGeometries: BinaryPointGeometry[],\n dimension: number\n): BinaryPointGeometry {\n const positions: TypedArray[] = binaryPointGeometries.map((geometry) => geometry.positions.value);\n const concatenatedPositions = new Float64Array(concatTypedArrays(positions).buffer);\n\n return {\n type: 'Point',\n positions: {value: concatenatedPositions, size: dimension}\n };\n}\n\nfunction concatenateBinaryLineGeometries(\n binaryLineGeometries: BinaryLineGeometry[],\n dimension: number\n): BinaryLineGeometry {\n const lines: TypedArray[] = binaryLineGeometries.map((geometry) => geometry.positions.value);\n const concatenatedPositions = new Float64Array(concatTypedArrays(lines).buffer);\n const pathIndices = lines.map((line) => line.length / dimension).map(cumulativeSum(0));\n pathIndices.unshift(0);\n\n return {\n type: 'LineString',\n positions: {value: concatenatedPositions, size: dimension},\n pathIndices: {value: new Uint16Array(pathIndices), size: 1}\n };\n}\n\nfunction concatenateBinaryPolygonGeometries(\n binaryPolygonGeometries: BinaryPolygonGeometry[],\n dimension: number\n): BinaryPolygonGeometry {\n const polygons: TypedArray[] = [];\n const primitivePolygons: TypedArray[] = [];\n\n for (const binaryPolygon of binaryPolygonGeometries) {\n const {positions, primitivePolygonIndices} = binaryPolygon;\n polygons.push(positions.value);\n primitivePolygons.push(primitivePolygonIndices.value);\n }\n\n const concatenatedPositions = new Float64Array(concatTypedArrays(polygons).buffer);\n const polygonIndices = polygons.map((p) => p.length / dimension).map(cumulativeSum(0));\n polygonIndices.unshift(0);\n\n // Combine primitivePolygonIndices from each individual polygon\n const primitivePolygonIndices = [0];\n for (const primitivePolygon of primitivePolygons) {\n primitivePolygonIndices.push(\n ...primitivePolygon\n .filter((x: number) => x > 0)\n .map((x: number) => x + primitivePolygonIndices[primitivePolygonIndices.length - 1])\n );\n }\n\n return {\n type: 'Polygon',\n positions: {value: concatenatedPositions, size: dimension},\n polygonIndices: {value: new Uint16Array(polygonIndices), size: 1},\n primitivePolygonIndices: {value: new Uint16Array(primitivePolygonIndices), size: 1}\n };\n}\n\n// TODO: remove copy; import from typed-array-utils\n// modules/math/src/geometry/typed-arrays/typed-array-utils.js\nfunction concatTypedArrays(arrays: TypedArray[]): TypedArray {\n let byteLength = 0;\n for (let i = 0; i < arrays.length; ++i) {\n byteLength += arrays[i].byteLength;\n }\n const buffer = new Uint8Array(byteLength);\n\n let byteOffset = 0;\n for (let i = 0; i < arrays.length; ++i) {\n const data = new Uint8Array(arrays[i].buffer);\n byteLength = data.length;\n for (let j = 0; j < byteLength; ++j) {\n buffer[byteOffset++] = data[j];\n }\n }\n return buffer;\n}\n"],"file":"parse-wkb.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/parse-wkb.ts"],"names":["NUM_DIMENSIONS","parseWKB","arrayBuffer","view","DataView","offset","littleEndian","getUint8","geometryCode","getUint32","geometryType","type","dimension","point","parsePoint","geometry","line","parseLineString","polygon","parsePolygon","multiPoint","parseMultiPoint","multiLine","parseMultiLineString","multiPolygon","parseMultiPolygon","Error","positions","Float64Array","i","getFloat64","value","size","nPoints","pathIndices","push","Uint16Array","cumulativeSum","sum","nRings","rings","parsed","concatenatedPositions","concatTypedArrays","buffer","polygonIndices","length","primitivePolygonIndices","map","l","unshift","binaryPointGeometries","littleEndianPoint","concatenateBinaryPointGeometries","nLines","binaryLineGeometries","littleEndianLine","concatenateBinaryLineGeometries","nPolygons","binaryPolygonGeometries","littleEndianPolygon","concatenateBinaryPolygonGeometries","lines","polygons","primitivePolygons","binaryPolygon","p","primitivePolygon","filter","x","arrays","byteLength","Uint8Array","byteOffset","data","j"],"mappings":"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","sourcesContent":["import type {\n TypedArray,\n BinaryGeometry,\n BinaryPointGeometry,\n BinaryLineGeometry,\n BinaryPolygonGeometry\n} from '@loaders.gl/schema';\n\nconst NUM_DIMENSIONS = {\n 0: 2, // 2D\n 1: 3, // 3D (Z)\n 2: 3, // 3D (M)\n 3: 4 // 4D (ZM)\n};\n\nexport default function parseWKB(arrayBuffer: ArrayBuffer): BinaryGeometry {\n const view = new DataView(arrayBuffer);\n let offset = 0;\n\n // Check endianness of data\n const littleEndian = view.getUint8(offset) === 1;\n offset++;\n\n // 4-digit code representing dimension and type of geometry\n const geometryCode = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const geometryType = geometryCode % 1000;\n const type = ((geometryCode - geometryType) / 1000) as 0 | 1 | 2 | 3;\n const dimension = NUM_DIMENSIONS[type];\n\n switch (geometryType) {\n case 1:\n const point = parsePoint(view, offset, dimension, littleEndian);\n return point.geometry;\n case 2:\n const line = parseLineString(view, offset, dimension, littleEndian);\n return line.geometry;\n case 3:\n const polygon = parsePolygon(view, offset, dimension, littleEndian);\n return polygon.geometry;\n case 4:\n const multiPoint = parseMultiPoint(view, offset, dimension, littleEndian);\n multiPoint.type = 'Point';\n return multiPoint;\n case 5:\n const multiLine = parseMultiLineString(view, offset, dimension, littleEndian);\n multiLine.type = 'LineString';\n return multiLine;\n case 6:\n const multiPolygon = parseMultiPolygon(view, offset, dimension, littleEndian);\n multiPolygon.type = 'Polygon';\n return multiPolygon;\n // case 7:\n // TODO: handle GeometryCollections\n // return parseGeometryCollection(view, offset, dimension, littleEndian);\n default:\n throw new Error(`WKB: Unsupported geometry type: ${geometryType}`);\n }\n}\n\n// Primitives; parse point and linear ring\nfunction parsePoint(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryPointGeometry; offset: number} {\n const positions = new Float64Array(dimension);\n for (let i = 0; i < dimension; i++) {\n positions[i] = view.getFloat64(offset, littleEndian);\n offset += 8;\n }\n\n return {\n geometry: {type: 'Point', positions: {value: positions, size: dimension}},\n offset\n };\n}\n\nfunction parseLineString(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryLineGeometry; offset: number} {\n const nPoints = view.getUint32(offset, littleEndian);\n offset += 4;\n\n // Instantiate array\n const positions = new Float64Array(nPoints * dimension);\n for (let i = 0; i < nPoints * dimension; i++) {\n positions[i] = view.getFloat64(offset, littleEndian);\n offset += 8;\n }\n\n const pathIndices = [0];\n if (nPoints > 0) {\n pathIndices.push(nPoints);\n }\n\n return {\n geometry: {\n type: 'LineString',\n positions: {value: positions, size: dimension},\n pathIndices: {value: new Uint16Array(pathIndices), size: 1}\n },\n offset\n };\n}\n\n// https://stackoverflow.com/a/55261098\nconst cumulativeSum = (sum: number) => (value: number) => (sum += value);\n\nfunction parsePolygon(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): {geometry: BinaryPolygonGeometry; offset: number} {\n const nRings = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const rings: TypedArray[] = [];\n for (let i = 0; i < nRings; i++) {\n const parsed = parseLineString(view, offset, dimension, littleEndian);\n const {positions} = parsed.geometry;\n offset = parsed.offset;\n rings.push(positions.value);\n }\n\n const concatenatedPositions = new Float64Array(concatTypedArrays(rings).buffer);\n const polygonIndices = [0];\n if (concatenatedPositions.length > 0) {\n polygonIndices.push(concatenatedPositions.length / dimension);\n }\n const primitivePolygonIndices = rings.map((l) => l.length / dimension).map(cumulativeSum(0));\n primitivePolygonIndices.unshift(0);\n\n return {\n geometry: {\n type: 'Polygon',\n positions: {value: concatenatedPositions, size: dimension},\n polygonIndices: {\n value: new Uint16Array(polygonIndices),\n size: 1\n },\n primitivePolygonIndices: {value: new Uint16Array(primitivePolygonIndices), size: 1}\n },\n offset\n };\n}\n\nfunction parseMultiPoint(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryPointGeometry {\n const nPoints = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryPointGeometries: BinaryPointGeometry[] = [];\n for (let i = 0; i < nPoints; i++) {\n // Byte order for point\n const littleEndianPoint = view.getUint8(offset) === 1;\n offset++;\n\n // Assert point type\n if (view.getUint32(offset, littleEndianPoint) % 1000 !== 1) {\n throw new Error('WKB: Inner geometries of MultiPoint not of type Point');\n }\n\n offset += 4;\n\n const parsed = parsePoint(view, offset, dimension, littleEndianPoint);\n offset = parsed.offset;\n binaryPointGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryPointGeometries(binaryPointGeometries, dimension);\n}\n\nfunction parseMultiLineString(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryLineGeometry {\n const nLines = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryLineGeometries: BinaryLineGeometry[] = [];\n for (let i = 0; i < nLines; i++) {\n // Byte order for line\n const littleEndianLine = view.getUint8(offset) === 1;\n offset++;\n\n // Assert type LineString\n if (view.getUint32(offset, littleEndianLine) % 1000 !== 2) {\n throw new Error('WKB: Inner geometries of MultiLineString not of type LineString');\n }\n offset += 4;\n\n const parsed = parseLineString(view, offset, dimension, littleEndianLine);\n offset = parsed.offset;\n binaryLineGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryLineGeometries(binaryLineGeometries, dimension);\n}\n\nfunction parseMultiPolygon(\n view: DataView,\n offset: number,\n dimension: number,\n littleEndian: boolean\n): BinaryPolygonGeometry {\n const nPolygons = view.getUint32(offset, littleEndian);\n offset += 4;\n\n const binaryPolygonGeometries: BinaryPolygonGeometry[] = [];\n for (let i = 0; i < nPolygons; i++) {\n // Byte order for polygon\n const littleEndianPolygon = view.getUint8(offset) === 1;\n offset++;\n\n // Assert type Polygon\n if (view.getUint32(offset, littleEndianPolygon) % 1000 !== 3) {\n throw new Error('WKB: Inner geometries of MultiPolygon not of type Polygon');\n }\n offset += 4;\n\n const parsed = parsePolygon(view, offset, dimension, littleEndianPolygon);\n offset = parsed.offset;\n binaryPolygonGeometries.push(parsed.geometry);\n }\n\n return concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension);\n}\n\n// TODO - move to loaders.gl/schema/gis\n\nfunction concatenateBinaryPointGeometries(\n binaryPointGeometries: BinaryPointGeometry[],\n dimension: number\n): BinaryPointGeometry {\n const positions: TypedArray[] = binaryPointGeometries.map((geometry) => geometry.positions.value);\n const concatenatedPositions = new Float64Array(concatTypedArrays(positions).buffer);\n\n return {\n type: 'Point',\n positions: {value: concatenatedPositions, size: dimension}\n };\n}\n\nfunction concatenateBinaryLineGeometries(\n binaryLineGeometries: BinaryLineGeometry[],\n dimension: number\n): BinaryLineGeometry {\n const lines: TypedArray[] = binaryLineGeometries.map((geometry) => geometry.positions.value);\n const concatenatedPositions = new Float64Array(concatTypedArrays(lines).buffer);\n const pathIndices = lines.map((line) => line.length / dimension).map(cumulativeSum(0));\n pathIndices.unshift(0);\n\n return {\n type: 'LineString',\n positions: {value: concatenatedPositions, size: dimension},\n pathIndices: {value: new Uint16Array(pathIndices), size: 1}\n };\n}\n\nfunction concatenateBinaryPolygonGeometries(\n binaryPolygonGeometries: BinaryPolygonGeometry[],\n dimension: number\n): BinaryPolygonGeometry {\n const polygons: TypedArray[] = [];\n const primitivePolygons: TypedArray[] = [];\n\n for (const binaryPolygon of binaryPolygonGeometries) {\n const {positions, primitivePolygonIndices} = binaryPolygon;\n polygons.push(positions.value);\n primitivePolygons.push(primitivePolygonIndices.value);\n }\n\n const concatenatedPositions = new Float64Array(concatTypedArrays(polygons).buffer);\n const polygonIndices = polygons.map((p) => p.length / dimension).map(cumulativeSum(0));\n polygonIndices.unshift(0);\n\n // Combine primitivePolygonIndices from each individual polygon\n const primitivePolygonIndices = [0];\n for (const primitivePolygon of primitivePolygons) {\n primitivePolygonIndices.push(\n ...primitivePolygon\n .filter((x: number) => x > 0)\n .map((x: number) => x + primitivePolygonIndices[primitivePolygonIndices.length - 1])\n );\n }\n\n return {\n type: 'Polygon',\n positions: {value: concatenatedPositions, size: dimension},\n polygonIndices: {value: new Uint16Array(polygonIndices), size: 1},\n primitivePolygonIndices: {value: new Uint16Array(primitivePolygonIndices), size: 1}\n };\n}\n\n// TODO: remove copy; import from typed-array-utils\n// modules/math/src/geometry/typed-arrays/typed-array-utils.js\nfunction concatTypedArrays(arrays: TypedArray[]): TypedArray {\n let byteLength = 0;\n for (let i = 0; i < arrays.length; ++i) {\n byteLength += arrays[i].byteLength;\n }\n const buffer = new Uint8Array(byteLength);\n\n let byteOffset = 0;\n for (let i = 0; i < arrays.length; ++i) {\n const data = new Uint8Array(arrays[i].buffer);\n byteLength = data.length;\n for (let j = 0; j < byteLength; ++j) {\n buffer[byteOffset++] = data[j];\n }\n }\n return buffer;\n}\n"],"file":"parse-wkb.js"}
|
|
@@ -4,19 +4,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = parseWKT;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
var numberRegexp = /[-+]?([0-9]*\.[0-9]+|[0-9]+)([eE][-+]?[0-9]+)?/;
|
|
8
|
+
var tuples = new RegExp('^' + numberRegexp.source + '(\\s' + numberRegexp.source + '){1,}');
|
|
9
9
|
|
|
10
10
|
function parseWKT(input) {
|
|
11
|
-
|
|
11
|
+
var parts = input.split(';');
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
var _ = parts.pop();
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
var srid = (parts.shift() || '').split('=').pop();
|
|
16
|
+
var i = 0;
|
|
17
17
|
|
|
18
18
|
function $(re) {
|
|
19
|
-
|
|
19
|
+
var match = _.substring(i).match(re);
|
|
20
20
|
|
|
21
21
|
if (!match) return null;else {
|
|
22
22
|
i += match[0].length;
|
|
@@ -43,11 +43,11 @@ function parseWKT(input) {
|
|
|
43
43
|
|
|
44
44
|
function multicoords() {
|
|
45
45
|
white();
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
var depth = 0;
|
|
47
|
+
var rings = [];
|
|
48
|
+
var stack = [rings];
|
|
49
|
+
var pointer = rings;
|
|
50
|
+
var elem;
|
|
51
51
|
|
|
52
52
|
while (elem = $(/^(\()/) || $(/^(\))/) || $(/^(,)/) || $(tuples)) {
|
|
53
53
|
if (elem === '(') {
|
|
@@ -78,9 +78,9 @@ function parseWKT(input) {
|
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
function coords() {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
var list = [];
|
|
82
|
+
var item;
|
|
83
|
+
var pt;
|
|
84
84
|
|
|
85
85
|
while (pt = $(tuples) || $(/^(,)/)) {
|
|
86
86
|
if (pt === ',') {
|
|
@@ -102,7 +102,7 @@ function parseWKT(input) {
|
|
|
102
102
|
if (!$(/^(point(\sz)?)/i)) return null;
|
|
103
103
|
white();
|
|
104
104
|
if (!$(/^(\()/)) return null;
|
|
105
|
-
|
|
105
|
+
var c = coords();
|
|
106
106
|
if (!c) return null;
|
|
107
107
|
white();
|
|
108
108
|
if (!$(/^(\))/)) return null;
|
|
@@ -116,10 +116,10 @@ function parseWKT(input) {
|
|
|
116
116
|
if (!$(/^(multipoint)/i)) return null;
|
|
117
117
|
white();
|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
var newCoordsFormat = _.substring(_.indexOf('(') + 1, _.length - 1).replace(/\(/g, '').replace(/\)/g, '');
|
|
120
120
|
|
|
121
121
|
_ = 'MULTIPOINT (' + newCoordsFormat + ')';
|
|
122
|
-
|
|
122
|
+
var c = multicoords();
|
|
123
123
|
if (!c) return null;
|
|
124
124
|
white();
|
|
125
125
|
return {
|
|
@@ -131,7 +131,7 @@ function parseWKT(input) {
|
|
|
131
131
|
function multilinestring() {
|
|
132
132
|
if (!$(/^(multilinestring)/i)) return null;
|
|
133
133
|
white();
|
|
134
|
-
|
|
134
|
+
var c = multicoords();
|
|
135
135
|
if (!c) return null;
|
|
136
136
|
white();
|
|
137
137
|
return {
|
|
@@ -144,7 +144,7 @@ function parseWKT(input) {
|
|
|
144
144
|
if (!$(/^(linestring(\sz)?)/i)) return null;
|
|
145
145
|
white();
|
|
146
146
|
if (!$(/^(\()/)) return null;
|
|
147
|
-
|
|
147
|
+
var c = coords();
|
|
148
148
|
if (!c) return null;
|
|
149
149
|
if (!$(/^(\))/)) return null;
|
|
150
150
|
return {
|
|
@@ -156,7 +156,7 @@ function parseWKT(input) {
|
|
|
156
156
|
function polygon() {
|
|
157
157
|
if (!$(/^(polygon(\sz)?)/i)) return null;
|
|
158
158
|
white();
|
|
159
|
-
|
|
159
|
+
var c = multicoords();
|
|
160
160
|
if (!c) return null;
|
|
161
161
|
return {
|
|
162
162
|
type: 'Polygon',
|
|
@@ -167,7 +167,7 @@ function parseWKT(input) {
|
|
|
167
167
|
function multipolygon() {
|
|
168
168
|
if (!$(/^(multipolygon)/i)) return null;
|
|
169
169
|
white();
|
|
170
|
-
|
|
170
|
+
var c = multicoords();
|
|
171
171
|
if (!c) return null;
|
|
172
172
|
return {
|
|
173
173
|
type: 'MultiPolygon',
|
|
@@ -176,8 +176,8 @@ function parseWKT(input) {
|
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
function geometrycollection() {
|
|
179
|
-
|
|
180
|
-
|
|
179
|
+
var geometries = [];
|
|
180
|
+
var geometry;
|
|
181
181
|
if (!$(/^(geometrycollection)/i)) return null;
|
|
182
182
|
white();
|
|
183
183
|
if (!$(/^(\()/)) return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/parse-wkt.ts"],"names":["numberRegexp","tuples","RegExp","source","parseWKT","input","parts","split","_","pop","srid","shift","i","$","re","match","substring","length","crs","obj","type","properties","name","white","multicoords","depth","rings","stack","pointer","elem","push","some","isNaN","Array","prototype","apply","map","parseFloat","coords","list","item","pt","point","c","coordinates","multipoint","newCoordsFormat","indexOf","replace","multilinestring","linestring","polygon","multipolygon","geometrycollection","geometries","geometry","root"],"mappings":"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","sourcesContent":["// Fork of https://github.com/mapbox/wellknown under ISC license (MIT/BSD-2-clause equivalent)\n\n/* eslint-disable */\n// @ts-nocheck\n\nconst numberRegexp = /[-+]?([0-9]*\\.[0-9]+|[0-9]+)([eE][-+]?[0-9]+)?/;\n// Matches sequences like '100 100' or '100 100 100'.\nconst tuples = new RegExp('^' + numberRegexp.source + '(\\\\s' + numberRegexp.source + '){1,}');\n\n/**\n * Parse WKT and return GeoJSON.\n *\n * @param {string} _ A WKT geometry\n * @return {?Object} A GeoJSON geometry object\n **/\nexport default function parseWKT(input) {\n const parts = input.split(';');\n let _ = parts.pop();\n const srid = (parts.shift() || '').split('=').pop();\n\n let i = 0;\n\n function $(re) {\n const match = _.substring(i).match(re);\n if (!match) return null;\n else {\n i += match[0].length;\n return match[0];\n }\n }\n\n function crs(obj) {\n if (obj && srid.match(/\\d+/)) {\n obj.crs = {\n type: 'name',\n properties: {\n name: 'urn:ogc:def:crs:EPSG::' + srid\n }\n };\n }\n\n return obj;\n }\n\n function white() {\n $(/^\\s*/);\n }\n\n function multicoords() {\n white();\n let depth = 0;\n const rings = [];\n const stack = [rings];\n let pointer = rings;\n let elem;\n\n while ((elem = $(/^(\\()/) || $(/^(\\))/) || $(/^(,)/) || $(tuples))) {\n if (elem === '(') {\n stack.push(pointer);\n pointer = [];\n stack[stack.length - 1].push(pointer);\n depth++;\n } else if (elem === ')') {\n // For the case: Polygon(), ...\n if (pointer.length === 0) return null;\n\n // @ts-ignore\n pointer = stack.pop();\n // the stack was empty, input was malformed\n if (!pointer) return null;\n depth--;\n if (depth === 0) break;\n } else if (elem === ',') {\n pointer = [];\n stack[stack.length - 1].push(pointer);\n } else if (!elem.split(/\\s/g).some(isNaN)) {\n Array.prototype.push.apply(pointer, elem.split(/\\s/g).map(parseFloat));\n } else {\n return null;\n }\n white();\n }\n\n if (depth !== 0) return null;\n\n return rings;\n }\n\n function coords() {\n const list = [];\n let item;\n let pt;\n while ((pt = $(tuples) || $(/^(,)/))) {\n if (pt === ',') {\n list.push(item);\n item = [];\n } else if (!pt.split(/\\s/g).some(isNaN)) {\n if (!item) item = [];\n Array.prototype.push.apply(item, pt.split(/\\s/g).map(parseFloat));\n }\n white();\n }\n\n if (item) list.push(item);\n else return null;\n\n return list.length ? list : null;\n }\n\n function point() {\n if (!$(/^(point(\\sz)?)/i)) return null;\n white();\n if (!$(/^(\\()/)) return null;\n const c = coords();\n if (!c) return null;\n white();\n if (!$(/^(\\))/)) return null;\n return {\n type: 'Point',\n coordinates: c[0]\n };\n }\n\n function multipoint() {\n if (!$(/^(multipoint)/i)) return null;\n white();\n const newCoordsFormat = _.substring(_.indexOf('(') + 1, _.length - 1)\n .replace(/\\(/g, '')\n .replace(/\\)/g, '');\n _ = 'MULTIPOINT (' + newCoordsFormat + ')';\n const c = multicoords();\n if (!c) return null;\n white();\n return {\n type: 'MultiPoint',\n coordinates: c\n };\n }\n\n function multilinestring() {\n if (!$(/^(multilinestring)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n white();\n return {\n type: 'MultiLineString',\n coordinates: c\n };\n }\n\n function linestring() {\n if (!$(/^(linestring(\\sz)?)/i)) return null;\n white();\n if (!$(/^(\\()/)) return null;\n const c = coords();\n if (!c) return null;\n if (!$(/^(\\))/)) return null;\n return {\n type: 'LineString',\n coordinates: c\n };\n }\n\n function polygon() {\n if (!$(/^(polygon(\\sz)?)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n return {\n type: 'Polygon',\n coordinates: c\n };\n }\n\n function multipolygon() {\n if (!$(/^(multipolygon)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n return {\n type: 'MultiPolygon',\n coordinates: c\n };\n }\n\n function geometrycollection() {\n const geometries = [];\n let geometry;\n\n if (!$(/^(geometrycollection)/i)) return null;\n white();\n\n if (!$(/^(\\()/)) return null;\n while ((geometry = root())) {\n geometries.push(geometry);\n white();\n $(/^(,)/);\n white();\n }\n if (!$(/^(\\))/)) return null;\n\n return {\n type: 'GeometryCollection',\n geometries: geometries\n };\n }\n\n function root() {\n return (\n point() ||\n linestring() ||\n polygon() ||\n multipoint() ||\n multilinestring() ||\n multipolygon() ||\n geometrycollection()\n );\n }\n\n return crs(root());\n}\n"],"file":"parse-wkt.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/parse-wkt.ts"],"names":["numberRegexp","tuples","RegExp","source","parseWKT","input","parts","split","_","pop","srid","shift","i","$","re","match","substring","length","crs","obj","type","properties","name","white","multicoords","depth","rings","stack","pointer","elem","push","some","isNaN","Array","prototype","apply","map","parseFloat","coords","list","item","pt","point","c","coordinates","multipoint","newCoordsFormat","indexOf","replace","multilinestring","linestring","polygon","multipolygon","geometrycollection","geometries","geometry","root"],"mappings":"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","sourcesContent":["// Fork of https://github.com/mapbox/wellknown under ISC license (MIT/BSD-2-clause equivalent)\n\n/* eslint-disable */\n// @ts-nocheck\n\nconst numberRegexp = /[-+]?([0-9]*\\.[0-9]+|[0-9]+)([eE][-+]?[0-9]+)?/;\n// Matches sequences like '100 100' or '100 100 100'.\nconst tuples = new RegExp('^' + numberRegexp.source + '(\\\\s' + numberRegexp.source + '){1,}');\n\n/**\n * Parse WKT and return GeoJSON.\n *\n * @param {string} _ A WKT geometry\n * @return {?Object} A GeoJSON geometry object\n **/\nexport default function parseWKT(input) {\n const parts = input.split(';');\n let _ = parts.pop();\n const srid = (parts.shift() || '').split('=').pop();\n\n let i = 0;\n\n function $(re) {\n const match = _.substring(i).match(re);\n if (!match) return null;\n else {\n i += match[0].length;\n return match[0];\n }\n }\n\n function crs(obj) {\n if (obj && srid.match(/\\d+/)) {\n obj.crs = {\n type: 'name',\n properties: {\n name: 'urn:ogc:def:crs:EPSG::' + srid\n }\n };\n }\n\n return obj;\n }\n\n function white() {\n $(/^\\s*/);\n }\n\n function multicoords() {\n white();\n let depth = 0;\n const rings = [];\n const stack = [rings];\n let pointer = rings;\n let elem;\n\n while ((elem = $(/^(\\()/) || $(/^(\\))/) || $(/^(,)/) || $(tuples))) {\n if (elem === '(') {\n stack.push(pointer);\n pointer = [];\n stack[stack.length - 1].push(pointer);\n depth++;\n } else if (elem === ')') {\n // For the case: Polygon(), ...\n if (pointer.length === 0) return null;\n\n // @ts-ignore\n pointer = stack.pop();\n // the stack was empty, input was malformed\n if (!pointer) return null;\n depth--;\n if (depth === 0) break;\n } else if (elem === ',') {\n pointer = [];\n stack[stack.length - 1].push(pointer);\n } else if (!elem.split(/\\s/g).some(isNaN)) {\n Array.prototype.push.apply(pointer, elem.split(/\\s/g).map(parseFloat));\n } else {\n return null;\n }\n white();\n }\n\n if (depth !== 0) return null;\n\n return rings;\n }\n\n function coords() {\n const list = [];\n let item;\n let pt;\n while ((pt = $(tuples) || $(/^(,)/))) {\n if (pt === ',') {\n list.push(item);\n item = [];\n } else if (!pt.split(/\\s/g).some(isNaN)) {\n if (!item) item = [];\n Array.prototype.push.apply(item, pt.split(/\\s/g).map(parseFloat));\n }\n white();\n }\n\n if (item) list.push(item);\n else return null;\n\n return list.length ? list : null;\n }\n\n function point() {\n if (!$(/^(point(\\sz)?)/i)) return null;\n white();\n if (!$(/^(\\()/)) return null;\n const c = coords();\n if (!c) return null;\n white();\n if (!$(/^(\\))/)) return null;\n return {\n type: 'Point',\n coordinates: c[0]\n };\n }\n\n function multipoint() {\n if (!$(/^(multipoint)/i)) return null;\n white();\n const newCoordsFormat = _.substring(_.indexOf('(') + 1, _.length - 1)\n .replace(/\\(/g, '')\n .replace(/\\)/g, '');\n _ = 'MULTIPOINT (' + newCoordsFormat + ')';\n const c = multicoords();\n if (!c) return null;\n white();\n return {\n type: 'MultiPoint',\n coordinates: c\n };\n }\n\n function multilinestring() {\n if (!$(/^(multilinestring)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n white();\n return {\n type: 'MultiLineString',\n coordinates: c\n };\n }\n\n function linestring() {\n if (!$(/^(linestring(\\sz)?)/i)) return null;\n white();\n if (!$(/^(\\()/)) return null;\n const c = coords();\n if (!c) return null;\n if (!$(/^(\\))/)) return null;\n return {\n type: 'LineString',\n coordinates: c\n };\n }\n\n function polygon() {\n if (!$(/^(polygon(\\sz)?)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n return {\n type: 'Polygon',\n coordinates: c\n };\n }\n\n function multipolygon() {\n if (!$(/^(multipolygon)/i)) return null;\n white();\n const c = multicoords();\n if (!c) return null;\n return {\n type: 'MultiPolygon',\n coordinates: c\n };\n }\n\n function geometrycollection() {\n const geometries = [];\n let geometry;\n\n if (!$(/^(geometrycollection)/i)) return null;\n white();\n\n if (!$(/^(\\()/)) return null;\n while ((geometry = root())) {\n geometries.push(geometry);\n white();\n $(/^(,)/);\n white();\n }\n if (!$(/^(\\))/)) return null;\n\n return {\n type: 'GeometryCollection',\n geometries: geometries\n };\n }\n\n function root() {\n return (\n point() ||\n linestring() ||\n polygon() ||\n multipoint() ||\n multilinestring() ||\n multipolygon() ||\n geometrycollection()\n );\n }\n\n return crs(root());\n}\n"],"file":"parse-wkt.js"}
|
|
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.VERSION = void 0;
|
|
7
|
-
|
|
7
|
+
var VERSION = typeof "3.1.0" !== 'undefined' ? "3.1.0" : 'latest';
|
|
8
8
|
exports.VERSION = VERSION;
|
|
9
9
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/utils/version.ts"],"names":["VERSION"],"mappings":";;;;;;AAGO,
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/utils/version.ts"],"names":["VERSION"],"mappings":";;;;;;AAGO,IAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,QAAnE","sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"file":"version.js"}
|
package/dist/es5/wkb-loader.js
CHANGED
|
@@ -7,11 +7,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports._typecheckWKBLoader = exports._typecheckWKBWorkerLoader = exports.WKBLoader = exports.WKBWorkerLoader = void 0;
|
|
9
9
|
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
|
|
10
16
|
var _version = require("./lib/utils/version");
|
|
11
17
|
|
|
12
18
|
var _parseWkb = _interopRequireDefault(require("./lib/parse-wkb"));
|
|
13
19
|
|
|
14
|
-
|
|
20
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
21
|
+
|
|
22
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
23
|
+
|
|
24
|
+
var WKBWorkerLoader = {
|
|
15
25
|
name: 'WKB',
|
|
16
26
|
id: 'wkb',
|
|
17
27
|
module: 'wkt',
|
|
@@ -25,13 +35,36 @@ const WKBWorkerLoader = {
|
|
|
25
35
|
}
|
|
26
36
|
};
|
|
27
37
|
exports.WKBWorkerLoader = WKBWorkerLoader;
|
|
28
|
-
|
|
29
|
-
|
|
38
|
+
|
|
39
|
+
var WKBLoader = _objectSpread(_objectSpread({}, WKBWorkerLoader), {}, {
|
|
40
|
+
parse: function () {
|
|
41
|
+
var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer) {
|
|
42
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
43
|
+
while (1) {
|
|
44
|
+
switch (_context.prev = _context.next) {
|
|
45
|
+
case 0:
|
|
46
|
+
return _context.abrupt("return", (0, _parseWkb.default)(arrayBuffer));
|
|
47
|
+
|
|
48
|
+
case 1:
|
|
49
|
+
case "end":
|
|
50
|
+
return _context.stop();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}, _callee);
|
|
54
|
+
}));
|
|
55
|
+
|
|
56
|
+
function parse(_x) {
|
|
57
|
+
return _parse.apply(this, arguments);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return parse;
|
|
61
|
+
}(),
|
|
30
62
|
parseSync: _parseWkb.default
|
|
31
|
-
};
|
|
63
|
+
});
|
|
64
|
+
|
|
32
65
|
exports.WKBLoader = WKBLoader;
|
|
33
|
-
|
|
66
|
+
var _typecheckWKBWorkerLoader = WKBWorkerLoader;
|
|
34
67
|
exports._typecheckWKBWorkerLoader = _typecheckWKBWorkerLoader;
|
|
35
|
-
|
|
68
|
+
var _typecheckWKBLoader = WKBLoader;
|
|
36
69
|
exports._typecheckWKBLoader = _typecheckWKBLoader;
|
|
37
70
|
//# sourceMappingURL=wkb-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/wkb-loader.ts"],"names":["WKBWorkerLoader","name","id","module","version","VERSION","worker","category","extensions","mimeTypes","options","wkb","WKBLoader","parse","arrayBuffer","parseSync","parseWKB","_typecheckWKBWorkerLoader","_typecheckWKBLoader"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/wkb-loader.ts"],"names":["WKBWorkerLoader","name","id","module","version","VERSION","worker","category","extensions","mimeTypes","options","wkb","WKBLoader","parse","arrayBuffer","parseSync","parseWKB","_typecheckWKBWorkerLoader","_typecheckWKBLoader"],"mappings":";;;;;;;;;;;;;;;AACA;;AACA;;;;;;AAKO,IAAMA,eAAe,GAAG;AAC7BC,EAAAA,IAAI,EAAE,KADuB;AAE7BC,EAAAA,EAAE,EAAE,KAFyB;AAG7BC,EAAAA,MAAM,EAAE,KAHqB;AAI7BC,EAAAA,OAAO,EAAEC,gBAJoB;AAK7BC,EAAAA,MAAM,EAAE,IALqB;AAM7BC,EAAAA,QAAQ,EAAE,UANmB;AAO7BC,EAAAA,UAAU,EAAE,CAAC,KAAD,CAPiB;AAQ7BC,EAAAA,SAAS,EAAE,EARkB;AAS7BC,EAAAA,OAAO,EAAE;AACPC,IAAAA,GAAG,EAAE;AADE;AAToB,CAAxB;;;AAiBA,IAAMC,SAAS,mCACjBZ,eADiB;AAEpBa,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP;AAAA;AAAA;AAAA;AAAA;AAAA,+CAAoC,uBAASA,WAAT,CAApC;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KAFe;AAGpBC,EAAAA,SAAS,EAAEC;AAHS,EAAf;;;AAMA,IAAMC,yBAAiC,GAAGjB,eAA1C;;AACA,IAAMkB,mBAAqC,GAAGN,SAA9C","sourcesContent":["import type {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport parseWKB from './lib/parse-wkb';\n\n/**\n * Worker loader for WKB (Well-Known Binary)\n */\nexport const WKBWorkerLoader = {\n name: 'WKB',\n id: 'wkb',\n module: 'wkt',\n version: VERSION,\n worker: true,\n category: 'geometry',\n extensions: ['wkb'],\n mimeTypes: [],\n options: {\n wkb: {}\n }\n};\n\n/**\n * Loader for WKB (Well-Known Binary)\n */\nexport const WKBLoader = {\n ...WKBWorkerLoader,\n parse: async (arrayBuffer: ArrayBuffer) => parseWKB(arrayBuffer),\n parseSync: parseWKB\n};\n\nexport const _typecheckWKBWorkerLoader: Loader = WKBWorkerLoader;\nexport const _typecheckWKBLoader: LoaderWithParser = WKBLoader;\n"],"file":"wkb-loader.js"}
|
package/dist/es5/wkt-loader.js
CHANGED
|
@@ -7,11 +7,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.WKTLoader = exports.WKTWorkerLoader = void 0;
|
|
9
9
|
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
|
|
10
16
|
var _version = require("./lib/utils/version");
|
|
11
17
|
|
|
12
18
|
var _parseWkt = _interopRequireDefault(require("./lib/parse-wkt"));
|
|
13
19
|
|
|
14
|
-
|
|
20
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
21
|
+
|
|
22
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
23
|
+
|
|
24
|
+
var WKTWorkerLoader = {
|
|
15
25
|
name: 'WKT (Well-Known Text)',
|
|
16
26
|
id: 'wkt',
|
|
17
27
|
module: 'wkt',
|
|
@@ -26,9 +36,32 @@ const WKTWorkerLoader = {
|
|
|
26
36
|
}
|
|
27
37
|
};
|
|
28
38
|
exports.WKTWorkerLoader = WKTWorkerLoader;
|
|
29
|
-
|
|
30
|
-
|
|
39
|
+
|
|
40
|
+
var WKTLoader = _objectSpread(_objectSpread({}, WKTWorkerLoader), {}, {
|
|
41
|
+
parse: function () {
|
|
42
|
+
var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer) {
|
|
43
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
44
|
+
while (1) {
|
|
45
|
+
switch (_context.prev = _context.next) {
|
|
46
|
+
case 0:
|
|
47
|
+
return _context.abrupt("return", (0, _parseWkt.default)(new TextDecoder().decode(arrayBuffer)));
|
|
48
|
+
|
|
49
|
+
case 1:
|
|
50
|
+
case "end":
|
|
51
|
+
return _context.stop();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}, _callee);
|
|
55
|
+
}));
|
|
56
|
+
|
|
57
|
+
function parse(_x) {
|
|
58
|
+
return _parse.apply(this, arguments);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return parse;
|
|
62
|
+
}(),
|
|
31
63
|
parseTextSync: _parseWkt.default
|
|
32
|
-
};
|
|
64
|
+
});
|
|
65
|
+
|
|
33
66
|
exports.WKTLoader = WKTLoader;
|
|
34
67
|
//# sourceMappingURL=wkt-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/wkt-loader.ts"],"names":["WKTWorkerLoader","name","id","module","version","VERSION","worker","extensions","mimeTypes","category","text","options","wkt","WKTLoader","parse","arrayBuffer","TextDecoder","decode","parseTextSync","parseWKT"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/wkt-loader.ts"],"names":["WKTWorkerLoader","name","id","module","version","VERSION","worker","extensions","mimeTypes","category","text","options","wkt","WKTLoader","parse","arrayBuffer","TextDecoder","decode","parseTextSync","parseWKT"],"mappings":";;;;;;;;;;;;;;;AACA;;AACA;;;;;;AAKO,IAAMA,eAAuB,GAAG;AACrCC,EAAAA,IAAI,EAAE,uBAD+B;AAErCC,EAAAA,EAAE,EAAE,KAFiC;AAGrCC,EAAAA,MAAM,EAAE,KAH6B;AAIrCC,EAAAA,OAAO,EAAEC,gBAJ4B;AAKrCC,EAAAA,MAAM,EAAE,IAL6B;AAMrCC,EAAAA,UAAU,EAAE,CAAC,KAAD,CANyB;AAOrCC,EAAAA,SAAS,EAAE,CAAC,YAAD,CAP0B;AAQrCC,EAAAA,QAAQ,EAAE,UAR2B;AASrCC,EAAAA,IAAI,EAAE,IAT+B;AAUrCC,EAAAA,OAAO,EAAE;AACPC,IAAAA,GAAG,EAAE;AADE;AAV4B,CAAhC;;;AAkBA,IAAMC,SAA2B,mCACnCb,eADmC;AAEtCc,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP;AAAA;AAAA;AAAA;AAAA;AAAA,+CAAuB,uBAAS,IAAIC,WAAJ,GAAkBC,MAAlB,CAAyBF,WAAzB,CAAT,CAAvB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KAFiC;AAGtCG,EAAAA,aAAa,EAAEC;AAHuB,EAAjC","sourcesContent":["import type {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport parseWKT from './lib/parse-wkt';\n\n/**\n * Well-Known text loader\n */\nexport const WKTWorkerLoader: Loader = {\n name: 'WKT (Well-Known Text)',\n id: 'wkt',\n module: 'wkt',\n version: VERSION,\n worker: true,\n extensions: ['wkt'],\n mimeTypes: ['text/plain'],\n category: 'geometry',\n text: true,\n options: {\n wkt: {}\n }\n};\n\n/**\n * Well-Known text loader\n */\nexport const WKTLoader: LoaderWithParser = {\n ...WKTWorkerLoader,\n parse: async (arrayBuffer) => parseWKT(new TextDecoder().decode(arrayBuffer)),\n parseTextSync: parseWKT\n};\n"],"file":"wkt-loader.js"}
|
package/dist/es5/wkt-writer.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/wkt-writer.ts"],"names":["WKTWriter","name","id","module","version","VERSION","extensions","encode","encodeWKT","options","wkt"],"mappings":";;;;;;;;;AACA;;AACA;;AAKO,
|
|
1
|
+
{"version":3,"sources":["../../src/wkt-writer.ts"],"names":["WKTWriter","name","id","module","version","VERSION","extensions","encode","encodeWKT","options","wkt"],"mappings":";;;;;;;;;AACA;;AACA;;AAKO,IAAMA,SAAiB,GAAG;AAC/BC,EAAAA,IAAI,EAAE,uBADyB;AAE/BC,EAAAA,EAAE,EAAE,KAF2B;AAG/BC,EAAAA,MAAM,EAAE,KAHuB;AAI/BC,EAAAA,OAAO,EAAEC,gBAJsB;AAK/BC,EAAAA,UAAU,EAAE,CAAC,KAAD,CALmB;AAO/BC,EAAAA,MAAM,EAAEC,kBAPuB;AAQ/BC,EAAAA,OAAO,EAAE;AACPC,IAAAA,GAAG,EAAE;AADE;AARsB,CAA1B","sourcesContent":["import type {Writer} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport encodeWKT from './lib/encode-wkt';\n\n/**\n * WKT exporter\n */\nexport const WKTWriter: Writer = {\n name: 'WKT (Well Known Text)',\n id: 'wkt',\n module: 'wkt',\n version: VERSION,\n extensions: ['wkt'],\n // @ts-ignore\n encode: encodeWKT,\n options: {\n wkt: {}\n }\n};\n"],"file":"wkt-writer.js"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = typeof "3.1.0
|
|
1
|
+
export const VERSION = typeof "3.1.0" !== 'undefined' ? "3.1.0" : 'latest';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/utils/version.ts"],"names":["VERSION"],"mappings":"AAGA,OAAO,MAAMA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/utils/version.ts"],"names":["VERSION"],"mappings":"AAGA,OAAO,MAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,QAAnE","sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"file":"version.js"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/wkt",
|
|
3
3
|
"description": "Loader and Writer for the WKT (Well Known Text) Format",
|
|
4
|
-
"version": "3.1.0
|
|
4
|
+
"version": "3.1.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"fuzzer": "^0.2.1"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@loaders.gl/loader-utils": "3.1.0
|
|
39
|
-
"@loaders.gl/schema": "3.1.0
|
|
38
|
+
"@loaders.gl/loader-utils": "3.1.0",
|
|
39
|
+
"@loaders.gl/schema": "3.1.0"
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "b02a011b5a6d6aa6c5870819045c70db168cb930"
|
|
42
42
|
}
|