@loaders.gl/wkt 3.4.0-alpha.1 → 3.4.0-alpha.3
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/index.js.map +1 -1
- package/dist/es5/lib/encode-wkb.js +4 -21
- package/dist/es5/lib/encode-wkb.js.map +1 -1
- package/dist/es5/lib/encode-wkt.js +0 -1
- package/dist/es5/lib/encode-wkt.js.map +1 -1
- package/dist/es5/lib/parse-wkb.js +1 -13
- package/dist/es5/lib/parse-wkb.js.map +1 -1
- package/dist/es5/lib/parse-wkt.js +0 -3
- package/dist/es5/lib/parse-wkt.js.map +1 -1
- package/dist/es5/lib/utils/binary-writer.js +3 -10
- 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 +6 -9
- package/dist/es5/wkb-loader.js.map +1 -1
- package/dist/es5/wkb-writer.js.map +1 -1
- package/dist/es5/wkt-loader.js +6 -9
- package/dist/es5/wkt-loader.js.map +1 -1
- package/dist/es5/wkt-writer.js.map +1 -1
- package/dist/es5/workers/wkb-worker.js.map +1 -1
- package/dist/es5/workers/wkt-worker.js.map +1 -1
- package/dist/esm/bundle.js +0 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/lib/encode-wkb.js +3 -23
- package/dist/esm/lib/encode-wkb.js.map +1 -1
- package/dist/esm/lib/encode-wkt.js +0 -2
- package/dist/esm/lib/encode-wkt.js.map +1 -1
- package/dist/esm/lib/parse-wkb.js +0 -12
- package/dist/esm/lib/parse-wkb.js.map +1 -1
- package/dist/esm/lib/parse-wkt.js +0 -4
- package/dist/esm/lib/parse-wkt.js.map +1 -1
- package/dist/esm/lib/utils/binary-writer.js +0 -4
- package/dist/esm/lib/utils/binary-writer.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -2
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/wkb-loader.js +0 -2
- package/dist/esm/wkb-loader.js.map +1 -1
- package/dist/esm/wkb-writer.js +0 -1
- package/dist/esm/wkb-writer.js.map +1 -1
- package/dist/esm/wkt-loader.js +0 -2
- package/dist/esm/wkt-loader.js.map +1 -1
- package/dist/esm/wkt-writer.js +0 -1
- package/dist/esm/wkt-writer.js.map +1 -1
- package/dist/wkt-worker.js +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary-writer.js","names":["LE","BE","BinaryWriter","size","allowResize","arrayBuffer","ArrayBuffer","dataView","DataView","byteOffset","value","_ensureSize","setUint8","setUint16","setUint32","setInt8","setInt16","setInt32","setFloat32","setFloat64","length","
|
|
1
|
+
{"version":3,"file":"binary-writer.js","names":["LE","BE","BinaryWriter","size","allowResize","_classCallCheck2","default","_defineProperty2","arrayBuffer","ArrayBuffer","dataView","DataView","byteOffset","_createClass2","key","value","writeUInt8","_ensureSize","setUint8","writeUInt16LE","setUint16","writeUInt16BE","writeUInt32LE","setUint32","writeUInt32BE","writeInt8","setInt8","writeInt16LE","setInt16","writeInt16BE","writeInt32LE","setInt32","writeInt32BE","writeFloatLE","setFloat32","writeFloatBE","writeDoubleLE","setFloat64","writeDoubleBE","writeVarInt","length","writeBuffer","byteLength","tempArray","Uint8Array","set","newArrayBuffer","Error","exports"],"sources":["../../../../src/lib/utils/binary-writer.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Forked from https://github.com/cschwarz/wkx under MIT license, Copyright (c) 2013 Christian Schwarz\n\nconst LE = true;\nconst BE = false;\n\nexport default class BinaryWriter {\n arrayBuffer: ArrayBuffer;\n dataView: DataView;\n byteOffset: number = 0;\n allowResize: boolean = false;\n\n constructor(size: number, allowResize?: boolean) {\n this.arrayBuffer = new ArrayBuffer(size);\n this.dataView = new DataView(this.arrayBuffer);\n this.byteOffset = 0;\n this.allowResize = allowResize || false;\n }\n\n writeUInt8(value: number): void {\n this._ensureSize(1);\n this.dataView.setUint8(this.byteOffset, value);\n this.byteOffset += 1;\n }\n writeUInt16LE(value: number): void {\n this._ensureSize(2);\n this.dataView.setUint16(this.byteOffset, value, LE);\n this.byteOffset += 2;\n }\n writeUInt16BE(value: number): void {\n this._ensureSize(2);\n this.dataView.setUint16(this.byteOffset, value, BE);\n this.byteOffset += 2;\n }\n writeUInt32LE(value: number): void {\n this._ensureSize(4);\n this.dataView.setUint32(this.byteOffset, value, LE);\n this.byteOffset += 4;\n }\n writeUInt32BE(value: number): void {\n this._ensureSize(4);\n this.dataView.setUint32(this.byteOffset, value, BE);\n this.byteOffset += 4;\n }\n writeInt8(value: number): void {\n this._ensureSize(1);\n this.dataView.setInt8(this.byteOffset, value);\n this.byteOffset += 1;\n }\n writeInt16LE(value: number): void {\n this._ensureSize(2);\n this.dataView.setInt16(this.byteOffset, value, LE);\n this.byteOffset += 2;\n }\n writeInt16BE(value: number): void {\n this._ensureSize(2);\n this.dataView.setInt16(this.byteOffset, value, BE);\n this.byteOffset += 2;\n }\n writeInt32LE(value: number): void {\n this._ensureSize(4);\n this.dataView.setInt32(this.byteOffset, value, LE);\n this.byteOffset += 4;\n }\n writeInt32BE(value: number): void {\n this._ensureSize(4);\n this.dataView.setInt32(this.byteOffset, value, BE);\n this.byteOffset += 4;\n }\n writeFloatLE(value: number): void {\n this._ensureSize(4);\n this.dataView.setFloat32(this.byteOffset, value, LE);\n this.byteOffset += 4;\n }\n writeFloatBE(value: number): void {\n this._ensureSize(4);\n this.dataView.setFloat32(this.byteOffset, value, BE);\n this.byteOffset += 4;\n }\n writeDoubleLE(value: number): void {\n this._ensureSize(8);\n this.dataView.setFloat64(this.byteOffset, value, LE);\n this.byteOffset += 8;\n }\n writeDoubleBE(value: number): void {\n this._ensureSize(8);\n this.dataView.setFloat64(this.byteOffset, value, BE);\n this.byteOffset += 8;\n }\n\n /** A varint uses a variable number of bytes */\n writeVarInt(value: number): number {\n // TODO - ensure size?\n let length = 1;\n while ((value & 0xffffff80) !== 0) {\n this.writeUInt8((value & 0x7f) | 0x80);\n value >>>= 7;\n length++;\n }\n this.writeUInt8(value & 0x7f);\n return length;\n }\n\n /** Append another ArrayBuffer to this ArrayBuffer */\n writeBuffer(arrayBuffer: ArrayBuffer): void {\n this._ensureSize(arrayBuffer.byteLength);\n const tempArray = new Uint8Array(this.arrayBuffer);\n tempArray.set(new Uint8Array(arrayBuffer), this.byteOffset);\n this.byteOffset += arrayBuffer.byteLength;\n }\n\n /** Resizes this.arrayBuffer if not enough space */\n _ensureSize(size: number) {\n if (this.arrayBuffer.byteLength < this.byteOffset + size) {\n if (this.allowResize) {\n const newArrayBuffer = new ArrayBuffer(this.byteOffset + size);\n const tempArray = new Uint8Array(newArrayBuffer);\n tempArray.set(new Uint8Array(this.arrayBuffer));\n this.arrayBuffer = newArrayBuffer;\n } else {\n throw new Error('BinaryWriter overflow');\n }\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.VERSION = void 0;
|
|
7
|
-
var VERSION = typeof "3.4.0-alpha.
|
|
7
|
+
var VERSION = typeof "3.4.0-alpha.3" !== 'undefined' ? "3.4.0-alpha.3" : 'latest';
|
|
8
8
|
exports.VERSION = VERSION;
|
|
9
9
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","names":["VERSION"],"sources":["../../../../src/lib/utils/version.ts"],"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"],"mappings":";;;;;;AAGO,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;
|
|
1
|
+
{"version":3,"file":"version.js","names":["VERSION","exports"],"sources":["../../../../src/lib/utils/version.ts"],"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"],"mappings":";;;;;;AAGO,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAACC,OAAA,CAAAD,OAAA,GAAAA,OAAA"}
|
package/dist/es5/wkb-loader.js
CHANGED
|
@@ -25,20 +25,17 @@ var WKBWorkerLoader = {
|
|
|
25
25
|
wkb: {}
|
|
26
26
|
}
|
|
27
27
|
};
|
|
28
|
-
|
|
29
28
|
exports.WKBWorkerLoader = WKBWorkerLoader;
|
|
30
29
|
var WKBLoader = _objectSpread(_objectSpread({}, WKBWorkerLoader), {}, {
|
|
31
30
|
parse: function () {
|
|
32
31
|
var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer) {
|
|
33
32
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
34
|
-
while (1) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return _context.stop();
|
|
41
|
-
}
|
|
33
|
+
while (1) switch (_context.prev = _context.next) {
|
|
34
|
+
case 0:
|
|
35
|
+
return _context.abrupt("return", (0, _parseWkb.default)(arrayBuffer));
|
|
36
|
+
case 1:
|
|
37
|
+
case "end":
|
|
38
|
+
return _context.stop();
|
|
42
39
|
}
|
|
43
40
|
}, _callee);
|
|
44
41
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wkb-loader.js","names":["WKBWorkerLoader","name","id","module","version","VERSION","worker","category","extensions","mimeTypes","options","wkb","WKBLoader","parse","arrayBuffer","parseWKB","parseSync","_typecheckWKBWorkerLoader","_typecheckWKBLoader"],"sources":["../../src/wkb-loader.ts"],"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"],"mappings":";;;;;;;;;;AACA;AACA;AAAuC;AAAA;AAKhC,
|
|
1
|
+
{"version":3,"file":"wkb-loader.js","names":["_version","require","_parseWkb","_interopRequireDefault","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","WKBWorkerLoader","name","id","module","version","VERSION","worker","category","extensions","mimeTypes","options","wkb","exports","WKBLoader","parse","_parse","_asyncToGenerator2","_regenerator","mark","_callee","arrayBuffer","wrap","_callee$","_context","prev","next","abrupt","parseWKB","stop","_x","parseSync","_typecheckWKBWorkerLoader","_typecheckWKBLoader"],"sources":["../../src/wkb-loader.ts"],"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"],"mappings":";;;;;;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAuC,SAAAG,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,QAAAC,gBAAA,CAAAC,OAAA,EAAAR,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAmB,yBAAA,GAAAnB,MAAA,CAAAoB,gBAAA,CAAAV,MAAA,EAAAV,MAAA,CAAAmB,yBAAA,CAAAL,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAqB,cAAA,CAAAX,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAKhC,IAAMY,eAAe,GAAG;EAC7BC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEC,gBAAO;EAChBC,MAAM,EAAE,IAAI;EACZC,QAAQ,EAAE,UAAU;EACpBC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,EAAE;EACbC,OAAO,EAAE;IACPC,GAAG,EAAE,CAAC;EACR;AACF,CAAC;AAACC,OAAA,CAAAZ,eAAA,GAAAA,eAAA;AAKK,IAAMa,SAAS,GAAA1B,aAAA,CAAAA,aAAA,KACjBa,eAAe;EAClBc,KAAK;IAAA,IAAAC,MAAA,OAAAC,kBAAA,CAAApB,OAAA,EAAAqB,YAAA,CAAArB,OAAA,CAAAsB,IAAA,CAAE,SAAAC,QAAOC,WAAwB;MAAA,OAAAH,YAAA,CAAArB,OAAA,CAAAyB,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,OAAAF,QAAA,CAAAG,MAAA,WAAK,IAAAC,iBAAQ,EAACP,WAAW,CAAC;UAAA;UAAA;YAAA,OAAAG,QAAA,CAAAK,IAAA;QAAA;MAAA,GAAAT,OAAA;IAAA;IAAA,SAAAL,MAAAe,EAAA;MAAA,OAAAd,MAAA,CAAA7B,KAAA,OAAAI,SAAA;IAAA;IAAA,OAAAwB,KAAA;EAAA;EAChEgB,SAAS,EAAEH;AAAQ,EACpB;AAACf,OAAA,CAAAC,SAAA,GAAAA,SAAA;AAEK,IAAMkB,yBAAiC,GAAG/B,eAAe;AAACY,OAAA,CAAAmB,yBAAA,GAAAA,yBAAA;AAC1D,IAAMC,mBAAqC,GAAGnB,SAAS;AAACD,OAAA,CAAAoB,mBAAA,GAAAA,mBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wkb-writer.js","names":["WKBWriter","name","id","module","version","VERSION","extensions","encodeSync","encodeWKB","options","wkb","hasZ","hasM"],"sources":["../../src/wkb-writer.ts"],"sourcesContent":["import type {Writer} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport encodeWKB from './lib/encode-wkb';\n\n/**\n * WKB exporter\n */\nexport const WKBWriter: Writer = {\n name: 'WKB (Well Known Binary)',\n id: 'wkb',\n module: 'wkt',\n version: VERSION,\n extensions: ['wkb'],\n // @ts-ignore\n encodeSync: encodeWKB,\n options: {\n wkb: {\n hasZ: false,\n hasM: false\n }\n }\n};\n"],"mappings":";;;;;;;AACA;AACA;AAKO,
|
|
1
|
+
{"version":3,"file":"wkb-writer.js","names":["_version","require","_encodeWkb","_interopRequireDefault","WKBWriter","name","id","module","version","VERSION","extensions","encodeSync","encodeWKB","options","wkb","hasZ","hasM","exports"],"sources":["../../src/wkb-writer.ts"],"sourcesContent":["import type {Writer} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport encodeWKB from './lib/encode-wkb';\n\n/**\n * WKB exporter\n */\nexport const WKBWriter: Writer = {\n name: 'WKB (Well Known Binary)',\n id: 'wkb',\n module: 'wkt',\n version: VERSION,\n extensions: ['wkb'],\n // @ts-ignore\n encodeSync: encodeWKB,\n options: {\n wkb: {\n hasZ: false,\n hasM: false\n }\n }\n};\n"],"mappings":";;;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAC,sBAAA,CAAAF,OAAA;AAKO,IAAMG,SAAiB,GAAG;EAC/BC,IAAI,EAAE,yBAAyB;EAC/BC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEC,gBAAO;EAChBC,UAAU,EAAE,CAAC,KAAK,CAAC;EAEnBC,UAAU,EAAEC,kBAAS;EACrBC,OAAO,EAAE;IACPC,GAAG,EAAE;MACHC,IAAI,EAAE,KAAK;MACXC,IAAI,EAAE;IACR;EACF;AACF,CAAC;AAACC,OAAA,CAAAb,SAAA,GAAAA,SAAA"}
|
package/dist/es5/wkt-loader.js
CHANGED
|
@@ -26,20 +26,17 @@ var WKTWorkerLoader = {
|
|
|
26
26
|
wkt: {}
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
|
-
|
|
30
29
|
exports.WKTWorkerLoader = WKTWorkerLoader;
|
|
31
30
|
var WKTLoader = _objectSpread(_objectSpread({}, WKTWorkerLoader), {}, {
|
|
32
31
|
parse: function () {
|
|
33
32
|
var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer) {
|
|
34
33
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
35
|
-
while (1) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return _context.stop();
|
|
42
|
-
}
|
|
34
|
+
while (1) switch (_context.prev = _context.next) {
|
|
35
|
+
case 0:
|
|
36
|
+
return _context.abrupt("return", (0, _parseWkt.default)(new TextDecoder().decode(arrayBuffer)));
|
|
37
|
+
case 1:
|
|
38
|
+
case "end":
|
|
39
|
+
return _context.stop();
|
|
43
40
|
}
|
|
44
41
|
}, _callee);
|
|
45
42
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wkt-loader.js","names":["WKTWorkerLoader","name","id","module","version","VERSION","worker","extensions","mimeTypes","category","text","options","wkt","WKTLoader","parse","arrayBuffer","parseWKT","TextDecoder","decode","parseTextSync"],"sources":["../../src/wkt-loader.ts"],"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"],"mappings":";;;;;;;;;;AACA;AACA;AAAuC;AAAA;AAKhC,
|
|
1
|
+
{"version":3,"file":"wkt-loader.js","names":["_version","require","_parseWkt","_interopRequireDefault","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","WKTWorkerLoader","name","id","module","version","VERSION","worker","extensions","mimeTypes","category","text","options","wkt","exports","WKTLoader","parse","_parse","_asyncToGenerator2","_regenerator","mark","_callee","arrayBuffer","wrap","_callee$","_context","prev","next","abrupt","parseWKT","TextDecoder","decode","stop","_x","parseTextSync"],"sources":["../../src/wkt-loader.ts"],"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"],"mappings":";;;;;;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAuC,SAAAG,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,QAAAC,gBAAA,CAAAC,OAAA,EAAAR,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAmB,yBAAA,GAAAnB,MAAA,CAAAoB,gBAAA,CAAAV,MAAA,EAAAV,MAAA,CAAAmB,yBAAA,CAAAL,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAqB,cAAA,CAAAX,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAKhC,IAAMY,eAAuB,GAAG;EACrCC,IAAI,EAAE,uBAAuB;EAC7BC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEC,gBAAO;EAChBC,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,YAAY,CAAC;EACzBC,QAAQ,EAAE,UAAU;EACpBC,IAAI,EAAE,IAAI;EACVC,OAAO,EAAE;IACPC,GAAG,EAAE,CAAC;EACR;AACF,CAAC;AAACC,OAAA,CAAAb,eAAA,GAAAA,eAAA;AAKK,IAAMc,SAA2B,GAAA3B,aAAA,CAAAA,aAAA,KACnCa,eAAe;EAClBe,KAAK;IAAA,IAAAC,MAAA,OAAAC,kBAAA,CAAArB,OAAA,EAAAsB,YAAA,CAAAtB,OAAA,CAAAuB,IAAA,CAAE,SAAAC,QAAOC,WAAW;MAAA,OAAAH,YAAA,CAAAtB,OAAA,CAAA0B,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,OAAAF,QAAA,CAAAG,MAAA,WAAK,IAAAC,iBAAQ,EAAC,IAAIC,WAAW,EAAE,CAACC,MAAM,CAACT,WAAW,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAG,QAAA,CAAAO,IAAA;QAAA;MAAA,GAAAX,OAAA;IAAA;IAAA,SAAAL,MAAAiB,EAAA;MAAA,OAAAhB,MAAA,CAAA9B,KAAA,OAAAI,SAAA;IAAA;IAAA,OAAAyB,KAAA;EAAA;EAC7EkB,aAAa,EAAEL;AAAQ,EACxB;AAACf,OAAA,CAAAC,SAAA,GAAAA,SAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wkt-writer.js","names":["WKTWriter","name","id","module","version","VERSION","extensions","encode","encodeWKT","options","wkt"],"sources":["../../src/wkt-writer.ts"],"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"],"mappings":";;;;;;;AACA;AACA;AAKO,
|
|
1
|
+
{"version":3,"file":"wkt-writer.js","names":["_version","require","_encodeWkt","_interopRequireDefault","WKTWriter","name","id","module","version","VERSION","extensions","encode","encodeWKT","options","wkt","exports"],"sources":["../../src/wkt-writer.ts"],"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"],"mappings":";;;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAC,sBAAA,CAAAF,OAAA;AAKO,IAAMG,SAAiB,GAAG;EAC/BC,IAAI,EAAE,uBAAuB;EAC7BC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEC,gBAAO;EAChBC,UAAU,EAAE,CAAC,KAAK,CAAC;EAEnBC,MAAM,EAAEC,kBAAS;EACjBC,OAAO,EAAE;IACPC,GAAG,EAAE,CAAC;EACR;AACF,CAAC;AAACC,OAAA,CAAAX,SAAA,GAAAA,SAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wkb-worker.js","names":["createLoaderWorker","WKBLoader"],"sources":["../../../src/workers/wkb-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {WKBLoader} from '../wkb-loader';\n\ncreateLoaderWorker(WKBLoader);\n"],"mappings":";;AAAA;AACA;AAEA,
|
|
1
|
+
{"version":3,"file":"wkb-worker.js","names":["_loaderUtils","require","_wkbLoader","createLoaderWorker","WKBLoader"],"sources":["../../../src/workers/wkb-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {WKBLoader} from '../wkb-loader';\n\ncreateLoaderWorker(WKBLoader);\n"],"mappings":";;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,+BAAkB,EAACC,oBAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wkt-worker.js","names":["createLoaderWorker","WKTLoader"],"sources":["../../../src/workers/wkt-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {WKTLoader} from '../wkt-loader';\n\ncreateLoaderWorker(WKTLoader);\n"],"mappings":";;AAAA;AACA;AAEA,
|
|
1
|
+
{"version":3,"file":"wkt-worker.js","names":["_loaderUtils","require","_wktLoader","createLoaderWorker","WKTLoader"],"sources":["../../../src/workers/wkt-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {WKTLoader} from '../wkt-loader';\n\ncreateLoaderWorker(WKTLoader);\n"],"mappings":";;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,+BAAkB,EAACC,oBAAS,CAAC"}
|
package/dist/esm/bundle.js
CHANGED
package/dist/esm/bundle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":"AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
1
|
import BinaryWriter from './utils/binary-writer';
|
|
4
|
-
|
|
5
|
-
var WKB;
|
|
6
|
-
(function (WKB) {
|
|
2
|
+
var WKB = function (WKB) {
|
|
7
3
|
WKB[WKB["Point"] = 1] = "Point";
|
|
8
4
|
WKB[WKB["LineString"] = 2] = "LineString";
|
|
9
5
|
WKB[WKB["Polygon"] = 3] = "Polygon";
|
|
@@ -11,12 +7,12 @@ var WKB;
|
|
|
11
7
|
WKB[WKB["MultiLineString"] = 5] = "MultiLineString";
|
|
12
8
|
WKB[WKB["MultiPolygon"] = 6] = "MultiPolygon";
|
|
13
9
|
WKB[WKB["GeometryCollection"] = 7] = "GeometryCollection";
|
|
14
|
-
|
|
10
|
+
return WKB;
|
|
11
|
+
}(WKB || {});
|
|
15
12
|
export default function encodeWKB(geometry, options) {
|
|
16
13
|
if (geometry.type === 'Feature') {
|
|
17
14
|
geometry = geometry.geometry;
|
|
18
15
|
}
|
|
19
|
-
|
|
20
16
|
if ('wkb' in options) {
|
|
21
17
|
options = options.wkb;
|
|
22
18
|
}
|
|
@@ -40,7 +36,6 @@ export default function encodeWKB(geometry, options) {
|
|
|
40
36
|
throw new Error("Unhandled case: ".concat(exhaustiveCheck));
|
|
41
37
|
}
|
|
42
38
|
}
|
|
43
|
-
|
|
44
39
|
function getGeometrySize(geometry, options) {
|
|
45
40
|
switch (geometry.type) {
|
|
46
41
|
case 'Point':
|
|
@@ -62,12 +57,10 @@ function getGeometrySize(geometry, options) {
|
|
|
62
57
|
throw new Error("Unhandled case: ".concat(exhaustiveCheck));
|
|
63
58
|
}
|
|
64
59
|
}
|
|
65
|
-
|
|
66
60
|
function encodePoint(coordinates, options) {
|
|
67
61
|
const writer = new BinaryWriter(getPointSize(options));
|
|
68
62
|
writer.writeInt8(1);
|
|
69
63
|
writeWkbType(writer, WKB.Point, options);
|
|
70
|
-
|
|
71
64
|
if (typeof coordinates[0] === 'undefined' && typeof coordinates[1] === 'undefined') {
|
|
72
65
|
writer.writeDoubleLE(NaN);
|
|
73
66
|
writer.writeDoubleLE(NaN);
|
|
@@ -82,7 +75,6 @@ function encodePoint(coordinates, options) {
|
|
|
82
75
|
}
|
|
83
76
|
return writer.arrayBuffer;
|
|
84
77
|
}
|
|
85
|
-
|
|
86
78
|
function writeCoordinate(writer, coordinate, options) {
|
|
87
79
|
writer.writeDoubleLE(coordinate[0]);
|
|
88
80
|
writer.writeDoubleLE(coordinate[1]);
|
|
@@ -93,12 +85,10 @@ function writeCoordinate(writer, coordinate, options) {
|
|
|
93
85
|
writer.writeDoubleLE(coordinate[3]);
|
|
94
86
|
}
|
|
95
87
|
}
|
|
96
|
-
|
|
97
88
|
function getPointSize(options) {
|
|
98
89
|
const coordinateSize = getCoordinateSize(options);
|
|
99
90
|
return 1 + 4 + coordinateSize;
|
|
100
91
|
}
|
|
101
|
-
|
|
102
92
|
function encodeLineString(coordinates, options) {
|
|
103
93
|
const size = getLineStringSize(coordinates, options);
|
|
104
94
|
const writer = new BinaryWriter(size);
|
|
@@ -110,12 +100,10 @@ function encodeLineString(coordinates, options) {
|
|
|
110
100
|
}
|
|
111
101
|
return writer.arrayBuffer;
|
|
112
102
|
}
|
|
113
|
-
|
|
114
103
|
function getLineStringSize(coordinates, options) {
|
|
115
104
|
const coordinateSize = getCoordinateSize(options);
|
|
116
105
|
return 1 + 4 + 4 + coordinates.length * coordinateSize;
|
|
117
106
|
}
|
|
118
|
-
|
|
119
107
|
function encodePolygon(coordinates, options) {
|
|
120
108
|
const writer = new BinaryWriter(getPolygonSize(coordinates, options));
|
|
121
109
|
writer.writeInt8(1);
|
|
@@ -138,7 +126,6 @@ function encodePolygon(coordinates, options) {
|
|
|
138
126
|
}
|
|
139
127
|
return writer.arrayBuffer;
|
|
140
128
|
}
|
|
141
|
-
|
|
142
129
|
function getPolygonSize(coordinates, options) {
|
|
143
130
|
const coordinateSize = getCoordinateSize(options);
|
|
144
131
|
const [exteriorRing, ...interiorRings] = coordinates;
|
|
@@ -151,7 +138,6 @@ function getPolygonSize(coordinates, options) {
|
|
|
151
138
|
}
|
|
152
139
|
return size;
|
|
153
140
|
}
|
|
154
|
-
|
|
155
141
|
function encodeMultiPoint(multiPoint, options) {
|
|
156
142
|
const writer = new BinaryWriter(getMultiPointSize(multiPoint, options));
|
|
157
143
|
const points = multiPoint.coordinates;
|
|
@@ -164,15 +150,12 @@ function encodeMultiPoint(multiPoint, options) {
|
|
|
164
150
|
}
|
|
165
151
|
return writer.arrayBuffer;
|
|
166
152
|
}
|
|
167
|
-
|
|
168
153
|
function getMultiPointSize(multiPoint, options) {
|
|
169
154
|
let coordinateSize = getCoordinateSize(options);
|
|
170
155
|
const points = multiPoint.coordinates;
|
|
171
|
-
|
|
172
156
|
coordinateSize += 5;
|
|
173
157
|
return 1 + 4 + 4 + points.length * coordinateSize;
|
|
174
158
|
}
|
|
175
|
-
|
|
176
159
|
function encodeMultiLineString(multiLineString, options) {
|
|
177
160
|
const writer = new BinaryWriter(getMultiLineStringSize(multiLineString, options));
|
|
178
161
|
const lineStrings = multiLineString.coordinates;
|
|
@@ -185,7 +168,6 @@ function encodeMultiLineString(multiLineString, options) {
|
|
|
185
168
|
}
|
|
186
169
|
return writer.arrayBuffer;
|
|
187
170
|
}
|
|
188
|
-
|
|
189
171
|
function getMultiLineStringSize(multiLineString, options) {
|
|
190
172
|
let size = 1 + 4 + 4;
|
|
191
173
|
const lineStrings = multiLineString.coordinates;
|
|
@@ -232,7 +214,6 @@ function getGeometryCollectionSize(collection, options) {
|
|
|
232
214
|
}
|
|
233
215
|
return size;
|
|
234
216
|
}
|
|
235
|
-
|
|
236
217
|
function writeWkbType(writer, geometryType, options) {
|
|
237
218
|
const {
|
|
238
219
|
hasZ,
|
|
@@ -258,7 +239,6 @@ function writeWkbType(writer, geometryType, options) {
|
|
|
258
239
|
}
|
|
259
240
|
writer.writeUInt32LE(dimensionType + geometryType >>> 0);
|
|
260
241
|
}
|
|
261
|
-
|
|
262
242
|
function getCoordinateSize(options) {
|
|
263
243
|
let coordinateSize = 16;
|
|
264
244
|
if (options.hasZ) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode-wkb.js","names":["BinaryWriter","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","writeInt8","writeWkbType","Point","writeDoubleLE","NaN","hasZ","hasM","writeCoordinate","arrayBuffer","coordinate","coordinateSize","getCoordinateSize","size","LineString","writeUInt32LE","length","Polygon","exteriorRing","interiorRings","interiorRing","multiPoint","points","MultiPoint","point","writeBuffer","multiLineString","lineStrings","MultiLineString","lineString","encodedLineString","multiPolygon","polygons","MultiPolygon","polygon","encodedPolygon","collection","GeometryCollection","geometries","geometryType","srid","dimensionType"],"sources":["../../../src/lib/encode-wkb.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Forked from https://github.com/cschwarz/wkx under MIT license, Copyright (c) 2013 Christian Schwarz\n// Reference: https://www.ogc.org/standards/sfa\n\nimport type {\n Feature,\n Geometry,\n Point,\n MultiPoint,\n LineString,\n MultiLineString,\n Polygon,\n MultiPolygon,\n GeometryCollection\n} from '@loaders.gl/schema';\n\nimport BinaryWriter from './utils/binary-writer';\n\n/**\n * Integer code for geometry type\n * Reference: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary\n */\nenum WKB {\n Point = 1,\n LineString = 2,\n Polygon = 3,\n MultiPoint = 4,\n MultiLineString = 5,\n MultiPolygon = 6,\n GeometryCollection = 7\n}\n\n/**\n * Options for encodeWKB\n */\ninterface WKBOptions {\n /** Does the GeoJSON input have Z values? */\n hasZ?: boolean;\n\n /** Does the GeoJSON input have M values? */\n hasM?: boolean;\n\n /** Spatial reference for input GeoJSON */\n srid?: any;\n}\n\n/**\n * Encodes a GeoJSON object into WKB\n * @param geojson A GeoJSON Feature or Geometry\n * @returns string\n */\nexport default function encodeWKB(\n geometry: Geometry | Feature,\n options: WKBOptions | {wkb: WKBOptions}\n): ArrayBuffer {\n if (geometry.type === 'Feature') {\n geometry = geometry.geometry;\n }\n\n // Options should be wrapped in a `wkb` key, but we allow top-level options here for backwards\n // compatibility\n if ('wkb' in options) {\n options = options.wkb;\n }\n\n switch (geometry.type) {\n case 'Point':\n return encodePoint(geometry.coordinates, options);\n case 'LineString':\n return encodeLineString(geometry.coordinates, options);\n case 'Polygon':\n return encodePolygon(geometry.coordinates, options);\n case 'MultiPoint':\n return encodeMultiPoint(geometry, options);\n case 'MultiPolygon':\n return encodeMultiPolygon(geometry, options);\n case 'MultiLineString':\n return encodeMultiLineString(geometry, options);\n case 'GeometryCollection':\n return encodeGeometryCollection(geometry, options);\n default:\n const exhaustiveCheck: never = geometry;\n throw new Error(`Unhandled case: ${exhaustiveCheck}`);\n }\n}\n\n/** Calculate the binary size (in the WKB encoding) of a specific GeoJSON geometry */\nfunction getGeometrySize(geometry: Geometry, options: WKBOptions): number {\n switch (geometry.type) {\n case 'Point':\n return getPointSize(options);\n case 'LineString':\n return getLineStringSize(geometry.coordinates, options);\n case 'Polygon':\n return getPolygonSize(geometry.coordinates, options);\n case 'MultiPoint':\n return getMultiPointSize(geometry, options);\n case 'MultiPolygon':\n return getMultiPolygonSize(geometry, options);\n case 'MultiLineString':\n return getMultiLineStringSize(geometry, options);\n case 'GeometryCollection':\n return getGeometryCollectionSize(geometry, options);\n default:\n const exhaustiveCheck: never = geometry;\n throw new Error(`Unhandled case: ${exhaustiveCheck}`);\n }\n}\n\n/** Encode Point geometry as WKB ArrayBuffer */\nfunction encodePoint(coordinates: Point['coordinates'], options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getPointSize(options));\n\n writer.writeInt8(1);\n writeWkbType(writer, WKB.Point, options);\n\n // I believe this special case is to handle writing Point(NaN, NaN) correctly\n if (typeof coordinates[0] === 'undefined' && typeof coordinates[1] === 'undefined') {\n writer.writeDoubleLE(NaN);\n writer.writeDoubleLE(NaN);\n\n if (options.hasZ) {\n writer.writeDoubleLE(NaN);\n }\n if (options.hasM) {\n writer.writeDoubleLE(NaN);\n }\n } else {\n writeCoordinate(writer, coordinates, options);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Write coordinate to buffer */\nfunction writeCoordinate(\n writer: BinaryWriter,\n coordinate: Point['coordinates'],\n options: WKBOptions\n): void {\n writer.writeDoubleLE(coordinate[0]);\n writer.writeDoubleLE(coordinate[1]);\n\n if (options.hasZ) {\n writer.writeDoubleLE(coordinate[2]);\n }\n if (options.hasM) {\n writer.writeDoubleLE(coordinate[3]);\n }\n}\n\n/** Get encoded size of Point geometry */\nfunction getPointSize(options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n return 1 + 4 + coordinateSize;\n}\n\n/** Encode LineString geometry as WKB ArrayBuffer */\nfunction encodeLineString(\n coordinates: LineString['coordinates'],\n options: WKBOptions\n): ArrayBuffer {\n const size = getLineStringSize(coordinates, options);\n\n const writer = new BinaryWriter(size);\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.LineString, options);\n writer.writeUInt32LE(coordinates.length);\n\n for (const coordinate of coordinates) {\n writeCoordinate(writer, coordinate, options);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of LineString geometry */\nfunction getLineStringSize(coordinates: LineString['coordinates'], options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n\n return 1 + 4 + 4 + coordinates.length * coordinateSize;\n}\n\n/** Encode Polygon geometry as WKB ArrayBuffer */\nfunction encodePolygon(coordinates: Polygon['coordinates'], options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getPolygonSize(coordinates, options));\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.Polygon, options);\n const [exteriorRing, ...interiorRings] = coordinates;\n\n if (exteriorRing.length > 0) {\n writer.writeUInt32LE(1 + interiorRings.length);\n writer.writeUInt32LE(exteriorRing.length);\n } else {\n writer.writeUInt32LE(0);\n }\n\n for (const coordinate of exteriorRing) {\n writeCoordinate(writer, coordinate, options);\n }\n\n for (const interiorRing of interiorRings) {\n writer.writeUInt32LE(interiorRing.length);\n\n for (const coordinate of interiorRing) {\n writeCoordinate(writer, coordinate, options);\n }\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of Polygon geometry */\nfunction getPolygonSize(coordinates: Polygon['coordinates'], options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n const [exteriorRing, ...interiorRings] = coordinates;\n\n let size = 1 + 4 + 4;\n\n if (exteriorRing.length > 0) {\n size += 4 + exteriorRing.length * coordinateSize;\n }\n\n for (const interiorRing of interiorRings) {\n size += 4 + interiorRing.length * coordinateSize;\n }\n\n return size;\n}\n\n/** Encode MultiPoint geometry as WKB ArrayBufer */\nfunction encodeMultiPoint(multiPoint: MultiPoint, options: WKBOptions) {\n const writer = new BinaryWriter(getMultiPointSize(multiPoint, options));\n const points = multiPoint.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiPoint, options);\n writer.writeUInt32LE(points.length);\n\n for (const point of points) {\n // TODO: add srid to this options object? {srid: multiPoint.srid}\n const arrayBuffer = encodePoint(point, options);\n writer.writeBuffer(arrayBuffer);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of MultiPoint geometry */\nfunction getMultiPointSize(multiPoint: MultiPoint, options: WKBOptions) {\n let coordinateSize = getCoordinateSize(options);\n const points = multiPoint.coordinates;\n\n // This is because each point has a 5-byte header?\n coordinateSize += 5;\n\n return 1 + 4 + 4 + points.length * coordinateSize;\n}\n\n/** Encode MultiLineString geometry as WKB ArrayBufer */\nfunction encodeMultiLineString(multiLineString: MultiLineString, options: WKBOptions) {\n const writer = new BinaryWriter(getMultiLineStringSize(multiLineString, options));\n const lineStrings = multiLineString.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiLineString, options);\n writer.writeUInt32LE(lineStrings.length);\n\n for (const lineString of lineStrings) {\n // TODO: Handle srid?\n const encodedLineString = encodeLineString(lineString, options);\n writer.writeBuffer(encodedLineString);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of MultiLineString geometry */\nfunction getMultiLineStringSize(multiLineString: MultiLineString, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n const lineStrings = multiLineString.coordinates;\n\n for (const lineString of lineStrings) {\n size += getLineStringSize(lineString, options);\n }\n\n return size;\n}\n\nfunction encodeMultiPolygon(multiPolygon: MultiPolygon, options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getMultiPolygonSize(multiPolygon, options));\n const polygons = multiPolygon.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiPolygon, options);\n writer.writeUInt32LE(polygons.length);\n\n for (const polygon of polygons) {\n const encodedPolygon = encodePolygon(polygon, options);\n writer.writeBuffer(encodedPolygon);\n }\n\n return writer.arrayBuffer;\n}\n\nfunction getMultiPolygonSize(multiPolygon: MultiPolygon, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n const polygons = multiPolygon.coordinates;\n\n for (const polygon of polygons) {\n size += getPolygonSize(polygon, options);\n }\n\n return size;\n}\n\nfunction encodeGeometryCollection(\n collection: GeometryCollection,\n options: WKBOptions\n): ArrayBuffer {\n const writer = new BinaryWriter(getGeometryCollectionSize(collection, options));\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.GeometryCollection, options);\n writer.writeUInt32LE(collection.geometries.length);\n\n for (const geometry of collection.geometries) {\n // TODO: handle srid? {srid: collection.srid}\n const arrayBuffer = encodeWKB(geometry, options);\n writer.writeBuffer(arrayBuffer);\n }\n\n return writer.arrayBuffer;\n}\n\nfunction getGeometryCollectionSize(collection: GeometryCollection, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n\n for (const geometry of collection.geometries) {\n size += getGeometrySize(geometry, options);\n }\n\n return size;\n}\n\n// HELPERS\n\n/**\n * Construct and write WKB integer code\n * Reference: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary\n */\nfunction writeWkbType(writer: BinaryWriter, geometryType: number, options: WKBOptions): void {\n const {hasZ, hasM, srid} = options;\n\n let dimensionType = 0;\n\n if (!srid) {\n if (hasZ && hasM) {\n dimensionType += 3000;\n } else if (hasZ) {\n dimensionType += 1000;\n } else if (hasM) {\n dimensionType += 2000;\n }\n } else {\n if (hasZ) {\n dimensionType |= 0x80000000;\n }\n if (hasM) {\n dimensionType |= 0x40000000;\n }\n }\n\n writer.writeUInt32LE((dimensionType + geometryType) >>> 0);\n}\n\n/** Get coordinate size given Z/M dimensions */\nfunction getCoordinateSize(options: WKBOptions): number {\n let coordinateSize = 16;\n\n if (options.hasZ) {\n coordinateSize += 8;\n }\n if (options.hasM) {\n coordinateSize += 8;\n }\n\n return coordinateSize;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"encode-wkb.js","names":["BinaryWriter","WKB","encodeWKB","geometry","options","type","wkb","encodePoint","coordinates","encodeLineString","encodePolygon","encodeMultiPoint","encodeMultiPolygon","encodeMultiLineString","encodeGeometryCollection","exhaustiveCheck","Error","concat","getGeometrySize","getPointSize","getLineStringSize","getPolygonSize","getMultiPointSize","getMultiPolygonSize","getMultiLineStringSize","getGeometryCollectionSize","writer","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":"AAgBA,OAAOA,YAAY,MAAM,uBAAuB;AAAC,IAM5CC,GAAG,aAAHA,GAAG;EAAHA,GAAG,CAAHA,GAAG;EAAHA,GAAG,CAAHA,GAAG;EAAHA,GAAG,CAAHA,GAAG;EAAHA,GAAG,CAAHA,GAAG;EAAHA,GAAG,CAAHA,GAAG;EAAHA,GAAG,CAAHA,GAAG;EAAHA,GAAG,CAAHA,GAAG;EAAA,OAAHA,GAAG;AAAA,EAAHA,GAAG;AA6BR,eAAe,SAASC,SAASA,CAC/BC,QAA4B,EAC5BC,OAAuC,EAC1B;EACb,IAAID,QAAQ,CAACE,IAAI,KAAK,SAAS,EAAE;IAC/BF,QAAQ,GAAGA,QAAQ,CAACA,QAAQ;EAC9B;EAIA,IAAI,KAAK,IAAIC,OAAO,EAAE;IACpBA,OAAO,GAAGA,OAAO,CAACE,GAAG;EACvB;EAEA,QAAQH,QAAQ,CAACE,IAAI;IACnB,KAAK,OAAO;MACV,OAAOE,WAAW,CAACJ,QAAQ,CAACK,WAAW,EAAEJ,OAAO,CAAC;IACnD,KAAK,YAAY;MACf,OAAOK,gBAAgB,CAACN,QAAQ,CAACK,WAAW,EAAEJ,OAAO,CAAC;IACxD,KAAK,SAAS;MACZ,OAAOM,aAAa,CAACP,QAAQ,CAACK,WAAW,EAAEJ,OAAO,CAAC;IACrD,KAAK,YAAY;MACf,OAAOO,gBAAgB,CAACR,QAAQ,EAAEC,OAAO,CAAC;IAC5C,KAAK,cAAc;MACjB,OAAOQ,kBAAkB,CAACT,QAAQ,EAAEC,OAAO,CAAC;IAC9C,KAAK,iBAAiB;MACpB,OAAOS,qBAAqB,CAACV,QAAQ,EAAEC,OAAO,CAAC;IACjD,KAAK,oBAAoB;MACvB,OAAOU,wBAAwB,CAACX,QAAQ,EAAEC,OAAO,CAAC;IACpD;MACE,MAAMW,eAAsB,GAAGZ,QAAQ;MACvC,MAAM,IAAIa,KAAK,oBAAAC,MAAA,CAAoBF,eAAe,EAAG;EAAC;AAE5D;AAGA,SAASG,eAAeA,CAACf,QAAkB,EAAEC,OAAmB,EAAU;EACxE,QAAQD,QAAQ,CAACE,IAAI;IACnB,KAAK,OAAO;MACV,OAAOc,YAAY,CAACf,OAAO,CAAC;IAC9B,KAAK,YAAY;MACf,OAAOgB,iBAAiB,CAACjB,QAAQ,CAACK,WAAW,EAAEJ,OAAO,CAAC;IACzD,KAAK,SAAS;MACZ,OAAOiB,cAAc,CAAClB,QAAQ,CAACK,WAAW,EAAEJ,OAAO,CAAC;IACtD,KAAK,YAAY;MACf,OAAOkB,iBAAiB,CAACnB,QAAQ,EAAEC,OAAO,CAAC;IAC7C,KAAK,cAAc;MACjB,OAAOmB,mBAAmB,CAACpB,QAAQ,EAAEC,OAAO,CAAC;IAC/C,KAAK,iBAAiB;MACpB,OAAOoB,sBAAsB,CAACrB,QAAQ,EAAEC,OAAO,CAAC;IAClD,KAAK,oBAAoB;MACvB,OAAOqB,yBAAyB,CAACtB,QAAQ,EAAEC,OAAO,CAAC;IACrD;MACE,MAAMW,eAAsB,GAAGZ,QAAQ;MACvC,MAAM,IAAIa,KAAK,oBAAAC,MAAA,CAAoBF,eAAe,EAAG;EAAC;AAE5D;AAGA,SAASR,WAAWA,CAACC,WAAiC,EAAEJ,OAAmB,EAAe;EACxF,MAAMsB,MAAM,GAAG,IAAI1B,YAAY,CAACmB,YAAY,CAACf,OAAO,CAAC,CAAC;EAEtDsB,MAAM,CAACC,SAAS,CAAC,CAAC,CAAC;EACnBC,YAAY,CAACF,MAAM,EAAEzB,GAAG,CAAC4B,KAAK,EAAEzB,OAAO,CAAC;EAGxC,IAAI,OAAOI,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,OAAOA,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;IAClFkB,MAAM,CAACI,aAAa,CAACC,GAAG,CAAC;IACzBL,MAAM,CAACI,aAAa,CAACC,GAAG,CAAC;IAEzB,IAAI3B,OAAO,CAAC4B,IAAI,EAAE;MAChBN,MAAM,CAACI,aAAa,CAACC,GAAG,CAAC;IAC3B;IACA,IAAI3B,OAAO,CAAC6B,IAAI,EAAE;MAChBP,MAAM,CAACI,aAAa,CAACC,GAAG,CAAC;IAC3B;EACF,CAAC,MAAM;IACLG,eAAe,CAACR,MAAM,EAAElB,WAAW,EAAEJ,OAAO,CAAC;EAC/C;EAEA,OAAOsB,MAAM,CAACS,WAAW;AAC3B;AAGA,SAASD,eAAeA,CACtBR,MAAoB,EACpBU,UAAgC,EAChChC,OAAmB,EACb;EACNsB,MAAM,CAACI,aAAa,CAACM,UAAU,CAAC,CAAC,CAAC,CAAC;EACnCV,MAAM,CAACI,aAAa,CAACM,UAAU,CAAC,CAAC,CAAC,CAAC;EAEnC,IAAIhC,OAAO,CAAC4B,IAAI,EAAE;IAChBN,MAAM,CAACI,aAAa,CAACM,UAAU,CAAC,CAAC,CAAC,CAAC;EACrC;EACA,IAAIhC,OAAO,CAAC6B,IAAI,EAAE;IAChBP,MAAM,CAACI,aAAa,CAACM,UAAU,CAAC,CAAC,CAAC,CAAC;EACrC;AACF;AAGA,SAASjB,YAAYA,CAACf,OAAmB,EAAU;EACjD,MAAMiC,cAAc,GAAGC,iBAAiB,CAAClC,OAAO,CAAC;EACjD,OAAO,CAAC,GAAG,CAAC,GAAGiC,cAAc;AAC/B;AAGA,SAAS5B,gBAAgBA,CACvBD,WAAsC,EACtCJ,OAAmB,EACN;EACb,MAAMmC,IAAI,GAAGnB,iBAAiB,CAACZ,WAAW,EAAEJ,OAAO,CAAC;EAEpD,MAAMsB,MAAM,GAAG,IAAI1B,YAAY,CAACuC,IAAI,CAAC;EAErCb,MAAM,CAACC,SAAS,CAAC,CAAC,CAAC;EAEnBC,YAAY,CAACF,MAAM,EAAEzB,GAAG,CAACuC,UAAU,EAAEpC,OAAO,CAAC;EAC7CsB,MAAM,CAACe,aAAa,CAACjC,WAAW,CAACkC,MAAM,CAAC;EAExC,KAAK,MAAMN,UAAU,IAAI5B,WAAW,EAAE;IACpC0B,eAAe,CAACR,MAAM,EAAEU,UAAU,EAAEhC,OAAO,CAAC;EAC9C;EAEA,OAAOsB,MAAM,CAACS,WAAW;AAC3B;AAGA,SAASf,iBAAiBA,CAACZ,WAAsC,EAAEJ,OAAmB,EAAU;EAC9F,MAAMiC,cAAc,GAAGC,iBAAiB,CAAClC,OAAO,CAAC;EAEjD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAGI,WAAW,CAACkC,MAAM,GAAGL,cAAc;AACxD;AAGA,SAAS3B,aAAaA,CAACF,WAAmC,EAAEJ,OAAmB,EAAe;EAC5F,MAAMsB,MAAM,GAAG,IAAI1B,YAAY,CAACqB,cAAc,CAACb,WAAW,EAAEJ,OAAO,CAAC,CAAC;EAErEsB,MAAM,CAACC,SAAS,CAAC,CAAC,CAAC;EAEnBC,YAAY,CAACF,MAAM,EAAEzB,GAAG,CAAC0C,OAAO,EAAEvC,OAAO,CAAC;EAC1C,MAAM,CAACwC,YAAY,EAAE,GAAGC,aAAa,CAAC,GAAGrC,WAAW;EAEpD,IAAIoC,YAAY,CAACF,MAAM,GAAG,CAAC,EAAE;IAC3BhB,MAAM,CAACe,aAAa,CAAC,CAAC,GAAGI,aAAa,CAACH,MAAM,CAAC;IAC9ChB,MAAM,CAACe,aAAa,CAACG,YAAY,CAACF,MAAM,CAAC;EAC3C,CAAC,MAAM;IACLhB,MAAM,CAACe,aAAa,CAAC,CAAC,CAAC;EACzB;EAEA,KAAK,MAAML,UAAU,IAAIQ,YAAY,EAAE;IACrCV,eAAe,CAACR,MAAM,EAAEU,UAAU,EAAEhC,OAAO,CAAC;EAC9C;EAEA,KAAK,MAAM0C,YAAY,IAAID,aAAa,EAAE;IACxCnB,MAAM,CAACe,aAAa,CAACK,YAAY,CAACJ,MAAM,CAAC;IAEzC,KAAK,MAAMN,UAAU,IAAIU,YAAY,EAAE;MACrCZ,eAAe,CAACR,MAAM,EAAEU,UAAU,EAAEhC,OAAO,CAAC;IAC9C;EACF;EAEA,OAAOsB,MAAM,CAACS,WAAW;AAC3B;AAGA,SAASd,cAAcA,CAACb,WAAmC,EAAEJ,OAAmB,EAAU;EACxF,MAAMiC,cAAc,GAAGC,iBAAiB,CAAClC,OAAO,CAAC;EACjD,MAAM,CAACwC,YAAY,EAAE,GAAGC,aAAa,CAAC,GAAGrC,WAAW;EAEpD,IAAI+B,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;EAEpB,IAAIK,YAAY,CAACF,MAAM,GAAG,CAAC,EAAE;IAC3BH,IAAI,IAAI,CAAC,GAAGK,YAAY,CAACF,MAAM,GAAGL,cAAc;EAClD;EAEA,KAAK,MAAMS,YAAY,IAAID,aAAa,EAAE;IACxCN,IAAI,IAAI,CAAC,GAAGO,YAAY,CAACJ,MAAM,GAAGL,cAAc;EAClD;EAEA,OAAOE,IAAI;AACb;AAGA,SAAS5B,gBAAgBA,CAACoC,UAAsB,EAAE3C,OAAmB,EAAE;EACrE,MAAMsB,MAAM,GAAG,IAAI1B,YAAY,CAACsB,iBAAiB,CAACyB,UAAU,EAAE3C,OAAO,CAAC,CAAC;EACvE,MAAM4C,MAAM,GAAGD,UAAU,CAACvC,WAAW;EAErCkB,MAAM,CAACC,SAAS,CAAC,CAAC,CAAC;EAEnBC,YAAY,CAACF,MAAM,EAAEzB,GAAG,CAACgD,UAAU,EAAE7C,OAAO,CAAC;EAC7CsB,MAAM,CAACe,aAAa,CAACO,MAAM,CAACN,MAAM,CAAC;EAEnC,KAAK,MAAMQ,KAAK,IAAIF,MAAM,EAAE;IAE1B,MAAMb,WAAW,GAAG5B,WAAW,CAAC2C,KAAK,EAAE9C,OAAO,CAAC;IAC/CsB,MAAM,CAACyB,WAAW,CAAChB,WAAW,CAAC;EACjC;EAEA,OAAOT,MAAM,CAACS,WAAW;AAC3B;AAGA,SAASb,iBAAiBA,CAACyB,UAAsB,EAAE3C,OAAmB,EAAE;EACtE,IAAIiC,cAAc,GAAGC,iBAAiB,CAAClC,OAAO,CAAC;EAC/C,MAAM4C,MAAM,GAAGD,UAAU,CAACvC,WAAW;EAGrC6B,cAAc,IAAI,CAAC;EAEnB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAGW,MAAM,CAACN,MAAM,GAAGL,cAAc;AACnD;AAGA,SAASxB,qBAAqBA,CAACuC,eAAgC,EAAEhD,OAAmB,EAAE;EACpF,MAAMsB,MAAM,GAAG,IAAI1B,YAAY,CAACwB,sBAAsB,CAAC4B,eAAe,EAAEhD,OAAO,CAAC,CAAC;EACjF,MAAMiD,WAAW,GAAGD,eAAe,CAAC5C,WAAW;EAE/CkB,MAAM,CAACC,SAAS,CAAC,CAAC,CAAC;EAEnBC,YAAY,CAACF,MAAM,EAAEzB,GAAG,CAACqD,eAAe,EAAElD,OAAO,CAAC;EAClDsB,MAAM,CAACe,aAAa,CAACY,WAAW,CAACX,MAAM,CAAC;EAExC,KAAK,MAAMa,UAAU,IAAIF,WAAW,EAAE;IAEpC,MAAMG,iBAAiB,GAAG/C,gBAAgB,CAAC8C,UAAU,EAAEnD,OAAO,CAAC;IAC/DsB,MAAM,CAACyB,WAAW,CAACK,iBAAiB,CAAC;EACvC;EAEA,OAAO9B,MAAM,CAACS,WAAW;AAC3B;AAGA,SAASX,sBAAsBA,CAAC4B,eAAgC,EAAEhD,OAAmB,EAAU;EAC7F,IAAImC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;EACpB,MAAMc,WAAW,GAAGD,eAAe,CAAC5C,WAAW;EAE/C,KAAK,MAAM+C,UAAU,IAAIF,WAAW,EAAE;IACpCd,IAAI,IAAInB,iBAAiB,CAACmC,UAAU,EAAEnD,OAAO,CAAC;EAChD;EAEA,OAAOmC,IAAI;AACb;AAEA,SAAS3B,kBAAkBA,CAAC6C,YAA0B,EAAErD,OAAmB,EAAe;EACxF,MAAMsB,MAAM,GAAG,IAAI1B,YAAY,CAACuB,mBAAmB,CAACkC,YAAY,EAAErD,OAAO,CAAC,CAAC;EAC3E,MAAMsD,QAAQ,GAAGD,YAAY,CAACjD,WAAW;EAEzCkB,MAAM,CAACC,SAAS,CAAC,CAAC,CAAC;EAEnBC,YAAY,CAACF,MAAM,EAAEzB,GAAG,CAAC0D,YAAY,EAAEvD,OAAO,CAAC;EAC/CsB,MAAM,CAACe,aAAa,CAACiB,QAAQ,CAAChB,MAAM,CAAC;EAErC,KAAK,MAAMkB,OAAO,IAAIF,QAAQ,EAAE;IAC9B,MAAMG,cAAc,GAAGnD,aAAa,CAACkD,OAAO,EAAExD,OAAO,CAAC;IACtDsB,MAAM,CAACyB,WAAW,CAACU,cAAc,CAAC;EACpC;EAEA,OAAOnC,MAAM,CAACS,WAAW;AAC3B;AAEA,SAASZ,mBAAmBA,CAACkC,YAA0B,EAAErD,OAAmB,EAAU;EACpF,IAAImC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;EACpB,MAAMmB,QAAQ,GAAGD,YAAY,CAACjD,WAAW;EAEzC,KAAK,MAAMoD,OAAO,IAAIF,QAAQ,EAAE;IAC9BnB,IAAI,IAAIlB,cAAc,CAACuC,OAAO,EAAExD,OAAO,CAAC;EAC1C;EAEA,OAAOmC,IAAI;AACb;AAEA,SAASzB,wBAAwBA,CAC/BgD,UAA8B,EAC9B1D,OAAmB,EACN;EACb,MAAMsB,MAAM,GAAG,IAAI1B,YAAY,CAACyB,yBAAyB,CAACqC,UAAU,EAAE1D,OAAO,CAAC,CAAC;EAE/EsB,MAAM,CAACC,SAAS,CAAC,CAAC,CAAC;EAEnBC,YAAY,CAACF,MAAM,EAAEzB,GAAG,CAAC8D,kBAAkB,EAAE3D,OAAO,CAAC;EACrDsB,MAAM,CAACe,aAAa,CAACqB,UAAU,CAACE,UAAU,CAACtB,MAAM,CAAC;EAElD,KAAK,MAAMvC,QAAQ,IAAI2D,UAAU,CAACE,UAAU,EAAE;IAE5C,MAAM7B,WAAW,GAAGjC,SAAS,CAACC,QAAQ,EAAEC,OAAO,CAAC;IAChDsB,MAAM,CAACyB,WAAW,CAAChB,WAAW,CAAC;EACjC;EAEA,OAAOT,MAAM,CAACS,WAAW;AAC3B;AAEA,SAASV,yBAAyBA,CAACqC,UAA8B,EAAE1D,OAAmB,EAAU;EAC9F,IAAImC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;EAEpB,KAAK,MAAMpC,QAAQ,IAAI2D,UAAU,CAACE,UAAU,EAAE;IAC5CzB,IAAI,IAAIrB,eAAe,CAACf,QAAQ,EAAEC,OAAO,CAAC;EAC5C;EAEA,OAAOmC,IAAI;AACb;AAQA,SAASX,YAAYA,CAACF,MAAoB,EAAEuC,YAAoB,EAAE7D,OAAmB,EAAQ;EAC3F,MAAM;IAAC4B,IAAI;IAAEC,IAAI;IAAEiC;EAAI,CAAC,GAAG9D,OAAO;EAElC,IAAI+D,aAAa,GAAG,CAAC;EAErB,IAAI,CAACD,IAAI,EAAE;IACT,IAAIlC,IAAI,IAAIC,IAAI,EAAE;MAChBkC,aAAa,IAAI,IAAI;IACvB,CAAC,MAAM,IAAInC,IAAI,EAAE;MACfmC,aAAa,IAAI,IAAI;IACvB,CAAC,MAAM,IAAIlC,IAAI,EAAE;MACfkC,aAAa,IAAI,IAAI;IACvB;EACF,CAAC,MAAM;IACL,IAAInC,IAAI,EAAE;MACRmC,aAAa,IAAI,UAAU;IAC7B;IACA,IAAIlC,IAAI,EAAE;MACRkC,aAAa,IAAI,UAAU;IAC7B;EACF;EAEAzC,MAAM,CAACe,aAAa,CAAE0B,aAAa,GAAGF,YAAY,KAAM,CAAC,CAAC;AAC5D;AAGA,SAAS3B,iBAAiBA,CAAClC,OAAmB,EAAU;EACtD,IAAIiC,cAAc,GAAG,EAAE;EAEvB,IAAIjC,OAAO,CAAC4B,IAAI,EAAE;IAChBK,cAAc,IAAI,CAAC;EACrB;EACA,IAAIjC,OAAO,CAAC6B,IAAI,EAAE;IAChBI,cAAc,IAAI,CAAC;EACrB;EAEA,OAAOA,cAAc;AACvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode-wkt.js","names":["encodeWKT","geometry","type","wrapParens","pairWKT","coordinates","ringWKT","ringsWKT","multiRingsWKT","geometries","map","join","Error","c","r","s"],"sources":["../../../src/lib/encode-wkt.ts"],"sourcesContent":["// Fork of https://github.com/mapbox/wellknown under ISC license (MIT/BSD-2-clause equivalent)\n// eslint-disable-next-line import/no-unresolved\nimport type {Feature, Geometry} from '@loaders.gl/schema';\n\n/**\n * Stringifies a GeoJSON object into WKT\n * @param geojson\n * @returns string\n */\nexport default function encodeWKT(geometry: Geometry | Feature): string {\n if (geometry.type === 'Feature') {\n geometry = geometry.geometry;\n }\n\n switch (geometry.type) {\n case 'Point':\n return `POINT ${wrapParens(pairWKT(geometry.coordinates))}`;\n case 'LineString':\n return `LINESTRING ${wrapParens(ringWKT(geometry.coordinates))}`;\n case 'Polygon':\n return `POLYGON ${wrapParens(ringsWKT(geometry.coordinates))}`;\n case 'MultiPoint':\n return `MULTIPOINT ${wrapParens(ringWKT(geometry.coordinates))}`;\n case 'MultiPolygon':\n return `MULTIPOLYGON ${wrapParens(multiRingsWKT(geometry.coordinates))}`;\n case 'MultiLineString':\n return `MULTILINESTRING ${wrapParens(ringsWKT(geometry.coordinates))}`;\n case 'GeometryCollection':\n return `GEOMETRYCOLLECTION ${wrapParens(geometry.geometries.map(encodeWKT).join(', '))}`;\n default:\n throw new Error('stringify requires a valid GeoJSON Feature or geometry object as input');\n }\n}\n\nfunction pairWKT(c: number[]): string {\n return c.join(' ');\n}\n\nfunction ringWKT(r: number[][]): string {\n return r.map(pairWKT).join(', ');\n}\n\nfunction ringsWKT(r: number[][][]): string {\n return r.map(ringWKT).map(wrapParens).join(', ');\n}\n\nfunction multiRingsWKT(r: number[][][][]): string {\n return r.map(ringsWKT).map(wrapParens).join(', ');\n}\n\nfunction wrapParens(s: string): string {\n return `(${s})`;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"encode-wkt.js","names":["encodeWKT","geometry","type","concat","wrapParens","pairWKT","coordinates","ringWKT","ringsWKT","multiRingsWKT","geometries","map","join","Error","c","r","s"],"sources":["../../../src/lib/encode-wkt.ts"],"sourcesContent":["// Fork of https://github.com/mapbox/wellknown under ISC license (MIT/BSD-2-clause equivalent)\n// eslint-disable-next-line import/no-unresolved\nimport type {Feature, Geometry} from '@loaders.gl/schema';\n\n/**\n * Stringifies a GeoJSON object into WKT\n * @param geojson\n * @returns string\n */\nexport default function encodeWKT(geometry: Geometry | Feature): string {\n if (geometry.type === 'Feature') {\n geometry = geometry.geometry;\n }\n\n switch (geometry.type) {\n case 'Point':\n return `POINT ${wrapParens(pairWKT(geometry.coordinates))}`;\n case 'LineString':\n return `LINESTRING ${wrapParens(ringWKT(geometry.coordinates))}`;\n case 'Polygon':\n return `POLYGON ${wrapParens(ringsWKT(geometry.coordinates))}`;\n case 'MultiPoint':\n return `MULTIPOINT ${wrapParens(ringWKT(geometry.coordinates))}`;\n case 'MultiPolygon':\n return `MULTIPOLYGON ${wrapParens(multiRingsWKT(geometry.coordinates))}`;\n case 'MultiLineString':\n return `MULTILINESTRING ${wrapParens(ringsWKT(geometry.coordinates))}`;\n case 'GeometryCollection':\n return `GEOMETRYCOLLECTION ${wrapParens(geometry.geometries.map(encodeWKT).join(', '))}`;\n default:\n throw new Error('stringify requires a valid GeoJSON Feature or geometry object as input');\n }\n}\n\nfunction pairWKT(c: number[]): string {\n return c.join(' ');\n}\n\nfunction ringWKT(r: number[][]): string {\n return r.map(pairWKT).join(', ');\n}\n\nfunction ringsWKT(r: number[][][]): string {\n return r.map(ringWKT).map(wrapParens).join(', ');\n}\n\nfunction multiRingsWKT(r: number[][][][]): string {\n return r.map(ringsWKT).map(wrapParens).join(', ');\n}\n\nfunction wrapParens(s: string): string {\n return `(${s})`;\n}\n"],"mappings":"AASA,eAAe,SAASA,SAASA,CAACC,QAA4B,EAAU;EACtE,IAAIA,QAAQ,CAACC,IAAI,KAAK,SAAS,EAAE;IAC/BD,QAAQ,GAAGA,QAAQ,CAACA,QAAQ;EAC9B;EAEA,QAAQA,QAAQ,CAACC,IAAI;IACnB,KAAK,OAAO;MACV,gBAAAC,MAAA,CAAgBC,UAAU,CAACC,OAAO,CAACJ,QAAQ,CAACK,WAAW,CAAC,CAAC;IAC3D,KAAK,YAAY;MACf,qBAAAH,MAAA,CAAqBC,UAAU,CAACG,OAAO,CAACN,QAAQ,CAACK,WAAW,CAAC,CAAC;IAChE,KAAK,SAAS;MACZ,kBAAAH,MAAA,CAAkBC,UAAU,CAACI,QAAQ,CAACP,QAAQ,CAACK,WAAW,CAAC,CAAC;IAC9D,KAAK,YAAY;MACf,qBAAAH,MAAA,CAAqBC,UAAU,CAACG,OAAO,CAACN,QAAQ,CAACK,WAAW,CAAC,CAAC;IAChE,KAAK,cAAc;MACjB,uBAAAH,MAAA,CAAuBC,UAAU,CAACK,aAAa,CAACR,QAAQ,CAACK,WAAW,CAAC,CAAC;IACxE,KAAK,iBAAiB;MACpB,0BAAAH,MAAA,CAA0BC,UAAU,CAACI,QAAQ,CAACP,QAAQ,CAACK,WAAW,CAAC,CAAC;IACtE,KAAK,oBAAoB;MACvB,6BAAAH,MAAA,CAA6BC,UAAU,CAACH,QAAQ,CAACS,UAAU,CAACC,GAAG,CAACX,SAAS,CAAC,CAACY,IAAI,CAAC,IAAI,CAAC,CAAC;IACxF;MACE,MAAM,IAAIC,KAAK,CAAC,wEAAwE,CAAC;EAAC;AAEhG;AAEA,SAASR,OAAOA,CAACS,CAAW,EAAU;EACpC,OAAOA,CAAC,CAACF,IAAI,CAAC,GAAG,CAAC;AACpB;AAEA,SAASL,OAAOA,CAACQ,CAAa,EAAU;EACtC,OAAOA,CAAC,CAACJ,GAAG,CAACN,OAAO,CAAC,CAACO,IAAI,CAAC,IAAI,CAAC;AAClC;AAEA,SAASJ,QAAQA,CAACO,CAAe,EAAU;EACzC,OAAOA,CAAC,CAACJ,GAAG,CAACJ,OAAO,CAAC,CAACI,GAAG,CAACP,UAAU,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC;AAClD;AAEA,SAASH,aAAaA,CAACM,CAAiB,EAAU;EAChD,OAAOA,CAAC,CAACJ,GAAG,CAACH,QAAQ,CAAC,CAACG,GAAG,CAACP,UAAU,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC;AACnD;AAEA,SAASR,UAAUA,CAACY,CAAS,EAAU;EACrC,WAAAb,MAAA,CAAWa,CAAC;AACd"}
|
|
@@ -4,14 +4,11 @@ const NUM_DIMENSIONS = {
|
|
|
4
4
|
2: 3,
|
|
5
5
|
3: 4
|
|
6
6
|
};
|
|
7
|
-
|
|
8
7
|
export default function parseWKB(arrayBuffer) {
|
|
9
8
|
const view = new DataView(arrayBuffer);
|
|
10
9
|
let offset = 0;
|
|
11
|
-
|
|
12
10
|
const littleEndian = view.getUint8(offset) === 1;
|
|
13
11
|
offset++;
|
|
14
|
-
|
|
15
12
|
const geometryCode = view.getUint32(offset, littleEndian);
|
|
16
13
|
offset += 4;
|
|
17
14
|
const geometryType = geometryCode % 1000;
|
|
@@ -43,7 +40,6 @@ export default function parseWKB(arrayBuffer) {
|
|
|
43
40
|
throw new Error("WKB: Unsupported geometry type: ".concat(geometryType));
|
|
44
41
|
}
|
|
45
42
|
}
|
|
46
|
-
|
|
47
43
|
function parsePoint(view, offset, dimension, littleEndian) {
|
|
48
44
|
const positions = new Float64Array(dimension);
|
|
49
45
|
for (let i = 0; i < dimension; i++) {
|
|
@@ -64,7 +60,6 @@ function parsePoint(view, offset, dimension, littleEndian) {
|
|
|
64
60
|
function parseLineString(view, offset, dimension, littleEndian) {
|
|
65
61
|
const nPoints = view.getUint32(offset, littleEndian);
|
|
66
62
|
offset += 4;
|
|
67
|
-
|
|
68
63
|
const positions = new Float64Array(nPoints * dimension);
|
|
69
64
|
for (let i = 0; i < nPoints * dimension; i++) {
|
|
70
65
|
positions[i] = view.getFloat64(offset, littleEndian);
|
|
@@ -89,7 +84,6 @@ function parseLineString(view, offset, dimension, littleEndian) {
|
|
|
89
84
|
offset
|
|
90
85
|
};
|
|
91
86
|
}
|
|
92
|
-
|
|
93
87
|
const cumulativeSum = sum => value => sum += value;
|
|
94
88
|
function parsePolygon(view, offset, dimension, littleEndian) {
|
|
95
89
|
const nRings = view.getUint32(offset, littleEndian);
|
|
@@ -136,7 +130,6 @@ function parseMultiPoint(view, offset, dimension, littleEndian) {
|
|
|
136
130
|
for (let i = 0; i < nPoints; i++) {
|
|
137
131
|
const littleEndianPoint = view.getUint8(offset) === 1;
|
|
138
132
|
offset++;
|
|
139
|
-
|
|
140
133
|
if (view.getUint32(offset, littleEndianPoint) % 1000 !== 1) {
|
|
141
134
|
throw new Error('WKB: Inner geometries of MultiPoint not of type Point');
|
|
142
135
|
}
|
|
@@ -154,7 +147,6 @@ function parseMultiLineString(view, offset, dimension, littleEndian) {
|
|
|
154
147
|
for (let i = 0; i < nLines; i++) {
|
|
155
148
|
const littleEndianLine = view.getUint8(offset) === 1;
|
|
156
149
|
offset++;
|
|
157
|
-
|
|
158
150
|
if (view.getUint32(offset, littleEndianLine) % 1000 !== 2) {
|
|
159
151
|
throw new Error('WKB: Inner geometries of MultiLineString not of type LineString');
|
|
160
152
|
}
|
|
@@ -172,7 +164,6 @@ function parseMultiPolygon(view, offset, dimension, littleEndian) {
|
|
|
172
164
|
for (let i = 0; i < nPolygons; i++) {
|
|
173
165
|
const littleEndianPolygon = view.getUint8(offset) === 1;
|
|
174
166
|
offset++;
|
|
175
|
-
|
|
176
167
|
if (view.getUint32(offset, littleEndianPolygon) % 1000 !== 3) {
|
|
177
168
|
throw new Error('WKB: Inner geometries of MultiPolygon not of type Polygon');
|
|
178
169
|
}
|
|
@@ -183,7 +174,6 @@ function parseMultiPolygon(view, offset, dimension, littleEndian) {
|
|
|
183
174
|
}
|
|
184
175
|
return concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension);
|
|
185
176
|
}
|
|
186
|
-
|
|
187
177
|
function concatenateBinaryPointGeometries(binaryPointGeometries, dimension) {
|
|
188
178
|
const positions = binaryPointGeometries.map(geometry => geometry.positions.value);
|
|
189
179
|
const concatenatedPositions = new Float64Array(concatTypedArrays(positions).buffer);
|
|
@@ -226,7 +216,6 @@ function concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension)
|
|
|
226
216
|
const concatenatedPositions = new Float64Array(concatTypedArrays(polygons).buffer);
|
|
227
217
|
const polygonIndices = polygons.map(p => p.length / dimension).map(cumulativeSum(0));
|
|
228
218
|
polygonIndices.unshift(0);
|
|
229
|
-
|
|
230
219
|
const primitivePolygonIndices = [0];
|
|
231
220
|
for (const primitivePolygon of primitivePolygons) {
|
|
232
221
|
primitivePolygonIndices.push(...primitivePolygon.filter(x => x > 0).map(x => x + primitivePolygonIndices[primitivePolygonIndices.length - 1]));
|
|
@@ -247,7 +236,6 @@ function concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension)
|
|
|
247
236
|
}
|
|
248
237
|
};
|
|
249
238
|
}
|
|
250
|
-
|
|
251
239
|
function concatTypedArrays(arrays) {
|
|
252
240
|
let byteLength = 0;
|
|
253
241
|
for (let i = 0; i < arrays.length; ++i) {
|