@loaders.gl/parquet 4.0.0-beta.8 → 4.0.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/index.cjs +7 -203
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/parsers/get-parquet-schema.js +1 -1
- package/dist/lib/parsers/get-parquet-schema.js.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-rows.d.ts.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-rows.js +3 -2
- package/dist/lib/parsers/parse-parquet-to-rows.js.map +1 -1
- package/package.json +8 -8
- package/src/index.ts +0 -8
- package/src/lib/parsers/get-parquet-schema.ts +1 -1
- package/src/lib/parsers/parse-parquet-to-rows.ts +4 -2
- package/dist/lib/geo/decode-geo-column.d.ts +0 -4
- package/dist/lib/geo/decode-geo-column.d.ts.map +0 -1
- package/dist/lib/geo/decode-geo-column.js +0 -47
- package/dist/lib/geo/decode-geo-column.js.map +0 -1
- package/dist/lib/geo/decode-geo-metadata.d.ts +0 -44
- package/dist/lib/geo/decode-geo-metadata.d.ts.map +0 -1
- package/dist/lib/geo/decode-geo-metadata.js +0 -89
- package/dist/lib/geo/decode-geo-metadata.js.map +0 -1
- 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 -76
- package/dist/lib/geo/geoparquet-metadata-schema.js.map +0 -1
- package/dist/lib/geo/geoparquet-metadata-schema.json +0 -60
- package/src/lib/geo/decode-geo-column.ts +0 -55
- package/src/lib/geo/decode-geo-metadata.ts +0 -177
- package/src/lib/geo/geoparquet-metadata-schema.json +0 -60
- package/src/lib/geo/geoparquet-metadata-schema.ts +0 -70
package/dist/index.cjs
CHANGED
|
@@ -32,7 +32,6 @@ var src_exports = {};
|
|
|
32
32
|
__export(src_exports, {
|
|
33
33
|
Buffer: () => Buffer3,
|
|
34
34
|
BufferPolyfill: () => Buffer2,
|
|
35
|
-
GEOPARQUET_METADATA_JSON_SCHEMA: () => GEOPARQUET_METADATA_JSON_SCHEMA,
|
|
36
35
|
ParquetColumnarLoader: () => ParquetColumnarLoader2,
|
|
37
36
|
ParquetEncoder: () => ParquetEncoder,
|
|
38
37
|
ParquetLoader: () => ParquetLoader2,
|
|
@@ -42,11 +41,8 @@ __export(src_exports, {
|
|
|
42
41
|
_ParquetWriter: () => ParquetWriter,
|
|
43
42
|
convertParquetSchema: () => convertParquetSchema,
|
|
44
43
|
convertParquetToArrowSchema: () => convertParquetSchema,
|
|
45
|
-
getGeoMetadata: () => getGeoMetadata,
|
|
46
44
|
installBufferPolyfill: () => installBufferPolyfill,
|
|
47
|
-
preloadCompressions: () => preloadCompressions
|
|
48
|
-
setGeoMetadata: () => setGeoMetadata,
|
|
49
|
-
unpackGeoMetadata: () => unpackGeoMetadata
|
|
45
|
+
preloadCompressions: () => preloadCompressions
|
|
50
46
|
});
|
|
51
47
|
module.exports = __toCommonJS(src_exports);
|
|
52
48
|
|
|
@@ -1821,6 +1817,8 @@ ParquetColumnarLoader.Buffer = Buffer;
|
|
|
1821
1817
|
|
|
1822
1818
|
// src/lib/parsers/parse-parquet-to-rows.ts
|
|
1823
1819
|
var import_loader_utils = require("@loaders.gl/loader-utils");
|
|
1820
|
+
var import_gis2 = require("@loaders.gl/gis");
|
|
1821
|
+
var import_wkt = require("@loaders.gl/wkt");
|
|
1824
1822
|
|
|
1825
1823
|
// src/parquetjs/codecs/plain.ts
|
|
1826
1824
|
var import_int53 = __toESM(require("int53"), 1);
|
|
@@ -7188,149 +7186,17 @@ function getSchemaMetadata(parquetMetadata) {
|
|
|
7188
7186
|
return metadata;
|
|
7189
7187
|
}
|
|
7190
7188
|
|
|
7191
|
-
// src/lib/geo/decode-geo-metadata.ts
|
|
7192
|
-
function parseJSONStringMetadata(schema, metadataKey) {
|
|
7193
|
-
const stringifiedMetadata = schema.metadata[metadataKey];
|
|
7194
|
-
if (!stringifiedMetadata) {
|
|
7195
|
-
return null;
|
|
7196
|
-
}
|
|
7197
|
-
try {
|
|
7198
|
-
const metadata = JSON.parse(stringifiedMetadata);
|
|
7199
|
-
if (!metadata || typeof metadata !== "object") {
|
|
7200
|
-
return null;
|
|
7201
|
-
}
|
|
7202
|
-
return metadata;
|
|
7203
|
-
} catch {
|
|
7204
|
-
return null;
|
|
7205
|
-
}
|
|
7206
|
-
}
|
|
7207
|
-
function unpackJSONStringMetadata(schema, metadataKey) {
|
|
7208
|
-
const json = parseJSONStringMetadata(schema, metadataKey);
|
|
7209
|
-
for (const [key, value] of Object.entries(json || {})) {
|
|
7210
|
-
schema.metadata[`${metadataKey}.${key}`] = typeof value === "string" ? value : JSON.stringify(value);
|
|
7211
|
-
}
|
|
7212
|
-
}
|
|
7213
|
-
function getGeoMetadata(schema) {
|
|
7214
|
-
const geoMetadata = parseJSONStringMetadata(schema, "geo");
|
|
7215
|
-
return geoMetadata;
|
|
7216
|
-
}
|
|
7217
|
-
function setGeoMetadata(schema, geoMetadata) {
|
|
7218
|
-
const stringifiedGeoMetadata = JSON.stringify(geoMetadata);
|
|
7219
|
-
schema.metadata.geo = stringifiedGeoMetadata;
|
|
7220
|
-
}
|
|
7221
|
-
function unpackGeoMetadata(schema) {
|
|
7222
|
-
const geoMetadata = getGeoMetadata(schema);
|
|
7223
|
-
if (!geoMetadata) {
|
|
7224
|
-
return;
|
|
7225
|
-
}
|
|
7226
|
-
const { version, primary_column, columns } = geoMetadata;
|
|
7227
|
-
if (version) {
|
|
7228
|
-
schema.metadata["geo.version"] = version;
|
|
7229
|
-
}
|
|
7230
|
-
if (primary_column) {
|
|
7231
|
-
schema.metadata["geo.primary_column"] = primary_column;
|
|
7232
|
-
}
|
|
7233
|
-
schema.metadata["geo.columns"] = Object.keys(columns || {}).join("");
|
|
7234
|
-
for (const [columnName, columnMetadata] of Object.entries(columns || {})) {
|
|
7235
|
-
const field = schema.fields.find((field2) => field2.name === columnName);
|
|
7236
|
-
if (field) {
|
|
7237
|
-
if (field.name === primary_column) {
|
|
7238
|
-
setFieldMetadata(field, "geo.primary_field", "true");
|
|
7239
|
-
}
|
|
7240
|
-
unpackGeoFieldMetadata(field, columnMetadata);
|
|
7241
|
-
}
|
|
7242
|
-
}
|
|
7243
|
-
}
|
|
7244
|
-
function unpackGeoFieldMetadata(field, columnMetadata) {
|
|
7245
|
-
for (const [key, value] of Object.entries(columnMetadata || {})) {
|
|
7246
|
-
switch (key) {
|
|
7247
|
-
case "geometry_type":
|
|
7248
|
-
setFieldMetadata(field, `geo.${key}`, value.join(","));
|
|
7249
|
-
break;
|
|
7250
|
-
case "bbox":
|
|
7251
|
-
setFieldMetadata(field, `geo.crs.${key}`, JSON.stringify(value));
|
|
7252
|
-
break;
|
|
7253
|
-
case "crs":
|
|
7254
|
-
for (const [crsKey, crsValue] of Object.entries(value || {})) {
|
|
7255
|
-
switch (crsKey) {
|
|
7256
|
-
case "id":
|
|
7257
|
-
const crsId = typeof crsValue === "object" ? (
|
|
7258
|
-
// @ts-ignore
|
|
7259
|
-
`${crsValue == null ? void 0 : crsValue.authority}:${crsValue == null ? void 0 : crsValue.code}`
|
|
7260
|
-
) : JSON.stringify(crsValue);
|
|
7261
|
-
setFieldMetadata(field, `geo.crs.${crsKey}`, crsId);
|
|
7262
|
-
break;
|
|
7263
|
-
default:
|
|
7264
|
-
setFieldMetadata(
|
|
7265
|
-
field,
|
|
7266
|
-
`geo.crs.${crsKey}`,
|
|
7267
|
-
typeof crsValue === "string" ? crsValue : JSON.stringify(crsValue)
|
|
7268
|
-
);
|
|
7269
|
-
break;
|
|
7270
|
-
}
|
|
7271
|
-
}
|
|
7272
|
-
break;
|
|
7273
|
-
case "edges":
|
|
7274
|
-
default:
|
|
7275
|
-
setFieldMetadata(
|
|
7276
|
-
field,
|
|
7277
|
-
`geo.${key}`,
|
|
7278
|
-
typeof value === "string" ? value : JSON.stringify(value)
|
|
7279
|
-
);
|
|
7280
|
-
}
|
|
7281
|
-
}
|
|
7282
|
-
}
|
|
7283
|
-
function setFieldMetadata(field, key, value) {
|
|
7284
|
-
field.metadata = field.metadata || {};
|
|
7285
|
-
field.metadata[key] = value;
|
|
7286
|
-
}
|
|
7287
|
-
|
|
7288
7189
|
// src/lib/parsers/get-parquet-schema.ts
|
|
7190
|
+
var import_gis = require("@loaders.gl/gis");
|
|
7289
7191
|
async function getSchemaFromParquetReader(reader) {
|
|
7290
7192
|
const parquetSchema = await reader.getSchema();
|
|
7291
7193
|
const parquetMetadata = await reader.getFileMetadata();
|
|
7292
7194
|
const schema = convertParquetSchema(parquetSchema, parquetMetadata);
|
|
7293
|
-
unpackGeoMetadata(schema);
|
|
7294
|
-
unpackJSONStringMetadata(schema, "pandas");
|
|
7195
|
+
(0, import_gis.unpackGeoMetadata)(schema);
|
|
7196
|
+
(0, import_gis.unpackJSONStringMetadata)(schema, "pandas");
|
|
7295
7197
|
return schema;
|
|
7296
7198
|
}
|
|
7297
7199
|
|
|
7298
|
-
// src/lib/geo/decode-geo-column.ts
|
|
7299
|
-
var import_schema2 = require("@loaders.gl/schema");
|
|
7300
|
-
var import_wkt = require("@loaders.gl/wkt");
|
|
7301
|
-
function convertWKBTableToGeoJSON(table, schema) {
|
|
7302
|
-
const geoMetadata = getGeoMetadata(schema);
|
|
7303
|
-
const primaryColumn = geoMetadata == null ? void 0 : geoMetadata.primary_column;
|
|
7304
|
-
if (!primaryColumn) {
|
|
7305
|
-
throw new Error("no geometry column");
|
|
7306
|
-
}
|
|
7307
|
-
const columnMetadata = geoMetadata.columns[primaryColumn];
|
|
7308
|
-
const features = [];
|
|
7309
|
-
const length = (0, import_schema2.getTableLength)(table);
|
|
7310
|
-
for (let rowIndex = 0; rowIndex < length; rowIndex++) {
|
|
7311
|
-
const row = (0, import_schema2.getTableRowAsObject)(table, rowIndex);
|
|
7312
|
-
const geometry = parseGeometry(row[primaryColumn], columnMetadata);
|
|
7313
|
-
delete row[primaryColumn];
|
|
7314
|
-
const feature = { type: "Feature", geometry, properties: row };
|
|
7315
|
-
features.push(feature);
|
|
7316
|
-
}
|
|
7317
|
-
return { shape: "geojson-table", schema, type: "FeatureCollection", features };
|
|
7318
|
-
}
|
|
7319
|
-
function parseGeometry(geometry, columnMetadata) {
|
|
7320
|
-
var _a, _b, _c, _d;
|
|
7321
|
-
switch (columnMetadata.encoding) {
|
|
7322
|
-
case "wkt":
|
|
7323
|
-
return ((_b = (_a = import_wkt.WKTLoader).parseTextSync) == null ? void 0 : _b.call(_a, geometry)) || null;
|
|
7324
|
-
case "wkb":
|
|
7325
|
-
default:
|
|
7326
|
-
const arrayBuffer = ArrayBuffer.isView(geometry) ? geometry.buffer.slice(geometry.byteOffset, geometry.byteOffset + geometry.byteLength) : geometry;
|
|
7327
|
-
const geojson = (_d = (_c = import_wkt.WKBLoader).parseSync) == null ? void 0 : _d.call(_c, arrayBuffer, {
|
|
7328
|
-
wkb: { shape: "geometry" }
|
|
7329
|
-
});
|
|
7330
|
-
return geojson;
|
|
7331
|
-
}
|
|
7332
|
-
}
|
|
7333
|
-
|
|
7334
7200
|
// src/lib/parsers/parse-parquet-to-rows.ts
|
|
7335
7201
|
async function parseParquet(arrayBuffer, options) {
|
|
7336
7202
|
var _a, _b;
|
|
@@ -7359,7 +7225,7 @@ async function parseParquet(arrayBuffer, options) {
|
|
|
7359
7225
|
return objectRowTable;
|
|
7360
7226
|
case "geojson-table":
|
|
7361
7227
|
try {
|
|
7362
|
-
return convertWKBTableToGeoJSON(objectRowTable, schema);
|
|
7228
|
+
return (0, import_gis2.convertWKBTableToGeoJSON)(objectRowTable, schema, [import_wkt.WKTLoader, import_wkt.WKBLoader]);
|
|
7363
7229
|
} catch (error) {
|
|
7364
7230
|
return objectRowTable;
|
|
7365
7231
|
}
|
|
@@ -7810,68 +7676,6 @@ function encodeFooter(schema, rowCount, rowGroups, userMetadata) {
|
|
|
7810
7676
|
return footerEncoded;
|
|
7811
7677
|
}
|
|
7812
7678
|
|
|
7813
|
-
// src/lib/geo/geoparquet-metadata-schema.ts
|
|
7814
|
-
var GEOPARQUET_METADATA_JSON_SCHEMA = {
|
|
7815
|
-
$schema: "http://json-schema.org/draft-07/schema#",
|
|
7816
|
-
title: "GeoParquet",
|
|
7817
|
-
description: "Parquet metadata included in the geo field.",
|
|
7818
|
-
type: "object",
|
|
7819
|
-
required: ["version", "primary_column", "columns"],
|
|
7820
|
-
properties: {
|
|
7821
|
-
version: { type: "string", const: "1.0.0-beta.1" },
|
|
7822
|
-
primary_column: { type: "string", minLength: 1 },
|
|
7823
|
-
columns: {
|
|
7824
|
-
type: "object",
|
|
7825
|
-
minProperties: 1,
|
|
7826
|
-
patternProperties: {
|
|
7827
|
-
".+": {
|
|
7828
|
-
type: "object",
|
|
7829
|
-
required: ["encoding", "geometry_types"],
|
|
7830
|
-
properties: {
|
|
7831
|
-
encoding: { type: "string", const: "WKB" },
|
|
7832
|
-
geometry_types: {
|
|
7833
|
-
type: "array",
|
|
7834
|
-
uniqueItems: true,
|
|
7835
|
-
items: {
|
|
7836
|
-
type: "string",
|
|
7837
|
-
pattern: "^(GeometryCollection|(Multi)?(Point|LineString|Polygon))( Z)?$"
|
|
7838
|
-
}
|
|
7839
|
-
},
|
|
7840
|
-
crs: {
|
|
7841
|
-
oneOf: [
|
|
7842
|
-
{
|
|
7843
|
-
$ref: "https://proj.org/schemas/v0.5/projjson.schema.json"
|
|
7844
|
-
},
|
|
7845
|
-
{ type: "null" }
|
|
7846
|
-
]
|
|
7847
|
-
},
|
|
7848
|
-
edges: { type: "string", enum: ["planar", "spherical"] },
|
|
7849
|
-
orientation: { type: "string", const: "counterclockwise" },
|
|
7850
|
-
bbox: {
|
|
7851
|
-
type: "array",
|
|
7852
|
-
items: { type: "number" },
|
|
7853
|
-
oneOf: [
|
|
7854
|
-
{
|
|
7855
|
-
description: "2D bbox consisting of (xmin, ymin, xmax, ymax)",
|
|
7856
|
-
minItems: 4,
|
|
7857
|
-
maxItems: 4
|
|
7858
|
-
},
|
|
7859
|
-
{
|
|
7860
|
-
description: "3D bbox consisting of (xmin, ymin, zmin, xmax, ymax, zmax)",
|
|
7861
|
-
minItems: 6,
|
|
7862
|
-
maxItems: 6
|
|
7863
|
-
}
|
|
7864
|
-
]
|
|
7865
|
-
},
|
|
7866
|
-
epoch: { type: "number" }
|
|
7867
|
-
}
|
|
7868
|
-
}
|
|
7869
|
-
},
|
|
7870
|
-
additionalProperties: false
|
|
7871
|
-
}
|
|
7872
|
-
}
|
|
7873
|
-
};
|
|
7874
|
-
|
|
7875
7679
|
// src/index.ts
|
|
7876
7680
|
var ParquetLoader2 = {
|
|
7877
7681
|
...ParquetLoader,
|
package/dist/index.d.ts
CHANGED
|
@@ -13,8 +13,5 @@ export { ParquetSchema } from './parquetjs/schema/schema';
|
|
|
13
13
|
export { ParquetReader } from './parquetjs/parser/parquet-reader';
|
|
14
14
|
export { ParquetEncoder } from './parquetjs/encoder/parquet-encoder';
|
|
15
15
|
export { convertParquetSchema, convertParquetSchema as convertParquetToArrowSchema } from './lib/arrow/convert-schema-from-parquet';
|
|
16
|
-
export { GEOPARQUET_METADATA_JSON_SCHEMA } from './lib/geo/geoparquet-metadata-schema';
|
|
17
|
-
export type { GeoMetadata } from './lib/geo/decode-geo-metadata';
|
|
18
|
-
export { getGeoMetadata, setGeoMetadata, unpackGeoMetadata } from './lib/geo/decode-geo-metadata';
|
|
19
16
|
export { BufferPolyfill, installBufferPolyfill } from './buffer-polyfill';
|
|
20
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,MAAM,EAAC,MAAM,2CAA2C,CAAC;AAEjE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EACL,aAAa,IAAI,mBAAmB,EAEpC,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAW1B,OAAO,EAAC,mBAAmB,EAAC,CAAC;AAG7B,6BAA6B;AAC7B,eAAO,MAAM,aAAa,EAAE,gBAAgB,CAC1C,cAAc,GAAG,YAAY,EAC7B,mBAAmB,GAAG,iBAAiB,EACvC,oBAAoB,CAMrB,CAAC;AAEF,6BAA6B;AAC7B,eAAO,MAAM,qBAAqB,EAAE,gBAAgB,CAClD,aAAa,EACb,kBAAkB,EAClB,oBAAoB,CAMrB,CAAC;AAcF,OAAO,EAAC,aAAa,IAAI,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAKjE,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAC,aAAa,EAAC,MAAM,mCAAmC,CAAC;AAChE,OAAO,EAAC,cAAc,EAAC,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,IAAI,2BAA2B,EACpD,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,MAAM,EAAC,MAAM,2CAA2C,CAAC;AAEjE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EACL,aAAa,IAAI,mBAAmB,EAEpC,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAW1B,OAAO,EAAC,mBAAmB,EAAC,CAAC;AAG7B,6BAA6B;AAC7B,eAAO,MAAM,aAAa,EAAE,gBAAgB,CAC1C,cAAc,GAAG,YAAY,EAC7B,mBAAmB,GAAG,iBAAiB,EACvC,oBAAoB,CAMrB,CAAC;AAEF,6BAA6B;AAC7B,eAAO,MAAM,qBAAqB,EAAE,gBAAgB,CAClD,aAAa,EACb,kBAAkB,EAClB,oBAAoB,CAMrB,CAAC;AAcF,OAAO,EAAC,aAAa,IAAI,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAKjE,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAC,aAAa,EAAC,MAAM,mCAAmC,CAAC;AAChE,OAAO,EAAC,cAAc,EAAC,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,IAAI,2BAA2B,EACpD,MAAM,yCAAyC,CAAC;AAGjD,OAAO,EAAC,cAAc,EAAE,qBAAqB,EAAC,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -19,7 +19,5 @@ export { ParquetSchema } from "./parquetjs/schema/schema.js";
|
|
|
19
19
|
export { ParquetReader } from "./parquetjs/parser/parquet-reader.js";
|
|
20
20
|
export { ParquetEncoder } from "./parquetjs/encoder/parquet-encoder.js";
|
|
21
21
|
export { convertParquetSchema, convertParquetSchema as convertParquetToArrowSchema } from "./lib/arrow/convert-schema-from-parquet.js";
|
|
22
|
-
export { GEOPARQUET_METADATA_JSON_SCHEMA } from "./lib/geo/geoparquet-metadata-schema.js";
|
|
23
|
-
export { getGeoMetadata, setGeoMetadata, unpackGeoMetadata } from "./lib/geo/decode-geo-metadata.js";
|
|
24
22
|
export { BufferPolyfill, installBufferPolyfill } from "./buffer-polyfill/index.js";
|
|
25
23
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Buffer","ParquetLoader","ParquetWorkerLoader","ParquetColumnarWorkerLoader","parseParquet","parseParquetFileInBatches","parseParquetInColumns","parseParquetFileInColumnarBatches","parse","parseFileInBatches","ParquetColumnarLoader","ParquetWriter","_ParquetWriter","preloadCompressions","ParquetSchema","ParquetReader","ParquetEncoder","convertParquetSchema","convertParquetToArrowSchema","
|
|
1
|
+
{"version":3,"file":"index.js","names":["Buffer","ParquetLoader","ParquetWorkerLoader","ParquetColumnarWorkerLoader","parseParquet","parseParquetFileInBatches","parseParquetInColumns","parseParquetFileInColumnarBatches","parse","parseFileInBatches","ParquetColumnarLoader","ParquetWriter","_ParquetWriter","preloadCompressions","ParquetSchema","ParquetReader","ParquetEncoder","convertParquetSchema","convertParquetToArrowSchema","BufferPolyfill","installBufferPolyfill"],"sources":["../src/index.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nexport {Buffer} from './buffer-polyfill/install-buffer-polyfill';\n\nimport type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {\n ObjectRowTable,\n ObjectRowTableBatch,\n ColumnarTable,\n ColumnarTableBatch,\n GeoJSONTable,\n GeoJSONTableBatch\n} from '@loaders.gl/schema';\n// import type {Table as ApacheArrowTable} from 'apache-arrow';\n\n// ParquetLoader\n\nimport {\n ParquetLoader as ParquetWorkerLoader,\n ParquetLoader as ParquetColumnarWorkerLoader,\n ParquetLoaderOptions\n} from './parquet-loader';\nimport {parseParquet, parseParquetFileInBatches} from './lib/parsers/parse-parquet-to-rows';\nimport {\n parseParquetInColumns,\n parseParquetFileInColumnarBatches\n} from './lib/parsers/parse-parquet-to-columns';\n\n// import type {ParquetWasmLoaderOptions} from './lib/wasm/parse-parquet-wasm';\n// import {parseParquetWasm} from './lib/wasm/parse-parquet-wasm';\n// import {ParquetWasmLoader as ParquetWasmWorkerLoader} from './parquet-wasm-loader';\n\nexport {ParquetWorkerLoader};\n// export {ParquetWasmWorkerLoader};\n\n/** ParquetJS table loader */\nexport const ParquetLoader: LoaderWithParser<\n ObjectRowTable | GeoJSONTable,\n ObjectRowTableBatch | GeoJSONTableBatch,\n ParquetLoaderOptions\n> = {\n ...ParquetWorkerLoader,\n parse: parseParquet,\n // @ts-expect-error\n parseFileInBatches: parseParquetFileInBatches\n};\n\n/** ParquetJS table loader */\nexport const ParquetColumnarLoader: LoaderWithParser<\n ColumnarTable,\n ColumnarTableBatch,\n ParquetLoaderOptions\n> = {\n ...ParquetColumnarWorkerLoader,\n parse: parseParquetInColumns,\n // @ts-expect-error\n parseFileInBatches: parseParquetFileInColumnarBatches\n};\n\n// export const ParquetWasmLoader: LoaderWithParser<\n// ApacheArrowTable,\n// never,\n// ParquetWasmLoaderOptions\n// > = {\n// ...ParquetWasmWorkerLoader,\n// // @ts-expect-error Getting strange errors in wasm\n// parse: () => {} // parseParquetWasm\n// };\n\n// ParquetWriter\n\nexport {ParquetWriter as _ParquetWriter} from './parquet-writer';\n// export {ParquetWasmWriter} from './parquet-wasm-writer';\n\n// EXPERIMENTAL - expose the internal parquetjs API\n\nexport {preloadCompressions} from './parquetjs/compression';\n\nexport {ParquetSchema} from './parquetjs/schema/schema';\nexport {ParquetReader} from './parquetjs/parser/parquet-reader';\nexport {ParquetEncoder} from './parquetjs/encoder/parquet-encoder';\n\nexport {\n convertParquetSchema,\n convertParquetSchema as convertParquetToArrowSchema\n} from './lib/arrow/convert-schema-from-parquet';\n\n// Experimental\nexport {BufferPolyfill, installBufferPolyfill} from './buffer-polyfill';\n"],"mappings":"SAGQA,MAAM;AAAA,SAgBZC,aAAa,IAAIC,mBAAmB,EACpCD,aAAa,IAAIE,2BAA2B;AAAA,SAGtCC,YAAY,EAAEC,yBAAyB;AAAA,SAE7CC,qBAAqB,EACrBC,iCAAiC;AAOnC,SAAQL,mBAAmB;AAI3B,OAAO,MAAMD,aAIZ,GAAG;EACF,GAAGC,mBAAmB;EACtBM,KAAK,EAAEJ,YAAY;EAEnBK,kBAAkB,EAAEJ;AACtB,CAAC;AAGD,OAAO,MAAMK,qBAIZ,GAAG;EACF,GAAGP,2BAA2B;EAC9BK,KAAK,EAAEF,qBAAqB;EAE5BG,kBAAkB,EAAEF;AACtB,CAAC;AAAC,SAcMI,aAAa,IAAIC,cAAc;AAAA,SAK/BC,mBAAmB;AAAA,SAEnBC,aAAa;AAAA,SACbC,aAAa;AAAA,SACbC,cAAc;AAAA,SAGpBC,oBAAoB,EACpBA,oBAAoB,IAAIC,2BAA2B;AAAA,SAI7CC,cAAc,EAAEC,qBAAqB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { convertParquetSchema } from "../arrow/convert-schema-from-parquet.js";
|
|
2
|
-
import { unpackGeoMetadata, unpackJSONStringMetadata } from
|
|
2
|
+
import { unpackGeoMetadata, unpackJSONStringMetadata } from '@loaders.gl/gis';
|
|
3
3
|
export async function getSchemaFromParquetReader(reader) {
|
|
4
4
|
const parquetSchema = await reader.getSchema();
|
|
5
5
|
const parquetMetadata = await reader.getFileMetadata();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-parquet-schema.js","names":["convertParquetSchema","unpackGeoMetadata","unpackJSONStringMetadata","getSchemaFromParquetReader","reader","parquetSchema","getSchema","parquetMetadata","getFileMetadata","schema"],"sources":["../../../src/lib/parsers/get-parquet-schema.ts"],"sourcesContent":["// loaders.gl\nimport {Schema} from '@loaders.gl/schema';\nimport {ParquetReader} from '../../parquetjs/parser/parquet-reader';\nimport {convertParquetSchema} from '../arrow/convert-schema-from-parquet';\nimport {unpackGeoMetadata, unpackJSONStringMetadata} from '
|
|
1
|
+
{"version":3,"file":"get-parquet-schema.js","names":["convertParquetSchema","unpackGeoMetadata","unpackJSONStringMetadata","getSchemaFromParquetReader","reader","parquetSchema","getSchema","parquetMetadata","getFileMetadata","schema"],"sources":["../../../src/lib/parsers/get-parquet-schema.ts"],"sourcesContent":["// loaders.gl\nimport {Schema} from '@loaders.gl/schema';\nimport {ParquetReader} from '../../parquetjs/parser/parquet-reader';\nimport {convertParquetSchema} from '../arrow/convert-schema-from-parquet';\nimport {unpackGeoMetadata, unpackJSONStringMetadata} from '@loaders.gl/gis';\n\nexport async function getSchemaFromParquetReader(reader: ParquetReader): Promise<Schema> {\n const parquetSchema = await reader.getSchema();\n const parquetMetadata = await reader.getFileMetadata();\n const schema = convertParquetSchema(parquetSchema, parquetMetadata);\n unpackGeoMetadata(schema);\n unpackJSONStringMetadata(schema, 'pandas');\n return schema;\n}\n"],"mappings":"SAGQA,oBAAoB;AAC5B,SAAQC,iBAAiB,EAAEC,wBAAwB,QAAO,iBAAiB;AAE3E,OAAO,eAAeC,0BAA0BA,CAACC,MAAqB,EAAmB;EACvF,MAAMC,aAAa,GAAG,MAAMD,MAAM,CAACE,SAAS,CAAC,CAAC;EAC9C,MAAMC,eAAe,GAAG,MAAMH,MAAM,CAACI,eAAe,CAAC,CAAC;EACtD,MAAMC,MAAM,GAAGT,oBAAoB,CAACK,aAAa,EAAEE,eAAe,CAAC;EACnEN,iBAAiB,CAACQ,MAAM,CAAC;EACzBP,wBAAwB,CAACO,MAAM,EAAE,QAAQ,CAAC;EAC1C,OAAOA,MAAM;AACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-parquet-to-rows.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-parquet-to-rows.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-parquet-to-rows.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-parquet-to-rows.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAIrF,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAC,aAAa,EAAC,MAAM,uCAAuC,CAAC;AAIpE,wBAAsB,YAAY,CAChC,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,cAAc,GAAG,YAAY,CAAC,CAyCxC;AAED,wBAAuB,yBAAyB,CAC9C,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,aAAa,CAAC,mBAAmB,CAAC,CAYpC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { BlobFile } from '@loaders.gl/loader-utils';
|
|
2
|
+
import { convertWKBTableToGeoJSON } from '@loaders.gl/gis';
|
|
3
|
+
import { WKTLoader, WKBLoader } from '@loaders.gl/wkt';
|
|
2
4
|
import { ParquetReader } from "../../parquetjs/parser/parquet-reader.js";
|
|
3
5
|
import { getSchemaFromParquetReader } from "./get-parquet-schema.js";
|
|
4
6
|
import { installBufferPolyfill } from "../../buffer-polyfill/index.js";
|
|
5
|
-
import { convertWKBTableToGeoJSON } from "../geo/decode-geo-column.js";
|
|
6
7
|
export async function parseParquet(arrayBuffer, options) {
|
|
7
8
|
var _options$parquet, _options$parquet2;
|
|
8
9
|
installBufferPolyfill();
|
|
@@ -30,7 +31,7 @@ export async function parseParquet(arrayBuffer, options) {
|
|
|
30
31
|
return objectRowTable;
|
|
31
32
|
case 'geojson-table':
|
|
32
33
|
try {
|
|
33
|
-
return convertWKBTableToGeoJSON(objectRowTable, schema);
|
|
34
|
+
return convertWKBTableToGeoJSON(objectRowTable, schema, [WKTLoader, WKBLoader]);
|
|
34
35
|
} catch (error) {
|
|
35
36
|
return objectRowTable;
|
|
36
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-parquet-to-rows.js","names":["BlobFile","ParquetReader","getSchemaFromParquetReader","installBufferPolyfill","
|
|
1
|
+
{"version":3,"file":"parse-parquet-to-rows.js","names":["BlobFile","convertWKBTableToGeoJSON","WKTLoader","WKBLoader","ParquetReader","getSchemaFromParquetReader","installBufferPolyfill","parseParquet","arrayBuffer","options","_options$parquet","_options$parquet2","blob","Blob","file","reader","preserveBinary","parquet","schema","rows","rowBatches","rowBatchIterator","rowBatch","row","push","objectRowTable","shape","data","error","Error","parseParquetFileInBatches","batchType","length"],"sources":["../../../src/lib/parsers/parse-parquet-to-rows.ts"],"sourcesContent":["// import type {LoaderWithParser, Loader, LoaderOptions} from '@loaders.gl/loader-utils';\n// import {ColumnarTableBatch} from '@loaders.gl/schema';\nimport {BlobFile} from '@loaders.gl/loader-utils';\nimport {GeoJSONTable, ObjectRowTable, ObjectRowTableBatch} from '@loaders.gl/schema';\nimport {convertWKBTableToGeoJSON} from '@loaders.gl/gis';\nimport {WKTLoader, WKBLoader} from '@loaders.gl/wkt';\n\nimport type {ParquetLoaderOptions} from '../../parquet-loader';\nimport type {ParquetRow} from '../../parquetjs/schema/declare';\nimport {ParquetReader} from '../../parquetjs/parser/parquet-reader';\nimport {getSchemaFromParquetReader} from './get-parquet-schema';\nimport {installBufferPolyfill} from '../../buffer-polyfill';\n\nexport async function parseParquet(\n arrayBuffer: ArrayBuffer,\n options?: ParquetLoaderOptions\n): Promise<ObjectRowTable | GeoJSONTable> {\n installBufferPolyfill();\n\n const blob = new Blob([arrayBuffer]);\n const file = new BlobFile(blob);\n const reader = new ParquetReader(file, {\n preserveBinary: options?.parquet?.preserveBinary\n });\n\n const schema = await getSchemaFromParquetReader(reader);\n\n const rows: ParquetRow[] = [];\n\n const rowBatches = reader.rowBatchIterator(options?.parquet);\n for await (const rowBatch of rowBatches) {\n // we have only one input batch so return\n for (const row of rowBatch) {\n rows.push(row);\n }\n }\n const objectRowTable: ObjectRowTable = {\n shape: 'object-row-table',\n schema,\n data: rows\n };\n\n const shape = options?.parquet?.shape;\n switch (shape) {\n case 'object-row-table':\n return objectRowTable;\n\n case 'geojson-table':\n try {\n return convertWKBTableToGeoJSON(objectRowTable, schema, [WKTLoader, WKBLoader]);\n } catch (error) {\n return objectRowTable;\n }\n\n default:\n throw new Error(shape);\n }\n}\n\nexport async function* parseParquetFileInBatches(\n reader: ParquetReader,\n options?: ParquetLoaderOptions\n): AsyncIterable<ObjectRowTableBatch> {\n const schema = await getSchemaFromParquetReader(reader);\n const rowBatches = reader.rowBatchIterator(options?.parquet);\n for await (const rows of rowBatches) {\n yield {\n batchType: 'data',\n shape: 'object-row-table',\n schema,\n data: rows,\n length: rows.length\n };\n }\n}\n"],"mappings":"AAEA,SAAQA,QAAQ,QAAO,0BAA0B;AAEjD,SAAQC,wBAAwB,QAAO,iBAAiB;AACxD,SAAQC,SAAS,EAAEC,SAAS,QAAO,iBAAiB;AAAC,SAI7CC,aAAa;AAAA,SACbC,0BAA0B;AAAA,SAC1BC,qBAAqB;AAE7B,OAAO,eAAeC,YAAYA,CAChCC,WAAwB,EACxBC,OAA8B,EACU;EAAA,IAAAC,gBAAA,EAAAC,iBAAA;EACxCL,qBAAqB,CAAC,CAAC;EAEvB,MAAMM,IAAI,GAAG,IAAIC,IAAI,CAAC,CAACL,WAAW,CAAC,CAAC;EACpC,MAAMM,IAAI,GAAG,IAAId,QAAQ,CAACY,IAAI,CAAC;EAC/B,MAAMG,MAAM,GAAG,IAAIX,aAAa,CAACU,IAAI,EAAE;IACrCE,cAAc,EAAEP,OAAO,aAAPA,OAAO,wBAAAC,gBAAA,GAAPD,OAAO,CAAEQ,OAAO,cAAAP,gBAAA,uBAAhBA,gBAAA,CAAkBM;EACpC,CAAC,CAAC;EAEF,MAAME,MAAM,GAAG,MAAMb,0BAA0B,CAACU,MAAM,CAAC;EAEvD,MAAMI,IAAkB,GAAG,EAAE;EAE7B,MAAMC,UAAU,GAAGL,MAAM,CAACM,gBAAgB,CAACZ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEQ,OAAO,CAAC;EAC5D,WAAW,MAAMK,QAAQ,IAAIF,UAAU,EAAE;IAEvC,KAAK,MAAMG,GAAG,IAAID,QAAQ,EAAE;MAC1BH,IAAI,CAACK,IAAI,CAACD,GAAG,CAAC;IAChB;EACF;EACA,MAAME,cAA8B,GAAG;IACrCC,KAAK,EAAE,kBAAkB;IACzBR,MAAM;IACNS,IAAI,EAAER;EACR,CAAC;EAED,MAAMO,KAAK,GAAGjB,OAAO,aAAPA,OAAO,wBAAAE,iBAAA,GAAPF,OAAO,CAAEQ,OAAO,cAAAN,iBAAA,uBAAhBA,iBAAA,CAAkBe,KAAK;EACrC,QAAQA,KAAK;IACX,KAAK,kBAAkB;MACrB,OAAOD,cAAc;IAEvB,KAAK,eAAe;MAClB,IAAI;QACF,OAAOxB,wBAAwB,CAACwB,cAAc,EAAEP,MAAM,EAAE,CAAChB,SAAS,EAAEC,SAAS,CAAC,CAAC;MACjF,CAAC,CAAC,OAAOyB,KAAK,EAAE;QACd,OAAOH,cAAc;MACvB;IAEF;MACE,MAAM,IAAII,KAAK,CAACH,KAAK,CAAC;EAC1B;AACF;AAEA,OAAO,gBAAgBI,yBAAyBA,CAC9Cf,MAAqB,EACrBN,OAA8B,EACM;EACpC,MAAMS,MAAM,GAAG,MAAMb,0BAA0B,CAACU,MAAM,CAAC;EACvD,MAAMK,UAAU,GAAGL,MAAM,CAACM,gBAAgB,CAACZ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEQ,OAAO,CAAC;EAC5D,WAAW,MAAME,IAAI,IAAIC,UAAU,EAAE;IACnC,MAAM;MACJW,SAAS,EAAE,MAAM;MACjBL,KAAK,EAAE,kBAAkB;MACzBR,MAAM;MACNS,IAAI,EAAER,IAAI;MACVa,MAAM,EAAEb,IAAI,CAACa;IACf,CAAC;EACH;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/parquet",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"description": "Framework-independent loader for Apache Parquet files",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -57,12 +57,12 @@
|
|
|
57
57
|
"base64-js and ieee754 are used by buffer polyfill"
|
|
58
58
|
],
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@loaders.gl/bson": "4.0.
|
|
61
|
-
"@loaders.gl/compression": "4.0.
|
|
62
|
-
"@loaders.gl/gis": "4.0.
|
|
63
|
-
"@loaders.gl/loader-utils": "4.0.
|
|
64
|
-
"@loaders.gl/schema": "4.0.
|
|
65
|
-
"@loaders.gl/wkt": "4.0.
|
|
60
|
+
"@loaders.gl/bson": "4.0.1",
|
|
61
|
+
"@loaders.gl/compression": "4.0.1",
|
|
62
|
+
"@loaders.gl/gis": "4.0.1",
|
|
63
|
+
"@loaders.gl/loader-utils": "4.0.1",
|
|
64
|
+
"@loaders.gl/schema": "4.0.1",
|
|
65
|
+
"@loaders.gl/wkt": "4.0.1",
|
|
66
66
|
"async-mutex": "^0.2.2",
|
|
67
67
|
"base64-js": "^1.3.1",
|
|
68
68
|
"brotli": "^1.3.2",
|
|
@@ -88,5 +88,5 @@
|
|
|
88
88
|
"@types/varint": "^5.0.0",
|
|
89
89
|
"apache-arrow": "^13.0.0"
|
|
90
90
|
},
|
|
91
|
-
"gitHead": "
|
|
91
|
+
"gitHead": "765e5a26a6bf3f2cc02cabffc4a1e3665ec92a53"
|
|
92
92
|
}
|
package/src/index.ts
CHANGED
|
@@ -86,13 +86,5 @@ export {
|
|
|
86
86
|
convertParquetSchema as convertParquetToArrowSchema
|
|
87
87
|
} from './lib/arrow/convert-schema-from-parquet';
|
|
88
88
|
|
|
89
|
-
// Geo Metadata
|
|
90
|
-
// import {default as GEOPARQUET_METADATA_SCHEMA} from './lib/geo/geoparquet-metadata-schema.json';
|
|
91
|
-
// export {GEOPARQUET_METADATA_SCHEMA};
|
|
92
|
-
export {GEOPARQUET_METADATA_JSON_SCHEMA} from './lib/geo/geoparquet-metadata-schema';
|
|
93
|
-
|
|
94
|
-
export type {GeoMetadata} from './lib/geo/decode-geo-metadata';
|
|
95
|
-
export {getGeoMetadata, setGeoMetadata, unpackGeoMetadata} from './lib/geo/decode-geo-metadata';
|
|
96
|
-
|
|
97
89
|
// Experimental
|
|
98
90
|
export {BufferPolyfill, installBufferPolyfill} from './buffer-polyfill';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {Schema} from '@loaders.gl/schema';
|
|
3
3
|
import {ParquetReader} from '../../parquetjs/parser/parquet-reader';
|
|
4
4
|
import {convertParquetSchema} from '../arrow/convert-schema-from-parquet';
|
|
5
|
-
import {unpackGeoMetadata, unpackJSONStringMetadata} from '
|
|
5
|
+
import {unpackGeoMetadata, unpackJSONStringMetadata} from '@loaders.gl/gis';
|
|
6
6
|
|
|
7
7
|
export async function getSchemaFromParquetReader(reader: ParquetReader): Promise<Schema> {
|
|
8
8
|
const parquetSchema = await reader.getSchema();
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
// import {ColumnarTableBatch} from '@loaders.gl/schema';
|
|
3
3
|
import {BlobFile} from '@loaders.gl/loader-utils';
|
|
4
4
|
import {GeoJSONTable, ObjectRowTable, ObjectRowTableBatch} from '@loaders.gl/schema';
|
|
5
|
+
import {convertWKBTableToGeoJSON} from '@loaders.gl/gis';
|
|
6
|
+
import {WKTLoader, WKBLoader} from '@loaders.gl/wkt';
|
|
7
|
+
|
|
5
8
|
import type {ParquetLoaderOptions} from '../../parquet-loader';
|
|
6
9
|
import type {ParquetRow} from '../../parquetjs/schema/declare';
|
|
7
10
|
import {ParquetReader} from '../../parquetjs/parser/parquet-reader';
|
|
8
11
|
import {getSchemaFromParquetReader} from './get-parquet-schema';
|
|
9
12
|
import {installBufferPolyfill} from '../../buffer-polyfill';
|
|
10
|
-
import {convertWKBTableToGeoJSON} from '../geo/decode-geo-column';
|
|
11
13
|
|
|
12
14
|
export async function parseParquet(
|
|
13
15
|
arrayBuffer: ArrayBuffer,
|
|
@@ -45,7 +47,7 @@ export async function parseParquet(
|
|
|
45
47
|
|
|
46
48
|
case 'geojson-table':
|
|
47
49
|
try {
|
|
48
|
-
return convertWKBTableToGeoJSON(objectRowTable, schema);
|
|
50
|
+
return convertWKBTableToGeoJSON(objectRowTable, schema, [WKTLoader, WKBLoader]);
|
|
49
51
|
} catch (error) {
|
|
50
52
|
return objectRowTable;
|
|
51
53
|
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { ArrayRowTable, GeoJSONTable, ObjectRowTable, Schema } from '@loaders.gl/schema';
|
|
2
|
-
/** TODO - move to loaders.gl/gis? */
|
|
3
|
-
export declare function convertWKBTableToGeoJSON(table: ArrayRowTable | ObjectRowTable, schema: Schema): GeoJSONTable;
|
|
4
|
-
//# sourceMappingURL=decode-geo-column.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decode-geo-column.d.ts","sourceRoot":"","sources":["../../../src/lib/geo/decode-geo-column.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAC,MAAM,oBAAoB,CAAC;AAQ5F,qCAAqC;AACrC,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,aAAa,GAAG,cAAc,EACrC,MAAM,EAAE,MAAM,GACb,YAAY,CAoBd"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { getTableLength, getTableRowAsObject } from '@loaders.gl/schema';
|
|
2
|
-
import { WKBLoader, WKTLoader } from '@loaders.gl/wkt';
|
|
3
|
-
import { getGeoMetadata } from "./decode-geo-metadata.js";
|
|
4
|
-
export function convertWKBTableToGeoJSON(table, schema) {
|
|
5
|
-
const geoMetadata = getGeoMetadata(schema);
|
|
6
|
-
const primaryColumn = geoMetadata === null || geoMetadata === void 0 ? void 0 : geoMetadata.primary_column;
|
|
7
|
-
if (!primaryColumn) {
|
|
8
|
-
throw new Error('no geometry column');
|
|
9
|
-
}
|
|
10
|
-
const columnMetadata = geoMetadata.columns[primaryColumn];
|
|
11
|
-
const features = [];
|
|
12
|
-
const length = getTableLength(table);
|
|
13
|
-
for (let rowIndex = 0; rowIndex < length; rowIndex++) {
|
|
14
|
-
const row = getTableRowAsObject(table, rowIndex);
|
|
15
|
-
const geometry = parseGeometry(row[primaryColumn], columnMetadata);
|
|
16
|
-
delete row[primaryColumn];
|
|
17
|
-
const feature = {
|
|
18
|
-
type: 'Feature',
|
|
19
|
-
geometry: geometry,
|
|
20
|
-
properties: row
|
|
21
|
-
};
|
|
22
|
-
features.push(feature);
|
|
23
|
-
}
|
|
24
|
-
return {
|
|
25
|
-
shape: 'geojson-table',
|
|
26
|
-
schema,
|
|
27
|
-
type: 'FeatureCollection',
|
|
28
|
-
features
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
function parseGeometry(geometry, columnMetadata) {
|
|
32
|
-
var _WKTLoader$parseTextS, _WKBLoader$parseSync;
|
|
33
|
-
switch (columnMetadata.encoding) {
|
|
34
|
-
case 'wkt':
|
|
35
|
-
return ((_WKTLoader$parseTextS = WKTLoader.parseTextSync) === null || _WKTLoader$parseTextS === void 0 ? void 0 : _WKTLoader$parseTextS.call(WKTLoader, geometry)) || null;
|
|
36
|
-
case 'wkb':
|
|
37
|
-
default:
|
|
38
|
-
const arrayBuffer = ArrayBuffer.isView(geometry) ? geometry.buffer.slice(geometry.byteOffset, geometry.byteOffset + geometry.byteLength) : geometry;
|
|
39
|
-
const geojson = (_WKBLoader$parseSync = WKBLoader.parseSync) === null || _WKBLoader$parseSync === void 0 ? void 0 : _WKBLoader$parseSync.call(WKBLoader, arrayBuffer, {
|
|
40
|
-
wkb: {
|
|
41
|
-
shape: 'geometry'
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
return geojson;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=decode-geo-column.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decode-geo-column.js","names":["getTableLength","getTableRowAsObject","WKBLoader","WKTLoader","getGeoMetadata","convertWKBTableToGeoJSON","table","schema","geoMetadata","primaryColumn","primary_column","Error","columnMetadata","columns","features","length","rowIndex","row","geometry","parseGeometry","feature","type","properties","push","shape","_WKTLoader$parseTextS","_WKBLoader$parseSync","encoding","parseTextSync","call","arrayBuffer","ArrayBuffer","isView","buffer","slice","byteOffset","byteLength","geojson","parseSync","wkb"],"sources":["../../../src/lib/geo/decode-geo-column.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {ArrayRowTable, GeoJSONTable, ObjectRowTable, Schema} from '@loaders.gl/schema';\nimport type {Feature, Geometry} from '@loaders.gl/schema';\nimport {getTableLength, getTableRowAsObject} from '@loaders.gl/schema';\n// import {binaryToGeometry} from '@loaders.gl/gis';\nimport {WKBLoader, WKTLoader} from '@loaders.gl/wkt';\n\nimport {GeoColumnMetadata, getGeoMetadata} from './decode-geo-metadata';\n\n/** TODO - move to loaders.gl/gis? */\nexport function convertWKBTableToGeoJSON(\n table: ArrayRowTable | ObjectRowTable,\n schema: Schema\n): GeoJSONTable {\n const geoMetadata = getGeoMetadata(schema);\n const primaryColumn = geoMetadata?.primary_column;\n if (!primaryColumn) {\n throw new Error('no geometry column');\n }\n const columnMetadata = geoMetadata.columns[primaryColumn];\n\n const features: Feature[] = [];\n\n const length = getTableLength(table);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n const row = getTableRowAsObject(table, rowIndex);\n const geometry = parseGeometry(row[primaryColumn], columnMetadata);\n delete row[primaryColumn];\n const feature: Feature = {type: 'Feature', geometry: geometry!, properties: row};\n features.push(feature);\n }\n\n return {shape: 'geojson-table', schema, type: 'FeatureCollection', features};\n}\n\nfunction parseGeometry(geometry: unknown, columnMetadata: GeoColumnMetadata): Geometry | null {\n switch (columnMetadata.encoding) {\n case 'wkt':\n return WKTLoader.parseTextSync?.(geometry as string) || null;\n case 'wkb':\n default:\n const arrayBuffer = ArrayBuffer.isView(geometry)\n ? geometry.buffer.slice(geometry.byteOffset, geometry.byteOffset + geometry.byteLength)\n : (geometry as ArrayBuffer);\n const geojson = WKBLoader.parseSync?.(arrayBuffer, {\n wkb: {shape: 'geometry'}\n }) as unknown as Geometry;\n return geojson; // binaryGeometry ? binaryToGeometry(binaryGeometry) : null;\n // const binaryGeometry = WKBLoader.parseSync?.(geometry);\n // ts-ignore\n // return binaryGeometry ? binaryToGeometry(binaryGeometry) : null;\n }\n}\n"],"mappings":"AAKA,SAAQA,cAAc,EAAEC,mBAAmB,QAAO,oBAAoB;AAEtE,SAAQC,SAAS,EAAEC,SAAS,QAAO,iBAAiB;AAAC,SAE1BC,cAAc;AAGzC,OAAO,SAASC,wBAAwBA,CACtCC,KAAqC,EACrCC,MAAc,EACA;EACd,MAAMC,WAAW,GAAGJ,cAAc,CAACG,MAAM,CAAC;EAC1C,MAAME,aAAa,GAAGD,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEE,cAAc;EACjD,IAAI,CAACD,aAAa,EAAE;IAClB,MAAM,IAAIE,KAAK,CAAC,oBAAoB,CAAC;EACvC;EACA,MAAMC,cAAc,GAAGJ,WAAW,CAACK,OAAO,CAACJ,aAAa,CAAC;EAEzD,MAAMK,QAAmB,GAAG,EAAE;EAE9B,MAAMC,MAAM,GAAGf,cAAc,CAACM,KAAK,CAAC;EACpC,KAAK,IAAIU,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAGD,MAAM,EAAEC,QAAQ,EAAE,EAAE;IACpD,MAAMC,GAAG,GAAGhB,mBAAmB,CAACK,KAAK,EAAEU,QAAQ,CAAC;IAChD,MAAME,QAAQ,GAAGC,aAAa,CAACF,GAAG,CAACR,aAAa,CAAC,EAAEG,cAAc,CAAC;IAClE,OAAOK,GAAG,CAACR,aAAa,CAAC;IACzB,MAAMW,OAAgB,GAAG;MAACC,IAAI,EAAE,SAAS;MAAEH,QAAQ,EAAEA,QAAS;MAAEI,UAAU,EAAEL;IAAG,CAAC;IAChFH,QAAQ,CAACS,IAAI,CAACH,OAAO,CAAC;EACxB;EAEA,OAAO;IAACI,KAAK,EAAE,eAAe;IAAEjB,MAAM;IAAEc,IAAI,EAAE,mBAAmB;IAAEP;EAAQ,CAAC;AAC9E;AAEA,SAASK,aAAaA,CAACD,QAAiB,EAAEN,cAAiC,EAAmB;EAAA,IAAAa,qBAAA,EAAAC,oBAAA;EAC5F,QAAQd,cAAc,CAACe,QAAQ;IAC7B,KAAK,KAAK;MACR,OAAO,EAAAF,qBAAA,GAAAtB,SAAS,CAACyB,aAAa,cAAAH,qBAAA,uBAAvBA,qBAAA,CAAAI,IAAA,CAAA1B,SAAS,EAAiBe,QAAkB,CAAC,KAAI,IAAI;IAC9D,KAAK,KAAK;IACV;MACE,MAAMY,WAAW,GAAGC,WAAW,CAACC,MAAM,CAACd,QAAQ,CAAC,GAC5CA,QAAQ,CAACe,MAAM,CAACC,KAAK,CAAChB,QAAQ,CAACiB,UAAU,EAAEjB,QAAQ,CAACiB,UAAU,GAAGjB,QAAQ,CAACkB,UAAU,CAAC,GACpFlB,QAAwB;MAC7B,MAAMmB,OAAO,IAAAX,oBAAA,GAAGxB,SAAS,CAACoC,SAAS,cAAAZ,oBAAA,uBAAnBA,oBAAA,CAAAG,IAAA,CAAA3B,SAAS,EAAa4B,WAAW,EAAE;QACjDS,GAAG,EAAE;UAACf,KAAK,EAAE;QAAU;MACzB,CAAC,CAAwB;MACzB,OAAOa,OAAO;EAIlB;AACF"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { Schema } from '@loaders.gl/schema';
|
|
2
|
-
type GeometryType = 'Point' | 'LineString' | 'Polygon' | 'MultiPoint' | 'MultiLineString' | 'MultiPolygon' | 'GeometryCollection' | 'Point Z' | 'LineString Z' | 'Polygon Z' | 'MultiPoint Z' | 'MultiLineString Z' | 'MultiPolygon Z' | 'GeometryCollection Z';
|
|
3
|
-
/**
|
|
4
|
-
* A geoarrow / geoparquet geo metadata object
|
|
5
|
-
* (stored in stringified form in the top level metadata 'geo' key)
|
|
6
|
-
* @see https://github.com/opengeospatial/geoparquet/blob/main/format-specs/geoparquet.md
|
|
7
|
-
* @see https://github.com/geoarrow/geoarrow/blob/main/metadata.md
|
|
8
|
-
* */
|
|
9
|
-
export type GeoMetadata = {
|
|
10
|
-
version?: string;
|
|
11
|
-
primary_column?: string;
|
|
12
|
-
columns: Record<string, GeoColumnMetadata>;
|
|
13
|
-
[key: string]: unknown;
|
|
14
|
-
};
|
|
15
|
-
/** A geoarrow / geoparquet geo metadata for one geometry column */
|
|
16
|
-
export type GeoColumnMetadata = {
|
|
17
|
-
encoding: 'wkb' | 'wkt';
|
|
18
|
-
geometry_types: GeometryType[];
|
|
19
|
-
crs?: object | null;
|
|
20
|
-
orientation?: 'counterclockwise';
|
|
21
|
-
bbox?: [number, number, number, number] | [number, number, number, number, number, number];
|
|
22
|
-
edges?: 'planar' | 'spherical';
|
|
23
|
-
epoch?: number;
|
|
24
|
-
[key: string]: unknown;
|
|
25
|
-
};
|
|
26
|
-
/** Parse a key with stringified arrow metadata */
|
|
27
|
-
export declare function parseJSONStringMetadata(schema: Schema, metadataKey: string): Record<string, unknown> | null;
|
|
28
|
-
export declare function unpackJSONStringMetadata(schema: Schema, metadataKey: string): void;
|
|
29
|
-
/**
|
|
30
|
-
* Reads the GeoMetadata object from the metadata
|
|
31
|
-
* @note geoarrow / parquet schema is stringified into a single key-value pair in the parquet metadata */
|
|
32
|
-
export declare function getGeoMetadata(schema: Schema): GeoMetadata | null;
|
|
33
|
-
/**
|
|
34
|
-
* Stores a geoarrow / geoparquet geo metadata object in the schema
|
|
35
|
-
* @note geoarrow / geoparquet geo metadata is a single stringified JSON field
|
|
36
|
-
*/
|
|
37
|
-
export declare function setGeoMetadata(schema: Schema, geoMetadata: GeoMetadata): void;
|
|
38
|
-
/**
|
|
39
|
-
* Unpacks geo metadata into separate metadata fields (parses the long JSON string)
|
|
40
|
-
* @note geoarrow / parquet schema is stringified into a single key-value pair in the parquet metadata
|
|
41
|
-
*/
|
|
42
|
-
export declare function unpackGeoMetadata(schema: Schema): void;
|
|
43
|
-
export {};
|
|
44
|
-
//# sourceMappingURL=decode-geo-metadata.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decode-geo-metadata.d.ts","sourceRoot":"","sources":["../../../src/lib/geo/decode-geo-metadata.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAQ,MAAM,oBAAoB,CAAC;AAIjD,KAAK,YAAY,GACb,OAAO,GACP,YAAY,GACZ,SAAS,GACT,YAAY,GACZ,iBAAiB,GACjB,cAAc,GACd,oBAAoB,GACpB,SAAS,GACT,cAAc,GACd,WAAW,GACX,cAAc,GACd,mBAAmB,GACnB,gBAAgB,GAChB,sBAAsB,CAAC;AAE3B;;;;;KAKK;AACL,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC3C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,KAAK,GAAG,KAAK,CAAC;IACxB,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3F,KAAK,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,kDAAkD;AAClD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAehC;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAMlF;AAID;;yGAEyG;AACzG,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAGjE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,CAG7E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CA6BtD"}
|