@loaders.gl/wkt 4.0.0-alpha.9 → 4.0.0-beta.2
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/README.md +4 -1
- package/dist/dist.min.js +1449 -404
- package/dist/es5/hex-wkb-loader.js +64 -0
- package/dist/es5/hex-wkb-loader.js.map +1 -0
- package/dist/es5/index.js +76 -1
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/encode-twkb.js +269 -0
- package/dist/es5/lib/encode-twkb.js.map +1 -0
- package/dist/es5/lib/encode-wkb.js +12 -10
- package/dist/es5/lib/encode-wkb.js.map +1 -1
- package/dist/es5/lib/encode-wkt-crs.js +32 -0
- package/dist/es5/lib/encode-wkt-crs.js.map +1 -0
- package/dist/es5/lib/encode-wkt.js +1 -1
- package/dist/es5/lib/encode-wkt.js.map +1 -1
- package/dist/es5/lib/parse-hex-wkb.js +2 -0
- package/dist/es5/lib/parse-hex-wkb.js.map +1 -0
- package/dist/es5/lib/parse-twkb.js +263 -0
- package/dist/es5/lib/parse-twkb.js.map +1 -0
- package/dist/es5/lib/parse-wkb-header.js +114 -0
- package/dist/es5/lib/parse-wkb-header.js.map +1 -0
- package/dist/es5/lib/parse-wkb.js +59 -52
- package/dist/es5/lib/parse-wkb.js.map +1 -1
- package/dist/es5/lib/parse-wkt-crs.js +106 -0
- package/dist/es5/lib/parse-wkt-crs.js.map +1 -0
- package/dist/es5/lib/parse-wkt.js +210 -153
- package/dist/es5/lib/parse-wkt.js.map +1 -1
- package/dist/es5/lib/utils/base64-encoder.js +26 -0
- package/dist/es5/lib/utils/base64-encoder.js.map +1 -0
- package/dist/es5/lib/utils/binary-reader.js +98 -0
- package/dist/es5/lib/utils/binary-reader.js.map +1 -0
- package/dist/es5/lib/utils/binary-writer.js +2 -2
- package/dist/es5/lib/utils/binary-writer.js.map +1 -1
- package/dist/es5/lib/utils/hex-encoder.js +63 -0
- package/dist/es5/lib/utils/hex-encoder.js.map +1 -0
- package/dist/es5/lib/utils/hex-transcoder.js +41 -0
- package/dist/es5/lib/utils/hex-transcoder.js.map +1 -0
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/lib/utils/version.js.map +1 -1
- package/dist/es5/twkb-loader.js +53 -0
- package/dist/es5/twkb-loader.js.map +1 -0
- package/dist/es5/twkb-writer.js +40 -0
- package/dist/es5/twkb-writer.js.map +1 -0
- package/dist/es5/wkb-loader.js +9 -9
- package/dist/es5/wkb-loader.js.map +1 -1
- package/dist/es5/wkb-writer.js +2 -3
- package/dist/es5/wkb-writer.js.map +1 -1
- package/dist/es5/wkt-crs-loader.js +47 -0
- package/dist/es5/wkt-crs-loader.js.map +1 -0
- package/dist/es5/wkt-crs-writer.js +49 -0
- package/dist/es5/wkt-crs-writer.js.map +1 -0
- package/dist/es5/wkt-loader.js +10 -6
- package/dist/es5/wkt-loader.js.map +1 -1
- package/dist/es5/wkt-writer.js +2 -3
- 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/hex-wkb-loader.js +37 -0
- package/dist/esm/hex-wkb-loader.js.map +1 -0
- package/dist/esm/index.js +10 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/encode-twkb.js +180 -0
- package/dist/esm/lib/encode-twkb.js.map +1 -0
- package/dist/esm/lib/encode-wkb.js +4 -4
- package/dist/esm/lib/encode-wkb.js.map +1 -1
- package/dist/esm/lib/encode-wkt-crs.js +21 -0
- package/dist/esm/lib/encode-wkt-crs.js.map +1 -0
- package/dist/esm/lib/encode-wkt.js +1 -1
- package/dist/esm/lib/encode-wkt.js.map +1 -1
- package/dist/esm/lib/parse-hex-wkb.js +2 -0
- package/dist/esm/lib/parse-hex-wkb.js.map +1 -0
- package/dist/esm/lib/parse-twkb.js +256 -0
- package/dist/esm/lib/parse-twkb.js.map +1 -0
- package/dist/esm/lib/parse-wkb-header.js +105 -0
- package/dist/esm/lib/parse-wkb-header.js.map +1 -0
- package/dist/esm/lib/parse-wkb.js +59 -51
- package/dist/esm/lib/parse-wkb.js.map +1 -1
- package/dist/esm/lib/parse-wkt-crs.js +96 -0
- package/dist/esm/lib/parse-wkt-crs.js.map +1 -0
- package/dist/esm/lib/parse-wkt.js +204 -152
- package/dist/esm/lib/parse-wkt.js.map +1 -1
- package/dist/esm/lib/utils/base64-encoder.js +7 -0
- package/dist/esm/lib/utils/base64-encoder.js.map +1 -0
- package/dist/esm/lib/utils/binary-reader.js +67 -0
- package/dist/esm/lib/utils/binary-reader.js.map +1 -0
- package/dist/esm/lib/utils/binary-writer.js +1 -1
- package/dist/esm/lib/utils/binary-writer.js.map +1 -1
- package/dist/esm/lib/utils/hex-encoder.js +40 -0
- package/dist/esm/lib/utils/hex-encoder.js.map +1 -0
- package/dist/esm/lib/utils/hex-transcoder.js +34 -0
- package/dist/esm/lib/utils/hex-transcoder.js.map +1 -0
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/twkb-loader.js +24 -0
- package/dist/esm/twkb-loader.js.map +1 -0
- package/dist/esm/twkb-writer.js +14 -0
- package/dist/esm/twkb-writer.js.map +1 -0
- package/dist/esm/wkb-loader.js +6 -4
- package/dist/esm/wkb-loader.js.map +1 -1
- package/dist/esm/wkb-writer.js +1 -1
- package/dist/esm/wkb-writer.js.map +1 -1
- package/dist/esm/wkt-crs-loader.js +19 -0
- package/dist/esm/wkt-crs-loader.js.map +1 -0
- package/dist/esm/wkt-crs-writer.js +19 -0
- package/dist/esm/wkt-crs-writer.js.map +1 -0
- package/dist/esm/wkt-loader.js +8 -3
- package/dist/esm/wkt-loader.js.map +1 -1
- package/dist/esm/wkt-writer.js +2 -2
- package/dist/esm/wkt-writer.js.map +1 -1
- package/dist/esm/workers/wkb-worker.js.map +1 -1
- package/dist/esm/workers/wkt-worker.js.map +1 -1
- package/dist/src/bundle.d.ts.map +1 -0
- package/dist/src/hex-wkb-loader.d.ts +17 -0
- package/dist/src/hex-wkb-loader.d.ts.map +1 -0
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/lib/encode-twkb.d.ts +6 -0
- package/dist/src/lib/encode-twkb.d.ts.map +1 -0
- package/dist/{lib → src/lib}/encode-wkb.d.ts +16 -3
- package/dist/src/lib/encode-wkb.d.ts.map +1 -0
- package/dist/src/lib/encode-wkt-crs.d.ts +10 -0
- package/dist/src/lib/encode-wkt-crs.d.ts.map +1 -0
- package/dist/{lib → src/lib}/encode-wkt.d.ts +1 -1
- package/dist/src/lib/encode-wkt.d.ts.map +1 -0
- package/dist/src/lib/parse-hex-wkb.d.ts +1 -0
- package/dist/src/lib/parse-hex-wkb.d.ts.map +1 -0
- package/dist/src/lib/parse-twkb.d.ts +9 -0
- package/dist/src/lib/parse-twkb.d.ts.map +1 -0
- package/dist/src/lib/parse-wkb-header.d.ts +39 -0
- package/dist/src/lib/parse-wkb-header.d.ts.map +1 -0
- package/dist/src/lib/parse-wkb.d.ts +5 -0
- package/dist/src/lib/parse-wkb.d.ts.map +1 -0
- package/dist/src/lib/parse-wkt-crs.d.ts +15 -0
- package/dist/src/lib/parse-wkt-crs.d.ts.map +1 -0
- package/dist/src/lib/parse-wkt.d.ts +30 -0
- package/dist/src/lib/parse-wkt.d.ts.map +1 -0
- package/dist/src/lib/utils/base64-encoder.d.ts +5 -0
- package/dist/src/lib/utils/base64-encoder.d.ts.map +1 -0
- package/dist/src/lib/utils/binary-reader.d.ts +18 -0
- package/dist/src/lib/utils/binary-reader.d.ts.map +1 -0
- package/dist/{lib → src/lib}/utils/binary-writer.d.ts +1 -1
- package/dist/src/lib/utils/binary-writer.d.ts.map +1 -0
- package/dist/src/lib/utils/hex-encoder.d.ts +15 -0
- package/dist/src/lib/utils/hex-encoder.d.ts.map +1 -0
- package/dist/src/lib/utils/hex-transcoder.d.ts +15 -0
- package/dist/src/lib/utils/hex-transcoder.d.ts.map +1 -0
- package/dist/src/lib/utils/version.d.ts.map +1 -0
- package/dist/src/twkb-loader.d.ts +16 -0
- package/dist/src/twkb-loader.d.ts.map +1 -0
- package/dist/src/twkb-writer.d.ts +7 -0
- package/dist/src/twkb-writer.d.ts.map +1 -0
- package/dist/src/wkb-loader.d.ts +16 -0
- package/dist/src/wkb-loader.d.ts.map +1 -0
- package/dist/src/wkb-writer.d.ts +7 -0
- package/dist/src/wkb-writer.d.ts.map +1 -0
- package/dist/src/wkt-crs-loader.d.ts +12 -0
- package/dist/src/wkt-crs-loader.d.ts.map +1 -0
- package/dist/src/wkt-crs-writer.d.ts +13 -0
- package/dist/src/wkt-crs-writer.d.ts.map +1 -0
- package/dist/src/wkt-loader.d.ts +18 -0
- package/dist/src/wkt-loader.d.ts.map +1 -0
- package/dist/src/wkt-writer.d.ts +10 -0
- package/dist/src/wkt-writer.d.ts.map +1 -0
- package/dist/{workers → src/workers}/wkb-worker.d.ts.map +1 -1
- package/dist/{workers → src/workers}/wkt-worker.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/wkt-worker.js +230 -186
- package/package.json +4 -4
- package/src/hex-wkb-loader.ts +61 -0
- package/src/index.ts +22 -1
- package/src/lib/encode-twkb.ts +304 -0
- package/src/lib/encode-wkb.ts +5 -5
- package/src/lib/encode-wkt-crs.ts +39 -0
- package/src/lib/encode-wkt.ts +3 -2
- package/src/lib/parse-hex-wkb.ts +0 -0
- package/src/lib/parse-twkb.ts +356 -0
- package/src/lib/parse-wkb-header.ts +172 -0
- package/src/lib/parse-wkb.ts +69 -58
- package/src/lib/parse-wkt-crs.ts +147 -0
- package/src/lib/parse-wkt.ts +275 -174
- package/src/lib/utils/base64-encoder.ts +153 -0
- package/src/lib/utils/binary-reader.ts +72 -0
- package/src/lib/utils/binary-writer.ts +1 -1
- package/src/lib/utils/hex-encoder.ts +58 -0
- package/src/lib/utils/hex-transcoder.ts +50 -0
- package/src/twkb-loader.ts +42 -0
- package/src/twkb-writer.ts +25 -0
- package/src/wkb-loader.ts +19 -8
- package/src/wkb-writer.ts +6 -4
- package/src/wkt-crs-loader.ts +33 -0
- package/src/wkt-crs-writer.ts +37 -0
- package/src/wkt-loader.ts +22 -6
- package/src/wkt-writer.ts +12 -5
- package/src/workers/wkb-worker.ts +2 -0
- package/src/workers/wkt-worker.ts +2 -0
- package/dist/bundle.d.ts.map +0 -1
- package/dist/bundle.js +0 -5
- package/dist/index.d.ts +0 -5
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -13
- package/dist/lib/encode-wkb.d.ts.map +0 -1
- package/dist/lib/encode-wkb.js +0 -295
- package/dist/lib/encode-wkt.d.ts.map +0 -1
- package/dist/lib/encode-wkt.js +0 -46
- package/dist/lib/parse-wkb.d.ts +0 -3
- package/dist/lib/parse-wkb.d.ts.map +0 -1
- package/dist/lib/parse-wkb.js +0 -236
- package/dist/lib/parse-wkt.d.ts +0 -8
- package/dist/lib/parse-wkt.d.ts.map +0 -1
- package/dist/lib/parse-wkt.js +0 -227
- package/dist/lib/utils/binary-writer.d.ts.map +0 -1
- package/dist/lib/utils/binary-writer.js +0 -120
- package/dist/lib/utils/version.d.ts.map +0 -1
- package/dist/lib/utils/version.js +0 -7
- package/dist/wkb-loader.d.ts +0 -39
- package/dist/wkb-loader.d.ts.map +0 -1
- package/dist/wkb-loader.js +0 -34
- package/dist/wkb-writer.d.ts +0 -6
- package/dist/wkb-writer.d.ts.map +0 -1
- package/dist/wkb-writer.js +0 -26
- package/dist/wkt-loader.d.ts +0 -10
- package/dist/wkt-loader.d.ts.map +0 -1
- package/dist/wkt-loader.js +0 -33
- package/dist/wkt-writer.d.ts +0 -6
- package/dist/wkt-writer.d.ts.map +0 -1
- package/dist/wkt-writer.js +0 -23
- package/dist/workers/wkb-worker.js +0 -5
- package/dist/workers/wkt-worker.js +0 -5
- /package/dist/{bundle.d.ts → src/bundle.d.ts} +0 -0
- /package/dist/{lib → src/lib}/utils/version.d.ts +0 -0
- /package/dist/{workers → src/workers}/wkb-worker.d.ts +0 -0
- /package/dist/{workers → src/workers}/wkt-worker.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode-wkb.js","names":["_binaryWriter","_interopRequireDefault","require","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","WKB","encodeWKB","geometry","options","arguments","undefined","type","wkb","encodePoint","coordinates","encodeLineString","encodePolygon","encodeMultiPoint","encodeMultiPolygon","encodeMultiLineString","encodeGeometryCollection","exhaustiveCheck","Error","concat","getGeometrySize","getPointSize","getLineStringSize","getPolygonSize","getMultiPointSize","getMultiPolygonSize","getMultiLineStringSize","getGeometryCollectionSize","writer","BinaryWriter","writeInt8","writeWkbType","Point","writeDoubleLE","NaN","hasZ","hasM","writeCoordinate","arrayBuffer","coordinate","coordinateSize","getCoordinateSize","size","LineString","writeUInt32LE","_iterator","_step","Polygon","_coordinates","_toArray2","default","exteriorRing","interiorRings","_iterator2","_step2","_iterator3","_step3","interiorRing","_iterator4","_step4","_coordinates2","_iterator5","_step5","multiPoint","points","MultiPoint","_iterator6","_step6","point","writeBuffer","multiLineString","lineStrings","MultiLineString","_iterator7","_step7","lineString","encodedLineString","_iterator8","_step8","multiPolygon","polygons","MultiPolygon","_iterator9","_step9","polygon","encodedPolygon","_iterator10","_step10","collection","GeometryCollection","geometries","_iterator11","_step11","_iterator12","_step12","geometryType","srid","dimensionType"],"sources":["../../../src/lib/encode-wkb.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Forked from https://github.com/cschwarz/wkx under MIT license, Copyright (c) 2013 Christian Schwarz\n// Reference: https://www.ogc.org/standards/sfa\n\nimport type {\n Feature,\n Geometry,\n Point,\n MultiPoint,\n LineString,\n MultiLineString,\n Polygon,\n MultiPolygon,\n GeometryCollection\n} from '@loaders.gl/schema';\n\nimport BinaryWriter from './utils/binary-writer';\n\n/**\n * Integer code for geometry type\n * Reference: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary\n */\nenum WKB {\n Point = 1,\n LineString = 2,\n Polygon = 3,\n MultiPoint = 4,\n MultiLineString = 5,\n MultiPolygon = 6,\n GeometryCollection = 7\n}\n\n/**\n * Options for encodeWKB\n */\ninterface WKBOptions {\n /** Does the GeoJSON input have Z values? */\n hasZ?: boolean;\n\n /** Does the GeoJSON input have M values? */\n hasM?: boolean;\n\n /** Spatial reference for input GeoJSON */\n srid?: any;\n}\n\n/**\n * Encodes a GeoJSON object into WKB\n * @param geojson A GeoJSON Feature or Geometry\n * @returns string\n */\nexport default function encodeWKB(\n geometry: Geometry | Feature,\n options: WKBOptions | {wkb: WKBOptions} = {}\n): ArrayBuffer {\n if (geometry.type === 'Feature') {\n geometry = geometry.geometry;\n }\n\n // Options should be wrapped in a `wkb` key, but we allow top-level options here for backwards\n // compatibility\n if ('wkb' in options) {\n options = options.wkb;\n }\n\n switch (geometry.type) {\n case 'Point':\n return encodePoint(geometry.coordinates, options);\n case 'LineString':\n return encodeLineString(geometry.coordinates, options);\n case 'Polygon':\n return encodePolygon(geometry.coordinates, options);\n case 'MultiPoint':\n return encodeMultiPoint(geometry, options);\n case 'MultiPolygon':\n return encodeMultiPolygon(geometry, options);\n case 'MultiLineString':\n return encodeMultiLineString(geometry, options);\n case 'GeometryCollection':\n return encodeGeometryCollection(geometry, options);\n default:\n const exhaustiveCheck: never = geometry;\n throw new Error(`Unhandled case: ${exhaustiveCheck}`);\n }\n}\n\n/** Calculate the binary size (in the WKB encoding) of a specific GeoJSON geometry */\nfunction getGeometrySize(geometry: Geometry, options: WKBOptions): number {\n switch (geometry.type) {\n case 'Point':\n return getPointSize(options);\n case 'LineString':\n return getLineStringSize(geometry.coordinates, options);\n case 'Polygon':\n return getPolygonSize(geometry.coordinates, options);\n case 'MultiPoint':\n return getMultiPointSize(geometry, options);\n case 'MultiPolygon':\n return getMultiPolygonSize(geometry, options);\n case 'MultiLineString':\n return getMultiLineStringSize(geometry, options);\n case 'GeometryCollection':\n return getGeometryCollectionSize(geometry, options);\n default:\n const exhaustiveCheck: never = geometry;\n throw new Error(`Unhandled case: ${exhaustiveCheck}`);\n }\n}\n\n/** Encode Point geometry as WKB ArrayBuffer */\nfunction encodePoint(coordinates: Point['coordinates'], options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getPointSize(options));\n\n writer.writeInt8(1);\n writeWkbType(writer, WKB.Point, options);\n\n // I believe this special case is to handle writing Point(NaN, NaN) correctly\n if (typeof coordinates[0] === 'undefined' && typeof coordinates[1] === 'undefined') {\n writer.writeDoubleLE(NaN);\n writer.writeDoubleLE(NaN);\n\n if (options.hasZ) {\n writer.writeDoubleLE(NaN);\n }\n if (options.hasM) {\n writer.writeDoubleLE(NaN);\n }\n } else {\n writeCoordinate(writer, coordinates, options);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Write coordinate to buffer */\nfunction writeCoordinate(\n writer: BinaryWriter,\n coordinate: Point['coordinates'],\n options: WKBOptions\n): void {\n writer.writeDoubleLE(coordinate[0]);\n writer.writeDoubleLE(coordinate[1]);\n\n if (options.hasZ) {\n writer.writeDoubleLE(coordinate[2]);\n }\n if (options.hasM) {\n writer.writeDoubleLE(coordinate[3]);\n }\n}\n\n/** Get encoded size of Point geometry */\nfunction getPointSize(options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n return 1 + 4 + coordinateSize;\n}\n\n/** Encode LineString geometry as WKB ArrayBuffer */\nfunction encodeLineString(\n coordinates: LineString['coordinates'],\n options: WKBOptions\n): ArrayBuffer {\n const size = getLineStringSize(coordinates, options);\n\n const writer = new BinaryWriter(size);\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.LineString, options);\n writer.writeUInt32LE(coordinates.length);\n\n for (const coordinate of coordinates) {\n writeCoordinate(writer, coordinate, options);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of LineString geometry */\nfunction getLineStringSize(coordinates: LineString['coordinates'], options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n\n return 1 + 4 + 4 + coordinates.length * coordinateSize;\n}\n\n/** Encode Polygon geometry as WKB ArrayBuffer */\nfunction encodePolygon(coordinates: Polygon['coordinates'], options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getPolygonSize(coordinates, options));\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.Polygon, options);\n const [exteriorRing, ...interiorRings] = coordinates;\n\n if (exteriorRing.length > 0) {\n writer.writeUInt32LE(1 + interiorRings.length);\n writer.writeUInt32LE(exteriorRing.length);\n } else {\n writer.writeUInt32LE(0);\n }\n\n for (const coordinate of exteriorRing) {\n writeCoordinate(writer, coordinate, options);\n }\n\n for (const interiorRing of interiorRings) {\n writer.writeUInt32LE(interiorRing.length);\n\n for (const coordinate of interiorRing) {\n writeCoordinate(writer, coordinate, options);\n }\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of Polygon geometry */\nfunction getPolygonSize(coordinates: Polygon['coordinates'], options: WKBOptions): number {\n const coordinateSize = getCoordinateSize(options);\n const [exteriorRing, ...interiorRings] = coordinates;\n\n let size = 1 + 4 + 4;\n\n if (exteriorRing.length > 0) {\n size += 4 + exteriorRing.length * coordinateSize;\n }\n\n for (const interiorRing of interiorRings) {\n size += 4 + interiorRing.length * coordinateSize;\n }\n\n return size;\n}\n\n/** Encode MultiPoint geometry as WKB ArrayBufer */\nfunction encodeMultiPoint(multiPoint: MultiPoint, options: WKBOptions) {\n const writer = new BinaryWriter(getMultiPointSize(multiPoint, options));\n const points = multiPoint.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiPoint, options);\n writer.writeUInt32LE(points.length);\n\n for (const point of points) {\n // TODO: add srid to this options object? {srid: multiPoint.srid}\n const arrayBuffer = encodePoint(point, options);\n writer.writeBuffer(arrayBuffer);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of MultiPoint geometry */\nfunction getMultiPointSize(multiPoint: MultiPoint, options: WKBOptions) {\n let coordinateSize = getCoordinateSize(options);\n const points = multiPoint.coordinates;\n\n // This is because each point has a 5-byte header?\n coordinateSize += 5;\n\n return 1 + 4 + 4 + points.length * coordinateSize;\n}\n\n/** Encode MultiLineString geometry as WKB ArrayBufer */\nfunction encodeMultiLineString(multiLineString: MultiLineString, options: WKBOptions) {\n const writer = new BinaryWriter(getMultiLineStringSize(multiLineString, options));\n const lineStrings = multiLineString.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiLineString, options);\n writer.writeUInt32LE(lineStrings.length);\n\n for (const lineString of lineStrings) {\n // TODO: Handle srid?\n const encodedLineString = encodeLineString(lineString, options);\n writer.writeBuffer(encodedLineString);\n }\n\n return writer.arrayBuffer;\n}\n\n/** Get encoded size of MultiLineString geometry */\nfunction getMultiLineStringSize(multiLineString: MultiLineString, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n const lineStrings = multiLineString.coordinates;\n\n for (const lineString of lineStrings) {\n size += getLineStringSize(lineString, options);\n }\n\n return size;\n}\n\nfunction encodeMultiPolygon(multiPolygon: MultiPolygon, options: WKBOptions): ArrayBuffer {\n const writer = new BinaryWriter(getMultiPolygonSize(multiPolygon, options));\n const polygons = multiPolygon.coordinates;\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.MultiPolygon, options);\n writer.writeUInt32LE(polygons.length);\n\n for (const polygon of polygons) {\n const encodedPolygon = encodePolygon(polygon, options);\n writer.writeBuffer(encodedPolygon);\n }\n\n return writer.arrayBuffer;\n}\n\nfunction getMultiPolygonSize(multiPolygon: MultiPolygon, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n const polygons = multiPolygon.coordinates;\n\n for (const polygon of polygons) {\n size += getPolygonSize(polygon, options);\n }\n\n return size;\n}\n\nfunction encodeGeometryCollection(\n collection: GeometryCollection,\n options: WKBOptions\n): ArrayBuffer {\n const writer = new BinaryWriter(getGeometryCollectionSize(collection, options));\n\n writer.writeInt8(1);\n\n writeWkbType(writer, WKB.GeometryCollection, options);\n writer.writeUInt32LE(collection.geometries.length);\n\n for (const geometry of collection.geometries) {\n // TODO: handle srid? {srid: collection.srid}\n const arrayBuffer = encodeWKB(geometry, options);\n writer.writeBuffer(arrayBuffer);\n }\n\n return writer.arrayBuffer;\n}\n\nfunction getGeometryCollectionSize(collection: GeometryCollection, options: WKBOptions): number {\n let size = 1 + 4 + 4;\n\n for (const geometry of collection.geometries) {\n size += getGeometrySize(geometry, options);\n }\n\n return size;\n}\n\n// HELPERS\n\n/**\n * Construct and write WKB integer code\n * Reference: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary\n */\nfunction writeWkbType(writer: BinaryWriter, geometryType: number, options: WKBOptions): void {\n const {hasZ, hasM, srid} = options;\n\n let dimensionType = 0;\n\n if (!srid) {\n if (hasZ && hasM) {\n dimensionType += 3000;\n } else if (hasZ) {\n dimensionType += 1000;\n } else if (hasM) {\n dimensionType += 2000;\n }\n } else {\n if (hasZ) {\n dimensionType |= 0x80000000;\n }\n if (hasM) {\n dimensionType |= 0x40000000;\n }\n }\n\n writer.writeUInt32LE((dimensionType + geometryType) >>> 0);\n}\n\n/** Get coordinate size given Z/M dimensions */\nfunction getCoordinateSize(options: WKBOptions): number {\n let coordinateSize = 16;\n\n if (options.hasZ) {\n coordinateSize += 8;\n }\n if (options.hasM) {\n coordinateSize += 8;\n }\n\n return coordinateSize;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"encode-wkb.js","names":["_binaryWriter","require","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","WKB","exports","encodeWKB","geometry","options","arguments","undefined","type","wkb","encodePoint","coordinates","encodeLineString","encodePolygon","encodeMultiPoint","encodeMultiPolygon","encodeMultiLineString","encodeGeometryCollection","exhaustiveCheck","Error","concat","getGeometrySize","getPointSize","getLineStringSize","getPolygonSize","getMultiPointSize","getMultiPolygonSize","getMultiLineStringSize","getGeometryCollectionSize","writer","BinaryWriter","writeInt8","writeWkbType","Point","writeDoubleLE","NaN","hasZ","hasM","writeCoordinate","arrayBuffer","coordinate","coordinateSize","getCoordinateSize","size","LineString","writeUInt32LE","_iterator","_step","Polygon","_coordinates","_toArray2","default","exteriorRing","interiorRings","_iterator2","_step2","_iterator3","_step3","interiorRing","_iterator4","_step4","_coordinates2","_iterator5","_step5","multiPoint","points","MultiPoint","_iterator6","_step6","point","writeBuffer","multiLineString","lineStrings","MultiLineString","_iterator7","_step7","lineString","encodedLineString","_iterator8","_step8","multiPolygon","polygons","MultiPolygon","_iterator9","_step9","polygon","encodedPolygon","_iterator10","_step10","collection","GeometryCollection","geometries","_iterator11","_step11","_iterator12","_step12","geometryType","srid","dimensionType"],"sources":["../../../src/lib/encode-wkb.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Forked from https://github.com/cschwarz/wkx under MIT license, Copyright (c) 2013 Christian Schwarz\n// Reference: https://www.ogc.org/standards/sfa\n\nimport type {\n Feature,\n Geometry,\n Point,\n MultiPoint,\n LineString,\n MultiLineString,\n Polygon,\n MultiPolygon,\n GeometryCollection\n} from '@loaders.gl/schema';\n\nimport {BinaryWriter} from './utils/binary-writer';\n\n/**\n * Integer code for geometry type\n * Reference: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary\n */\nexport enum 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 */\ntype 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 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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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.encodeWKTCRS = encodeWKTCRS;
|
|
8
|
+
var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
|
|
9
|
+
function encodeWKTCRS(wkt, options) {
|
|
10
|
+
if (Array.isArray(wkt) && wkt.length === 1 && Array.isArray(wkt[0])) {
|
|
11
|
+
wkt = wkt[0];
|
|
12
|
+
}
|
|
13
|
+
var _wkt = wkt,
|
|
14
|
+
_wkt2 = (0, _toArray2.default)(_wkt),
|
|
15
|
+
kw = _wkt2[0],
|
|
16
|
+
attrs = _wkt2.slice(1);
|
|
17
|
+
var str = "".concat(kw, "[").concat(attrs.map(function (attr) {
|
|
18
|
+
if (Array.isArray(attr)) {
|
|
19
|
+
return encodeWKTCRS(attr, options);
|
|
20
|
+
} else if (typeof attr === 'number') {
|
|
21
|
+
return attr.toString();
|
|
22
|
+
} else if (typeof attr === 'string') {
|
|
23
|
+
if (attr.startsWith('raw:')) {
|
|
24
|
+
return attr.replace('raw:', '');
|
|
25
|
+
}
|
|
26
|
+
return "\"".concat(attr, "\"");
|
|
27
|
+
}
|
|
28
|
+
throw new Error("[wktcrs] unexpected attribute \"".concat(attr, "\""));
|
|
29
|
+
}).join(','), "]");
|
|
30
|
+
return str;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=encode-wkt-crs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encode-wkt-crs.js","names":["encodeWKTCRS","wkt","options","Array","isArray","length","_wkt","_wkt2","_toArray2","default","kw","attrs","slice","str","concat","map","attr","toString","startsWith","replace","Error","join"],"sources":["../../../src/lib/encode-wkt-crs.ts"],"sourcesContent":["// loaders.gl, MIT license\n// parse-wkt-crs was forked from https://github.com/DanielJDufour/wkt-crs under Creative Commons CC0 1.0 license.\n\nimport type {WKTCRS} from './parse-wkt-crs';\n\nexport type EncodeWKTCRSOptions = {\n debug?: boolean;\n};\n\n/**\n * convert JSON representation of Well-Known Text\n * back to standard Well-Known Text\n */\nexport function encodeWKTCRS(wkt: WKTCRS, options?: EncodeWKTCRSOptions): string {\n if (Array.isArray(wkt) && wkt.length === 1 && Array.isArray(wkt[0])) {\n wkt = wkt[0]; // ignore first extra wrapper array\n }\n\n const [kw, ...attrs] = wkt;\n const str = `${kw}[${attrs\n .map((attr) => {\n if (Array.isArray(attr)) {\n return encodeWKTCRS(attr, options);\n } else if (typeof attr === 'number') {\n return attr.toString();\n } else if (typeof attr === 'string') {\n // can't automatically convert all caps to varibale\n // because EPSG is string in AUTHORITY[\"EPSG\", ...]\n if (attr.startsWith('raw:')) {\n // convert \"raw:NORTH\" to NORTH\n return attr.replace('raw:', '');\n }\n return `\"${attr}\"`;\n }\n throw new Error(`[wktcrs] unexpected attribute \"${attr}\"`);\n })\n .join(',')}]`;\n return str;\n}\n"],"mappings":";;;;;;;;AAaO,SAASA,YAAYA,CAACC,GAAW,EAAEC,OAA6B,EAAU;EAC/E,IAAIC,KAAK,CAACC,OAAO,CAACH,GAAG,CAAC,IAAIA,GAAG,CAACI,MAAM,KAAK,CAAC,IAAIF,KAAK,CAACC,OAAO,CAACH,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;IACnEA,GAAG,GAAGA,GAAG,CAAC,CAAC,CAAC;EACd;EAEA,IAAAK,IAAA,GAAuBL,GAAG;IAAAM,KAAA,OAAAC,SAAA,CAAAC,OAAA,EAAAH,IAAA;IAAnBI,EAAE,GAAAH,KAAA;IAAKI,KAAK,GAAAJ,KAAA,CAAAK,KAAA;EACnB,IAAMC,GAAG,MAAAC,MAAA,CAAMJ,EAAE,OAAAI,MAAA,CAAIH,KAAK,CACvBI,GAAG,CAAC,UAACC,IAAI,EAAK;IACb,IAAIb,KAAK,CAACC,OAAO,CAACY,IAAI,CAAC,EAAE;MACvB,OAAOhB,YAAY,CAACgB,IAAI,EAAEd,OAAO,CAAC;IACpC,CAAC,MAAM,IAAI,OAAOc,IAAI,KAAK,QAAQ,EAAE;MACnC,OAAOA,IAAI,CAACC,QAAQ,CAAC,CAAC;IACxB,CAAC,MAAM,IAAI,OAAOD,IAAI,KAAK,QAAQ,EAAE;MAGnC,IAAIA,IAAI,CAACE,UAAU,CAAC,MAAM,CAAC,EAAE;QAE3B,OAAOF,IAAI,CAACG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;MACjC;MACA,YAAAL,MAAA,CAAWE,IAAI;IACjB;IACA,MAAM,IAAII,KAAK,oCAAAN,MAAA,CAAmCE,IAAI,OAAG,CAAC;EAC5D,CAAC,CAAC,CACDK,IAAI,CAAC,GAAG,CAAC,MAAG;EACf,OAAOR,GAAG;AACZ"}
|
|
@@ -1 +1 @@
|
|
|
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
|
|
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":["// loaders.gl, MIT license\n// Fork of https://github.com/mapbox/wellknown under ISC license (MIT/BSD-2-clause equivalent)\n\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 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":";;;;;;AAUO,SAASA,SAASA,CAACC,QAA4B,EAAU;EAC9D,IAAIA,QAAQ,CAACC,IAAI,KAAK,SAAS,EAAE;IAC/BD,QAAQ,GAAGA,QAAQ,CAACA,QAAQ;EAC9B;EAEA,QAAQA,QAAQ,CAACC,IAAI;IACnB,KAAK,OAAO;MACV,gBAAAC,MAAA,CAAgBC,UAAU,CAACC,OAAO,CAACJ,QAAQ,CAACK,WAAW,CAAC,CAAC;IAC3D,KAAK,YAAY;MACf,qBAAAH,MAAA,CAAqBC,UAAU,CAACG,OAAO,CAACN,QAAQ,CAACK,WAAW,CAAC,CAAC;IAChE,KAAK,SAAS;MACZ,kBAAAH,MAAA,CAAkBC,UAAU,CAACI,QAAQ,CAACP,QAAQ,CAACK,WAAW,CAAC,CAAC;IAC9D,KAAK,YAAY;MACf,qBAAAH,MAAA,CAAqBC,UAAU,CAACG,OAAO,CAACN,QAAQ,CAACK,WAAW,CAAC,CAAC;IAChE,KAAK,cAAc;MACjB,uBAAAH,MAAA,CAAuBC,UAAU,CAACK,aAAa,CAACR,QAAQ,CAACK,WAAW,CAAC,CAAC;IACxE,KAAK,iBAAiB;MACpB,0BAAAH,MAAA,CAA0BC,UAAU,CAACI,QAAQ,CAACP,QAAQ,CAACK,WAAW,CAAC,CAAC;IACtE,KAAK,oBAAoB;MACvB,6BAAAH,MAAA,CAA6BC,UAAU,CAACH,QAAQ,CAACS,UAAU,CAACC,GAAG,CAACX,SAAS,CAAC,CAACY,IAAI,CAAC,IAAI,CAAC,CAAC;IACxF;MACE,MAAM,IAAIC,KAAK,CAAC,wEAAwE,CAAC;EAC7F;AACF;AAEA,SAASR,OAAOA,CAACS,CAAW,EAAU;EACpC,OAAOA,CAAC,CAACF,IAAI,CAAC,GAAG,CAAC;AACpB;AAEA,SAASL,OAAOA,CAACQ,CAAa,EAAU;EACtC,OAAOA,CAAC,CAACJ,GAAG,CAACN,OAAO,CAAC,CAACO,IAAI,CAAC,IAAI,CAAC;AAClC;AAEA,SAASJ,QAAQA,CAACO,CAAe,EAAU;EACzC,OAAOA,CAAC,CAACJ,GAAG,CAACJ,OAAO,CAAC,CAACI,GAAG,CAACP,UAAU,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC;AAClD;AAEA,SAASH,aAAaA,CAACM,CAAiB,EAAU;EAChD,OAAOA,CAAC,CAACJ,GAAG,CAACH,QAAQ,CAAC,CAACG,GAAG,CAACP,UAAU,CAAC,CAACQ,IAAI,CAAC,IAAI,CAAC;AACnD;AAEA,SAASR,UAAUA,CAACY,CAAS,EAAU;EACrC,WAAAb,MAAA,CAAWa,CAAC;AACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-hex-wkb.js","names":[],"sources":["../../../src/lib/parse-hex-wkb.ts"],"sourcesContent":[""],"mappings":""}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isTWKB = isTWKB;
|
|
7
|
+
exports.parseTWKBGeometry = parseTWKBGeometry;
|
|
8
|
+
var _binaryReader = require("./utils/binary-reader");
|
|
9
|
+
var _parseWkbHeader = require("./parse-wkb-header");
|
|
10
|
+
function isTWKB(arrayBuffer) {
|
|
11
|
+
var binaryReader = new _binaryReader.BinaryReader(arrayBuffer);
|
|
12
|
+
var type = binaryReader.readUInt8();
|
|
13
|
+
var geometryType = type & 0x0f;
|
|
14
|
+
if (geometryType < 1 || geometryType > 7) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
function parseTWKBGeometry(arrayBuffer) {
|
|
20
|
+
var binaryReader = new _binaryReader.BinaryReader(arrayBuffer);
|
|
21
|
+
var context = parseTWKBHeader(binaryReader);
|
|
22
|
+
if (context.hasSizeAttribute) {
|
|
23
|
+
binaryReader.readVarInt();
|
|
24
|
+
}
|
|
25
|
+
if (context.hasBoundingBox) {
|
|
26
|
+
var dimensions = 2;
|
|
27
|
+
if (context.hasZ) {
|
|
28
|
+
dimensions++;
|
|
29
|
+
}
|
|
30
|
+
if (context.hasM) {
|
|
31
|
+
dimensions++;
|
|
32
|
+
}
|
|
33
|
+
for (var i = 0; i < dimensions; i++) {
|
|
34
|
+
binaryReader.readVarInt();
|
|
35
|
+
binaryReader.readVarInt();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return parseGeometry(binaryReader, context, context.geometryType);
|
|
39
|
+
}
|
|
40
|
+
function parseTWKBHeader(binaryReader) {
|
|
41
|
+
var type = binaryReader.readUInt8();
|
|
42
|
+
var metadataHeader = binaryReader.readUInt8();
|
|
43
|
+
var geometryType = type & 0x0f;
|
|
44
|
+
var precision = zigZagDecode(type >> 4);
|
|
45
|
+
var hasExtendedPrecision = Boolean(metadataHeader >> 3 & 1);
|
|
46
|
+
var hasZ = false;
|
|
47
|
+
var hasM = false;
|
|
48
|
+
var zPrecision = 0;
|
|
49
|
+
var zPrecisionFactor = 1;
|
|
50
|
+
var mPrecision = 0;
|
|
51
|
+
var mPrecisionFactor = 1;
|
|
52
|
+
if (hasExtendedPrecision) {
|
|
53
|
+
var extendedPrecision = binaryReader.readUInt8();
|
|
54
|
+
hasZ = (extendedPrecision & 0x01) === 0x01;
|
|
55
|
+
hasM = (extendedPrecision & 0x02) === 0x02;
|
|
56
|
+
zPrecision = zigZagDecode((extendedPrecision & 0x1c) >> 2);
|
|
57
|
+
zPrecisionFactor = Math.pow(10, zPrecision);
|
|
58
|
+
mPrecision = zigZagDecode((extendedPrecision & 0xe0) >> 5);
|
|
59
|
+
mPrecisionFactor = Math.pow(10, mPrecision);
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
geometryType: geometryType,
|
|
63
|
+
precision: precision,
|
|
64
|
+
precisionFactor: Math.pow(10, precision),
|
|
65
|
+
hasBoundingBox: Boolean(metadataHeader >> 0 & 1),
|
|
66
|
+
hasSizeAttribute: Boolean(metadataHeader >> 1 & 1),
|
|
67
|
+
hasIdList: Boolean(metadataHeader >> 2 & 1),
|
|
68
|
+
hasExtendedPrecision: hasExtendedPrecision,
|
|
69
|
+
isEmpty: Boolean(metadataHeader >> 4 & 1),
|
|
70
|
+
hasZ: hasZ,
|
|
71
|
+
hasM: hasM,
|
|
72
|
+
zPrecision: zPrecision,
|
|
73
|
+
zPrecisionFactor: zPrecisionFactor,
|
|
74
|
+
mPrecision: mPrecision,
|
|
75
|
+
mPrecisionFactor: mPrecisionFactor
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function parseGeometry(binaryReader, context, geometryType) {
|
|
79
|
+
switch (geometryType) {
|
|
80
|
+
case _parseWkbHeader.WKBGeometryType.Point:
|
|
81
|
+
return parsePoint(binaryReader, context);
|
|
82
|
+
case _parseWkbHeader.WKBGeometryType.LineString:
|
|
83
|
+
return parseLineString(binaryReader, context);
|
|
84
|
+
case _parseWkbHeader.WKBGeometryType.Polygon:
|
|
85
|
+
return parsePolygon(binaryReader, context);
|
|
86
|
+
case _parseWkbHeader.WKBGeometryType.MultiPoint:
|
|
87
|
+
return parseMultiPoint(binaryReader, context);
|
|
88
|
+
case _parseWkbHeader.WKBGeometryType.MultiLineString:
|
|
89
|
+
return parseMultiLineString(binaryReader, context);
|
|
90
|
+
case _parseWkbHeader.WKBGeometryType.MultiPolygon:
|
|
91
|
+
return parseMultiPolygon(binaryReader, context);
|
|
92
|
+
case _parseWkbHeader.WKBGeometryType.GeometryCollection:
|
|
93
|
+
return parseGeometryCollection(binaryReader, context);
|
|
94
|
+
default:
|
|
95
|
+
throw new Error("GeometryType ".concat(geometryType, " not supported"));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function parsePoint(reader, context) {
|
|
99
|
+
if (context.isEmpty) {
|
|
100
|
+
return {
|
|
101
|
+
type: 'Point',
|
|
102
|
+
coordinates: []
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
type: 'Point',
|
|
107
|
+
coordinates: readFirstPoint(reader, context)
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
function parseLineString(reader, context) {
|
|
111
|
+
if (context.isEmpty) {
|
|
112
|
+
return {
|
|
113
|
+
type: 'LineString',
|
|
114
|
+
coordinates: []
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
var pointCount = reader.readVarInt();
|
|
118
|
+
var previousPoint = makePreviousPoint(context);
|
|
119
|
+
var points = [];
|
|
120
|
+
for (var i = 0; i < pointCount; i++) {
|
|
121
|
+
points.push(parseNextPoint(reader, context, previousPoint));
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
type: 'LineString',
|
|
125
|
+
coordinates: points
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function parsePolygon(reader, context) {
|
|
129
|
+
if (context.isEmpty) {
|
|
130
|
+
return {
|
|
131
|
+
type: 'Polygon',
|
|
132
|
+
coordinates: []
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
var ringCount = reader.readVarInt();
|
|
136
|
+
var previousPoint = makePreviousPoint(context);
|
|
137
|
+
var exteriorRingLength = reader.readVarInt();
|
|
138
|
+
var exteriorRing = [];
|
|
139
|
+
for (var i = 0; i < exteriorRingLength; i++) {
|
|
140
|
+
exteriorRing.push(parseNextPoint(reader, context, previousPoint));
|
|
141
|
+
}
|
|
142
|
+
var polygon = [exteriorRing];
|
|
143
|
+
for (var _i = 1; _i < ringCount; _i++) {
|
|
144
|
+
var interiorRingCount = reader.readVarInt();
|
|
145
|
+
var interiorRing = [];
|
|
146
|
+
for (var j = 0; j < interiorRingCount; j++) {
|
|
147
|
+
interiorRing.push(parseNextPoint(reader, context, previousPoint));
|
|
148
|
+
}
|
|
149
|
+
polygon.push(interiorRing);
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
type: 'Polygon',
|
|
153
|
+
coordinates: polygon
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function parseMultiPoint(reader, context) {
|
|
157
|
+
if (context.isEmpty) {
|
|
158
|
+
return {
|
|
159
|
+
type: 'MultiPoint',
|
|
160
|
+
coordinates: []
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
var previousPoint = makePreviousPoint(context);
|
|
164
|
+
var pointCount = reader.readVarInt();
|
|
165
|
+
var coordinates = [];
|
|
166
|
+
for (var i = 0; i < pointCount; i++) {
|
|
167
|
+
coordinates.push(parseNextPoint(reader, context, previousPoint));
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
type: 'MultiPoint',
|
|
171
|
+
coordinates: coordinates
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function parseMultiLineString(reader, context) {
|
|
175
|
+
if (context.isEmpty) {
|
|
176
|
+
return {
|
|
177
|
+
type: 'MultiLineString',
|
|
178
|
+
coordinates: []
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
var previousPoint = makePreviousPoint(context);
|
|
182
|
+
var lineStringCount = reader.readVarInt();
|
|
183
|
+
var coordinates = [];
|
|
184
|
+
for (var i = 0; i < lineStringCount; i++) {
|
|
185
|
+
var pointCount = reader.readVarInt();
|
|
186
|
+
var lineString = [];
|
|
187
|
+
for (var j = 0; j < pointCount; j++) {
|
|
188
|
+
lineString.push(parseNextPoint(reader, context, previousPoint));
|
|
189
|
+
}
|
|
190
|
+
coordinates.push(lineString);
|
|
191
|
+
}
|
|
192
|
+
return {
|
|
193
|
+
type: 'MultiLineString',
|
|
194
|
+
coordinates: coordinates
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
function parseMultiPolygon(reader, context) {
|
|
198
|
+
if (context.isEmpty) {
|
|
199
|
+
return {
|
|
200
|
+
type: 'MultiPolygon',
|
|
201
|
+
coordinates: []
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
var previousPoint = makePreviousPoint(context);
|
|
205
|
+
var polygonCount = reader.readVarInt();
|
|
206
|
+
var polygons = [];
|
|
207
|
+
for (var i = 0; i < polygonCount; i++) {
|
|
208
|
+
var ringCount = reader.readVarInt();
|
|
209
|
+
var exteriorPointCount = reader.readVarInt();
|
|
210
|
+
var exteriorRing = [];
|
|
211
|
+
for (var j = 0; j < exteriorPointCount; j++) {
|
|
212
|
+
exteriorRing.push(parseNextPoint(reader, context, previousPoint));
|
|
213
|
+
}
|
|
214
|
+
var polygon = exteriorRing ? [exteriorRing] : [];
|
|
215
|
+
for (var _j = 1; _j < ringCount; _j++) {
|
|
216
|
+
var interiorRing = [];
|
|
217
|
+
var interiorRingLength = reader.readVarInt();
|
|
218
|
+
for (var k = 0; k < interiorRingLength; k++) {
|
|
219
|
+
interiorRing.push(parseNextPoint(reader, context, previousPoint));
|
|
220
|
+
}
|
|
221
|
+
polygon.push(interiorRing);
|
|
222
|
+
}
|
|
223
|
+
polygons.push(polygon);
|
|
224
|
+
}
|
|
225
|
+
return {
|
|
226
|
+
type: 'MultiPolygon',
|
|
227
|
+
coordinates: polygons
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
function parseGeometryCollection(reader, context) {
|
|
231
|
+
return {
|
|
232
|
+
type: 'GeometryCollection',
|
|
233
|
+
geometries: []
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
function zigZagDecode(value) {
|
|
237
|
+
return value >> 1 ^ -(value & 1);
|
|
238
|
+
}
|
|
239
|
+
function makePointCoordinates(x, y, z, m) {
|
|
240
|
+
return z !== undefined ? m !== undefined ? [x, y, z, m] : [x, y, z] : [x, y];
|
|
241
|
+
}
|
|
242
|
+
function makePreviousPoint(context) {
|
|
243
|
+
return makePointCoordinates(0, 0, context.hasZ ? 0 : undefined, context.hasM ? 0 : undefined);
|
|
244
|
+
}
|
|
245
|
+
function readFirstPoint(reader, context) {
|
|
246
|
+
var x = zigZagDecode(reader.readVarInt()) / context.precisionFactor;
|
|
247
|
+
var y = zigZagDecode(reader.readVarInt()) / context.precisionFactor;
|
|
248
|
+
var z = context.hasZ ? zigZagDecode(reader.readVarInt()) / context.zPrecisionFactor : undefined;
|
|
249
|
+
var m = context.hasM ? zigZagDecode(reader.readVarInt()) / context.mPrecisionFactor : undefined;
|
|
250
|
+
return makePointCoordinates(x, y, z, m);
|
|
251
|
+
}
|
|
252
|
+
function parseNextPoint(reader, context, previousPoint) {
|
|
253
|
+
previousPoint[0] += zigZagDecode(reader.readVarInt()) / context.precisionFactor;
|
|
254
|
+
previousPoint[1] += zigZagDecode(reader.readVarInt()) / context.precisionFactor;
|
|
255
|
+
if (context.hasZ) {
|
|
256
|
+
previousPoint[2] += zigZagDecode(reader.readVarInt()) / context.zPrecisionFactor;
|
|
257
|
+
}
|
|
258
|
+
if (context.hasM) {
|
|
259
|
+
previousPoint[3] += zigZagDecode(reader.readVarInt()) / context.mPrecisionFactor;
|
|
260
|
+
}
|
|
261
|
+
return previousPoint.slice();
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=parse-twkb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-twkb.js","names":["_binaryReader","require","_parseWkbHeader","isTWKB","arrayBuffer","binaryReader","BinaryReader","type","readUInt8","geometryType","parseTWKBGeometry","context","parseTWKBHeader","hasSizeAttribute","readVarInt","hasBoundingBox","dimensions","hasZ","hasM","i","parseGeometry","metadataHeader","precision","zigZagDecode","hasExtendedPrecision","Boolean","zPrecision","zPrecisionFactor","mPrecision","mPrecisionFactor","extendedPrecision","Math","pow","precisionFactor","hasIdList","isEmpty","WKBGeometryType","Point","parsePoint","LineString","parseLineString","Polygon","parsePolygon","MultiPoint","parseMultiPoint","MultiLineString","parseMultiLineString","MultiPolygon","parseMultiPolygon","GeometryCollection","parseGeometryCollection","Error","concat","reader","coordinates","readFirstPoint","pointCount","previousPoint","makePreviousPoint","points","push","parseNextPoint","ringCount","exteriorRingLength","exteriorRing","polygon","interiorRingCount","interiorRing","j","lineStringCount","lineString","polygonCount","polygons","exteriorPointCount","interiorRingLength","k","geometries","value","makePointCoordinates","x","y","z","m","undefined","slice"],"sources":["../../../src/lib/parse-twkb.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Forked from https://github.com/cschwarz/wkx under MIT license, Copyright (c) 2013 Christian Schwarz\n\nimport type {Geometry, GeometryCollection} from '@loaders.gl/schema';\nimport type {Point, LineString, Polygon} from '@loaders.gl/schema';\nimport type {MultiPoint, MultiLineString, MultiPolygon} from '@loaders.gl/schema';\nimport {BinaryReader} from './utils/binary-reader';\nimport {WKBGeometryType} from './parse-wkb-header';\n\n/**\n * Check if an array buffer might be a TWKB array buffer\n * @param arrayBuffer The array buffer to check\n * @returns false if this is definitely not a TWKB array buffer, true if it might be a TWKB array buffer\n */\nexport function isTWKB(arrayBuffer: ArrayBuffer): boolean {\n const binaryReader = new BinaryReader(arrayBuffer);\n\n const type = binaryReader.readUInt8();\n const geometryType = type & 0x0f;\n\n // Only geometry types 1 to 7 (point to geometry collection are currently defined)\n if (geometryType < 1 || geometryType > 7) {\n return false;\n }\n\n return true;\n}\n\n/** Passed around between parsing functions, extracted from the header */\ntype TWKBHeader = {\n geometryType: WKBGeometryType;\n\n hasBoundingBox: boolean;\n hasSizeAttribute: boolean;\n hasIdList: boolean;\n hasExtendedPrecision: boolean;\n isEmpty: boolean;\n\n precision: number;\n precisionFactor: number;\n\n hasZ: boolean;\n zPrecision: number;\n zPrecisionFactor: number;\n\n hasM: boolean;\n mPrecision: number;\n mPrecisionFactor: number;\n};\n\nexport function parseTWKBGeometry(arrayBuffer: ArrayBuffer): Geometry {\n const binaryReader = new BinaryReader(arrayBuffer);\n\n const context = parseTWKBHeader(binaryReader);\n\n if (context.hasSizeAttribute) {\n binaryReader.readVarInt();\n }\n\n if (context.hasBoundingBox) {\n let dimensions = 2;\n\n if (context.hasZ) {\n dimensions++;\n }\n if (context.hasM) {\n dimensions++;\n }\n\n // TODO why are we throwing away these datums?\n for (let i = 0; i < dimensions; i++) {\n binaryReader.readVarInt();\n binaryReader.readVarInt();\n }\n }\n\n return parseGeometry(binaryReader, context, context.geometryType);\n}\n\nfunction parseTWKBHeader(binaryReader: BinaryReader): TWKBHeader {\n const type = binaryReader.readUInt8();\n const metadataHeader = binaryReader.readUInt8();\n\n const geometryType = type & 0x0f;\n\n const precision = zigZagDecode(type >> 4);\n\n const hasExtendedPrecision = Boolean((metadataHeader >> 3) & 1);\n let hasZ = false;\n let hasM = false;\n let zPrecision = 0;\n let zPrecisionFactor = 1;\n let mPrecision = 0;\n let mPrecisionFactor = 1;\n\n if (hasExtendedPrecision) {\n const extendedPrecision = binaryReader.readUInt8();\n hasZ = (extendedPrecision & 0x01) === 0x01;\n hasM = (extendedPrecision & 0x02) === 0x02;\n\n zPrecision = zigZagDecode((extendedPrecision & 0x1c) >> 2);\n zPrecisionFactor = Math.pow(10, zPrecision);\n\n mPrecision = zigZagDecode((extendedPrecision & 0xe0) >> 5);\n mPrecisionFactor = Math.pow(10, mPrecision);\n }\n\n return {\n geometryType,\n\n precision,\n precisionFactor: Math.pow(10, precision),\n\n hasBoundingBox: Boolean((metadataHeader >> 0) & 1),\n hasSizeAttribute: Boolean((metadataHeader >> 1) & 1),\n hasIdList: Boolean((metadataHeader >> 2) & 1),\n hasExtendedPrecision,\n isEmpty: Boolean((metadataHeader >> 4) & 1),\n\n hasZ,\n hasM,\n zPrecision,\n zPrecisionFactor,\n mPrecision,\n mPrecisionFactor\n };\n}\n\nfunction parseGeometry(\n binaryReader: BinaryReader,\n context: TWKBHeader,\n geometryType: WKBGeometryType\n): Geometry {\n switch (geometryType) {\n case WKBGeometryType.Point:\n return parsePoint(binaryReader, context);\n case WKBGeometryType.LineString:\n return parseLineString(binaryReader, context);\n case WKBGeometryType.Polygon:\n return parsePolygon(binaryReader, context);\n case WKBGeometryType.MultiPoint:\n return parseMultiPoint(binaryReader, context);\n case WKBGeometryType.MultiLineString:\n return parseMultiLineString(binaryReader, context);\n case WKBGeometryType.MultiPolygon:\n return parseMultiPolygon(binaryReader, context);\n case WKBGeometryType.GeometryCollection:\n return parseGeometryCollection(binaryReader, context);\n default:\n throw new Error(`GeometryType ${geometryType} not supported`);\n }\n}\n\n// GEOMETRIES\n\nfunction parsePoint(reader: BinaryReader, context: TWKBHeader): Point {\n if (context.isEmpty) {\n return {type: 'Point', coordinates: []};\n }\n\n return {type: 'Point', coordinates: readFirstPoint(reader, context)};\n}\n\nfunction parseLineString(reader: BinaryReader, context: TWKBHeader): LineString {\n if (context.isEmpty) {\n return {type: 'LineString', coordinates: []};\n }\n\n const pointCount = reader.readVarInt();\n\n const previousPoint = makePreviousPoint(context);\n\n const points: number[][] = [];\n for (let i = 0; i < pointCount; i++) {\n points.push(parseNextPoint(reader, context, previousPoint));\n }\n\n return {type: 'LineString', coordinates: points};\n}\n\nfunction parsePolygon(reader: BinaryReader, context: TWKBHeader): Polygon {\n if (context.isEmpty) {\n return {type: 'Polygon', coordinates: []};\n }\n\n const ringCount = reader.readVarInt();\n\n const previousPoint = makePreviousPoint(context);\n\n const exteriorRingLength = reader.readVarInt();\n const exteriorRing: number[][] = [];\n\n for (let i = 0; i < exteriorRingLength; i++) {\n exteriorRing.push(parseNextPoint(reader, context, previousPoint));\n }\n\n const polygon: number[][][] = [exteriorRing];\n for (let i = 1; i < ringCount; i++) {\n const interiorRingCount = reader.readVarInt();\n\n const interiorRing: number[][] = [];\n for (let j = 0; j < interiorRingCount; j++) {\n interiorRing.push(parseNextPoint(reader, context, previousPoint));\n }\n\n polygon.push(interiorRing);\n }\n\n return {type: 'Polygon', coordinates: polygon};\n}\n\nfunction parseMultiPoint(reader: BinaryReader, context: TWKBHeader): MultiPoint {\n if (context.isEmpty) {\n return {type: 'MultiPoint', coordinates: []};\n }\n\n const previousPoint = makePreviousPoint(context);\n const pointCount = reader.readVarInt();\n\n const coordinates: number[][] = [];\n for (let i = 0; i < pointCount; i++) {\n coordinates.push(parseNextPoint(reader, context, previousPoint));\n }\n\n return {type: 'MultiPoint', coordinates};\n}\n\nfunction parseMultiLineString(reader: BinaryReader, context: TWKBHeader): MultiLineString {\n if (context.isEmpty) {\n return {type: 'MultiLineString', coordinates: []};\n }\n\n const previousPoint = makePreviousPoint(context);\n const lineStringCount = reader.readVarInt();\n\n const coordinates: number[][][] = [];\n for (let i = 0; i < lineStringCount; i++) {\n const pointCount = reader.readVarInt();\n\n const lineString: number[][] = [];\n for (let j = 0; j < pointCount; j++) {\n lineString.push(parseNextPoint(reader, context, previousPoint));\n }\n\n coordinates.push(lineString);\n }\n\n return {type: 'MultiLineString', coordinates};\n}\n\nfunction parseMultiPolygon(reader: BinaryReader, context: TWKBHeader): MultiPolygon {\n if (context.isEmpty) {\n return {type: 'MultiPolygon', coordinates: []};\n }\n\n const previousPoint = makePreviousPoint(context);\n const polygonCount = reader.readVarInt();\n\n const polygons: number[][][][] = [];\n for (let i = 0; i < polygonCount; i++) {\n const ringCount = reader.readVarInt();\n\n const exteriorPointCount = reader.readVarInt();\n\n const exteriorRing: number[][] = [];\n for (let j = 0; j < exteriorPointCount; j++) {\n exteriorRing.push(parseNextPoint(reader, context, previousPoint));\n }\n\n const polygon: number[][][] = exteriorRing ? [exteriorRing] : [];\n\n for (let j = 1; j < ringCount; j++) {\n const interiorRing: number[][] = [];\n\n const interiorRingLength = reader.readVarInt();\n\n for (let k = 0; k < interiorRingLength; k++) {\n interiorRing.push(parseNextPoint(reader, context, previousPoint));\n }\n\n polygon.push(interiorRing);\n }\n\n polygons.push(polygon);\n }\n\n return {type: 'MultiPolygon', coordinates: polygons};\n}\n\n/** Geometry collection not yet supported */\nfunction parseGeometryCollection(reader: BinaryReader, context: TWKBHeader): GeometryCollection {\n return {type: 'GeometryCollection', geometries: []};\n /**\n if (context.isEmpty) {\n return {type: 'GeometryCollection', geometries: []};\n }\n\n const geometryCount = reader.readVarInt();\n\n const geometries: Geometry[] = new Array(geometryCount);\n for (let i = 0; i < geometryCount; i++) {\n const geometry = parseGeometry(reader, context, geometryType);\n geometries.push(geometry);\n }\n\n return {type: 'GeometryCollection', geometries: []};\n */\n}\n\n// HELPERS\n\n/** \n * Maps negative values to positive values while going back and\n forth (0 = 0, -1 = 1, 1 = 2, -2 = 3, 2 = 4, -3 = 5, 3 = 6 ...)\n */\nfunction zigZagDecode(value: number): number {\n return (value >> 1) ^ -(value & 1);\n}\n\nfunction makePointCoordinates(x: number, y: number, z?: number, m?: number): number[] {\n return (z !== undefined ? (m !== undefined ? [x, y, z, m] : [x, y, z]) : [x, y]) as number[];\n}\n\nfunction makePreviousPoint(context: TWKBHeader): number[] {\n return makePointCoordinates(0, 0, context.hasZ ? 0 : undefined, context.hasM ? 0 : undefined);\n}\n\nfunction readFirstPoint(reader: BinaryReader, context: TWKBHeader): number[] {\n const x = zigZagDecode(reader.readVarInt()) / context.precisionFactor;\n const y = zigZagDecode(reader.readVarInt()) / context.precisionFactor;\n const z = context.hasZ ? zigZagDecode(reader.readVarInt()) / context.zPrecisionFactor : undefined;\n const m = context.hasM ? zigZagDecode(reader.readVarInt()) / context.mPrecisionFactor : undefined;\n return makePointCoordinates(x, y, z, m);\n}\n\n/**\n * Modifies previousPoint\n */\nfunction parseNextPoint(\n reader: BinaryReader,\n context: TWKBHeader,\n previousPoint: number[]\n): number[] {\n previousPoint[0] += zigZagDecode(reader.readVarInt()) / context.precisionFactor;\n previousPoint[1] += zigZagDecode(reader.readVarInt()) / context.precisionFactor;\n\n if (context.hasZ) {\n previousPoint[2] += zigZagDecode(reader.readVarInt()) / context.zPrecisionFactor;\n }\n if (context.hasM) {\n previousPoint[3] += zigZagDecode(reader.readVarInt()) / context.mPrecisionFactor;\n }\n\n // Copy the point\n return previousPoint.slice();\n}\n"],"mappings":";;;;;;;AAMA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAOO,SAASE,MAAMA,CAACC,WAAwB,EAAW;EACxD,IAAMC,YAAY,GAAG,IAAIC,0BAAY,CAACF,WAAW,CAAC;EAElD,IAAMG,IAAI,GAAGF,YAAY,CAACG,SAAS,CAAC,CAAC;EACrC,IAAMC,YAAY,GAAGF,IAAI,GAAG,IAAI;EAGhC,IAAIE,YAAY,GAAG,CAAC,IAAIA,YAAY,GAAG,CAAC,EAAE;IACxC,OAAO,KAAK;EACd;EAEA,OAAO,IAAI;AACb;AAwBO,SAASC,iBAAiBA,CAACN,WAAwB,EAAY;EACpE,IAAMC,YAAY,GAAG,IAAIC,0BAAY,CAACF,WAAW,CAAC;EAElD,IAAMO,OAAO,GAAGC,eAAe,CAACP,YAAY,CAAC;EAE7C,IAAIM,OAAO,CAACE,gBAAgB,EAAE;IAC5BR,YAAY,CAACS,UAAU,CAAC,CAAC;EAC3B;EAEA,IAAIH,OAAO,CAACI,cAAc,EAAE;IAC1B,IAAIC,UAAU,GAAG,CAAC;IAElB,IAAIL,OAAO,CAACM,IAAI,EAAE;MAChBD,UAAU,EAAE;IACd;IACA,IAAIL,OAAO,CAACO,IAAI,EAAE;MAChBF,UAAU,EAAE;IACd;IAGA,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,UAAU,EAAEG,CAAC,EAAE,EAAE;MACnCd,YAAY,CAACS,UAAU,CAAC,CAAC;MACzBT,YAAY,CAACS,UAAU,CAAC,CAAC;IAC3B;EACF;EAEA,OAAOM,aAAa,CAACf,YAAY,EAAEM,OAAO,EAAEA,OAAO,CAACF,YAAY,CAAC;AACnE;AAEA,SAASG,eAAeA,CAACP,YAA0B,EAAc;EAC/D,IAAME,IAAI,GAAGF,YAAY,CAACG,SAAS,CAAC,CAAC;EACrC,IAAMa,cAAc,GAAGhB,YAAY,CAACG,SAAS,CAAC,CAAC;EAE/C,IAAMC,YAAY,GAAGF,IAAI,GAAG,IAAI;EAEhC,IAAMe,SAAS,GAAGC,YAAY,CAAChB,IAAI,IAAI,CAAC,CAAC;EAEzC,IAAMiB,oBAAoB,GAAGC,OAAO,CAAEJ,cAAc,IAAI,CAAC,GAAI,CAAC,CAAC;EAC/D,IAAIJ,IAAI,GAAG,KAAK;EAChB,IAAIC,IAAI,GAAG,KAAK;EAChB,IAAIQ,UAAU,GAAG,CAAC;EAClB,IAAIC,gBAAgB,GAAG,CAAC;EACxB,IAAIC,UAAU,GAAG,CAAC;EAClB,IAAIC,gBAAgB,GAAG,CAAC;EAExB,IAAIL,oBAAoB,EAAE;IACxB,IAAMM,iBAAiB,GAAGzB,YAAY,CAACG,SAAS,CAAC,CAAC;IAClDS,IAAI,GAAG,CAACa,iBAAiB,GAAG,IAAI,MAAM,IAAI;IAC1CZ,IAAI,GAAG,CAACY,iBAAiB,GAAG,IAAI,MAAM,IAAI;IAE1CJ,UAAU,GAAGH,YAAY,CAAC,CAACO,iBAAiB,GAAG,IAAI,KAAK,CAAC,CAAC;IAC1DH,gBAAgB,GAAGI,IAAI,CAACC,GAAG,CAAC,EAAE,EAAEN,UAAU,CAAC;IAE3CE,UAAU,GAAGL,YAAY,CAAC,CAACO,iBAAiB,GAAG,IAAI,KAAK,CAAC,CAAC;IAC1DD,gBAAgB,GAAGE,IAAI,CAACC,GAAG,CAAC,EAAE,EAAEJ,UAAU,CAAC;EAC7C;EAEA,OAAO;IACLnB,YAAY,EAAZA,YAAY;IAEZa,SAAS,EAATA,SAAS;IACTW,eAAe,EAAEF,IAAI,CAACC,GAAG,CAAC,EAAE,EAAEV,SAAS,CAAC;IAExCP,cAAc,EAAEU,OAAO,CAAEJ,cAAc,IAAI,CAAC,GAAI,CAAC,CAAC;IAClDR,gBAAgB,EAAEY,OAAO,CAAEJ,cAAc,IAAI,CAAC,GAAI,CAAC,CAAC;IACpDa,SAAS,EAAET,OAAO,CAAEJ,cAAc,IAAI,CAAC,GAAI,CAAC,CAAC;IAC7CG,oBAAoB,EAApBA,oBAAoB;IACpBW,OAAO,EAAEV,OAAO,CAAEJ,cAAc,IAAI,CAAC,GAAI,CAAC,CAAC;IAE3CJ,IAAI,EAAJA,IAAI;IACJC,IAAI,EAAJA,IAAI;IACJQ,UAAU,EAAVA,UAAU;IACVC,gBAAgB,EAAhBA,gBAAgB;IAChBC,UAAU,EAAVA,UAAU;IACVC,gBAAgB,EAAhBA;EACF,CAAC;AACH;AAEA,SAAST,aAAaA,CACpBf,YAA0B,EAC1BM,OAAmB,EACnBF,YAA6B,EACnB;EACV,QAAQA,YAAY;IAClB,KAAK2B,+BAAe,CAACC,KAAK;MACxB,OAAOC,UAAU,CAACjC,YAAY,EAAEM,OAAO,CAAC;IAC1C,KAAKyB,+BAAe,CAACG,UAAU;MAC7B,OAAOC,eAAe,CAACnC,YAAY,EAAEM,OAAO,CAAC;IAC/C,KAAKyB,+BAAe,CAACK,OAAO;MAC1B,OAAOC,YAAY,CAACrC,YAAY,EAAEM,OAAO,CAAC;IAC5C,KAAKyB,+BAAe,CAACO,UAAU;MAC7B,OAAOC,eAAe,CAACvC,YAAY,EAAEM,OAAO,CAAC;IAC/C,KAAKyB,+BAAe,CAACS,eAAe;MAClC,OAAOC,oBAAoB,CAACzC,YAAY,EAAEM,OAAO,CAAC;IACpD,KAAKyB,+BAAe,CAACW,YAAY;MAC/B,OAAOC,iBAAiB,CAAC3C,YAAY,EAAEM,OAAO,CAAC;IACjD,KAAKyB,+BAAe,CAACa,kBAAkB;MACrC,OAAOC,uBAAuB,CAAC7C,YAAY,EAAEM,OAAO,CAAC;IACvD;MACE,MAAM,IAAIwC,KAAK,iBAAAC,MAAA,CAAiB3C,YAAY,mBAAgB,CAAC;EACjE;AACF;AAIA,SAAS6B,UAAUA,CAACe,MAAoB,EAAE1C,OAAmB,EAAS;EACpE,IAAIA,OAAO,CAACwB,OAAO,EAAE;IACnB,OAAO;MAAC5B,IAAI,EAAE,OAAO;MAAE+C,WAAW,EAAE;IAAE,CAAC;EACzC;EAEA,OAAO;IAAC/C,IAAI,EAAE,OAAO;IAAE+C,WAAW,EAAEC,cAAc,CAACF,MAAM,EAAE1C,OAAO;EAAC,CAAC;AACtE;AAEA,SAAS6B,eAAeA,CAACa,MAAoB,EAAE1C,OAAmB,EAAc;EAC9E,IAAIA,OAAO,CAACwB,OAAO,EAAE;IACnB,OAAO;MAAC5B,IAAI,EAAE,YAAY;MAAE+C,WAAW,EAAE;IAAE,CAAC;EAC9C;EAEA,IAAME,UAAU,GAAGH,MAAM,CAACvC,UAAU,CAAC,CAAC;EAEtC,IAAM2C,aAAa,GAAGC,iBAAiB,CAAC/C,OAAO,CAAC;EAEhD,IAAMgD,MAAkB,GAAG,EAAE;EAC7B,KAAK,IAAIxC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqC,UAAU,EAAErC,CAAC,EAAE,EAAE;IACnCwC,MAAM,CAACC,IAAI,CAACC,cAAc,CAACR,MAAM,EAAE1C,OAAO,EAAE8C,aAAa,CAAC,CAAC;EAC7D;EAEA,OAAO;IAAClD,IAAI,EAAE,YAAY;IAAE+C,WAAW,EAAEK;EAAM,CAAC;AAClD;AAEA,SAASjB,YAAYA,CAACW,MAAoB,EAAE1C,OAAmB,EAAW;EACxE,IAAIA,OAAO,CAACwB,OAAO,EAAE;IACnB,OAAO;MAAC5B,IAAI,EAAE,SAAS;MAAE+C,WAAW,EAAE;IAAE,CAAC;EAC3C;EAEA,IAAMQ,SAAS,GAAGT,MAAM,CAACvC,UAAU,CAAC,CAAC;EAErC,IAAM2C,aAAa,GAAGC,iBAAiB,CAAC/C,OAAO,CAAC;EAEhD,IAAMoD,kBAAkB,GAAGV,MAAM,CAACvC,UAAU,CAAC,CAAC;EAC9C,IAAMkD,YAAwB,GAAG,EAAE;EAEnC,KAAK,IAAI7C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4C,kBAAkB,EAAE5C,CAAC,EAAE,EAAE;IAC3C6C,YAAY,CAACJ,IAAI,CAACC,cAAc,CAACR,MAAM,EAAE1C,OAAO,EAAE8C,aAAa,CAAC,CAAC;EACnE;EAEA,IAAMQ,OAAqB,GAAG,CAACD,YAAY,CAAC;EAC5C,KAAK,IAAI7C,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAG2C,SAAS,EAAE3C,EAAC,EAAE,EAAE;IAClC,IAAM+C,iBAAiB,GAAGb,MAAM,CAACvC,UAAU,CAAC,CAAC;IAE7C,IAAMqD,YAAwB,GAAG,EAAE;IACnC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,iBAAiB,EAAEE,CAAC,EAAE,EAAE;MAC1CD,YAAY,CAACP,IAAI,CAACC,cAAc,CAACR,MAAM,EAAE1C,OAAO,EAAE8C,aAAa,CAAC,CAAC;IACnE;IAEAQ,OAAO,CAACL,IAAI,CAACO,YAAY,CAAC;EAC5B;EAEA,OAAO;IAAC5D,IAAI,EAAE,SAAS;IAAE+C,WAAW,EAAEW;EAAO,CAAC;AAChD;AAEA,SAASrB,eAAeA,CAACS,MAAoB,EAAE1C,OAAmB,EAAc;EAC9E,IAAIA,OAAO,CAACwB,OAAO,EAAE;IACnB,OAAO;MAAC5B,IAAI,EAAE,YAAY;MAAE+C,WAAW,EAAE;IAAE,CAAC;EAC9C;EAEA,IAAMG,aAAa,GAAGC,iBAAiB,CAAC/C,OAAO,CAAC;EAChD,IAAM6C,UAAU,GAAGH,MAAM,CAACvC,UAAU,CAAC,CAAC;EAEtC,IAAMwC,WAAuB,GAAG,EAAE;EAClC,KAAK,IAAInC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqC,UAAU,EAAErC,CAAC,EAAE,EAAE;IACnCmC,WAAW,CAACM,IAAI,CAACC,cAAc,CAACR,MAAM,EAAE1C,OAAO,EAAE8C,aAAa,CAAC,CAAC;EAClE;EAEA,OAAO;IAAClD,IAAI,EAAE,YAAY;IAAE+C,WAAW,EAAXA;EAAW,CAAC;AAC1C;AAEA,SAASR,oBAAoBA,CAACO,MAAoB,EAAE1C,OAAmB,EAAmB;EACxF,IAAIA,OAAO,CAACwB,OAAO,EAAE;IACnB,OAAO;MAAC5B,IAAI,EAAE,iBAAiB;MAAE+C,WAAW,EAAE;IAAE,CAAC;EACnD;EAEA,IAAMG,aAAa,GAAGC,iBAAiB,CAAC/C,OAAO,CAAC;EAChD,IAAM0D,eAAe,GAAGhB,MAAM,CAACvC,UAAU,CAAC,CAAC;EAE3C,IAAMwC,WAAyB,GAAG,EAAE;EACpC,KAAK,IAAInC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkD,eAAe,EAAElD,CAAC,EAAE,EAAE;IACxC,IAAMqC,UAAU,GAAGH,MAAM,CAACvC,UAAU,CAAC,CAAC;IAEtC,IAAMwD,UAAsB,GAAG,EAAE;IACjC,KAAK,IAAIF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGZ,UAAU,EAAEY,CAAC,EAAE,EAAE;MACnCE,UAAU,CAACV,IAAI,CAACC,cAAc,CAACR,MAAM,EAAE1C,OAAO,EAAE8C,aAAa,CAAC,CAAC;IACjE;IAEAH,WAAW,CAACM,IAAI,CAACU,UAAU,CAAC;EAC9B;EAEA,OAAO;IAAC/D,IAAI,EAAE,iBAAiB;IAAE+C,WAAW,EAAXA;EAAW,CAAC;AAC/C;AAEA,SAASN,iBAAiBA,CAACK,MAAoB,EAAE1C,OAAmB,EAAgB;EAClF,IAAIA,OAAO,CAACwB,OAAO,EAAE;IACnB,OAAO;MAAC5B,IAAI,EAAE,cAAc;MAAE+C,WAAW,EAAE;IAAE,CAAC;EAChD;EAEA,IAAMG,aAAa,GAAGC,iBAAiB,CAAC/C,OAAO,CAAC;EAChD,IAAM4D,YAAY,GAAGlB,MAAM,CAACvC,UAAU,CAAC,CAAC;EAExC,IAAM0D,QAAwB,GAAG,EAAE;EACnC,KAAK,IAAIrD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoD,YAAY,EAAEpD,CAAC,EAAE,EAAE;IACrC,IAAM2C,SAAS,GAAGT,MAAM,CAACvC,UAAU,CAAC,CAAC;IAErC,IAAM2D,kBAAkB,GAAGpB,MAAM,CAACvC,UAAU,CAAC,CAAC;IAE9C,IAAMkD,YAAwB,GAAG,EAAE;IACnC,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGK,kBAAkB,EAAEL,CAAC,EAAE,EAAE;MAC3CJ,YAAY,CAACJ,IAAI,CAACC,cAAc,CAACR,MAAM,EAAE1C,OAAO,EAAE8C,aAAa,CAAC,CAAC;IACnE;IAEA,IAAMQ,OAAqB,GAAGD,YAAY,GAAG,CAACA,YAAY,CAAC,GAAG,EAAE;IAEhE,KAAK,IAAII,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAGN,SAAS,EAAEM,EAAC,EAAE,EAAE;MAClC,IAAMD,YAAwB,GAAG,EAAE;MAEnC,IAAMO,kBAAkB,GAAGrB,MAAM,CAACvC,UAAU,CAAC,CAAC;MAE9C,KAAK,IAAI6D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,kBAAkB,EAAEC,CAAC,EAAE,EAAE;QAC3CR,YAAY,CAACP,IAAI,CAACC,cAAc,CAACR,MAAM,EAAE1C,OAAO,EAAE8C,aAAa,CAAC,CAAC;MACnE;MAEAQ,OAAO,CAACL,IAAI,CAACO,YAAY,CAAC;IAC5B;IAEAK,QAAQ,CAACZ,IAAI,CAACK,OAAO,CAAC;EACxB;EAEA,OAAO;IAAC1D,IAAI,EAAE,cAAc;IAAE+C,WAAW,EAAEkB;EAAQ,CAAC;AACtD;AAGA,SAAStB,uBAAuBA,CAACG,MAAoB,EAAE1C,OAAmB,EAAsB;EAC9F,OAAO;IAACJ,IAAI,EAAE,oBAAoB;IAAEqE,UAAU,EAAE;EAAE,CAAC;AAgBrD;AAQA,SAASrD,YAAYA,CAACsD,KAAa,EAAU;EAC3C,OAAQA,KAAK,IAAI,CAAC,GAAI,EAAEA,KAAK,GAAG,CAAC,CAAC;AACpC;AAEA,SAASC,oBAAoBA,CAACC,CAAS,EAAEC,CAAS,EAAEC,CAAU,EAAEC,CAAU,EAAY;EACpF,OAAQD,CAAC,KAAKE,SAAS,GAAID,CAAC,KAAKC,SAAS,GAAG,CAACJ,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC,GAAG,CAACH,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC,GAAI,CAACF,CAAC,EAAEC,CAAC,CAAC;AACjF;AAEA,SAAStB,iBAAiBA,CAAC/C,OAAmB,EAAY;EACxD,OAAOmE,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAEnE,OAAO,CAACM,IAAI,GAAG,CAAC,GAAGkE,SAAS,EAAExE,OAAO,CAACO,IAAI,GAAG,CAAC,GAAGiE,SAAS,CAAC;AAC/F;AAEA,SAAS5B,cAAcA,CAACF,MAAoB,EAAE1C,OAAmB,EAAY;EAC3E,IAAMoE,CAAC,GAAGxD,YAAY,CAAC8B,MAAM,CAACvC,UAAU,CAAC,CAAC,CAAC,GAAGH,OAAO,CAACsB,eAAe;EACrE,IAAM+C,CAAC,GAAGzD,YAAY,CAAC8B,MAAM,CAACvC,UAAU,CAAC,CAAC,CAAC,GAAGH,OAAO,CAACsB,eAAe;EACrE,IAAMgD,CAAC,GAAGtE,OAAO,CAACM,IAAI,GAAGM,YAAY,CAAC8B,MAAM,CAACvC,UAAU,CAAC,CAAC,CAAC,GAAGH,OAAO,CAACgB,gBAAgB,GAAGwD,SAAS;EACjG,IAAMD,CAAC,GAAGvE,OAAO,CAACO,IAAI,GAAGK,YAAY,CAAC8B,MAAM,CAACvC,UAAU,CAAC,CAAC,CAAC,GAAGH,OAAO,CAACkB,gBAAgB,GAAGsD,SAAS;EACjG,OAAOL,oBAAoB,CAACC,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;AACzC;AAKA,SAASrB,cAAcA,CACrBR,MAAoB,EACpB1C,OAAmB,EACnB8C,aAAuB,EACb;EACVA,aAAa,CAAC,CAAC,CAAC,IAAIlC,YAAY,CAAC8B,MAAM,CAACvC,UAAU,CAAC,CAAC,CAAC,GAAGH,OAAO,CAACsB,eAAe;EAC/EwB,aAAa,CAAC,CAAC,CAAC,IAAIlC,YAAY,CAAC8B,MAAM,CAACvC,UAAU,CAAC,CAAC,CAAC,GAAGH,OAAO,CAACsB,eAAe;EAE/E,IAAItB,OAAO,CAACM,IAAI,EAAE;IAChBwC,aAAa,CAAC,CAAC,CAAC,IAAIlC,YAAY,CAAC8B,MAAM,CAACvC,UAAU,CAAC,CAAC,CAAC,GAAGH,OAAO,CAACgB,gBAAgB;EAClF;EACA,IAAIhB,OAAO,CAACO,IAAI,EAAE;IAChBuC,aAAa,CAAC,CAAC,CAAC,IAAIlC,YAAY,CAAC8B,MAAM,CAACvC,UAAU,CAAC,CAAC,CAAC,GAAGH,OAAO,CAACkB,gBAAgB;EAClF;EAGA,OAAO4B,aAAa,CAAC2B,KAAK,CAAC,CAAC;AAC9B"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.WKBGeometryType = void 0;
|
|
7
|
+
exports.isWKB = isWKB;
|
|
8
|
+
exports.parseWKBHeader = parseWKBHeader;
|
|
9
|
+
var EWKB_FLAG_Z = 0x80000000;
|
|
10
|
+
var EWKB_FLAG_M = 0x40000000;
|
|
11
|
+
var EWKB_FLAG_SRID = 0x20000000;
|
|
12
|
+
var MAX_SRID = 10000;
|
|
13
|
+
var WKBGeometryType = function (WKBGeometryType) {
|
|
14
|
+
WKBGeometryType[WKBGeometryType["Point"] = 1] = "Point";
|
|
15
|
+
WKBGeometryType[WKBGeometryType["LineString"] = 2] = "LineString";
|
|
16
|
+
WKBGeometryType[WKBGeometryType["Polygon"] = 3] = "Polygon";
|
|
17
|
+
WKBGeometryType[WKBGeometryType["MultiPoint"] = 4] = "MultiPoint";
|
|
18
|
+
WKBGeometryType[WKBGeometryType["MultiLineString"] = 5] = "MultiLineString";
|
|
19
|
+
WKBGeometryType[WKBGeometryType["MultiPolygon"] = 6] = "MultiPolygon";
|
|
20
|
+
WKBGeometryType[WKBGeometryType["GeometryCollection"] = 7] = "GeometryCollection";
|
|
21
|
+
return WKBGeometryType;
|
|
22
|
+
}({});
|
|
23
|
+
exports.WKBGeometryType = WKBGeometryType;
|
|
24
|
+
function isWKB(arrayBuffer) {
|
|
25
|
+
var dataView = new DataView(arrayBuffer);
|
|
26
|
+
var byteOffset = 0;
|
|
27
|
+
var endianness = dataView.getUint8(byteOffset);
|
|
28
|
+
byteOffset += 1;
|
|
29
|
+
if (endianness > 1) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
var littleEndian = endianness === 1;
|
|
33
|
+
var geometry = dataView.getUint32(byteOffset, littleEndian);
|
|
34
|
+
byteOffset += 4;
|
|
35
|
+
var geometryType = geometry & 0x07;
|
|
36
|
+
if (geometryType === 0 || geometryType > 7) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
var geometryFlags = geometry - geometryType;
|
|
40
|
+
if (geometryFlags === 0 || geometryFlags === 1000 || geometryFlags === 2000 || geometryFlags === 3000) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
if ((geometryFlags & ~(EWKB_FLAG_Z | EWKB_FLAG_M | EWKB_FLAG_SRID)) !== 0) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
if (geometryFlags & EWKB_FLAG_SRID) {
|
|
47
|
+
var srid = dataView.getUint32(byteOffset, littleEndian);
|
|
48
|
+
byteOffset += 4;
|
|
49
|
+
if (srid > MAX_SRID) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
function parseWKBHeader(dataView, target) {
|
|
56
|
+
var wkbHeader = Object.assign(target || {}, {
|
|
57
|
+
type: 'wkb',
|
|
58
|
+
geometryType: 1,
|
|
59
|
+
dimensions: 2,
|
|
60
|
+
coordinates: 'xy',
|
|
61
|
+
littleEndian: true,
|
|
62
|
+
byteOffset: 0
|
|
63
|
+
});
|
|
64
|
+
wkbHeader.littleEndian = dataView.getUint8(wkbHeader.byteOffset) === 1;
|
|
65
|
+
wkbHeader.byteOffset++;
|
|
66
|
+
var geometryCode = dataView.getUint32(wkbHeader.byteOffset, wkbHeader.littleEndian);
|
|
67
|
+
wkbHeader.byteOffset += 4;
|
|
68
|
+
wkbHeader.geometryType = geometryCode & 0x7;
|
|
69
|
+
var isoType = (geometryCode - wkbHeader.geometryType) / 1000;
|
|
70
|
+
switch (isoType) {
|
|
71
|
+
case 0:
|
|
72
|
+
break;
|
|
73
|
+
case 1:
|
|
74
|
+
wkbHeader.type = 'iso-wkb';
|
|
75
|
+
wkbHeader.dimensions = 3;
|
|
76
|
+
wkbHeader.coordinates = 'xyz';
|
|
77
|
+
break;
|
|
78
|
+
case 2:
|
|
79
|
+
wkbHeader.type = 'iso-wkb';
|
|
80
|
+
wkbHeader.dimensions = 3;
|
|
81
|
+
wkbHeader.coordinates = 'xym';
|
|
82
|
+
break;
|
|
83
|
+
case 3:
|
|
84
|
+
wkbHeader.type = 'iso-wkb';
|
|
85
|
+
wkbHeader.dimensions = 4;
|
|
86
|
+
wkbHeader.coordinates = 'xyzm';
|
|
87
|
+
break;
|
|
88
|
+
default:
|
|
89
|
+
throw new Error("WKB: Unsupported iso-wkb type: ".concat(isoType));
|
|
90
|
+
}
|
|
91
|
+
var ewkbZ = geometryCode & EWKB_FLAG_Z;
|
|
92
|
+
var ewkbM = geometryCode & EWKB_FLAG_M;
|
|
93
|
+
var ewkbSRID = geometryCode & EWKB_FLAG_SRID;
|
|
94
|
+
if (ewkbZ && ewkbM) {
|
|
95
|
+
wkbHeader.type = 'ewkb';
|
|
96
|
+
wkbHeader.dimensions = 4;
|
|
97
|
+
wkbHeader.coordinates = 'xyzm';
|
|
98
|
+
} else if (ewkbZ) {
|
|
99
|
+
wkbHeader.type = 'ewkb';
|
|
100
|
+
wkbHeader.dimensions = 3;
|
|
101
|
+
wkbHeader.coordinates = 'xyz';
|
|
102
|
+
} else if (ewkbM) {
|
|
103
|
+
wkbHeader.type = 'ewkb';
|
|
104
|
+
wkbHeader.dimensions = 3;
|
|
105
|
+
wkbHeader.coordinates = 'xym';
|
|
106
|
+
}
|
|
107
|
+
if (ewkbSRID) {
|
|
108
|
+
wkbHeader.type = 'ewkb';
|
|
109
|
+
wkbHeader.srid = dataView.getUint32(wkbHeader.byteOffset, wkbHeader.littleEndian);
|
|
110
|
+
wkbHeader.byteOffset += 4;
|
|
111
|
+
}
|
|
112
|
+
return wkbHeader;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=parse-wkb-header.js.map
|