@loaders.gl/parquet 4.4.2 → 5.0.0-alpha.1
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/bundled.d.ts +6 -0
- package/dist/bundled.d.ts.map +1 -0
- package/dist/bundled.js +7 -0
- package/dist/bundled.js.map +1 -0
- package/dist/geoparquet-loader-with-parser.d.ts +34 -0
- package/dist/geoparquet-loader-with-parser.d.ts.map +1 -0
- package/dist/geoparquet-loader-with-parser.js +52 -0
- package/dist/geoparquet-loader-with-parser.js.map +1 -0
- package/dist/geoparquet-loader.d.ts +61 -0
- package/dist/geoparquet-loader.d.ts.map +1 -0
- package/dist/geoparquet-loader.js +30 -0
- package/dist/geoparquet-loader.js.map +1 -0
- package/dist/index.cjs +5879 -5643
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -11
- package/dist/index.js.map +1 -1
- package/dist/lib/constants.d.ts +1 -1
- package/dist/lib/constants.js +2 -2
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/encoders/encode-arrow-to-parquet.d.ts +2 -2
- package/dist/lib/encoders/encode-arrow-to-parquet.d.ts.map +1 -1
- package/dist/lib/encoders/encode-arrow-to-parquet.js +3 -10
- package/dist/lib/encoders/encode-arrow-to-parquet.js.map +1 -1
- package/dist/lib/encoders/encode-table-to-parquet-js.d.ts +5 -0
- package/dist/lib/encoders/encode-table-to-parquet-js.d.ts.map +1 -0
- package/dist/lib/encoders/encode-table-to-parquet-js.js +149 -0
- package/dist/lib/encoders/encode-table-to-parquet-js.js.map +1 -0
- package/dist/lib/geo/geospatial-metadata.d.ts +67 -0
- package/dist/lib/geo/geospatial-metadata.d.ts.map +1 -0
- package/dist/lib/geo/geospatial-metadata.js +357 -0
- package/dist/lib/geo/geospatial-metadata.js.map +1 -0
- package/dist/lib/parsers/get-parquet-schema.d.ts.map +1 -1
- package/dist/lib/parsers/get-parquet-schema.js +3 -1
- package/dist/lib/parsers/get-parquet-schema.js.map +1 -1
- package/dist/lib/parsers/parse-geoparquet-to-geojson.d.ts +4 -4
- package/dist/lib/parsers/parse-geoparquet-to-geojson.d.ts.map +1 -1
- package/dist/lib/parsers/parse-geoparquet-to-geojson.js +19 -6
- package/dist/lib/parsers/parse-geoparquet-to-geojson.js.map +1 -1
- package/dist/lib/parsers/parse-parquet-tables.d.ts +50 -0
- package/dist/lib/parsers/parse-parquet-tables.d.ts.map +1 -0
- package/dist/lib/parsers/parse-parquet-tables.js +101 -0
- package/dist/lib/parsers/parse-parquet-tables.js.map +1 -0
- package/dist/lib/parsers/parse-parquet-to-arrow-js.d.ts +6 -0
- package/dist/lib/parsers/parse-parquet-to-arrow-js.d.ts.map +1 -0
- package/dist/lib/parsers/parse-parquet-to-arrow-js.js +23 -0
- package/dist/lib/parsers/parse-parquet-to-arrow-js.js.map +1 -0
- package/dist/lib/parsers/parse-parquet-to-arrow.d.ts +7 -7
- package/dist/lib/parsers/parse-parquet-to-arrow.d.ts.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-arrow.js +45 -32
- package/dist/lib/parsers/parse-parquet-to-arrow.js.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-columns.d.ts +3 -3
- package/dist/lib/parsers/parse-parquet-to-columns.d.ts.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-columns.js +1 -4
- package/dist/lib/parsers/parse-parquet-to-columns.js.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-json.d.ts +3 -3
- package/dist/lib/parsers/parse-parquet-to-json.d.ts.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-json.js +77 -26
- package/dist/lib/parsers/parse-parquet-to-json.js.map +1 -1
- package/dist/lib/utils/load-wasm.d.ts +2 -2
- package/dist/lib/utils/load-wasm.d.ts.map +1 -1
- package/dist/lib/utils/load-wasm.js +7 -7
- package/dist/lib/utils/load-wasm.js.map +1 -1
- package/dist/lib/utils/make-stream-iterator.js +1 -1
- package/dist/lib/utils/make-stream-iterator.js.map +1 -1
- package/dist/lib/utils/normalize-parquet-options.d.ts +5 -0
- package/dist/lib/utils/normalize-parquet-options.d.ts.map +1 -0
- package/dist/lib/utils/normalize-parquet-options.js +11 -0
- package/dist/lib/utils/normalize-parquet-options.js.map +1 -0
- package/dist/parquet-format.d.ts +2 -0
- package/dist/parquet-format.d.ts.map +1 -1
- package/dist/parquet-format.js +2 -0
- package/dist/parquet-format.js.map +1 -1
- package/dist/parquet-js-loader.d.ts +57 -0
- package/dist/parquet-js-loader.d.ts.map +1 -0
- package/dist/parquet-js-loader.js +33 -0
- package/dist/parquet-js-loader.js.map +1 -0
- package/dist/parquet-js-writer.d.ts +34 -0
- package/dist/parquet-js-writer.d.ts.map +1 -0
- package/dist/parquet-js-writer.js +28 -0
- package/dist/parquet-js-writer.js.map +1 -0
- package/dist/parquet-loader-options.d.ts +56 -0
- package/dist/parquet-loader-options.d.ts.map +1 -0
- package/dist/parquet-loader-options.js +11 -0
- package/dist/parquet-loader-options.js.map +1 -0
- package/dist/parquet-loader-with-parser.d.ts +33 -0
- package/dist/parquet-loader-with-parser.d.ts.map +1 -0
- package/dist/parquet-loader-with-parser.js +40 -0
- package/dist/parquet-loader-with-parser.js.map +1 -0
- package/dist/parquet-loader.d.ts +62 -0
- package/dist/parquet-loader.d.ts.map +1 -0
- package/dist/parquet-loader.js +53 -0
- package/dist/parquet-loader.js.map +1 -0
- package/dist/parquet-wasm-loader-with-parser.d.ts +40 -0
- package/dist/parquet-wasm-loader-with-parser.d.ts.map +1 -0
- package/dist/parquet-wasm-loader-with-parser.js +68 -0
- package/dist/parquet-wasm-loader-with-parser.js.map +1 -0
- package/dist/parquet-writer.d.ts +10 -0
- package/dist/parquet-writer.d.ts.map +1 -0
- package/dist/parquet-writer.js +29 -0
- package/dist/parquet-writer.js.map +1 -0
- package/dist/parquet_wasm_bg.wasm +0 -0
- package/dist/parquetjs/codecs/declare.d.ts +2 -2
- package/dist/parquetjs/codecs/declare.d.ts.map +1 -1
- package/dist/parquetjs/codecs/dictionary.js +1 -1
- package/dist/parquetjs/codecs/dictionary.js.map +1 -1
- package/dist/parquetjs/codecs/plain.d.ts +1 -1
- package/dist/parquetjs/codecs/plain.d.ts.map +1 -1
- package/dist/parquetjs/codecs/plain.js +36 -41
- package/dist/parquetjs/codecs/plain.js.map +1 -1
- package/dist/parquetjs/codecs/rle.d.ts +1 -1
- package/dist/parquetjs/codecs/rle.d.ts.map +1 -1
- package/dist/parquetjs/codecs/rle.js +16 -21
- package/dist/parquetjs/codecs/rle.js.map +1 -1
- package/dist/parquetjs/compression.d.ts +2 -3
- package/dist/parquetjs/compression.d.ts.map +1 -1
- package/dist/parquetjs/compression.js +4 -105
- package/dist/parquetjs/compression.js.map +1 -1
- package/dist/parquetjs/encoder/parquet-encoder.d.ts +4 -4
- package/dist/parquetjs/encoder/parquet-encoder.d.ts.map +1 -1
- package/dist/parquetjs/encoder/parquet-encoder.js +38 -33
- package/dist/parquetjs/encoder/parquet-encoder.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnIndex.js +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnIndex.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/index.d.ts +0 -1
- package/dist/parquetjs/parquet-thrift/index.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/index.js +0 -1
- package/dist/parquetjs/parquet-thrift/index.js.map +1 -1
- package/dist/parquetjs/parser/decoders.d.ts +1 -1
- package/dist/parquetjs/parser/decoders.d.ts.map +1 -1
- package/dist/parquetjs/parser/decoders.js +4 -22
- package/dist/parquetjs/parser/decoders.js.map +1 -1
- package/dist/parquetjs/parser/parquet-reader.d.ts +1 -1
- package/dist/parquetjs/parser/parquet-reader.d.ts.map +1 -1
- package/dist/parquetjs/parser/parquet-reader.js +9 -9
- package/dist/parquetjs/parser/parquet-reader.js.map +1 -1
- package/dist/parquetjs/schema/declare.d.ts +1 -1
- package/dist/parquetjs/schema/declare.d.ts.map +1 -1
- package/dist/parquetjs/schema/types.d.ts.map +1 -1
- package/dist/parquetjs/schema/types.js +36 -35
- package/dist/parquetjs/schema/types.js.map +1 -1
- package/dist/parquetjs/utils/binary-utils.d.ts +39 -0
- package/dist/parquetjs/utils/binary-utils.d.ts.map +1 -0
- package/dist/parquetjs/utils/binary-utils.js +102 -0
- package/dist/parquetjs/utils/binary-utils.js.map +1 -0
- package/dist/parquetjs/utils/file-utils.d.ts +1 -1
- package/dist/parquetjs/utils/file-utils.d.ts.map +1 -1
- package/dist/parquetjs/utils/file-utils.js +3 -3
- package/dist/parquetjs/utils/file-utils.js.map +1 -1
- package/dist/parquetjs/utils/read-utils.d.ts +4 -4
- package/dist/parquetjs/utils/read-utils.d.ts.map +1 -1
- package/dist/parquetjs/utils/read-utils.js +12 -17
- package/dist/parquetjs/utils/read-utils.js.map +1 -1
- package/dist/parquetjs/utils/uint8-array-compact-protocol-writer.d.ts +78 -0
- package/dist/parquetjs/utils/uint8-array-compact-protocol-writer.d.ts.map +1 -0
- package/dist/parquetjs/utils/uint8-array-compact-protocol-writer.js +213 -0
- package/dist/parquetjs/utils/uint8-array-compact-protocol-writer.js.map +1 -0
- package/dist/parquetjs/utils/uint8-array-compact-protocol.d.ts +78 -0
- package/dist/parquetjs/utils/uint8-array-compact-protocol.d.ts.map +1 -0
- package/dist/parquetjs/utils/uint8-array-compact-protocol.js +276 -0
- package/dist/parquetjs/utils/uint8-array-compact-protocol.js.map +1 -0
- package/dist/parquetjs/utils/uint8-array-transport.d.ts +25 -0
- package/dist/parquetjs/utils/uint8-array-transport.d.ts.map +1 -0
- package/dist/parquetjs/utils/uint8-array-transport.js +62 -0
- package/dist/parquetjs/utils/uint8-array-transport.js.map +1 -0
- package/dist/unbundled.d.ts +6 -0
- package/dist/unbundled.d.ts.map +1 -0
- package/dist/unbundled.js +7 -0
- package/dist/unbundled.js.map +1 -0
- package/package.json +21 -25
- package/src/bundled.ts +9 -0
- package/src/geoparquet-loader-with-parser.ts +95 -0
- package/src/geoparquet-loader.ts +54 -0
- package/src/index.ts +7 -25
- package/src/lib/constants.ts +1 -1
- package/src/lib/encoders/encode-arrow-to-parquet.ts +9 -15
- package/src/lib/encoders/encode-table-to-parquet-js.ts +199 -0
- package/src/lib/geo/geospatial-metadata.ts +507 -0
- package/src/lib/parsers/get-parquet-schema.ts +3 -1
- package/src/lib/parsers/parse-geoparquet-to-geojson.ts +27 -14
- package/src/lib/parsers/parse-parquet-tables.ts +137 -0
- package/src/lib/parsers/parse-parquet-to-arrow-js.ts +36 -0
- package/src/lib/parsers/parse-parquet-to-arrow.ts +63 -36
- package/src/lib/parsers/parse-parquet-to-columns.ts +6 -7
- package/src/lib/parsers/parse-parquet-to-json.ts +101 -33
- package/src/lib/utils/load-wasm.ts +16 -9
- package/src/lib/utils/make-stream-iterator.ts +1 -1
- package/src/lib/utils/normalize-parquet-options.ts +14 -0
- package/src/parquet-format.ts +2 -0
- package/src/parquet-js-loader.ts +43 -0
- package/src/parquet-js-writer.ts +52 -0
- package/src/parquet-loader-options.ts +63 -0
- package/src/parquet-loader-with-parser.ts +68 -0
- package/src/parquet-loader.ts +79 -0
- package/src/parquet-wasm-loader-with-parser.ts +115 -0
- package/src/parquet-writer.ts +44 -0
- package/src/parquetjs/codecs/declare.ts +2 -2
- package/src/parquetjs/codecs/dictionary.ts +1 -1
- package/src/parquetjs/codecs/plain.ts +67 -53
- package/src/parquetjs/codecs/rle.ts +20 -26
- package/src/parquetjs/compression.ts +7 -114
- package/src/parquetjs/encoder/parquet-encoder.ts +49 -43
- package/src/parquetjs/parquet-thrift/ColumnIndex.ts +1 -1
- package/src/parquetjs/parquet-thrift/index.ts +0 -2
- package/src/parquetjs/parser/decoders.ts +5 -23
- package/src/parquetjs/parser/parquet-reader.ts +10 -12
- package/src/parquetjs/schema/declare.ts +1 -1
- package/src/parquetjs/schema/types.ts +48 -40
- package/src/parquetjs/utils/binary-utils.ts +127 -0
- package/src/parquetjs/utils/file-utils.ts +4 -4
- package/src/parquetjs/utils/read-utils.ts +19 -34
- package/src/parquetjs/utils/uint8-array-compact-protocol-writer.ts +254 -0
- package/src/parquetjs/utils/uint8-array-compact-protocol.ts +322 -0
- package/src/parquetjs/utils/uint8-array-transport.ts +79 -0
- package/src/unbundled.ts +9 -0
- package/dist/parquet-arrow-loader.d.ts +0 -43
- package/dist/parquet-arrow-loader.d.ts.map +0 -1
- package/dist/parquet-arrow-loader.js +0 -49
- package/dist/parquet-arrow-loader.js.map +0 -1
- package/dist/parquet-arrow-writer.d.ts +0 -9
- package/dist/parquet-arrow-writer.d.ts.map +0 -1
- package/dist/parquet-arrow-writer.js +0 -23
- package/dist/parquet-arrow-writer.js.map +0 -1
- package/dist/parquet-json-loader.d.ts +0 -148
- package/dist/parquet-json-loader.d.ts.map +0 -1
- package/dist/parquet-json-loader.js +0 -106
- package/dist/parquet-json-loader.js.map +0 -1
- package/dist/parquet-json-writer.d.ts +0 -19
- package/dist/parquet-json-writer.d.ts.map +0 -1
- package/dist/parquet-json-writer.js +0 -20
- package/dist/parquet-json-writer.js.map +0 -1
- package/dist/polyfills/buffer/buffer-polyfill.browser.d.ts +0 -3
- package/dist/polyfills/buffer/buffer-polyfill.browser.d.ts.map +0 -1
- package/dist/polyfills/buffer/buffer-polyfill.browser.js +0 -12
- package/dist/polyfills/buffer/buffer-polyfill.browser.js.map +0 -1
- package/dist/polyfills/buffer/buffer-polyfill.node.d.ts +0 -3
- package/dist/polyfills/buffer/buffer-polyfill.node.d.ts.map +0 -1
- package/dist/polyfills/buffer/buffer-polyfill.node.js +0 -17
- package/dist/polyfills/buffer/buffer-polyfill.node.js.map +0 -1
- package/dist/polyfills/buffer/buffer.d.ts +0 -222
- package/dist/polyfills/buffer/buffer.d.ts.map +0 -1
- package/dist/polyfills/buffer/buffer.js +0 -1868
- package/dist/polyfills/buffer/buffer.js.map +0 -1
- package/dist/polyfills/buffer/index.d.ts +0 -4
- package/dist/polyfills/buffer/index.d.ts.map +0 -1
- package/dist/polyfills/buffer/index.js +0 -9
- package/dist/polyfills/buffer/index.js.map +0 -1
- package/dist/polyfills/buffer/install-buffer-polyfill.d.ts +0 -2
- package/dist/polyfills/buffer/install-buffer-polyfill.d.ts.map +0 -1
- package/dist/polyfills/buffer/install-buffer-polyfill.js +0 -10
- package/dist/polyfills/buffer/install-buffer-polyfill.js.map +0 -1
- package/dist/workers/parquet-json-worker.d.ts +0 -2
- package/dist/workers/parquet-json-worker.d.ts.map +0 -1
- package/dist/workers/parquet-json-worker.js +0 -7
- package/dist/workers/parquet-json-worker.js.map +0 -1
- package/src/parquet-arrow-loader.ts +0 -74
- package/src/parquet-arrow-writer.ts +0 -33
- package/src/parquet-json-loader.ts +0 -160
- package/src/parquet-json-writer.ts +0 -27
- package/src/parquetjs/modules.d.ts +0 -25
- package/src/polyfills/buffer/buffer-polyfill.browser.ts +0 -14
- package/src/polyfills/buffer/buffer-polyfill.node.ts +0 -19
- package/src/polyfills/buffer/buffer.ts +0 -2205
- package/src/polyfills/buffer/index.ts +0 -11
- package/src/polyfills/buffer/install-buffer-polyfill.ts +0 -12
- package/src/workers/parquet-json-worker.ts +0 -8
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import * as arrow from 'apache-arrow';
|
|
5
|
+
import { getGeoMetadata, getMetadataValue, setGeoMetadata, setMetadataValue } from '@loaders.gl/gis';
|
|
6
|
+
import { convertArrowToSchema } from '@loaders.gl/schema-utils';
|
|
7
|
+
const GEOARROW_EXTENSION_NAME_KEY = 'ARROW:extension:name';
|
|
8
|
+
const GEOARROW_EXTENSION_METADATA_KEY = 'ARROW:extension:metadata';
|
|
9
|
+
const GEOPARQUET_VERSION = '1.1.0';
|
|
10
|
+
const GEOARROW_ENCODINGS = [
|
|
11
|
+
'geoarrow.geometry',
|
|
12
|
+
'geoarrow.geometrycollection',
|
|
13
|
+
'geoarrow.multipolygon',
|
|
14
|
+
'geoarrow.polygon',
|
|
15
|
+
'geoarrow.multilinestring',
|
|
16
|
+
'geoarrow.linestring',
|
|
17
|
+
'geoarrow.multipoint',
|
|
18
|
+
'geoarrow.point',
|
|
19
|
+
'geoarrow.wkb',
|
|
20
|
+
'geoarrow.wkt'
|
|
21
|
+
];
|
|
22
|
+
const GEOPARQUET_TO_GEOARROW_ENCODINGS = {
|
|
23
|
+
wkb: 'geoarrow.wkb',
|
|
24
|
+
point: 'geoarrow.point',
|
|
25
|
+
linestring: 'geoarrow.linestring',
|
|
26
|
+
polygon: 'geoarrow.polygon',
|
|
27
|
+
multipoint: 'geoarrow.multipoint',
|
|
28
|
+
multilinestring: 'geoarrow.multilinestring',
|
|
29
|
+
multipolygon: 'geoarrow.multipolygon'
|
|
30
|
+
};
|
|
31
|
+
const GEOARROW_TO_GEOPARQUET_ENCODINGS = {
|
|
32
|
+
'geoarrow.wkb': 'wkb',
|
|
33
|
+
'geoarrow.point': 'point',
|
|
34
|
+
'geoarrow.linestring': 'linestring',
|
|
35
|
+
'geoarrow.polygon': 'polygon',
|
|
36
|
+
'geoarrow.multipoint': 'multipoint',
|
|
37
|
+
'geoarrow.multilinestring': 'multilinestring',
|
|
38
|
+
'geoarrow.multipolygon': 'multipolygon'
|
|
39
|
+
};
|
|
40
|
+
const GEOARROW_TO_GEOMETRY_TYPE = {
|
|
41
|
+
'geoarrow.point': 'Point',
|
|
42
|
+
'geoarrow.linestring': 'LineString',
|
|
43
|
+
'geoarrow.polygon': 'Polygon',
|
|
44
|
+
'geoarrow.multipoint': 'MultiPoint',
|
|
45
|
+
'geoarrow.multilinestring': 'MultiLineString',
|
|
46
|
+
'geoarrow.multipolygon': 'MultiPolygon'
|
|
47
|
+
};
|
|
48
|
+
/** Returns GeoArrow geometry field metadata keyed by column name. */
|
|
49
|
+
function getGeometryColumnsFromSchema(schema) {
|
|
50
|
+
const geometryColumns = {};
|
|
51
|
+
for (const field of schema.fields || []) {
|
|
52
|
+
const metadata = getGeometryMetadataForField(field.metadata || {});
|
|
53
|
+
if (metadata) {
|
|
54
|
+
geometryColumns[field.name] = metadata;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return geometryColumns;
|
|
58
|
+
}
|
|
59
|
+
/** Extracts GeoArrow metadata from one schema field metadata object. */
|
|
60
|
+
function getGeometryMetadataForField(fieldMetadata) {
|
|
61
|
+
let metadata = null;
|
|
62
|
+
let geoEncoding = getMetadataValue(fieldMetadata, GEOARROW_EXTENSION_NAME_KEY);
|
|
63
|
+
if (geoEncoding) {
|
|
64
|
+
geoEncoding = geoEncoding.toLowerCase();
|
|
65
|
+
if (geoEncoding === 'wkb') {
|
|
66
|
+
geoEncoding = 'geoarrow.wkb';
|
|
67
|
+
}
|
|
68
|
+
if (geoEncoding === 'wkt') {
|
|
69
|
+
geoEncoding = 'geoarrow.wkt';
|
|
70
|
+
}
|
|
71
|
+
if (GEOARROW_ENCODINGS.includes(geoEncoding)) {
|
|
72
|
+
metadata ||= {};
|
|
73
|
+
metadata.encoding = geoEncoding;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const columnMetadata = getMetadataValue(fieldMetadata, GEOARROW_EXTENSION_METADATA_KEY);
|
|
77
|
+
if (columnMetadata) {
|
|
78
|
+
try {
|
|
79
|
+
metadata = {
|
|
80
|
+
...(metadata || {}),
|
|
81
|
+
...JSON.parse(columnMetadata)
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return metadata;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return metadata;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Applies GeoParquet schema metadata to matching geometry fields as GeoArrow field metadata.
|
|
92
|
+
*
|
|
93
|
+
* @param schema - Schema to annotate.
|
|
94
|
+
* @returns The same schema reference.
|
|
95
|
+
*/
|
|
96
|
+
export function applyGeoParquetToFieldMetadata(schema) {
|
|
97
|
+
const geoMetadata = getGeoMetadata(schema.metadata);
|
|
98
|
+
if (!geoMetadata) {
|
|
99
|
+
return schema;
|
|
100
|
+
}
|
|
101
|
+
for (const field of schema.fields) {
|
|
102
|
+
const columnMetadata = geoMetadata.columns?.[field.name];
|
|
103
|
+
if (!columnMetadata) {
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
const fieldMetadata = getGeoArrowMetadataFromGeoParquetField(field, columnMetadata);
|
|
107
|
+
if (!fieldMetadata) {
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
field.metadata ||= {};
|
|
111
|
+
setMetadataValue(field.metadata, GEOARROW_EXTENSION_NAME_KEY, fieldMetadata.extensionName);
|
|
112
|
+
if (fieldMetadata.extensionMetadata) {
|
|
113
|
+
setMetadataValue(field.metadata, GEOARROW_EXTENSION_METADATA_KEY, JSON.stringify(fieldMetadata.extensionMetadata));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return schema;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Creates an Arrow JS table whose schema metadata matches a loaders.gl schema.
|
|
120
|
+
*
|
|
121
|
+
* @param table - Arrow JS table to rewrap.
|
|
122
|
+
* @param schema - loaders.gl schema containing desired field/schema metadata.
|
|
123
|
+
* @returns Table using the updated Arrow JS schema.
|
|
124
|
+
*/
|
|
125
|
+
export function applyLoadersSchemaToArrowTable(table, schema) {
|
|
126
|
+
const arrowSchema = createArrowJsSchema(table.schema, schema);
|
|
127
|
+
return new arrow.Table(arrowSchema, table.batches);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Normalizes an Arrow wrapper so GeoParquet metadata is preserved and GeoArrow field metadata is attached.
|
|
131
|
+
*
|
|
132
|
+
* @param arrowTable - loaders.gl Arrow table wrapper.
|
|
133
|
+
* @param schemaMetadata - Optional schema metadata override from the Parquet footer.
|
|
134
|
+
* @returns Arrow table wrapper with synchronized schema metadata.
|
|
135
|
+
*/
|
|
136
|
+
export function normalizeArrowTableGeoMetadata(arrowTable, schemaMetadata) {
|
|
137
|
+
const schema = convertArrowToSchema(arrowTable.data.schema);
|
|
138
|
+
mergeSchemaMetadata(schema, schemaMetadata);
|
|
139
|
+
applyGeoParquetToFieldMetadata(schema);
|
|
140
|
+
return {
|
|
141
|
+
shape: 'arrow-table',
|
|
142
|
+
data: applyLoadersSchemaToArrowTable(arrowTable.data, schema),
|
|
143
|
+
schema
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Synthesizes GeoParquet schema metadata from GeoArrow field metadata when needed.
|
|
148
|
+
*
|
|
149
|
+
* @param schema - Schema to inspect and update.
|
|
150
|
+
* @returns The same schema reference.
|
|
151
|
+
*/
|
|
152
|
+
export function ensureGeoParquetMetadata(schema) {
|
|
153
|
+
schema.metadata ||= {};
|
|
154
|
+
const rawExistingGeoMetadata = getGeoMetadata(schema.metadata);
|
|
155
|
+
if (isValidGeoParquetMetadata(rawExistingGeoMetadata)) {
|
|
156
|
+
return schema;
|
|
157
|
+
}
|
|
158
|
+
const existingGeoMetadata = rawExistingGeoMetadata || undefined;
|
|
159
|
+
const geometryColumns = getGeometryColumnsFromSchema(schema);
|
|
160
|
+
const geometryColumnNames = Object.keys(geometryColumns);
|
|
161
|
+
if (geometryColumnNames.length === 0) {
|
|
162
|
+
return schema;
|
|
163
|
+
}
|
|
164
|
+
const geoMetadata = {
|
|
165
|
+
version: GEOPARQUET_VERSION,
|
|
166
|
+
primary_column: geometryColumnNames[0],
|
|
167
|
+
columns: {}
|
|
168
|
+
};
|
|
169
|
+
for (const geometryColumnName of geometryColumnNames) {
|
|
170
|
+
const geometryMetadata = geometryColumns[geometryColumnName];
|
|
171
|
+
const synthesizedColumnMetadata = synthesizeGeoParquetColumnMetadata(geometryMetadata);
|
|
172
|
+
if (!synthesizedColumnMetadata) {
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
const existingColumnMetadata = existingGeoMetadata?.columns?.[geometryColumnName];
|
|
176
|
+
geoMetadata.columns[geometryColumnName] = {
|
|
177
|
+
...pickValidOptionalGeoParquetColumnMetadata(existingColumnMetadata),
|
|
178
|
+
...synthesizedColumnMetadata
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
if (Object.keys(geoMetadata.columns).length === 0) {
|
|
182
|
+
return schema;
|
|
183
|
+
}
|
|
184
|
+
setGeoMetadata(schema.metadata, geoMetadata);
|
|
185
|
+
return schema;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Ensures an Arrow table wrapper carries valid GeoParquet schema metadata when GeoArrow fields are present.
|
|
189
|
+
*
|
|
190
|
+
* @param arrowTable - Arrow table wrapper to inspect and update.
|
|
191
|
+
* @returns Updated Arrow table wrapper.
|
|
192
|
+
*/
|
|
193
|
+
export function ensureGeoParquetMetadataOnArrowTable(arrowTable) {
|
|
194
|
+
const schema = arrowTable.schema || convertArrowToSchema(arrowTable.data.schema);
|
|
195
|
+
ensureGeoParquetMetadata(schema);
|
|
196
|
+
return {
|
|
197
|
+
shape: 'arrow-table',
|
|
198
|
+
data: applyLoadersSchemaToArrowTable(arrowTable.data, schema),
|
|
199
|
+
schema
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Returns Parquet file key/value metadata as a plain map.
|
|
204
|
+
*
|
|
205
|
+
* @param parquetMetadata - parquet-wasm metadata object.
|
|
206
|
+
* @returns Metadata map.
|
|
207
|
+
*/
|
|
208
|
+
export function getParquetFileMetadataMap(parquetMetadata) {
|
|
209
|
+
return parquetMetadata.fileMetadata().keyValueMetadata();
|
|
210
|
+
}
|
|
211
|
+
function mergeSchemaMetadata(schema, schemaMetadata) {
|
|
212
|
+
if (!schemaMetadata) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
schema.metadata ||= {};
|
|
216
|
+
for (const [metadataKey, metadataValue] of getMetadataEntries(schemaMetadata)) {
|
|
217
|
+
setMetadataValue(schema.metadata, metadataKey, metadataValue);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
function createArrowJsSchema(baseSchema, schema) {
|
|
221
|
+
const fields = baseSchema.fields.map(baseField => {
|
|
222
|
+
const nextField = schema.fields.find(field => field.name === baseField.name);
|
|
223
|
+
if (!nextField?.metadata) {
|
|
224
|
+
return baseField;
|
|
225
|
+
}
|
|
226
|
+
return baseField.clone({
|
|
227
|
+
metadata: createMetadataMap(nextField.metadata)
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
return new arrow.Schema(fields, createMetadataMap(schema.metadata), baseSchema.dictionaries, baseSchema.metadataVersion);
|
|
231
|
+
}
|
|
232
|
+
function getGeoArrowMetadataFromGeoParquetField(field, columnMetadata) {
|
|
233
|
+
const normalizedEncoding = String(columnMetadata.encoding || '').toLowerCase();
|
|
234
|
+
const extensionName = GEOPARQUET_TO_GEOARROW_ENCODINGS[normalizedEncoding];
|
|
235
|
+
if (!extensionName) {
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
if (normalizedEncoding === 'wkb' && field.type !== 'binary') {
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
if (normalizedEncoding !== 'wkb' && (field.type === 'binary' || field.type === 'utf8')) {
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
const extensionMetadata = {};
|
|
245
|
+
if (columnMetadata.crs !== undefined) {
|
|
246
|
+
extensionMetadata.crs = columnMetadata.crs;
|
|
247
|
+
}
|
|
248
|
+
if (columnMetadata.crs_type !== undefined) {
|
|
249
|
+
extensionMetadata.crs_type = columnMetadata.crs_type;
|
|
250
|
+
}
|
|
251
|
+
if (columnMetadata.edges === 'spherical') {
|
|
252
|
+
extensionMetadata.edges = 'spherical';
|
|
253
|
+
}
|
|
254
|
+
return Object.keys(extensionMetadata).length > 0
|
|
255
|
+
? { extensionName, extensionMetadata }
|
|
256
|
+
: { extensionName };
|
|
257
|
+
}
|
|
258
|
+
function isValidGeoParquetMetadata(geoMetadata) {
|
|
259
|
+
if (!geoMetadata || typeof geoMetadata !== 'object') {
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
if (typeof geoMetadata.version !== 'string' ||
|
|
263
|
+
typeof geoMetadata.primary_column !== 'string' ||
|
|
264
|
+
!geoMetadata.columns ||
|
|
265
|
+
typeof geoMetadata.columns !== 'object') {
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
const primaryColumnMetadata = geoMetadata.columns[geoMetadata.primary_column];
|
|
269
|
+
if (!primaryColumnMetadata) {
|
|
270
|
+
return false;
|
|
271
|
+
}
|
|
272
|
+
return Object.values(geoMetadata.columns).every(isValidGeoParquetColumnMetadata);
|
|
273
|
+
}
|
|
274
|
+
function isValidGeoParquetColumnMetadata(columnMetadata) {
|
|
275
|
+
if (!columnMetadata || typeof columnMetadata !== 'object') {
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
const { encoding, geometry_types } = columnMetadata;
|
|
279
|
+
return (typeof encoding === 'string' &&
|
|
280
|
+
Boolean(GEOPARQUET_TO_GEOARROW_ENCODINGS[encoding.toLowerCase()]) &&
|
|
281
|
+
Array.isArray(geometry_types));
|
|
282
|
+
}
|
|
283
|
+
function synthesizeGeoParquetColumnMetadata(geometryMetadata) {
|
|
284
|
+
const encoding = geometryMetadata.encoding
|
|
285
|
+
? GEOARROW_TO_GEOPARQUET_ENCODINGS[geometryMetadata.encoding]
|
|
286
|
+
: null;
|
|
287
|
+
if (!encoding) {
|
|
288
|
+
return null;
|
|
289
|
+
}
|
|
290
|
+
const geometryTypes = Array.isArray(geometryMetadata.geometry_types)
|
|
291
|
+
? geometryMetadata.geometry_types
|
|
292
|
+
: inferGeometryTypesFromGeoArrowEncoding(geometryMetadata.encoding);
|
|
293
|
+
const columnMetadata = {
|
|
294
|
+
encoding,
|
|
295
|
+
geometry_types: geometryTypes
|
|
296
|
+
};
|
|
297
|
+
if (geometryMetadata.crs !== undefined) {
|
|
298
|
+
columnMetadata.crs = geometryMetadata.crs;
|
|
299
|
+
}
|
|
300
|
+
if (geometryMetadata.crs_type !== undefined) {
|
|
301
|
+
columnMetadata.crs_type = geometryMetadata.crs_type;
|
|
302
|
+
}
|
|
303
|
+
if (geometryMetadata.edges === 'spherical') {
|
|
304
|
+
columnMetadata.edges = 'spherical';
|
|
305
|
+
}
|
|
306
|
+
return columnMetadata;
|
|
307
|
+
}
|
|
308
|
+
function inferGeometryTypesFromGeoArrowEncoding(encoding) {
|
|
309
|
+
const geometryType = encoding
|
|
310
|
+
? GEOARROW_TO_GEOMETRY_TYPE[encoding]
|
|
311
|
+
: null;
|
|
312
|
+
return geometryType ? [geometryType] : [];
|
|
313
|
+
}
|
|
314
|
+
function pickValidOptionalGeoParquetColumnMetadata(columnMetadata) {
|
|
315
|
+
if (!columnMetadata) {
|
|
316
|
+
return {};
|
|
317
|
+
}
|
|
318
|
+
const nextColumnMetadata = {};
|
|
319
|
+
if (columnMetadata.orientation === 'counterclockwise') {
|
|
320
|
+
nextColumnMetadata.orientation = columnMetadata.orientation;
|
|
321
|
+
}
|
|
322
|
+
if (isValidBBox(columnMetadata.bbox)) {
|
|
323
|
+
nextColumnMetadata.bbox = columnMetadata.bbox;
|
|
324
|
+
}
|
|
325
|
+
if (typeof columnMetadata.epoch === 'number' && Number.isFinite(columnMetadata.epoch)) {
|
|
326
|
+
nextColumnMetadata.epoch = columnMetadata.epoch;
|
|
327
|
+
}
|
|
328
|
+
if (columnMetadata.covering && typeof columnMetadata.covering === 'object') {
|
|
329
|
+
nextColumnMetadata.covering = columnMetadata.covering;
|
|
330
|
+
}
|
|
331
|
+
return nextColumnMetadata;
|
|
332
|
+
}
|
|
333
|
+
function isValidBBox(bbox) {
|
|
334
|
+
if (!Array.isArray(bbox) || (bbox.length !== 4 && bbox.length !== 6)) {
|
|
335
|
+
return false;
|
|
336
|
+
}
|
|
337
|
+
return bbox.every(value => typeof value === 'number' && Number.isFinite(value));
|
|
338
|
+
}
|
|
339
|
+
function getMetadataEntries(metadata) {
|
|
340
|
+
if (metadata instanceof Map) {
|
|
341
|
+
return [...metadata.entries()];
|
|
342
|
+
}
|
|
343
|
+
return Object.entries(metadata);
|
|
344
|
+
}
|
|
345
|
+
function createMetadataMap(metadata) {
|
|
346
|
+
if (!metadata) {
|
|
347
|
+
return new Map();
|
|
348
|
+
}
|
|
349
|
+
if (metadata instanceof Map) {
|
|
350
|
+
return new Map(metadata);
|
|
351
|
+
}
|
|
352
|
+
return new Map(Object.entries(metadata).map(([metadataKey, metadataValue]) => [
|
|
353
|
+
metadataKey,
|
|
354
|
+
String(metadataValue)
|
|
355
|
+
]));
|
|
356
|
+
}
|
|
357
|
+
//# sourceMappingURL=geospatial-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geospatial-metadata.js","sourceRoot":"","sources":["../../../src/lib/geo/geospatial-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-parquet-schema.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/get-parquet-schema.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAC;AAE1C,OAAO,EAAC,aAAa,EAAC,iDAA8C;
|
|
1
|
+
{"version":3,"file":"get-parquet-schema.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/get-parquet-schema.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAC;AAE1C,OAAO,EAAC,aAAa,EAAC,iDAA8C;AAIpE,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAQvF"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
// loaders.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
-
import { unpackGeoMetadata, unpackJSONStringMetadata } from '@loaders.gl/
|
|
4
|
+
import { unpackGeoMetadata, unpackJSONStringMetadata } from '@loaders.gl/gis';
|
|
5
5
|
import { convertParquetSchema } from "../arrow/convert-schema-from-parquet.js";
|
|
6
|
+
import { applyGeoParquetToFieldMetadata } from "../geo/geospatial-metadata.js";
|
|
6
7
|
export async function getSchemaFromParquetReader(reader) {
|
|
7
8
|
const parquetSchema = await reader.getSchema();
|
|
8
9
|
const parquetMetadata = await reader.getFileMetadata();
|
|
9
10
|
const schema = convertParquetSchema(parquetSchema, parquetMetadata);
|
|
11
|
+
applyGeoParquetToFieldMetadata(schema);
|
|
10
12
|
unpackGeoMetadata(schema.metadata);
|
|
11
13
|
unpackJSONStringMetadata(schema.metadata, 'pandas');
|
|
12
14
|
return schema;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-parquet-schema.js","sourceRoot":"","sources":["../../../src/lib/parsers/get-parquet-schema.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,iBAAiB,EAAE,wBAAwB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"get-parquet-schema.js","sourceRoot":"","sources":["../../../src/lib/parsers/get-parquet-schema.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,iBAAiB,EAAE,wBAAwB,EAAC,MAAM,iBAAiB,CAAC;AAE5E,OAAO,EAAC,oBAAoB,EAAC,gDAA6C;AAC1E,OAAO,EAAC,8BAA8B,EAAC,sCAAmC;AAE1E,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,MAAqB;IACpE,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;IAC/C,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,oBAAoB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;IACpE,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ReadableFile } from '@loaders.gl/loader-utils';
|
|
2
|
-
import type { GeoJSONTable, GeoJSONTableBatch
|
|
3
|
-
import type {
|
|
4
|
-
export declare function parseGeoParquetFile(file: ReadableFile, options?:
|
|
5
|
-
export declare function parseGeoParquetFileInBatches(file: ReadableFile, options?:
|
|
2
|
+
import type { GeoJSONTable, GeoJSONTableBatch } from '@loaders.gl/schema';
|
|
3
|
+
import type { ParquetLoaderOptions } from "../../parquet-loader-options.js";
|
|
4
|
+
export declare function parseGeoParquetFile(file: ReadableFile, options?: ParquetLoaderOptions): Promise<GeoJSONTable>;
|
|
5
|
+
export declare function parseGeoParquetFileInBatches(file: ReadableFile, options?: ParquetLoaderOptions): AsyncIterable<GeoJSONTableBatch>;
|
|
6
6
|
//# sourceMappingURL=parse-geoparquet-to-geojson.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-geoparquet-to-geojson.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-geoparquet-to-geojson.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,
|
|
1
|
+
{"version":3,"file":"parse-geoparquet-to-geojson.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-geoparquet-to-geojson.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EAGlB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,KAAK,EAAC,oBAAoB,EAAC,wCAAqC;AAGvE,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,YAAY,CAAC,CAIvB;AAED,wBAAuB,4BAA4B,CACjD,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,aAAa,CAAC,iBAAiB,CAAC,CAMlC"}
|
|
@@ -2,16 +2,29 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
import { convertWKBTableToGeoJSON } from '@loaders.gl/gis';
|
|
5
|
-
import {
|
|
5
|
+
import { convertArrowToTable } from '@loaders.gl/schema-utils';
|
|
6
|
+
import { parseParquetArrowTable, parseParquetArrowTableInBatches } from "./parse-parquet-tables.js";
|
|
6
7
|
export async function parseGeoParquetFile(file, options) {
|
|
7
|
-
const
|
|
8
|
-
|
|
8
|
+
const arrowTable = await parseParquetArrowTable(file, options || {});
|
|
9
|
+
const objectRowTable = convertArrowToTable(arrowTable.data, 'object-row-table');
|
|
10
|
+
return convertWKBTableToGeoJSON(objectRowTable, objectRowTable.schema);
|
|
9
11
|
}
|
|
10
12
|
export async function* parseGeoParquetFileInBatches(file, options) {
|
|
11
|
-
const tableBatches =
|
|
13
|
+
const tableBatches = parseParquetArrowTableInBatches(file, options || {});
|
|
12
14
|
for await (const batch of tableBatches) {
|
|
13
|
-
|
|
14
|
-
yield { ...batch, ...geojson };
|
|
15
|
+
yield convertGeoParquetArrowBatch(batch);
|
|
15
16
|
}
|
|
16
17
|
}
|
|
18
|
+
function convertGeoParquetArrowBatch(batch) {
|
|
19
|
+
const objectRowTable = convertArrowToTable(batch.data, 'object-row-table');
|
|
20
|
+
const geojsonTable = convertWKBTableToGeoJSON(objectRowTable, objectRowTable.schema);
|
|
21
|
+
return {
|
|
22
|
+
batchType: batch.batchType,
|
|
23
|
+
shape: geojsonTable.shape,
|
|
24
|
+
type: geojsonTable.type,
|
|
25
|
+
schema: geojsonTable.schema,
|
|
26
|
+
features: geojsonTable.features,
|
|
27
|
+
length: batch.length
|
|
28
|
+
};
|
|
29
|
+
}
|
|
17
30
|
//# sourceMappingURL=parse-geoparquet-to-geojson.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-geoparquet-to-geojson.js","sourceRoot":"","sources":["../../../src/lib/parsers/parse-geoparquet-to-geojson.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AASpC,OAAO,EAAC,wBAAwB,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-geoparquet-to-geojson.js","sourceRoot":"","sources":["../../../src/lib/parsers/parse-geoparquet-to-geojson.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AASpC,OAAO,EAAC,wBAAwB,EAAC,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAC,sBAAsB,EAAE,+BAA+B,EAAC,kCAA+B;AAE/F,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAkB,EAClB,OAA8B;IAE9B,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IACrE,MAAM,cAAc,GAAG,mBAAmB,CAAC,UAAU,CAAC,IAAI,EAAE,kBAAkB,CAAmB,CAAC;IAClG,OAAO,wBAAwB,CAAC,cAAc,EAAE,cAAc,CAAC,MAAO,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,4BAA4B,CACjD,IAAkB,EAClB,OAA8B;IAE9B,MAAM,YAAY,GAAG,+BAA+B,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IAE1E,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAsB;IACzD,MAAM,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAmB,CAAC;IAC7F,MAAM,YAAY,GAAG,wBAAwB,CAAC,cAAc,EAAE,cAAc,CAAC,MAAO,CAAC,CAAC;IACtF,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ReadableFile } from '@loaders.gl/loader-utils';
|
|
2
|
+
import type { ArrowTable, ArrowTableBatch, ObjectRowTable, ObjectRowTableBatch } from '@loaders.gl/schema';
|
|
3
|
+
import type { ParquetLoaderOptions } from "../../parquet-loader-options.js";
|
|
4
|
+
/**
|
|
5
|
+
* Parses a parquet file into an Arrow-backed table.
|
|
6
|
+
*
|
|
7
|
+
* @param file - Parquet file abstraction.
|
|
8
|
+
* @param options - Normalized parquet options.
|
|
9
|
+
* @returns Arrow table output.
|
|
10
|
+
*/
|
|
11
|
+
export declare function parseParquetArrowTable(file: ReadableFile, options: ParquetLoaderOptions): Promise<ArrowTable>;
|
|
12
|
+
/**
|
|
13
|
+
* Parses a parquet file into Arrow-backed table batches.
|
|
14
|
+
*
|
|
15
|
+
* @param file - Parquet file abstraction.
|
|
16
|
+
* @param options - Normalized parquet options.
|
|
17
|
+
* @returns Async iterable of Arrow table batches.
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseParquetArrowTableInBatches(file: ReadableFile, options: ParquetLoaderOptions): AsyncIterable<ArrowTableBatch>;
|
|
20
|
+
/**
|
|
21
|
+
* Parses a parquet file into plain object rows.
|
|
22
|
+
*
|
|
23
|
+
* @param file - Parquet file abstraction.
|
|
24
|
+
* @param options - Normalized parquet options.
|
|
25
|
+
* @returns Object-row table output.
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseParquetObjectRowTable(file: ReadableFile, options: ParquetLoaderOptions): Promise<ObjectRowTable>;
|
|
28
|
+
/**
|
|
29
|
+
* Parses a parquet file into object-row batches.
|
|
30
|
+
*
|
|
31
|
+
* @param file - Parquet file abstraction.
|
|
32
|
+
* @param options - Normalized parquet options.
|
|
33
|
+
* @returns Async iterable of object-row table batches.
|
|
34
|
+
*/
|
|
35
|
+
export declare function parseParquetObjectRowTableInBatches(file: ReadableFile, options: ParquetLoaderOptions): AsyncIterable<ObjectRowTableBatch>;
|
|
36
|
+
/**
|
|
37
|
+
* Converts an Arrow-backed table into object rows.
|
|
38
|
+
*
|
|
39
|
+
* @param arrowTable - Arrow table wrapper.
|
|
40
|
+
* @returns Object-row table.
|
|
41
|
+
*/
|
|
42
|
+
export declare function convertArrowTableToObjectRows(arrowTable: ArrowTable): ObjectRowTable;
|
|
43
|
+
/**
|
|
44
|
+
* Converts an Arrow batch into object-row output.
|
|
45
|
+
*
|
|
46
|
+
* @param batch - Arrow table batch wrapper.
|
|
47
|
+
* @returns Object-row batch.
|
|
48
|
+
*/
|
|
49
|
+
export declare function convertArrowBatchToObjectRows(batch: ArrowTableBatch): ObjectRowTableBatch;
|
|
50
|
+
//# sourceMappingURL=parse-parquet-tables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-parquet-tables.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-parquet-tables.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAE3D,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,cAAc,EACd,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAC,oBAAoB,EAAC,wCAAqC;AAQvE;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,UAAU,CAAC,CASrB;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,oBAAoB,GAC5B,aAAa,CAAC,eAAe,CAAC,CAShC;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAOzB;AAED;;;;;;GAMG;AACH,wBAAuB,mCAAmC,CACxD,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,oBAAoB,GAC5B,aAAa,CAAC,mBAAmB,CAAC,CASpC;AASD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,CAEpF;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,eAAe,GAAG,mBAAmB,CAUzF"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { convertArrowToTable } from '@loaders.gl/schema-utils';
|
|
5
|
+
import { parseParquetFile, parseParquetFileInBatches } from "./parse-parquet-to-json.js";
|
|
6
|
+
import { parseParquetFileToArrow, parseParquetFileToArrowInBatches } from "./parse-parquet-to-arrow.js";
|
|
7
|
+
import { parseParquetFileToArrowWithJs, parseParquetFileToArrowInBatchesWithJs } from "./parse-parquet-to-arrow-js.js";
|
|
8
|
+
/**
|
|
9
|
+
* Parses a parquet file into an Arrow-backed table.
|
|
10
|
+
*
|
|
11
|
+
* @param file - Parquet file abstraction.
|
|
12
|
+
* @param options - Normalized parquet options.
|
|
13
|
+
* @returns Arrow table output.
|
|
14
|
+
*/
|
|
15
|
+
export function parseParquetArrowTable(file, options) {
|
|
16
|
+
switch (getParquetBackend(options)) {
|
|
17
|
+
case 'typescript':
|
|
18
|
+
return parseParquetFileToArrowWithJs(file, options);
|
|
19
|
+
case 'wasm':
|
|
20
|
+
default:
|
|
21
|
+
return parseParquetFileToArrow(file, options.parquet);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Parses a parquet file into Arrow-backed table batches.
|
|
26
|
+
*
|
|
27
|
+
* @param file - Parquet file abstraction.
|
|
28
|
+
* @param options - Normalized parquet options.
|
|
29
|
+
* @returns Async iterable of Arrow table batches.
|
|
30
|
+
*/
|
|
31
|
+
export function parseParquetArrowTableInBatches(file, options) {
|
|
32
|
+
switch (getParquetBackend(options)) {
|
|
33
|
+
case 'typescript':
|
|
34
|
+
return parseParquetFileToArrowInBatchesWithJs(file, options);
|
|
35
|
+
case 'wasm':
|
|
36
|
+
default:
|
|
37
|
+
return parseParquetFileToArrowInBatches(file, options.parquet);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Parses a parquet file into plain object rows.
|
|
42
|
+
*
|
|
43
|
+
* @param file - Parquet file abstraction.
|
|
44
|
+
* @param options - Normalized parquet options.
|
|
45
|
+
* @returns Object-row table output.
|
|
46
|
+
*/
|
|
47
|
+
export async function parseParquetObjectRowTable(file, options) {
|
|
48
|
+
if (getParquetBackend(options) === 'typescript') {
|
|
49
|
+
return await parseParquetFile(file, options);
|
|
50
|
+
}
|
|
51
|
+
const arrowTable = await parseParquetArrowTable(file, options);
|
|
52
|
+
return convertArrowTableToObjectRows(arrowTable);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Parses a parquet file into object-row batches.
|
|
56
|
+
*
|
|
57
|
+
* @param file - Parquet file abstraction.
|
|
58
|
+
* @param options - Normalized parquet options.
|
|
59
|
+
* @returns Async iterable of object-row table batches.
|
|
60
|
+
*/
|
|
61
|
+
export async function* parseParquetObjectRowTableInBatches(file, options) {
|
|
62
|
+
if (getParquetBackend(options) === 'typescript') {
|
|
63
|
+
yield* parseParquetFileInBatches(file, options);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
for await (const batch of parseParquetArrowTableInBatches(file, options)) {
|
|
67
|
+
yield convertArrowBatchToObjectRows(batch);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function getParquetBackend(options) {
|
|
71
|
+
if (options.parquet?.backend) {
|
|
72
|
+
return options.parquet.backend;
|
|
73
|
+
}
|
|
74
|
+
return options.parquet?.implementation === 'js' ? 'typescript' : 'wasm';
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Converts an Arrow-backed table into object rows.
|
|
78
|
+
*
|
|
79
|
+
* @param arrowTable - Arrow table wrapper.
|
|
80
|
+
* @returns Object-row table.
|
|
81
|
+
*/
|
|
82
|
+
export function convertArrowTableToObjectRows(arrowTable) {
|
|
83
|
+
return convertArrowToTable(arrowTable.data, 'object-row-table');
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Converts an Arrow batch into object-row output.
|
|
87
|
+
*
|
|
88
|
+
* @param batch - Arrow table batch wrapper.
|
|
89
|
+
* @returns Object-row batch.
|
|
90
|
+
*/
|
|
91
|
+
export function convertArrowBatchToObjectRows(batch) {
|
|
92
|
+
const objectRowTable = convertArrowToTable(batch.data, 'object-row-table');
|
|
93
|
+
return {
|
|
94
|
+
batchType: batch.batchType,
|
|
95
|
+
shape: objectRowTable.shape,
|
|
96
|
+
schema: objectRowTable.schema,
|
|
97
|
+
data: objectRowTable.data,
|
|
98
|
+
length: batch.length
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=parse-parquet-tables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-parquet-tables.js","sourceRoot":"","sources":["../../../src/lib/parsers/parse-parquet-tables.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ReadableFile } from '@loaders.gl/loader-utils';
|
|
2
|
+
import type { ArrowTable, ArrowTableBatch } from '@loaders.gl/schema';
|
|
3
|
+
import type { ParquetLoaderOptions } from "../../parquet-loader-options.js";
|
|
4
|
+
export declare function parseParquetFileToArrowWithJs(file: ReadableFile, options?: ParquetLoaderOptions): Promise<ArrowTable>;
|
|
5
|
+
export declare function parseParquetFileToArrowInBatchesWithJs(file: ReadableFile, options?: ParquetLoaderOptions): AsyncIterable<ArrowTableBatch>;
|
|
6
|
+
//# sourceMappingURL=parse-parquet-to-arrow-js.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-parquet-to-arrow-js.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-parquet-to-arrow-js.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAC,UAAU,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAGpE,OAAO,KAAK,EAAC,oBAAoB,EAAC,wCAAqC;AAIvE,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,UAAU,CAAC,CAGrB;AAED,wBAAuB,sCAAsC,CAC3D,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,aAAa,CAAC,eAAe,CAAC,CAYhC"}
|