@loaders.gl/gis 4.3.4 → 4.4.0-alpha.10
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/index.cjs +2411 -469
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +31 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +39 -15
- package/dist/index.js.map +1 -0
- package/dist/lib/binary-geometry-api/binary-geometry-info.d.ts +21 -0
- package/dist/lib/binary-geometry-api/binary-geometry-info.d.ts.map +1 -0
- package/dist/lib/binary-geometry-api/binary-geometry-info.js +49 -0
- package/dist/lib/binary-geometry-api/binary-geometry-info.js.map +1 -0
- package/dist/lib/binary-geometry-api/concat-binary-geometry.d.ts +5 -0
- package/dist/lib/binary-geometry-api/concat-binary-geometry.d.ts.map +1 -0
- package/dist/lib/binary-geometry-api/concat-binary-geometry.js +51 -0
- package/dist/lib/binary-geometry-api/concat-binary-geometry.js.map +1 -0
- package/dist/lib/{binary-features/transform.d.ts → binary-geometry-api/transform-coordinates.d.ts} +1 -2
- package/dist/lib/binary-geometry-api/transform-coordinates.d.ts.map +1 -0
- package/dist/lib/{binary-features/transform.js → binary-geometry-api/transform-coordinates.js} +1 -1
- package/dist/lib/binary-geometry-api/transform-coordinates.js.map +1 -0
- package/dist/lib/feature-collection-converters/convert-binary-features-to-geojson.d.ts +16 -0
- package/dist/lib/feature-collection-converters/convert-binary-features-to-geojson.d.ts.map +1 -0
- package/dist/lib/{binary-features/binary-to-geojson.js → feature-collection-converters/convert-binary-features-to-geojson.js} +4 -90
- package/dist/lib/feature-collection-converters/convert-binary-features-to-geojson.js.map +1 -0
- package/dist/lib/{binary-features/flat-geojson-to-binary.d.ts → feature-collection-converters/convert-flat-geojson-to-binary-features.d.ts} +6 -9
- package/dist/lib/feature-collection-converters/convert-flat-geojson-to-binary-features.d.ts.map +1 -0
- package/dist/lib/{binary-features/flat-geojson-to-binary.js → feature-collection-converters/convert-flat-geojson-to-binary-features.js} +6 -5
- package/dist/lib/feature-collection-converters/convert-flat-geojson-to-binary-features.js.map +1 -0
- package/dist/lib/feature-collection-converters/convert-geoarrow-to-binary-features.d.ts +74 -0
- package/dist/lib/feature-collection-converters/convert-geoarrow-to-binary-features.d.ts.map +1 -0
- package/dist/lib/feature-collection-converters/convert-geoarrow-to-binary-features.js +378 -0
- package/dist/lib/feature-collection-converters/convert-geoarrow-to-binary-features.js.map +1 -0
- package/dist/lib/{binary-features/geojson-to-binary.d.ts → feature-collection-converters/convert-geojson-to-binary-features.d.ts} +2 -2
- package/dist/lib/feature-collection-converters/convert-geojson-to-binary-features.d.ts.map +1 -0
- package/dist/lib/feature-collection-converters/convert-geojson-to-binary-features.js +25 -0
- package/dist/lib/feature-collection-converters/convert-geojson-to-binary-features.js.map +1 -0
- package/dist/lib/{binary-features/geojson-to-flat-geojson.d.ts → feature-collection-converters/convert-geojson-to-flat-geojson.d.ts} +2 -2
- package/dist/lib/feature-collection-converters/convert-geojson-to-flat-geojson.d.ts.map +1 -0
- package/dist/lib/{binary-features/geojson-to-flat-geojson.js → feature-collection-converters/convert-geojson-to-flat-geojson.js} +5 -1
- package/dist/lib/feature-collection-converters/convert-geojson-to-flat-geojson.js.map +1 -0
- package/dist/lib/feature-collection-converters/helpers/flat-geojson-to-binary-types.d.ts.map +1 -0
- package/dist/lib/feature-collection-converters/helpers/flat-geojson-to-binary-types.js +5 -0
- package/dist/lib/feature-collection-converters/helpers/flat-geojson-to-binary-types.js.map +1 -0
- package/dist/lib/geometry-api/geometry-info.d.ts +21 -0
- package/dist/lib/geometry-api/geometry-info.d.ts.map +1 -0
- package/dist/lib/{binary-features/extract-geometry-info.js → geometry-api/geometry-info.js} +5 -1
- package/dist/lib/geometry-api/geometry-info.js.map +1 -0
- package/dist/lib/geometry-converters/convert-binary-geometry-to-geojson.d.ts +4 -0
- package/dist/lib/geometry-converters/convert-binary-geometry-to-geojson.d.ts.map +1 -0
- package/dist/lib/geometry-converters/convert-binary-geometry-to-geojson.js +92 -0
- package/dist/lib/geometry-converters/convert-binary-geometry-to-geojson.js.map +1 -0
- package/dist/lib/geometry-converters/convert-geoarrow-to-geojson.d.ts +13 -0
- package/dist/lib/geometry-converters/convert-geoarrow-to-geojson.d.ts.map +1 -0
- package/dist/lib/geometry-converters/convert-geoarrow-to-geojson.js +165 -0
- package/dist/lib/geometry-converters/convert-geoarrow-to-geojson.js.map +1 -0
- package/dist/lib/geometry-converters/convert-to-geojson.d.ts +6 -0
- package/dist/lib/geometry-converters/convert-to-geojson.d.ts.map +1 -0
- package/dist/lib/geometry-converters/convert-to-geojson.js +40 -0
- package/dist/lib/geometry-converters/convert-to-geojson.js.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-twkb.d.ts +6 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-twkb.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-twkb.js +196 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-twkb.js.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkb.d.ts +9 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkb.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkb.js +274 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkb.js.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkt.d.ts +8 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkt.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkt.js +45 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkt.js.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-twkb-to-geometry.d.ts +10 -0
- package/dist/lib/geometry-converters/wkb/convert-twkb-to-geometry.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-twkb-to-geometry.js +255 -0
- package/dist/lib/geometry-converters/wkb/convert-twkb-to-geometry.js.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.d.ts +3 -0
- package/dist/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.js +165 -0
- package/dist/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.js.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-wkb-to-geometry.d.ts +11 -0
- package/dist/lib/geometry-converters/wkb/convert-wkb-to-geometry.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-wkb-to-geometry.js +10 -0
- package/dist/lib/geometry-converters/wkb/convert-wkb-to-geometry.js.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-wkt-to-geometry.d.ts +16 -0
- package/dist/lib/geometry-converters/wkb/convert-wkt-to-geometry.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-wkt-to-geometry.js +259 -0
- package/dist/lib/geometry-converters/wkb/convert-wkt-to-geometry.js.map +1 -0
- package/dist/lib/geometry-converters/wkb/helpers/parse-wkb-header.d.ts +43 -0
- package/dist/lib/geometry-converters/wkb/helpers/parse-wkb-header.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/helpers/parse-wkb-header.js +175 -0
- package/dist/lib/geometry-converters/wkb/helpers/parse-wkb-header.js.map +1 -0
- package/dist/lib/geometry-converters/wkb/helpers/wkb-types.d.ts +64 -0
- package/dist/lib/geometry-converters/wkb/helpers/wkb-types.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/helpers/wkb-types.js +47 -0
- package/dist/lib/geometry-converters/wkb/helpers/wkb-types.js.map +1 -0
- package/dist/lib/geometry-converters/wkb/helpers/wkb-utils.d.ts +21 -0
- package/dist/lib/geometry-converters/wkb/helpers/wkb-utils.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/helpers/wkb-utils.js +65 -0
- package/dist/lib/geometry-converters/wkb/helpers/wkb-utils.js.map +1 -0
- package/dist/lib/geometry-converters/wkb/helpers/write-wkb-header.d.ts +8 -0
- package/dist/lib/geometry-converters/wkb/helpers/write-wkb-header.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/helpers/write-wkb-header.js +34 -0
- package/dist/lib/geometry-converters/wkb/helpers/write-wkb-header.js.map +1 -0
- package/dist/lib/table-converters/convert-geoarrow-table.d.ts +27 -0
- package/dist/lib/table-converters/convert-geoarrow-table.d.ts.map +1 -0
- package/dist/lib/table-converters/convert-geoarrow-table.js +155 -0
- package/dist/lib/table-converters/convert-geoarrow-table.js.map +1 -0
- package/dist/lib/table-converters/convert-wkb-table-to-geojson.d.ts +4 -0
- package/dist/lib/table-converters/convert-wkb-table-to-geojson.d.ts.map +1 -0
- package/dist/lib/{tables/convert-table-to-geojson.js → table-converters/convert-wkb-table-to-geojson.js} +11 -16
- package/dist/lib/table-converters/convert-wkb-table-to-geojson.js.map +1 -0
- package/dist/lib/table-converters/make-arrow-batch-iterator.d.ts +6 -0
- package/dist/lib/table-converters/make-arrow-batch-iterator.d.ts.map +1 -0
- package/dist/lib/table-converters/make-arrow-batch-iterator.js +36 -0
- package/dist/lib/table-converters/make-arrow-batch-iterator.js.map +1 -0
- package/dist/lib/utils/base64-encoder.d.ts +5 -0
- package/dist/lib/utils/base64-encoder.d.ts.map +1 -0
- package/dist/lib/utils/base64-encoder.js +154 -0
- package/dist/lib/utils/base64-encoder.js.map +1 -0
- package/dist/lib/utils/binary-reader.d.ts +18 -0
- package/dist/lib/utils/binary-reader.d.ts.map +1 -0
- package/dist/lib/utils/binary-reader.js +70 -0
- package/dist/lib/utils/binary-reader.js.map +1 -0
- package/dist/lib/utils/binary-writer.d.ts +30 -0
- package/dist/lib/utils/binary-writer.d.ts.map +1 -0
- package/dist/lib/utils/binary-writer.js +128 -0
- package/dist/lib/utils/binary-writer.js.map +1 -0
- package/dist/lib/utils/concat-typed-arrays.d.ts +3 -0
- package/dist/lib/utils/concat-typed-arrays.d.ts.map +1 -0
- package/dist/lib/utils/concat-typed-arrays.js +19 -0
- package/dist/lib/utils/concat-typed-arrays.js.map +1 -0
- package/dist/lib/utils/hex-encoder.d.ts +15 -0
- package/dist/lib/utils/hex-encoder.d.ts.map +1 -0
- package/dist/lib/utils/hex-encoder.js +55 -0
- package/dist/lib/utils/hex-encoder.js.map +1 -0
- package/dist/lib/utils/hex-transcoder.d.ts +15 -0
- package/dist/lib/utils/hex-transcoder.d.ts.map +1 -0
- package/dist/lib/utils/hex-transcoder.js +51 -0
- package/dist/lib/utils/hex-transcoder.js.map +1 -0
- package/dist/lib/wkt-crs/encode-wkt-crs.d.ts +10 -0
- package/dist/lib/wkt-crs/encode-wkt-crs.d.ts.map +1 -0
- package/dist/lib/wkt-crs/encode-wkt-crs.js +36 -0
- package/dist/lib/wkt-crs/encode-wkt-crs.js.map +1 -0
- package/dist/lib/wkt-crs/parse-wkt-crs.d.ts +15 -0
- package/dist/lib/wkt-crs/parse-wkt-crs.d.ts.map +1 -0
- package/dist/lib/wkt-crs/parse-wkt-crs.js +121 -0
- package/dist/lib/wkt-crs/parse-wkt-crs.js.map +1 -0
- package/package.json +7 -5
- package/src/index.ts +87 -14
- package/src/lib/binary-geometry-api/binary-geometry-info.ts +75 -0
- package/src/lib/binary-geometry-api/concat-binary-geometry.ts +78 -0
- package/src/lib/{binary-features/transform.ts → binary-geometry-api/transform-coordinates.ts} +0 -1
- package/src/lib/{binary-features/binary-to-geojson.ts → feature-collection-converters/convert-binary-features-to-geojson.ts} +5 -142
- package/src/lib/{binary-features/flat-geojson-to-binary.ts → feature-collection-converters/convert-flat-geojson-to-binary-features.ts} +14 -9
- package/src/lib/feature-collection-converters/convert-geoarrow-to-binary-features.ts +496 -0
- package/src/lib/{binary-features/geojson-to-binary.ts → feature-collection-converters/convert-geojson-to-binary-features.ts} +11 -7
- package/src/lib/{binary-features/geojson-to-flat-geojson.ts → feature-collection-converters/convert-geojson-to-flat-geojson.ts} +5 -1
- package/src/lib/{binary-features → feature-collection-converters/helpers}/flat-geojson-to-binary-types.ts +4 -0
- package/src/lib/{binary-features/extract-geometry-info.ts → geometry-api/geometry-info.ts} +20 -2
- package/src/lib/geometry-converters/convert-binary-geometry-to-geojson.ts +148 -0
- package/src/lib/geometry-converters/convert-geoarrow-to-geojson.ts +193 -0
- package/src/lib/geometry-converters/convert-to-geojson.ts +52 -0
- package/src/lib/geometry-converters/wkb/convert-geometry-to-twkb.ts +308 -0
- package/src/lib/geometry-converters/wkb/convert-geometry-to-wkb.ts +365 -0
- package/src/lib/geometry-converters/wkb/convert-geometry-to-wkt.ts +54 -0
- package/src/lib/geometry-converters/wkb/convert-twkb-to-geometry.ts +366 -0
- package/src/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.ts +238 -0
- package/src/lib/geometry-converters/wkb/convert-wkb-to-geometry.ts +23 -0
- package/src/lib/geometry-converters/wkb/convert-wkt-to-geometry.ts +294 -0
- package/src/lib/geometry-converters/wkb/helpers/parse-wkb-header.ts +213 -0
- package/src/lib/geometry-converters/wkb/helpers/wkb-types.ts +82 -0
- package/src/lib/geometry-converters/wkb/helpers/wkb-utils.ts +85 -0
- package/src/lib/geometry-converters/wkb/helpers/write-wkb-header.ts +41 -0
- package/src/lib/table-converters/convert-geoarrow-table.ts +218 -0
- package/src/lib/{tables/convert-table-to-geojson.ts → table-converters/convert-wkb-table-to-geojson.ts} +10 -23
- package/src/lib/table-converters/make-arrow-batch-iterator.ts +53 -0
- package/src/lib/utils/base64-encoder.ts +157 -0
- package/src/lib/utils/binary-reader.ts +76 -0
- package/src/lib/utils/binary-writer.ts +136 -0
- package/src/lib/utils/concat-typed-arrays.ts +24 -0
- package/src/lib/utils/hex-encoder.ts +60 -0
- package/src/lib/utils/hex-transcoder.ts +54 -0
- package/src/lib/wkt-crs/encode-wkt-crs.ts +41 -0
- package/src/lib/wkt-crs/parse-wkt-crs.ts +149 -0
- package/dist/lib/binary-features/binary-to-geojson.d.ts +0 -18
- package/dist/lib/binary-features/binary-to-geojson.d.ts.map +0 -1
- package/dist/lib/binary-features/extract-geometry-info.d.ts +0 -8
- package/dist/lib/binary-features/extract-geometry-info.d.ts.map +0 -1
- package/dist/lib/binary-features/flat-geojson-to-binary-types.d.ts.map +0 -1
- package/dist/lib/binary-features/flat-geojson-to-binary-types.js +0 -1
- package/dist/lib/binary-features/flat-geojson-to-binary.d.ts.map +0 -1
- package/dist/lib/binary-features/geojson-to-binary.d.ts.map +0 -1
- package/dist/lib/binary-features/geojson-to-binary.js +0 -21
- package/dist/lib/binary-features/geojson-to-flat-geojson.d.ts.map +0 -1
- package/dist/lib/binary-features/transform.d.ts.map +0 -1
- package/dist/lib/geo/geoarrow-metadata.d.ts +0 -27
- package/dist/lib/geo/geoarrow-metadata.d.ts.map +0 -1
- package/dist/lib/geo/geoarrow-metadata.js +0 -70
- package/dist/lib/geo/geoparquet-metadata-schema.d.ts +0 -79
- package/dist/lib/geo/geoparquet-metadata-schema.d.ts.map +0 -1
- package/dist/lib/geo/geoparquet-metadata-schema.js +0 -69
- package/dist/lib/geo/geoparquet-metadata.d.ts +0 -45
- package/dist/lib/geo/geoparquet-metadata.d.ts.map +0 -1
- package/dist/lib/geo/geoparquet-metadata.js +0 -117
- package/dist/lib/tables/convert-table-to-geojson.d.ts +0 -5
- package/dist/lib/tables/convert-table-to-geojson.d.ts.map +0 -1
- package/src/lib/geo/geoarrow-metadata.ts +0 -100
- package/src/lib/geo/geoparquet-metadata-schema.json +0 -60
- package/src/lib/geo/geoparquet-metadata-schema.ts +0 -71
- package/src/lib/geo/geoparquet-metadata.ts +0 -191
- /package/dist/lib/{binary-features → feature-collection-converters/helpers}/flat-geojson-to-binary-types.d.ts +0 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { concatenateBinaryPointGeometries, concatenateBinaryLineGeometries, concatenateBinaryPolygonGeometries } from "../../binary-geometry-api/concat-binary-geometry.js";
|
|
5
|
+
import { concatTypedArrays } from "../../utils/concat-typed-arrays.js";
|
|
6
|
+
import { WKBGeometryType } from "./helpers/wkb-types.js";
|
|
7
|
+
import { parseWKBHeader } from "./helpers/parse-wkb-header.js";
|
|
8
|
+
export function convertWKBToBinaryGeometry(arrayBuffer) {
|
|
9
|
+
const dataView = new DataView(arrayBuffer);
|
|
10
|
+
const wkbHeader = parseWKBHeader(dataView);
|
|
11
|
+
const { geometryType, dimensions, littleEndian } = wkbHeader;
|
|
12
|
+
const offset = wkbHeader.byteOffset;
|
|
13
|
+
switch (geometryType) {
|
|
14
|
+
case WKBGeometryType.Point:
|
|
15
|
+
const point = parsePoint(dataView, offset, dimensions, littleEndian);
|
|
16
|
+
return point.geometry;
|
|
17
|
+
case WKBGeometryType.LineString:
|
|
18
|
+
const line = parseLineString(dataView, offset, dimensions, littleEndian);
|
|
19
|
+
return line.geometry;
|
|
20
|
+
case WKBGeometryType.Polygon:
|
|
21
|
+
const polygon = parsePolygon(dataView, offset, dimensions, littleEndian);
|
|
22
|
+
return polygon.geometry;
|
|
23
|
+
case WKBGeometryType.MultiPoint:
|
|
24
|
+
const multiPoint = parseMultiPoint(dataView, offset, dimensions, littleEndian);
|
|
25
|
+
multiPoint.type = 'Point';
|
|
26
|
+
return multiPoint;
|
|
27
|
+
case WKBGeometryType.MultiLineString:
|
|
28
|
+
const multiLine = parseMultiLineString(dataView, offset, dimensions, littleEndian);
|
|
29
|
+
multiLine.type = 'LineString';
|
|
30
|
+
return multiLine;
|
|
31
|
+
case WKBGeometryType.MultiPolygon:
|
|
32
|
+
const multiPolygon = parseMultiPolygon(dataView, offset, dimensions, littleEndian);
|
|
33
|
+
multiPolygon.type = 'Polygon';
|
|
34
|
+
return multiPolygon;
|
|
35
|
+
// case WKBGeometryType.GeometryCollection:
|
|
36
|
+
// TODO: handle GeometryCollections
|
|
37
|
+
// return parseGeometryCollection(dataView, offset, dimensions, littleEndian);
|
|
38
|
+
default:
|
|
39
|
+
throw new Error(`WKB: Unsupported geometry type: ${geometryType}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Primitives; parse point and linear ring
|
|
43
|
+
function parsePoint(dataView, offset, dimension, littleEndian) {
|
|
44
|
+
const positions = new Float64Array(dimension);
|
|
45
|
+
for (let i = 0; i < dimension; i++) {
|
|
46
|
+
positions[i] = dataView.getFloat64(offset, littleEndian);
|
|
47
|
+
offset += 8;
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
geometry: { type: 'Point', positions: { value: positions, size: dimension } },
|
|
51
|
+
offset
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function parseLineString(dataView, offset, dimension, littleEndian) {
|
|
55
|
+
const nPoints = dataView.getUint32(offset, littleEndian);
|
|
56
|
+
offset += 4;
|
|
57
|
+
// Instantiate array
|
|
58
|
+
const positions = new Float64Array(nPoints * dimension);
|
|
59
|
+
for (let i = 0; i < nPoints * dimension; i++) {
|
|
60
|
+
positions[i] = dataView.getFloat64(offset, littleEndian);
|
|
61
|
+
offset += 8;
|
|
62
|
+
}
|
|
63
|
+
const pathIndices = [0];
|
|
64
|
+
if (nPoints > 0) {
|
|
65
|
+
pathIndices.push(nPoints);
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
geometry: {
|
|
69
|
+
type: 'LineString',
|
|
70
|
+
positions: { value: positions, size: dimension },
|
|
71
|
+
pathIndices: { value: new Uint32Array(pathIndices), size: 1 }
|
|
72
|
+
},
|
|
73
|
+
offset
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
// https://stackoverflow.com/a/55261098
|
|
77
|
+
const cumulativeSum = (sum) => (value) => (sum += value);
|
|
78
|
+
function parsePolygon(dataView, offset, dimension, littleEndian) {
|
|
79
|
+
const nRings = dataView.getUint32(offset, littleEndian);
|
|
80
|
+
offset += 4;
|
|
81
|
+
const rings = [];
|
|
82
|
+
for (let i = 0; i < nRings; i++) {
|
|
83
|
+
const parsed = parseLineString(dataView, offset, dimension, littleEndian);
|
|
84
|
+
const { positions } = parsed.geometry;
|
|
85
|
+
offset = parsed.offset;
|
|
86
|
+
rings.push(positions.value);
|
|
87
|
+
}
|
|
88
|
+
const concatenatedPositions = new Float64Array(concatTypedArrays(rings).buffer);
|
|
89
|
+
const polygonIndices = [0];
|
|
90
|
+
if (concatenatedPositions.length > 0) {
|
|
91
|
+
polygonIndices.push(concatenatedPositions.length / dimension);
|
|
92
|
+
}
|
|
93
|
+
const primitivePolygonIndices = rings.map((l) => l.length / dimension).map(cumulativeSum(0));
|
|
94
|
+
primitivePolygonIndices.unshift(0);
|
|
95
|
+
return {
|
|
96
|
+
geometry: {
|
|
97
|
+
type: 'Polygon',
|
|
98
|
+
positions: { value: concatenatedPositions, size: dimension },
|
|
99
|
+
polygonIndices: {
|
|
100
|
+
value: new Uint32Array(polygonIndices),
|
|
101
|
+
size: 1
|
|
102
|
+
},
|
|
103
|
+
primitivePolygonIndices: { value: new Uint32Array(primitivePolygonIndices), size: 1 }
|
|
104
|
+
},
|
|
105
|
+
offset
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function parseMultiPoint(dataView, offset, dimension, littleEndian) {
|
|
109
|
+
const nPoints = dataView.getUint32(offset, littleEndian);
|
|
110
|
+
offset += 4;
|
|
111
|
+
const binaryPointGeometries = [];
|
|
112
|
+
for (let i = 0; i < nPoints; i++) {
|
|
113
|
+
// Byte order for point
|
|
114
|
+
const littleEndianPoint = dataView.getUint8(offset) === 1;
|
|
115
|
+
offset++;
|
|
116
|
+
// Assert point type
|
|
117
|
+
if (dataView.getUint32(offset, littleEndianPoint) % 1000 !== 1) {
|
|
118
|
+
throw new Error('WKB: Inner geometries of MultiPoint not of type Point');
|
|
119
|
+
}
|
|
120
|
+
offset += 4;
|
|
121
|
+
const parsed = parsePoint(dataView, offset, dimension, littleEndianPoint);
|
|
122
|
+
offset = parsed.offset;
|
|
123
|
+
binaryPointGeometries.push(parsed.geometry);
|
|
124
|
+
}
|
|
125
|
+
return concatenateBinaryPointGeometries(binaryPointGeometries, dimension);
|
|
126
|
+
}
|
|
127
|
+
function parseMultiLineString(dataView, offset, dimension, littleEndian) {
|
|
128
|
+
const nLines = dataView.getUint32(offset, littleEndian);
|
|
129
|
+
offset += 4;
|
|
130
|
+
const binaryLineGeometries = [];
|
|
131
|
+
for (let i = 0; i < nLines; i++) {
|
|
132
|
+
// Byte order for line
|
|
133
|
+
const littleEndianLine = dataView.getUint8(offset) === 1;
|
|
134
|
+
offset++;
|
|
135
|
+
// Assert type LineString
|
|
136
|
+
if (dataView.getUint32(offset, littleEndianLine) % 1000 !== 2) {
|
|
137
|
+
throw new Error('WKB: Inner geometries of MultiLineString not of type LineString');
|
|
138
|
+
}
|
|
139
|
+
offset += 4;
|
|
140
|
+
const parsed = parseLineString(dataView, offset, dimension, littleEndianLine);
|
|
141
|
+
offset = parsed.offset;
|
|
142
|
+
binaryLineGeometries.push(parsed.geometry);
|
|
143
|
+
}
|
|
144
|
+
return concatenateBinaryLineGeometries(binaryLineGeometries, dimension);
|
|
145
|
+
}
|
|
146
|
+
function parseMultiPolygon(dataView, offset, dimension, littleEndian) {
|
|
147
|
+
const nPolygons = dataView.getUint32(offset, littleEndian);
|
|
148
|
+
offset += 4;
|
|
149
|
+
const binaryPolygonGeometries = [];
|
|
150
|
+
for (let i = 0; i < nPolygons; i++) {
|
|
151
|
+
// Byte order for polygon
|
|
152
|
+
const littleEndianPolygon = dataView.getUint8(offset) === 1;
|
|
153
|
+
offset++;
|
|
154
|
+
// Assert type Polygon
|
|
155
|
+
if (dataView.getUint32(offset, littleEndianPolygon) % 1000 !== 3) {
|
|
156
|
+
throw new Error('WKB: Inner geometries of MultiPolygon not of type Polygon');
|
|
157
|
+
}
|
|
158
|
+
offset += 4;
|
|
159
|
+
const parsed = parsePolygon(dataView, offset, dimension, littleEndianPolygon);
|
|
160
|
+
offset = parsed.offset;
|
|
161
|
+
binaryPolygonGeometries.push(parsed.geometry);
|
|
162
|
+
}
|
|
163
|
+
return concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension);
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=convert-wkb-to-binary-geometry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-wkb-to-binary-geometry.js","sourceRoot":"","sources":["../../../../src/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Geometry } from '@loaders.gl/schema';
|
|
2
|
+
export type convertWKBOptions = {
|
|
3
|
+
/** Does the GeoJSON input have Z values? */
|
|
4
|
+
hasZ?: boolean;
|
|
5
|
+
/** Does the GeoJSON input have M values? */
|
|
6
|
+
hasM?: boolean;
|
|
7
|
+
/** Spatial reference for input GeoJSON */
|
|
8
|
+
srid?: any;
|
|
9
|
+
};
|
|
10
|
+
export declare function convertWKBToGeometry(arrayBuffer: ArrayBufferLike): Geometry;
|
|
11
|
+
//# sourceMappingURL=convert-wkb-to-geometry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-wkb-to-geometry.d.ts","sourceRoot":"","sources":["../../../../src/lib/geometry-converters/wkb/convert-wkb-to-geometry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAIjD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,0CAA0C;IAC1C,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,eAAe,GAAG,QAAQ,CAG3E"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { convertBinaryGeometryToGeometry } from "../convert-binary-geometry-to-geojson.js";
|
|
5
|
+
import { convertWKBToBinaryGeometry } from "./convert-wkb-to-binary-geometry.js";
|
|
6
|
+
export function convertWKBToGeometry(arrayBuffer) {
|
|
7
|
+
const binaryGeometry = convertWKBToBinaryGeometry(arrayBuffer);
|
|
8
|
+
return convertBinaryGeometryToGeometry(binaryGeometry);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=convert-wkb-to-geometry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-wkb-to-geometry.js","sourceRoot":"","sources":["../../../../src/lib/geometry-converters/wkb/convert-wkb-to-geometry.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,+BAA+B,EAAC,iDAA8C;AACtF,OAAO,EAAC,0BAA0B,EAAC,4CAAyC;AAa5E,MAAM,UAAU,oBAAoB,CAAC,WAA4B;IAC/D,MAAM,cAAc,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;IAC/D,OAAO,+BAA+B,CAAC,cAAc,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Geometry } from '@loaders.gl/schema';
|
|
2
|
+
export type ParseWKTOptions = {
|
|
3
|
+
wkt?: {
|
|
4
|
+
/** Whether to add any CRS, if found, as undocumented CRS property on the return geometry */
|
|
5
|
+
crs?: boolean;
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Parse WKT and return GeoJSON.
|
|
10
|
+
* @param input A WKT geometry string
|
|
11
|
+
* @return A GeoJSON geometry object
|
|
12
|
+
*
|
|
13
|
+
* @note We only support the "geojson" subset of the OGC simple features standard
|
|
14
|
+
**/
|
|
15
|
+
export declare function convertWKTToGeometry(input: string, options?: ParseWKTOptions): Geometry | null;
|
|
16
|
+
//# sourceMappingURL=convert-wkt-to-geometry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-wkt-to-geometry.d.ts","sourceRoot":"","sources":["../../../../src/lib/geometry-converters/wkb/convert-wkt-to-geometry.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AASjD,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,EAAE;QACJ,4FAA4F;QAC5F,GAAG,CAAC,EAAE,OAAO,CAAC;KACf,CAAC;CACH,CAAC;AASF;;;;;;IAMI;AACJ,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,QAAQ,GAAG,IAAI,CAU9F"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
// Fork of https://github.com/mapbox/wellknown under ISC license (MIT/BSD-2-clause equivalent)
|
|
5
|
+
/* eslint-disable */
|
|
6
|
+
// @ts-nocheck
|
|
7
|
+
const numberRegexp = /[-+]?([0-9]*\.[0-9]+|[0-9]+)([eE][-+]?[0-9]+)?/;
|
|
8
|
+
// Matches sequences like '100 100' or '100 100 100'.
|
|
9
|
+
const tuples = new RegExp('^' + numberRegexp.source + '(\\s' + numberRegexp.source + '){1,}');
|
|
10
|
+
/**
|
|
11
|
+
* Parse WKT and return GeoJSON.
|
|
12
|
+
* @param input A WKT geometry string
|
|
13
|
+
* @return A GeoJSON geometry object
|
|
14
|
+
*
|
|
15
|
+
* @note We only support the "geojson" subset of the OGC simple features standard
|
|
16
|
+
**/
|
|
17
|
+
export function convertWKTToGeometry(input, options) {
|
|
18
|
+
const parts = input.split(';');
|
|
19
|
+
let _ = parts.pop();
|
|
20
|
+
const srid = (parts.shift() || '').split('=').pop();
|
|
21
|
+
const state = { parts, _, i: 0 };
|
|
22
|
+
const geometry = parseGeometry(state);
|
|
23
|
+
return options?.wkt?.crs ? addCRS(geometry, srid) : geometry;
|
|
24
|
+
}
|
|
25
|
+
function parseGeometry(state) {
|
|
26
|
+
return (parsePoint(state) ||
|
|
27
|
+
parseLineString(state) ||
|
|
28
|
+
parsePolygon(state) ||
|
|
29
|
+
parseMultiPoint(state) ||
|
|
30
|
+
parseMultiLineString(state) ||
|
|
31
|
+
parseMultiPolygon(state) ||
|
|
32
|
+
parseGeometryCollection(state));
|
|
33
|
+
}
|
|
34
|
+
/** Adds a coordinate reference system as an undocumented */
|
|
35
|
+
function addCRS(obj, srid) {
|
|
36
|
+
if (obj && srid?.match(/\d+/)) {
|
|
37
|
+
const crs = {
|
|
38
|
+
type: 'name',
|
|
39
|
+
properties: {
|
|
40
|
+
name: 'urn:ogc:def:crs:EPSG::' + srid
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
// @ts-expect-error we assign an undocumented property on the geometry
|
|
44
|
+
obj.crs = crs;
|
|
45
|
+
}
|
|
46
|
+
return obj;
|
|
47
|
+
}
|
|
48
|
+
// GEOMETRIES
|
|
49
|
+
function parsePoint(state) {
|
|
50
|
+
if (!$(/^(POINT(\sz)?)/i, state)) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
white(state);
|
|
54
|
+
if (!$(/^(\()/, state)) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
const c = coords(state);
|
|
58
|
+
if (!c) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
white(state);
|
|
62
|
+
if (!$(/^(\))/, state)) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
type: 'Point',
|
|
67
|
+
coordinates: c[0]
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function parseMultiPoint(state) {
|
|
71
|
+
if (!$(/^(MULTIPOINT)/i, state)) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
white(state);
|
|
75
|
+
const newCoordsFormat = state._?.substring(state._?.indexOf('(') + 1, state._.length - 1)
|
|
76
|
+
.replace(/\(/g, '')
|
|
77
|
+
.replace(/\)/g, '');
|
|
78
|
+
state._ = 'MULTIPOINT (' + newCoordsFormat + ')';
|
|
79
|
+
const c = multicoords(state);
|
|
80
|
+
if (!c) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
white(state);
|
|
84
|
+
return {
|
|
85
|
+
type: 'MultiPoint',
|
|
86
|
+
coordinates: c
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function parseLineString(state) {
|
|
90
|
+
if (!$(/^(LINESTRING(\sz)?)/i, state)) {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
white(state);
|
|
94
|
+
if (!$(/^(\()/, state)) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
const c = coords(state);
|
|
98
|
+
if (!c) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
if (!$(/^(\))/, state)) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
type: 'LineString',
|
|
106
|
+
coordinates: c
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function parseMultiLineString(state) {
|
|
110
|
+
if (!$(/^(MULTILINESTRING)/i, state))
|
|
111
|
+
return null;
|
|
112
|
+
white(state);
|
|
113
|
+
const c = multicoords(state);
|
|
114
|
+
if (!c) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
white(state);
|
|
118
|
+
return {
|
|
119
|
+
// @ts-ignore
|
|
120
|
+
type: 'MultiLineString',
|
|
121
|
+
// @ts-expect-error
|
|
122
|
+
coordinates: c
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
function parsePolygon(state) {
|
|
126
|
+
if (!$(/^(POLYGON(\sz)?)/i, state)) {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
white(state);
|
|
130
|
+
const c = multicoords(state);
|
|
131
|
+
if (!c) {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
// @ts-ignore
|
|
136
|
+
type: 'Polygon',
|
|
137
|
+
// @ts-expect-error
|
|
138
|
+
coordinates: c
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
function parseMultiPolygon(state) {
|
|
142
|
+
if (!$(/^(MULTIPOLYGON)/i, state)) {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
white(state);
|
|
146
|
+
const c = multicoords(state);
|
|
147
|
+
if (!c) {
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
return {
|
|
151
|
+
type: 'MultiPolygon',
|
|
152
|
+
// @ts-expect-error
|
|
153
|
+
coordinates: c
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function parseGeometryCollection(state) {
|
|
157
|
+
const geometries = [];
|
|
158
|
+
let geometry;
|
|
159
|
+
if (!$(/^(GEOMETRYCOLLECTION)/i, state)) {
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
white(state);
|
|
163
|
+
if (!$(/^(\()/, state)) {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
while ((geometry = parseGeometry(state))) {
|
|
167
|
+
geometries.push(geometry);
|
|
168
|
+
white(state);
|
|
169
|
+
$(/^(,)/, state);
|
|
170
|
+
white(state);
|
|
171
|
+
}
|
|
172
|
+
if (!$(/^(\))/, state)) {
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
return {
|
|
176
|
+
type: 'GeometryCollection',
|
|
177
|
+
geometries: geometries
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
// COORDINATES
|
|
181
|
+
function multicoords(state) {
|
|
182
|
+
white(state);
|
|
183
|
+
let depth = 0;
|
|
184
|
+
const rings = [];
|
|
185
|
+
const stack = [rings];
|
|
186
|
+
let pointer = rings;
|
|
187
|
+
let elem;
|
|
188
|
+
while ((elem = $(/^(\()/, state) || $(/^(\))/, state) || $(/^(,)/, state) || $(tuples, state))) {
|
|
189
|
+
if (elem === '(') {
|
|
190
|
+
stack.push(pointer);
|
|
191
|
+
pointer = [];
|
|
192
|
+
stack[stack.length - 1].push(pointer);
|
|
193
|
+
depth++;
|
|
194
|
+
}
|
|
195
|
+
else if (elem === ')') {
|
|
196
|
+
// For the case: Polygon(), ...
|
|
197
|
+
if (pointer.length === 0)
|
|
198
|
+
return null;
|
|
199
|
+
// @ts-ignore
|
|
200
|
+
pointer = stack.pop();
|
|
201
|
+
// the stack was empty, input was malformed
|
|
202
|
+
if (!pointer)
|
|
203
|
+
return null;
|
|
204
|
+
depth--;
|
|
205
|
+
if (depth === 0)
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
else if (elem === ',') {
|
|
209
|
+
pointer = [];
|
|
210
|
+
stack[stack.length - 1].push(pointer);
|
|
211
|
+
}
|
|
212
|
+
else if (!elem.split(/\s/g).some(isNaN)) {
|
|
213
|
+
Array.prototype.push.apply(pointer, elem.split(/\s/g).map(parseFloat));
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
white(state);
|
|
219
|
+
}
|
|
220
|
+
if (depth !== 0)
|
|
221
|
+
return null;
|
|
222
|
+
return rings;
|
|
223
|
+
}
|
|
224
|
+
function coords(state) {
|
|
225
|
+
const list = [];
|
|
226
|
+
let item;
|
|
227
|
+
let pt;
|
|
228
|
+
while ((pt = $(tuples, state) || $(/^(,)/, state))) {
|
|
229
|
+
if (pt === ',') {
|
|
230
|
+
list.push(item);
|
|
231
|
+
item = [];
|
|
232
|
+
}
|
|
233
|
+
else if (!pt.split(/\s/g).some(isNaN)) {
|
|
234
|
+
if (!item)
|
|
235
|
+
item = [];
|
|
236
|
+
Array.prototype.push.apply(item, pt.split(/\s/g).map(parseFloat));
|
|
237
|
+
}
|
|
238
|
+
white(state);
|
|
239
|
+
}
|
|
240
|
+
if (item)
|
|
241
|
+
list.push(item);
|
|
242
|
+
else
|
|
243
|
+
return null;
|
|
244
|
+
return list.length ? list : null;
|
|
245
|
+
}
|
|
246
|
+
// HELPERS
|
|
247
|
+
function $(regexp, state) {
|
|
248
|
+
const match = state._?.substring(state.i).match(regexp);
|
|
249
|
+
if (!match)
|
|
250
|
+
return null;
|
|
251
|
+
else {
|
|
252
|
+
state.i += match[0].length;
|
|
253
|
+
return match[0];
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
function white(state) {
|
|
257
|
+
$(/^\s*/, state);
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=convert-wkt-to-geometry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-wkt-to-geometry.js","sourceRoot":"","sources":["../../../../src/lib/geometry-converters/wkb/convert-wkt-to-geometry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { WKBGeometryType, WKBHeader } from "./wkb-types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Check if a string is WKT.
|
|
4
|
+
* @param input A potential WKT geometry string
|
|
5
|
+
* @return `true` if input appears to be a WKT geometry string, `false` otherwise
|
|
6
|
+
|
|
7
|
+
* @note We only support the "geojson" subset of the OGC simple features standard
|
|
8
|
+
* @todo Does not handle leading spaces which appear to be permitted per the spec:
|
|
9
|
+
* "A WKT string contains no white space outside of double quotes.
|
|
10
|
+
* However padding with white space to improve human readability is permitted;
|
|
11
|
+
* the examples of WKT that are included in this document have
|
|
12
|
+
* spaces and line feeds inserted to improve clarity. Any padding is stripped out or ignored by parsers."
|
|
13
|
+
*/
|
|
14
|
+
export declare function isWKT(input: string | ArrayBufferLike): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Get the geometry type of a WKT string.
|
|
17
|
+
* @param input A potential WKT geometry string
|
|
18
|
+
* @return `true` if input appears to be a WKT geometry string, `false` otherwise
|
|
19
|
+
|
|
20
|
+
* @note We only support the "geojson" subset of the OGC simple features standard
|
|
21
|
+
* @todo Does not handle leading spaces which appear to be permitted per the spec:
|
|
22
|
+
* "A WKT string contains no white space outside of double quotes.
|
|
23
|
+
* However padding with white space to improve human readability is permitted;
|
|
24
|
+
* the examples of WKT that are included in this document have
|
|
25
|
+
* spaces and line feeds inserted to improve clarity. Any padding is stripped out or ignored by parsers."
|
|
26
|
+
*/
|
|
27
|
+
export declare function getWKTGeometryType(input: string | ArrayBufferLike): WKBGeometryType | null;
|
|
28
|
+
/**
|
|
29
|
+
* Check if an array buffer might be a TWKB array buffer
|
|
30
|
+
* @param arrayBuffer The array buffer to check
|
|
31
|
+
* @returns false if this is definitely not a TWKB array buffer, true if it might be a TWKB array buffer
|
|
32
|
+
*/
|
|
33
|
+
export declare function isTWKB(arrayBuffer: ArrayBufferLike): boolean;
|
|
34
|
+
/** Sanity checks that first to 5-9 bytes could represent a supported WKB dialect header */
|
|
35
|
+
export declare function isWKB(arrayBuffer: ArrayBufferLike): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Parses header and provides a byteOffset to start of geometry data
|
|
38
|
+
* @param dataView
|
|
39
|
+
* @param target optionally supply a WKBHeader object to avoid creating a new object for every call
|
|
40
|
+
* @returns a header object describing the WKB data
|
|
41
|
+
*/
|
|
42
|
+
export declare function parseWKBHeader(dataView: DataView, target?: WKBHeader): WKBHeader;
|
|
43
|
+
//# sourceMappingURL=parse-wkb-header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-wkb-header.d.ts","sourceRoot":"","sources":["../../../../../src/lib/geometry-converters/wkb/helpers/parse-wkb-header.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,eAAe,EAAE,SAAS,EAAC,uBAAoB;AAU5D;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,OAAO,CAE9D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,IAAI,CAU1F;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAa5D;AAED,2FAA2F;AAC3F,wBAAgB,KAAK,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAkD3D;AAED;;;;;GAKG;AAEH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CA8EhF"}
|