@loaders.gl/arrow 4.1.0-alpha.2 → 4.1.0-alpha.4
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/arrow-loader.d.ts +1 -0
- package/dist/arrow-loader.d.ts.map +1 -1
- package/dist/arrow-loader.js +1 -1
- package/dist/arrow-loader.js.map +1 -1
- package/dist/arrow-worker.js +5 -2
- package/dist/arrow-writer.js +1 -1
- package/dist/arrow-writer.js.map +1 -1
- package/dist/dist.dev.js +45 -25
- package/dist/geoarrow/convert-geoarrow-to-binary-geometry.d.ts.map +1 -1
- package/dist/geoarrow/convert-geoarrow-to-binary-geometry.js.map +1 -1
- package/dist/geoarrow/convert-geoarrow-to-geojson-geometry.d.ts.map +1 -1
- package/dist/geoarrow/convert-geoarrow-to-geojson-geometry.js.map +1 -1
- package/dist/geoarrow/get-arrow-bounds.d.ts.map +1 -1
- package/dist/geoarrow/get-arrow-bounds.js.map +1 -1
- package/dist/geoarrow-loader.d.ts.map +1 -1
- package/dist/geoarrow-loader.js.map +1 -1
- package/dist/geoarrow-writer.js +1 -1
- package/dist/geoarrow-writer.js.map +1 -1
- package/dist/index.cjs +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/arrow-table-batch.d.ts.map +1 -1
- package/dist/lib/arrow-table-batch.js.map +1 -1
- package/dist/lib/arrow-table.d.ts.map +1 -1
- package/dist/lib/arrow-table.js.map +1 -1
- package/dist/lib/encode-arrow.d.ts.map +1 -1
- package/dist/lib/encode-arrow.js.map +1 -1
- package/dist/lib/encode-geoarrow.d.ts.map +1 -1
- package/dist/lib/encode-geoarrow.js.map +1 -1
- package/dist/parsers/parse-arrow-in-batches.d.ts +2 -1
- package/dist/parsers/parse-arrow-in-batches.d.ts.map +1 -1
- package/dist/parsers/parse-arrow-in-batches.js +8 -1
- package/dist/parsers/parse-arrow-in-batches.js.map +1 -1
- package/dist/parsers/parse-arrow-sync.d.ts.map +1 -1
- package/dist/parsers/parse-arrow-sync.js.map +1 -1
- package/dist/parsers/parse-geoarrow-in-batches.d.ts.map +1 -1
- package/dist/parsers/parse-geoarrow-in-batches.js.map +1 -1
- package/dist/parsers/parse-geoarrow-sync.d.ts.map +1 -1
- package/dist/parsers/parse-geoarrow-sync.js.map +1 -1
- package/dist/schema/arrow-type-utils.d.ts.map +1 -1
- package/dist/schema/arrow-type-utils.js.map +1 -1
- package/dist/schema/convert-arrow-schema.d.ts.map +1 -1
- package/dist/schema/convert-arrow-schema.js.map +1 -1
- package/dist/tables/convert-arrow-to-columnar-table.d.ts.map +1 -1
- package/dist/tables/convert-arrow-to-columnar-table.js.map +1 -1
- package/dist/tables/convert-arrow-to-geojson-table.d.ts.map +1 -1
- package/dist/tables/convert-arrow-to-geojson-table.js.map +1 -1
- package/dist/tables/convert-columnar-to-row-table.d.ts.map +1 -1
- package/dist/tables/convert-columnar-to-row-table.js.map +1 -1
- package/dist/tables/convert-table-to-arrow.d.ts.map +1 -1
- package/dist/tables/convert-table-to-arrow.js.map +1 -1
- package/dist/triangulate-on-worker.d.ts.map +1 -1
- package/dist/triangulate-on-worker.js +1 -1
- package/dist/triangulate-on-worker.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/workers/arrow-worker.js.map +1 -1
- package/dist/workers/triangulation-worker-node.d.ts.map +1 -1
- package/dist/workers/triangulation-worker-node.js.map +1 -1
- package/dist/workers/triangulation-worker.js.map +1 -1
- package/package.json +6 -6
- package/src/arrow-loader.ts +3 -1
- package/src/geoarrow/convert-geoarrow-to-binary-geometry.ts +2 -1
- package/src/geoarrow/convert-geoarrow-to-geojson-geometry.ts +2 -1
- package/src/geoarrow/get-arrow-bounds.ts +2 -1
- package/src/geoarrow-loader.ts +2 -1
- package/src/index.ts +2 -1
- package/src/lib/arrow-table-batch.ts +2 -1
- package/src/lib/arrow-table.ts +2 -1
- package/src/lib/encode-arrow.ts +2 -1
- package/src/lib/encode-geoarrow.ts +2 -1
- package/src/parsers/parse-arrow-in-batches.ts +9 -2
- package/src/parsers/parse-arrow-sync.ts +2 -1
- package/src/parsers/parse-geoarrow-in-batches.ts +2 -1
- package/src/parsers/parse-geoarrow-sync.ts +2 -1
- package/src/schema/arrow-type-utils.ts +2 -1
- package/src/schema/convert-arrow-schema.ts +2 -1
- package/src/tables/convert-arrow-to-columnar-table.ts +2 -1
- package/src/tables/convert-arrow-to-geojson-table.ts +2 -1
- package/src/tables/convert-columnar-to-row-table.ts +2 -1
- package/src/tables/convert-table-to-arrow.ts +2 -1
- package/src/triangulate-on-worker.ts +2 -1
- package/src/types.ts +2 -1
- package/src/workers/arrow-worker.ts +2 -1
- package/src/workers/triangulation-worker-node.ts +2 -1
- package/src/workers/triangulation-worker.ts +2 -1
package/dist/arrow-loader.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { ArrowTable } from './lib/arrow-table';
|
|
|
4
4
|
export type ArrowLoaderOptions = LoaderOptions & {
|
|
5
5
|
arrow?: {
|
|
6
6
|
shape: 'arrow-table' | 'columnar-table' | 'array-row-table' | 'object-row-table';
|
|
7
|
+
batchDebounceMs?: number;
|
|
7
8
|
};
|
|
8
9
|
};
|
|
9
10
|
/** ArrowJS table loader */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrow-loader.d.ts","sourceRoot":"","sources":["../src/arrow-loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"arrow-loader.d.ts","sourceRoot":"","sources":["../src/arrow-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,cAAc,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAQlD,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,aAAa,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;QACjF,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH,CAAC;AAEF,2BAA2B;AAC3B,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,kBAAkB,CAoB3E,CAAC;AAEF,2BAA2B;AAC3B,eAAO,MAAM,WAAW,EAAE,gBAAgB,CACxC,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,aAAa,EAC3D,eAAe,EACf,kBAAkB,CAQnB,CAAC"}
|
package/dist/arrow-loader.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { parseArrowSync } from "./parsers/parse-arrow-sync.js";
|
|
2
2
|
import { parseArrowInBatches } from "./parsers/parse-arrow-in-batches.js";
|
|
3
|
-
const VERSION = typeof
|
|
3
|
+
const VERSION = typeof "4.1.0-alpha.4" !== 'undefined' ? "4.1.0-alpha.4" : 'latest';
|
|
4
4
|
export const ArrowWorkerLoader = {
|
|
5
5
|
name: 'Apache Arrow',
|
|
6
6
|
id: 'arrow',
|
package/dist/arrow-loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrow-loader.js","names":["parseArrowSync","parseArrowInBatches","VERSION","
|
|
1
|
+
{"version":3,"file":"arrow-loader.js","names":["parseArrowSync","parseArrowInBatches","VERSION","ArrowWorkerLoader","name","id","module","version","category","extensions","mimeTypes","binary","tests","options","arrow","shape","ArrowLoader","parse","arraybuffer","parseSync","parseInBatches"],"sources":["../src/arrow-loader.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {\n ArrayRowTable,\n ArrowTableBatch,\n ColumnarTable,\n ObjectRowTable\n} from '@loaders.gl/schema';\nimport type {ArrowTable} from './lib/arrow-table';\nimport {parseArrowSync} from './parsers/parse-arrow-sync';\nimport {parseArrowInBatches} from './parsers/parse-arrow-in-batches';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type ArrowLoaderOptions = LoaderOptions & {\n arrow?: {\n shape: 'arrow-table' | 'columnar-table' | 'array-row-table' | 'object-row-table';\n batchDebounceMs?: number;\n };\n};\n\n/** ArrowJS table loader */\nexport const ArrowWorkerLoader: Loader<ArrowTable, never, ArrowLoaderOptions> = {\n name: 'Apache Arrow',\n id: 'arrow',\n module: 'arrow',\n version: VERSION,\n // worker: true,\n category: 'table',\n extensions: ['arrow', 'feather'],\n mimeTypes: [\n 'application/vnd.apache.arrow.file',\n 'application/vnd.apache.arrow.stream',\n 'application/octet-stream'\n ],\n binary: true,\n tests: ['ARROW'],\n options: {\n arrow: {\n shape: 'columnar-table'\n }\n }\n};\n\n/** ArrowJS table loader */\nexport const ArrowLoader: LoaderWithParser<\n ArrowTable | ColumnarTable | ObjectRowTable | ArrayRowTable,\n ArrowTableBatch,\n ArrowLoaderOptions\n> = {\n ...ArrowWorkerLoader,\n parse: async (arraybuffer: ArrayBuffer, options?: ArrowLoaderOptions) =>\n parseArrowSync(arraybuffer, options?.arrow),\n parseSync: (arraybuffer: ArrayBuffer, options?: ArrowLoaderOptions) =>\n parseArrowSync(arraybuffer, options?.arrow),\n parseInBatches: parseArrowInBatches\n};\n"],"mappings":"SAYQA,cAAc;AAAA,SACdC,mBAAmB;AAI3B,MAAMC,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAU3E,OAAO,MAAMC,iBAAgE,GAAG;EAC9EC,IAAI,EAAE,cAAc;EACpBC,EAAE,EAAE,OAAO;EACXC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAEL,OAAO;EAEhBM,QAAQ,EAAE,OAAO;EACjBC,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;EAChCC,SAAS,EAAE,CACT,mCAAmC,EACnC,qCAAqC,EACrC,0BAA0B,CAC3B;EACDC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,OAAO,CAAC;EAChBC,OAAO,EAAE;IACPC,KAAK,EAAE;MACLC,KAAK,EAAE;IACT;EACF;AACF,CAAC;AAGD,OAAO,MAAMC,WAIZ,GAAG;EACF,GAAGb,iBAAiB;EACpBc,KAAK,EAAE,MAAAA,CAAOC,WAAwB,EAAEL,OAA4B,KAClEb,cAAc,CAACkB,WAAW,EAAEL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,KAAK,CAAC;EAC7CK,SAAS,EAAEA,CAACD,WAAwB,EAAEL,OAA4B,KAChEb,cAAc,CAACkB,WAAW,EAAEL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,KAAK,CAAC;EAC7CM,cAAc,EAAEnB;AAClB,CAAC"}
|
package/dist/arrow-worker.js
CHANGED
|
@@ -12154,11 +12154,14 @@ return true;`);
|
|
|
12154
12154
|
}
|
|
12155
12155
|
|
|
12156
12156
|
// src/parsers/parse-arrow-in-batches.ts
|
|
12157
|
-
function parseArrowInBatches(asyncIterator) {
|
|
12157
|
+
function parseArrowInBatches(asyncIterator, options) {
|
|
12158
12158
|
async function* makeArrowAsyncIterator() {
|
|
12159
12159
|
const readers = RecordBatchReader.readAll(asyncIterator);
|
|
12160
12160
|
for await (const reader of readers) {
|
|
12161
12161
|
for await (const recordBatch of reader) {
|
|
12162
|
+
if (options?.arrow?.batchDebounceMs !== void 0 && options?.arrow?.batchDebounceMs > 0) {
|
|
12163
|
+
await new Promise((resolve) => setTimeout(resolve, options.arrow?.batchDebounceMs || 0));
|
|
12164
|
+
}
|
|
12162
12165
|
const arrowTabledBatch = {
|
|
12163
12166
|
shape: "arrow-table",
|
|
12164
12167
|
batchType: "data",
|
|
@@ -12174,7 +12177,7 @@ return true;`);
|
|
|
12174
12177
|
}
|
|
12175
12178
|
|
|
12176
12179
|
// src/arrow-loader.ts
|
|
12177
|
-
var VERSION = true ? "4.1.0-alpha.
|
|
12180
|
+
var VERSION = true ? "4.1.0-alpha.4" : "latest";
|
|
12178
12181
|
var ArrowWorkerLoader = {
|
|
12179
12182
|
name: "Apache Arrow",
|
|
12180
12183
|
id: "arrow",
|
package/dist/arrow-writer.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { encodeArrowSync } from "./lib/encode-arrow.js";
|
|
2
|
-
const VERSION = typeof
|
|
2
|
+
const VERSION = typeof "4.1.0-alpha.4" !== 'undefined' ? "4.1.0-alpha.4" : 'latest';
|
|
3
3
|
export const ArrowWriter = {
|
|
4
4
|
name: 'Apache Arrow',
|
|
5
5
|
id: 'arrow',
|
package/dist/arrow-writer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrow-writer.js","names":["encodeArrowSync","VERSION","
|
|
1
|
+
{"version":3,"file":"arrow-writer.js","names":["encodeArrowSync","VERSION","ArrowWriter","name","id","module","version","extensions","mimeTypes","binary","options","encode","encodeArrow","data","encodeSync"],"sources":["../src/arrow-writer.ts"],"sourcesContent":["// import type {} from '@loaders.gl/loader-utils';\n\nimport type {WriterWithEncoder, WriterOptions} from '@loaders.gl/loader-utils';\nimport {ColumnarTable} from './lib/encode-arrow';\nimport {encodeArrowSync} from './lib/encode-arrow';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\ntype ArrowWriterOptions = WriterOptions & {\n arrow?: {};\n};\n\n/** Apache Arrow writer */\nexport const ArrowWriter: WriterWithEncoder<ColumnarTable, never, ArrowWriterOptions> = {\n name: 'Apache Arrow',\n id: 'arrow',\n module: 'arrow',\n version: VERSION,\n extensions: ['arrow', 'feather'],\n mimeTypes: [\n 'application/vnd.apache.arrow.file',\n 'application/vnd.apache.arrow.stream',\n 'application/octet-stream'\n ],\n binary: true,\n options: {},\n encode: async function encodeArrow(data, options?): Promise<ArrayBuffer> {\n return encodeArrowSync(data);\n },\n encodeSync(data, options?) {\n return encodeArrowSync(data);\n }\n};\n"],"mappings":"SAIQA,eAAe;AAIvB,MAAMC,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAO3E,OAAO,MAAMC,WAAwE,GAAG;EACtFC,IAAI,EAAE,cAAc;EACpBC,EAAE,EAAE,OAAO;EACXC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAEL,OAAO;EAChBM,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;EAChCC,SAAS,EAAE,CACT,mCAAmC,EACnC,qCAAqC,EACrC,0BAA0B,CAC3B;EACDC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAE,CAAC,CAAC;EACXC,MAAM,EAAE,eAAeC,WAAWA,CAACC,IAAI,EAAEH,OAAQ,EAAwB;IACvE,OAAOV,eAAe,CAACa,IAAI,CAAC;EAC9B,CAAC;EACDC,UAAUA,CAACD,IAAI,EAAEH,OAAQ,EAAE;IACzB,OAAOV,eAAe,CAACa,IAAI,CAAC;EAC9B;AACF,CAAC"}
|
package/dist/dist.dev.js
CHANGED
|
@@ -79,6 +79,7 @@ var __exports__ = (() => {
|
|
|
79
79
|
if (Number.isFinite(cursor)) {
|
|
80
80
|
this.cursor = cursor;
|
|
81
81
|
}
|
|
82
|
+
this.shape = "array-row-table";
|
|
82
83
|
this.rows = this.rows || new Array(DEFAULT_ROW_COUNT);
|
|
83
84
|
this.rows[this.length] = row;
|
|
84
85
|
this.length++;
|
|
@@ -87,6 +88,7 @@ var __exports__ = (() => {
|
|
|
87
88
|
if (Number.isFinite(cursor)) {
|
|
88
89
|
this.cursor = cursor;
|
|
89
90
|
}
|
|
91
|
+
this.shape = "object-row-table";
|
|
90
92
|
this.rows = this.rows || new Array(DEFAULT_ROW_COUNT);
|
|
91
93
|
this.rows[this.length] = row;
|
|
92
94
|
this.length++;
|
|
@@ -99,7 +101,7 @@ var __exports__ = (() => {
|
|
|
99
101
|
rows = rows.slice(0, this.length);
|
|
100
102
|
this.rows = null;
|
|
101
103
|
const batch = {
|
|
102
|
-
shape: this.
|
|
104
|
+
shape: this.shape || "array-row-table",
|
|
103
105
|
batchType: "data",
|
|
104
106
|
data: rows,
|
|
105
107
|
length: this.length,
|
|
@@ -115,12 +117,16 @@ var __exports__ = (() => {
|
|
|
115
117
|
if (!arrayRow) {
|
|
116
118
|
throw new Error("null row");
|
|
117
119
|
}
|
|
118
|
-
if (!headers) {
|
|
119
|
-
throw new Error("no headers");
|
|
120
|
-
}
|
|
121
120
|
const objectRow = {};
|
|
122
|
-
|
|
123
|
-
|
|
121
|
+
if (headers) {
|
|
122
|
+
for (let i = 0; i < headers.length; i++) {
|
|
123
|
+
objectRow[headers[i]] = arrayRow[i];
|
|
124
|
+
}
|
|
125
|
+
} else {
|
|
126
|
+
for (let i = 0; i < arrayRow.length; i++) {
|
|
127
|
+
const columnName = `column-${i}`;
|
|
128
|
+
objectRow[columnName] = arrayRow[i];
|
|
129
|
+
}
|
|
124
130
|
}
|
|
125
131
|
return objectRow;
|
|
126
132
|
}
|
|
@@ -128,14 +134,25 @@ var __exports__ = (() => {
|
|
|
128
134
|
if (!objectRow) {
|
|
129
135
|
throw new Error("null row");
|
|
130
136
|
}
|
|
131
|
-
if (
|
|
132
|
-
|
|
137
|
+
if (headers) {
|
|
138
|
+
const arrayRow = new Array(headers.length);
|
|
139
|
+
for (let i = 0; i < headers.length; i++) {
|
|
140
|
+
arrayRow[i] = objectRow[headers[i]];
|
|
141
|
+
}
|
|
142
|
+
return arrayRow;
|
|
133
143
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
144
|
+
return Object.values(objectRow);
|
|
145
|
+
}
|
|
146
|
+
function inferHeadersFromArrayRow(arrayRow) {
|
|
147
|
+
const headers = [];
|
|
148
|
+
for (let i = 0; i < arrayRow.length; i++) {
|
|
149
|
+
const columnName = `column-${i}`;
|
|
150
|
+
headers.push(columnName);
|
|
137
151
|
}
|
|
138
|
-
return
|
|
152
|
+
return headers;
|
|
153
|
+
}
|
|
154
|
+
function inferHeadersFromObjectRow(row) {
|
|
155
|
+
return Object.keys(row);
|
|
139
156
|
}
|
|
140
157
|
|
|
141
158
|
// ../schema/src/lib/table/batches/row-table-batch-aggregator.ts
|
|
@@ -145,11 +162,11 @@ var __exports__ = (() => {
|
|
|
145
162
|
objectRows = null;
|
|
146
163
|
arrayRows = null;
|
|
147
164
|
cursor = 0;
|
|
148
|
-
_headers =
|
|
165
|
+
_headers = null;
|
|
149
166
|
constructor(schema, options) {
|
|
150
167
|
this.options = options;
|
|
151
168
|
this.schema = schema;
|
|
152
|
-
if (
|
|
169
|
+
if (schema) {
|
|
153
170
|
this._headers = [];
|
|
154
171
|
for (const key in schema) {
|
|
155
172
|
this._headers[schema[key].index] = schema[key].name;
|
|
@@ -163,6 +180,7 @@ var __exports__ = (() => {
|
|
|
163
180
|
if (Number.isFinite(cursor)) {
|
|
164
181
|
this.cursor = cursor;
|
|
165
182
|
}
|
|
183
|
+
this._headers ||= inferHeadersFromArrayRow(row);
|
|
166
184
|
switch (this.options.shape) {
|
|
167
185
|
case "object-row-table":
|
|
168
186
|
const rowObject = convertToObjectRow(row, this._headers);
|
|
@@ -179,6 +197,7 @@ var __exports__ = (() => {
|
|
|
179
197
|
if (Number.isFinite(cursor)) {
|
|
180
198
|
this.cursor = cursor;
|
|
181
199
|
}
|
|
200
|
+
this._headers ||= inferHeadersFromObjectRow(row);
|
|
182
201
|
switch (this.options.shape) {
|
|
183
202
|
case "array-row-table":
|
|
184
203
|
const rowArray = convertToArrayRow(row, this._headers);
|
|
@@ -288,7 +307,7 @@ var __exports__ = (() => {
|
|
|
288
307
|
|
|
289
308
|
// ../schema/src/lib/table/batches/table-batch-builder.ts
|
|
290
309
|
var DEFAULT_OPTIONS = {
|
|
291
|
-
shape:
|
|
310
|
+
shape: void 0,
|
|
292
311
|
batchSize: "auto",
|
|
293
312
|
batchDebounceMs: 0,
|
|
294
313
|
limit: 0,
|
|
@@ -400,8 +419,6 @@ var __exports__ = (() => {
|
|
|
400
419
|
}
|
|
401
420
|
_getTableBatchType() {
|
|
402
421
|
switch (this.options.shape) {
|
|
403
|
-
case "row-table":
|
|
404
|
-
return BaseTableBatchAggregator;
|
|
405
422
|
case "array-row-table":
|
|
406
423
|
case "object-row-table":
|
|
407
424
|
return RowTableBatchAggregator;
|
|
@@ -413,7 +430,7 @@ var __exports__ = (() => {
|
|
|
413
430
|
}
|
|
414
431
|
return TableBatchBuilder.ArrowBatch;
|
|
415
432
|
default:
|
|
416
|
-
|
|
433
|
+
return BaseTableBatchAggregator;
|
|
417
434
|
}
|
|
418
435
|
}
|
|
419
436
|
};
|
|
@@ -12719,11 +12736,14 @@ return true;`);
|
|
|
12719
12736
|
}
|
|
12720
12737
|
|
|
12721
12738
|
// src/parsers/parse-arrow-in-batches.ts
|
|
12722
|
-
function parseArrowInBatches(asyncIterator) {
|
|
12739
|
+
function parseArrowInBatches(asyncIterator, options) {
|
|
12723
12740
|
async function* makeArrowAsyncIterator() {
|
|
12724
12741
|
const readers = RecordBatchReader.readAll(asyncIterator);
|
|
12725
12742
|
for await (const reader of readers) {
|
|
12726
12743
|
for await (const recordBatch of reader) {
|
|
12744
|
+
if (options?.arrow?.batchDebounceMs !== void 0 && options?.arrow?.batchDebounceMs > 0) {
|
|
12745
|
+
await new Promise((resolve) => setTimeout(resolve, options.arrow?.batchDebounceMs || 0));
|
|
12746
|
+
}
|
|
12727
12747
|
const arrowTabledBatch = {
|
|
12728
12748
|
shape: "arrow-table",
|
|
12729
12749
|
batchType: "data",
|
|
@@ -12739,7 +12759,7 @@ return true;`);
|
|
|
12739
12759
|
}
|
|
12740
12760
|
|
|
12741
12761
|
// src/arrow-loader.ts
|
|
12742
|
-
var VERSION =
|
|
12762
|
+
var VERSION = true ? "4.1.0-alpha.4" : "latest";
|
|
12743
12763
|
var ArrowWorkerLoader = {
|
|
12744
12764
|
name: "Apache Arrow",
|
|
12745
12765
|
id: "arrow",
|
|
@@ -12785,7 +12805,7 @@ return true;`);
|
|
|
12785
12805
|
}
|
|
12786
12806
|
|
|
12787
12807
|
// src/arrow-writer.ts
|
|
12788
|
-
var VERSION2 =
|
|
12808
|
+
var VERSION2 = true ? "4.1.0-alpha.4" : "latest";
|
|
12789
12809
|
var ArrowWriter = {
|
|
12790
12810
|
name: "Apache Arrow",
|
|
12791
12811
|
id: "arrow",
|
|
@@ -13917,7 +13937,7 @@ return true;`);
|
|
|
13917
13937
|
}
|
|
13918
13938
|
|
|
13919
13939
|
// ../wkt/src/lib/utils/version.ts
|
|
13920
|
-
var VERSION3 =
|
|
13940
|
+
var VERSION3 = true ? "4.1.0-alpha.4" : "latest";
|
|
13921
13941
|
|
|
13922
13942
|
// ../wkt/src/lib/parse-wkt.ts
|
|
13923
13943
|
var numberRegexp = /[-+]?([0-9]*\.[0-9]+|[0-9]+)([eE][-+]?[0-9]+)?/;
|
|
@@ -14752,11 +14772,11 @@ return true;`);
|
|
|
14752
14772
|
function getVersion() {
|
|
14753
14773
|
if (!globalThis._loadersgl_?.version) {
|
|
14754
14774
|
globalThis._loadersgl_ = globalThis._loadersgl_ || {};
|
|
14755
|
-
if (
|
|
14775
|
+
if (false) {
|
|
14756
14776
|
console.warn("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
|
|
14757
14777
|
globalThis._loadersgl_.version = NPM_TAG;
|
|
14758
14778
|
} else {
|
|
14759
|
-
globalThis._loadersgl_.version =
|
|
14779
|
+
globalThis._loadersgl_.version = "4.1.0-alpha.4";
|
|
14760
14780
|
}
|
|
14761
14781
|
}
|
|
14762
14782
|
return globalThis._loadersgl_.version;
|
|
@@ -15298,7 +15318,7 @@ return true;`);
|
|
|
15298
15318
|
}
|
|
15299
15319
|
|
|
15300
15320
|
// src/triangulate-on-worker.ts
|
|
15301
|
-
var VERSION5 =
|
|
15321
|
+
var VERSION5 = true ? "4.1.0-alpha.4" : "latest";
|
|
15302
15322
|
var TriangulationWorker = {
|
|
15303
15323
|
id: "triangulation",
|
|
15304
15324
|
name: "Triangulate",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-geoarrow-to-binary-geometry.d.ts","sourceRoot":"","sources":["../../src/geoarrow/convert-geoarrow-to-binary-geometry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"convert-geoarrow-to-binary-geometry.d.ts","sourceRoot":"","sources":["../../src/geoarrow/convert-geoarrow-to-binary-geometry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAC,uBAAuB,IAAI,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAajD;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,oEAAoE;IACpE,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,wCAAwC;IACxC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,6CAA6C;IAC7C,YAAY,EAAE;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAC,CAAC;IAChE,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;CAC1B,CAAC;AAsBF;;GAEG;AACH,wBAAgB,yBAAyB;;;;;;;;;;;;;;;EAQxC;AAED,MAAM,MAAM,gCAAgC,GAAG;IAC7C,6FAA6F;IAC7F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mHAAmH;IACnH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,KAAK,CAAC,MAAM,EACvB,WAAW,EAAE,gBAAgB,EAC7B,OAAO,CAAC,EAAE,gCAAgC,GACzC,sBAAsB,CAiFxB;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,gBAAgB,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,EAAE,CAiCjG;AA2ED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,WAAW,EAC3B,uBAAuB,EAAE,UAAU,EACnC,mBAAmB,EAAE,YAAY,EACjC,IAAI,EAAE,MAAM,GACX,WAAW,GAAG,IAAI,CAyCpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-geoarrow-to-binary-geometry.js","names":["earcut","updateBoundsFromGeoArrowSamples","BinaryGeometryType","getBinaryGeometryTemplate","globalFeatureIds","value","Uint32Array","size","positions","Float32Array","properties","numericProps","featureIds","getBinaryGeometriesFromArrow","geoColumn","geoEncoding","options","featureTypes","polygon","point","line","chunks","chunkIndex","undefined","data","bounds","Infinity","globalFeatureIdOffset","chunkOffset","binaryGeometries","forEach","chunk","flatCoordinateArray","nDim","geomOffset","triangles","getBinaryGeometriesFromChunk","length","i","binaryContent","Array","keys","map","index","push","shape","points","type","lines","pathIndices","Uint16Array","polygons","polygonIndices","primitivePolygonIndices","calculateMeanCenters","meanCenters","getMeanCentersFromBinaryGeometries","globalMeanCenters","binaryGeometry","binaryGeometryType","_binaryContent$primit","getMeanCentersFromGeometry","center","geometryType","vertexCount","vertexIndex","coordIdx","primitiveIdx","featureId","vertexCountInFeature","getBinaryPointsFromChunk","getBinaryLinesFromChunk","getBinaryPolygonsFromChunk","Error","getTriangleIndices","primitiveIndex","startIdx","endIdx","slicedFlatCoords","subarray","holeIndices","triangleIndices","j","trianglesUint32","error","isMultiPolygon","polygonData","children","polygonOffset","valueOffsets","partData","at","ringData","pointData","coordData","stride","values","geometryIndicies","numOfVertices","triangulate","isMultiLineString","lineData","isMultiPoint","Int32Array"],"sources":["../../src/geoarrow/convert-geoarrow-to-binary-geometry.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport * as arrow from 'apache-arrow';\nimport {earcut} from '@math.gl/polygon';\nimport {BinaryFeatureCollection as BinaryFeatures} from '@loaders.gl/schema';\nimport {GeoArrowEncoding} from '@loaders.gl/gis';\nimport {updateBoundsFromGeoArrowSamples} from './get-arrow-bounds';\nimport {TypedArray} from '@loaders.gl/loader-utils';\n\n/**\n * Binary geometry type\n */\nenum BinaryGeometryType {\n points = 'points',\n lines = 'lines',\n polygons = 'polygons'\n}\n\n/**\n * Binary data from geoarrow column and can be used by e.g. deck.gl GeojsonLayer\n */\nexport type BinaryDataFromGeoArrow = {\n /** Binary format geometries, an array of BinaryFeatureCollection */\n binaryGeometries: BinaryFeatures[];\n /** Boundary of the binary geometries */\n bounds: [number, number, number, number];\n /** Feature types of the binary geometries */\n featureTypes: {polygon: boolean; point: boolean; line: boolean};\n /** (Optional) mean centers of the binary geometries for e.g. polygon filtering */\n meanCenters?: number[][];\n};\n\n/**\n * Binary geometry content returned from getBinaryGeometriesFromChunk\n */\ntype BinaryGeometryContent = {\n // Array of Point feature indexes by vertex\n featureIds: Uint32Array;\n /** Flat coordinate array of e.g. x, y or x,y,z */\n flatCoordinateArray: Float64Array;\n /** Dimention of each position */\n nDim: number;\n /** Array of geometry offsets: the start index of primitive geometry */\n geomOffset: Int32Array;\n /** Array of geometry indicies: the start index of each geometry */\n geometryIndicies: Uint16Array;\n /** (Optional) indices of triangels returned from polygon triangulation (Polygon only) */\n triangles?: Uint32Array;\n /** (Optional) array of mean center of each geometry */\n meanCenters?: Float64Array;\n};\n\n/**\n * binary geometry template, see deck.gl BinaryGeometry\n */\nexport function getBinaryGeometryTemplate() {\n return {\n globalFeatureIds: {value: new Uint32Array(0), size: 1},\n positions: {value: new Float32Array(0), size: 2},\n properties: [],\n numericProps: {},\n featureIds: {value: new Uint32Array(0), size: 1}\n };\n}\n\nexport type BinaryGeometriesFromArrowOptions = {\n /** option to specify which chunk to get binary geometries from, for progressive rendering */\n chunkIndex?: number;\n /** The offset (beginning index of rows) of input chunk. Used for reconstructing globalFeatureIds in web workers */\n chunkOffset?: number;\n /** option to get mean centers from geometries, for polygon filtering */\n calculateMeanCenters?: boolean;\n /** option to compute the triangle indices by tesselating polygons */\n triangulate?: boolean;\n};\n\n/**\n * get binary geometries from geoarrow column\n *\n * @param geoColumn the geoarrow column, e.g. arrowTable.getChildAt(geoColumnIndex)\n * @param geoEncoding the geo encoding of the geoarrow column, e.g. getGeoArrowEncoding(arrowTable.schema, geoColumnName)\n * @param options options for getting binary geometries {meanCenter: boolean}\n * @returns BinaryDataFromGeoArrow\n */\nexport function getBinaryGeometriesFromArrow(\n geoColumn: arrow.Vector,\n geoEncoding: GeoArrowEncoding,\n options?: BinaryGeometriesFromArrowOptions\n): BinaryDataFromGeoArrow {\n const featureTypes = {\n polygon: geoEncoding === 'geoarrow.multipolygon' || geoEncoding === 'geoarrow.polygon',\n point: geoEncoding === 'geoarrow.multipoint' || geoEncoding === 'geoarrow.point',\n line: geoEncoding === 'geoarrow.multilinestring' || geoEncoding === 'geoarrow.linestring'\n };\n\n const chunks =\n options?.chunkIndex !== undefined && options?.chunkIndex >= 0\n ? [geoColumn.data[options?.chunkIndex]]\n : geoColumn.data;\n let bounds: [number, number, number, number] = [Infinity, Infinity, -Infinity, -Infinity];\n let globalFeatureIdOffset = options?.chunkOffset || 0;\n const binaryGeometries: BinaryFeatures[] = [];\n\n chunks.forEach((chunk) => {\n const {featureIds, flatCoordinateArray, nDim, geomOffset, triangles} =\n getBinaryGeometriesFromChunk(chunk, geoEncoding, options);\n\n const globalFeatureIds = new Uint32Array(featureIds.length);\n for (let i = 0; i < featureIds.length; i++) {\n globalFeatureIds[i] = featureIds[i] + globalFeatureIdOffset;\n }\n\n const binaryContent = {\n globalFeatureIds: {value: globalFeatureIds, size: 1},\n positions: {\n value: flatCoordinateArray,\n size: nDim\n },\n featureIds: {value: featureIds, size: 1},\n // eslint-disable-next-line no-loop-func\n properties: [...Array(chunk.length).keys()].map((i) => ({\n index: i + globalFeatureIdOffset\n }))\n };\n\n // TODO: check if chunks are sequentially accessed\n globalFeatureIdOffset += chunk.length;\n // NOTE: deck.gl defines the BinaryFeatures structure must have points, lines, polygons even if they are empty\n binaryGeometries.push({\n shape: 'binary-feature-collection',\n points: {\n type: 'Point',\n ...getBinaryGeometryTemplate(),\n ...(featureTypes.point ? binaryContent : {})\n },\n lines: {\n type: 'LineString',\n ...getBinaryGeometryTemplate(),\n ...(featureTypes.line ? binaryContent : {}),\n pathIndices: {value: featureTypes.line ? geomOffset : new Uint16Array(0), size: 1}\n },\n polygons: {\n type: 'Polygon',\n ...getBinaryGeometryTemplate(),\n ...(featureTypes.polygon ? binaryContent : {}),\n polygonIndices: {\n // use geomOffset as polygonIndices same as primitivePolygonIndices since we are using earcut to get triangule indices\n value: featureTypes.polygon ? geomOffset : new Uint16Array(0),\n size: 1\n },\n primitivePolygonIndices: {\n value: featureTypes.polygon ? geomOffset : new Uint16Array(0),\n size: 1\n },\n ...(triangles ? {triangles: {value: triangles, size: 1}} : {})\n }\n });\n\n bounds = updateBoundsFromGeoArrowSamples(flatCoordinateArray, nDim, bounds);\n });\n\n return {\n binaryGeometries,\n bounds,\n featureTypes,\n ...(options?.calculateMeanCenters\n ? {meanCenters: getMeanCentersFromBinaryGeometries(binaryGeometries)}\n : {})\n };\n}\n\n/**\n * Get mean centers from binary geometries\n * @param binaryGeometries binary geometries from geoarrow column, an array of BinaryFeatureCollection\n * @returns mean centers of the binary geometries\n */\nexport function getMeanCentersFromBinaryGeometries(binaryGeometries: BinaryFeatures[]): number[][] {\n const globalMeanCenters: number[][] = [];\n binaryGeometries.forEach((binaryGeometry: BinaryFeatures) => {\n let binaryGeometryType: keyof typeof BinaryGeometryType | null = null;\n if (binaryGeometry.points && binaryGeometry.points.positions.value.length > 0) {\n binaryGeometryType = BinaryGeometryType.points;\n } else if (binaryGeometry.lines && binaryGeometry.lines.positions.value.length > 0) {\n binaryGeometryType = BinaryGeometryType.lines;\n } else if (binaryGeometry.polygons && binaryGeometry.polygons.positions.value.length > 0) {\n binaryGeometryType = BinaryGeometryType.polygons;\n }\n\n const binaryContent = binaryGeometryType ? binaryGeometry[binaryGeometryType] : null;\n if (binaryContent && binaryGeometryType !== null) {\n const featureIds = binaryContent.featureIds.value;\n const flatCoordinateArray = binaryContent.positions.value;\n const nDim = binaryContent.positions.size;\n const primitivePolygonIndices =\n binaryContent.type === 'Polygon' ? binaryContent.primitivePolygonIndices?.value : undefined;\n\n const meanCenters = getMeanCentersFromGeometry(\n featureIds,\n flatCoordinateArray,\n nDim,\n binaryGeometryType,\n primitivePolygonIndices\n );\n meanCenters.forEach((center) => {\n globalMeanCenters.push(center);\n });\n }\n });\n return globalMeanCenters;\n}\n\n/**\n * Get mean centers from raw coordinates and feature ids\n * @param featureIds Array of feature ids indexes by vertex\n * @param flatCoordinateArray Array of vertex, e.g. x, y or x, y, z, positions\n * @param nDim number of dimensions per position\n * @returns - mean centers of each polygon\n */\nfunction getMeanCentersFromGeometry(\n featureIds: TypedArray,\n flatCoordinateArray: TypedArray,\n nDim: number,\n geometryType: keyof typeof BinaryGeometryType,\n primitivePolygonIndices?: TypedArray\n) {\n const meanCenters: number[][] = [];\n const vertexCount = flatCoordinateArray.length;\n let vertexIndex = 0;\n let coordIdx = 0;\n let primitiveIdx = 0;\n while (vertexIndex < vertexCount) {\n const featureId = featureIds[vertexIndex / nDim];\n const center = [0, 0];\n let vertexCountInFeature = 0;\n while (vertexIndex < vertexCount && featureIds[coordIdx] === featureId) {\n if (\n geometryType === BinaryGeometryType.polygons &&\n primitivePolygonIndices?.[primitiveIdx] === coordIdx\n ) {\n // skip the first point since it is the same as the last point in each ring for polygons\n vertexIndex += nDim;\n primitiveIdx++;\n } else {\n center[0] += flatCoordinateArray[vertexIndex];\n center[1] += flatCoordinateArray[vertexIndex + 1];\n vertexIndex += nDim;\n vertexCountInFeature++;\n }\n coordIdx += 1;\n }\n center[0] /= vertexCountInFeature;\n center[1] /= vertexCountInFeature;\n meanCenters.push(center);\n }\n return meanCenters;\n}\n\n/**\n * get binary geometries from geoarrow column\n * @param chunk one chunk/batch of geoarrow column\n * @param geoEncoding geo encoding of the geoarrow column\n * @param options options for getting binary geometries\n * @returns BinaryGeometryContent\n */\nfunction getBinaryGeometriesFromChunk(\n chunk: arrow.Data,\n geoEncoding: GeoArrowEncoding,\n options?: BinaryGeometriesFromArrowOptions\n): BinaryGeometryContent {\n switch (geoEncoding) {\n case 'geoarrow.point':\n case 'geoarrow.multipoint':\n return getBinaryPointsFromChunk(chunk, geoEncoding);\n case 'geoarrow.linestring':\n case 'geoarrow.multilinestring':\n return getBinaryLinesFromChunk(chunk, geoEncoding);\n case 'geoarrow.polygon':\n case 'geoarrow.multipolygon':\n return getBinaryPolygonsFromChunk(chunk, geoEncoding, options);\n default:\n throw Error('invalid geoarrow encoding');\n }\n}\n\n/**\n * get triangle indices. Allows deck.gl to skip performing costly triangulation on main thread.\n * @param polygonIndices Indices within positions of the start of each simple Polygon\n * @param primitivePolygonIndices Indices within positions of the start of each primitive Polygon/ring\n * @param flatCoordinateArray Array of x, y or x, y, z positions\n * @param nDim - number of dimensions per position\n * @returns triangle indices or null if invalid polygon and earcut fails\n */\nexport function getTriangleIndices(\n polygonIndices: Uint16Array,\n primitivePolygonIndices: Int32Array,\n flatCoordinateArray: Float64Array,\n nDim: number\n): Uint32Array | null {\n try {\n let primitiveIndex = 0;\n const triangles: number[] = [];\n // loop polygonIndices to get triangles\n for (let i = 0; i < polygonIndices.length - 1; i++) {\n const startIdx = polygonIndices[i];\n const endIdx = polygonIndices[i + 1];\n // get subarray of flatCoordinateArray\n const slicedFlatCoords = flatCoordinateArray.subarray(startIdx * nDim, endIdx * nDim);\n // get holeIndices for earcut\n const holeIndices: number[] = [];\n while (primitivePolygonIndices[primitiveIndex] < endIdx) {\n if (primitivePolygonIndices[primitiveIndex] > startIdx) {\n holeIndices.push(primitivePolygonIndices[primitiveIndex] - startIdx);\n }\n primitiveIndex++;\n }\n // TODO check if each ring is closed\n const triangleIndices = earcut(\n slicedFlatCoords,\n holeIndices.length > 0 ? holeIndices : undefined,\n nDim\n );\n if (triangleIndices.length === 0) {\n throw Error('earcut failed e.g. invalid polygon');\n }\n for (let j = 0; j < triangleIndices.length; j++) {\n triangles.push(triangleIndices[j] + startIdx);\n }\n }\n // convert traingles to Uint32Array\n const trianglesUint32 = new Uint32Array(triangles.length);\n for (let i = 0; i < triangles.length; i++) {\n trianglesUint32[i] = triangles[i];\n }\n return trianglesUint32;\n } catch (error) {\n // if earcut fails, return null\n return null;\n }\n}\n\n/**\n * get binary polygons from geoarrow polygon column\n * @param chunk one chunk of geoarrow polygon column\n * @param geoEncoding the geo encoding of the geoarrow polygon column\n * @param options options for getting binary geometries\n * @returns BinaryGeometryContent\n */\nfunction getBinaryPolygonsFromChunk(\n chunk: arrow.Data,\n geoEncoding: string,\n options?: BinaryGeometriesFromArrowOptions\n): BinaryGeometryContent {\n const isMultiPolygon = geoEncoding === 'geoarrow.multipolygon';\n\n const polygonData = isMultiPolygon ? chunk.children[0] : chunk;\n const polygonOffset = polygonData.valueOffsets;\n const partData = isMultiPolygon\n ? chunk.valueOffsets.map((i) => polygonOffset.at(i) || i)\n : chunk.valueOffsets;\n const ringData = polygonData.children[0];\n const pointData = ringData.children[0];\n const coordData = pointData.children[0];\n const nDim = pointData.stride;\n const geomOffset = ringData.valueOffsets;\n const flatCoordinateArray = coordData.values;\n\n const geometryIndicies = new Uint16Array(polygonOffset.length);\n for (let i = 0; i < polygonOffset.length; i++) {\n geometryIndicies[i] = geomOffset[polygonOffset[i]];\n }\n\n const numOfVertices = flatCoordinateArray.length / nDim;\n const featureIds = new Uint32Array(numOfVertices);\n for (let i = 0; i < partData.length - 1; i++) {\n const startIdx = geomOffset[partData[i]];\n const endIdx = geomOffset[partData[i + 1]];\n for (let j = startIdx; j < endIdx; j++) {\n featureIds[j] = i;\n }\n }\n\n const triangles = options?.triangulate\n ? getTriangleIndices(geometryIndicies, geomOffset, flatCoordinateArray, nDim)\n : null;\n\n return {\n featureIds,\n nDim,\n flatCoordinateArray,\n geomOffset,\n geometryIndicies,\n ...(options?.triangulate && triangles ? {triangles} : {})\n };\n}\n\n/**\n * get binary lines from geoarrow line column\n * @param chunk one chunk/batch of geoarrow column\n * @param geoEncoding the geo encoding of the geoarrow column\n * @returns BinaryGeometryContent\n */\nfunction getBinaryLinesFromChunk(chunk: arrow.Data, geoEncoding: string): BinaryGeometryContent {\n const isMultiLineString = geoEncoding === 'geoarrow.multilinestring';\n\n const lineData = isMultiLineString ? chunk.children[0] : chunk;\n const pointData = lineData.children[0];\n const coordData = pointData.children[0];\n\n const nDim = pointData.stride;\n const geomOffset = lineData.valueOffsets;\n const flatCoordinateArray = coordData.values;\n\n // geometryIndicies is not needed for line string\n const geometryIndicies = new Uint16Array(0);\n\n const numOfVertices = flatCoordinateArray.length / nDim;\n const featureIds = new Uint32Array(numOfVertices);\n\n if (isMultiLineString) {\n const partData = chunk.valueOffsets;\n for (let i = 0; i < partData.length - 1; i++) {\n const startIdx = geomOffset[partData[i]];\n const endIdx = geomOffset[partData[i + 1]];\n for (let j = startIdx; j < endIdx; j++) {\n featureIds[j] = i;\n }\n }\n } else {\n for (let i = 0; i < chunk.length; i++) {\n const startIdx = geomOffset[i];\n const endIdx = geomOffset[i + 1];\n for (let j = startIdx; j < endIdx; j++) {\n featureIds[j] = i;\n }\n }\n }\n\n return {\n featureIds,\n flatCoordinateArray,\n nDim,\n geomOffset,\n geometryIndicies\n };\n}\n\n/**\n * get binary points from geoarrow point column\n * @param chunk one chunk/batch of geoarrow column\n * @param geoEncoding geo encoding of the geoarrow column\n * @returns BinaryGeometryContent\n */\nfunction getBinaryPointsFromChunk(chunk: arrow.Data, geoEncoding: string): BinaryGeometryContent {\n const isMultiPoint = geoEncoding === 'geoarrow.multipoint';\n\n const pointData = isMultiPoint ? chunk.children[0] : chunk;\n const coordData = pointData.children[0];\n\n const nDim = pointData.stride;\n const flatCoordinateArray = coordData.values;\n\n // geometryIndices is not needed for point\n const geometryIndicies = new Uint16Array(0);\n // geomOffset is not needed for point\n const geomOffset = new Int32Array(0);\n\n const numOfVertices = flatCoordinateArray.length / nDim;\n const featureIds = new Uint32Array(numOfVertices);\n\n if (isMultiPoint) {\n const partData = chunk.valueOffsets;\n for (let i = 0; i < partData.length - 1; i++) {\n const startIdx = partData[i];\n const endIdx = partData[i + 1];\n for (let j = startIdx; j < endIdx; j++) {\n featureIds[j] = i;\n }\n }\n } else {\n for (let i = 0; i < chunk.length; i++) {\n featureIds[i] = i;\n }\n }\n\n return {\n featureIds,\n flatCoordinateArray,\n nDim,\n geomOffset,\n geometryIndicies\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"convert-geoarrow-to-binary-geometry.js","names":["earcut","updateBoundsFromGeoArrowSamples","BinaryGeometryType","getBinaryGeometryTemplate","globalFeatureIds","value","Uint32Array","size","positions","Float32Array","properties","numericProps","featureIds","getBinaryGeometriesFromArrow","geoColumn","geoEncoding","options","featureTypes","polygon","point","line","chunks","chunkIndex","undefined","data","bounds","Infinity","globalFeatureIdOffset","chunkOffset","binaryGeometries","forEach","chunk","flatCoordinateArray","nDim","geomOffset","triangles","getBinaryGeometriesFromChunk","length","i","binaryContent","Array","keys","map","index","push","shape","points","type","lines","pathIndices","Uint16Array","polygons","polygonIndices","primitivePolygonIndices","calculateMeanCenters","meanCenters","getMeanCentersFromBinaryGeometries","globalMeanCenters","binaryGeometry","binaryGeometryType","_binaryContent$primit","getMeanCentersFromGeometry","center","geometryType","vertexCount","vertexIndex","coordIdx","primitiveIdx","featureId","vertexCountInFeature","getBinaryPointsFromChunk","getBinaryLinesFromChunk","getBinaryPolygonsFromChunk","Error","getTriangleIndices","primitiveIndex","startIdx","endIdx","slicedFlatCoords","subarray","holeIndices","triangleIndices","j","trianglesUint32","error","isMultiPolygon","polygonData","children","polygonOffset","valueOffsets","partData","at","ringData","pointData","coordData","stride","values","geometryIndicies","numOfVertices","triangulate","isMultiLineString","lineData","isMultiPoint","Int32Array"],"sources":["../../src/geoarrow/convert-geoarrow-to-binary-geometry.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport * as arrow from 'apache-arrow';\nimport {earcut} from '@math.gl/polygon';\nimport {BinaryFeatureCollection as BinaryFeatures} from '@loaders.gl/schema';\nimport {GeoArrowEncoding} from '@loaders.gl/gis';\nimport {updateBoundsFromGeoArrowSamples} from './get-arrow-bounds';\nimport {TypedArray} from '@loaders.gl/loader-utils';\n\n/**\n * Binary geometry type\n */\nenum BinaryGeometryType {\n points = 'points',\n lines = 'lines',\n polygons = 'polygons'\n}\n\n/**\n * Binary data from geoarrow column and can be used by e.g. deck.gl GeojsonLayer\n */\nexport type BinaryDataFromGeoArrow = {\n /** Binary format geometries, an array of BinaryFeatureCollection */\n binaryGeometries: BinaryFeatures[];\n /** Boundary of the binary geometries */\n bounds: [number, number, number, number];\n /** Feature types of the binary geometries */\n featureTypes: {polygon: boolean; point: boolean; line: boolean};\n /** (Optional) mean centers of the binary geometries for e.g. polygon filtering */\n meanCenters?: number[][];\n};\n\n/**\n * Binary geometry content returned from getBinaryGeometriesFromChunk\n */\ntype BinaryGeometryContent = {\n // Array of Point feature indexes by vertex\n featureIds: Uint32Array;\n /** Flat coordinate array of e.g. x, y or x,y,z */\n flatCoordinateArray: Float64Array;\n /** Dimention of each position */\n nDim: number;\n /** Array of geometry offsets: the start index of primitive geometry */\n geomOffset: Int32Array;\n /** Array of geometry indicies: the start index of each geometry */\n geometryIndicies: Uint16Array;\n /** (Optional) indices of triangels returned from polygon triangulation (Polygon only) */\n triangles?: Uint32Array;\n /** (Optional) array of mean center of each geometry */\n meanCenters?: Float64Array;\n};\n\n/**\n * binary geometry template, see deck.gl BinaryGeometry\n */\nexport function getBinaryGeometryTemplate() {\n return {\n globalFeatureIds: {value: new Uint32Array(0), size: 1},\n positions: {value: new Float32Array(0), size: 2},\n properties: [],\n numericProps: {},\n featureIds: {value: new Uint32Array(0), size: 1}\n };\n}\n\nexport type BinaryGeometriesFromArrowOptions = {\n /** option to specify which chunk to get binary geometries from, for progressive rendering */\n chunkIndex?: number;\n /** The offset (beginning index of rows) of input chunk. Used for reconstructing globalFeatureIds in web workers */\n chunkOffset?: number;\n /** option to get mean centers from geometries, for polygon filtering */\n calculateMeanCenters?: boolean;\n /** option to compute the triangle indices by tesselating polygons */\n triangulate?: boolean;\n};\n\n/**\n * get binary geometries from geoarrow column\n *\n * @param geoColumn the geoarrow column, e.g. arrowTable.getChildAt(geoColumnIndex)\n * @param geoEncoding the geo encoding of the geoarrow column, e.g. getGeoArrowEncoding(arrowTable.schema, geoColumnName)\n * @param options options for getting binary geometries {meanCenter: boolean}\n * @returns BinaryDataFromGeoArrow\n */\nexport function getBinaryGeometriesFromArrow(\n geoColumn: arrow.Vector,\n geoEncoding: GeoArrowEncoding,\n options?: BinaryGeometriesFromArrowOptions\n): BinaryDataFromGeoArrow {\n const featureTypes = {\n polygon: geoEncoding === 'geoarrow.multipolygon' || geoEncoding === 'geoarrow.polygon',\n point: geoEncoding === 'geoarrow.multipoint' || geoEncoding === 'geoarrow.point',\n line: geoEncoding === 'geoarrow.multilinestring' || geoEncoding === 'geoarrow.linestring'\n };\n\n const chunks =\n options?.chunkIndex !== undefined && options?.chunkIndex >= 0\n ? [geoColumn.data[options?.chunkIndex]]\n : geoColumn.data;\n let bounds: [number, number, number, number] = [Infinity, Infinity, -Infinity, -Infinity];\n let globalFeatureIdOffset = options?.chunkOffset || 0;\n const binaryGeometries: BinaryFeatures[] = [];\n\n chunks.forEach((chunk) => {\n const {featureIds, flatCoordinateArray, nDim, geomOffset, triangles} =\n getBinaryGeometriesFromChunk(chunk, geoEncoding, options);\n\n const globalFeatureIds = new Uint32Array(featureIds.length);\n for (let i = 0; i < featureIds.length; i++) {\n globalFeatureIds[i] = featureIds[i] + globalFeatureIdOffset;\n }\n\n const binaryContent = {\n globalFeatureIds: {value: globalFeatureIds, size: 1},\n positions: {\n value: flatCoordinateArray,\n size: nDim\n },\n featureIds: {value: featureIds, size: 1},\n // eslint-disable-next-line no-loop-func\n properties: [...Array(chunk.length).keys()].map((i) => ({\n index: i + globalFeatureIdOffset\n }))\n };\n\n // TODO: check if chunks are sequentially accessed\n globalFeatureIdOffset += chunk.length;\n // NOTE: deck.gl defines the BinaryFeatures structure must have points, lines, polygons even if they are empty\n binaryGeometries.push({\n shape: 'binary-feature-collection',\n points: {\n type: 'Point',\n ...getBinaryGeometryTemplate(),\n ...(featureTypes.point ? binaryContent : {})\n },\n lines: {\n type: 'LineString',\n ...getBinaryGeometryTemplate(),\n ...(featureTypes.line ? binaryContent : {}),\n pathIndices: {value: featureTypes.line ? geomOffset : new Uint16Array(0), size: 1}\n },\n polygons: {\n type: 'Polygon',\n ...getBinaryGeometryTemplate(),\n ...(featureTypes.polygon ? binaryContent : {}),\n polygonIndices: {\n // use geomOffset as polygonIndices same as primitivePolygonIndices since we are using earcut to get triangule indices\n value: featureTypes.polygon ? geomOffset : new Uint16Array(0),\n size: 1\n },\n primitivePolygonIndices: {\n value: featureTypes.polygon ? geomOffset : new Uint16Array(0),\n size: 1\n },\n ...(triangles ? {triangles: {value: triangles, size: 1}} : {})\n }\n });\n\n bounds = updateBoundsFromGeoArrowSamples(flatCoordinateArray, nDim, bounds);\n });\n\n return {\n binaryGeometries,\n bounds,\n featureTypes,\n ...(options?.calculateMeanCenters\n ? {meanCenters: getMeanCentersFromBinaryGeometries(binaryGeometries)}\n : {})\n };\n}\n\n/**\n * Get mean centers from binary geometries\n * @param binaryGeometries binary geometries from geoarrow column, an array of BinaryFeatureCollection\n * @returns mean centers of the binary geometries\n */\nexport function getMeanCentersFromBinaryGeometries(binaryGeometries: BinaryFeatures[]): number[][] {\n const globalMeanCenters: number[][] = [];\n binaryGeometries.forEach((binaryGeometry: BinaryFeatures) => {\n let binaryGeometryType: keyof typeof BinaryGeometryType | null = null;\n if (binaryGeometry.points && binaryGeometry.points.positions.value.length > 0) {\n binaryGeometryType = BinaryGeometryType.points;\n } else if (binaryGeometry.lines && binaryGeometry.lines.positions.value.length > 0) {\n binaryGeometryType = BinaryGeometryType.lines;\n } else if (binaryGeometry.polygons && binaryGeometry.polygons.positions.value.length > 0) {\n binaryGeometryType = BinaryGeometryType.polygons;\n }\n\n const binaryContent = binaryGeometryType ? binaryGeometry[binaryGeometryType] : null;\n if (binaryContent && binaryGeometryType !== null) {\n const featureIds = binaryContent.featureIds.value;\n const flatCoordinateArray = binaryContent.positions.value;\n const nDim = binaryContent.positions.size;\n const primitivePolygonIndices =\n binaryContent.type === 'Polygon' ? binaryContent.primitivePolygonIndices?.value : undefined;\n\n const meanCenters = getMeanCentersFromGeometry(\n featureIds,\n flatCoordinateArray,\n nDim,\n binaryGeometryType,\n primitivePolygonIndices\n );\n meanCenters.forEach((center) => {\n globalMeanCenters.push(center);\n });\n }\n });\n return globalMeanCenters;\n}\n\n/**\n * Get mean centers from raw coordinates and feature ids\n * @param featureIds Array of feature ids indexes by vertex\n * @param flatCoordinateArray Array of vertex, e.g. x, y or x, y, z, positions\n * @param nDim number of dimensions per position\n * @returns - mean centers of each polygon\n */\nfunction getMeanCentersFromGeometry(\n featureIds: TypedArray,\n flatCoordinateArray: TypedArray,\n nDim: number,\n geometryType: keyof typeof BinaryGeometryType,\n primitivePolygonIndices?: TypedArray\n) {\n const meanCenters: number[][] = [];\n const vertexCount = flatCoordinateArray.length;\n let vertexIndex = 0;\n let coordIdx = 0;\n let primitiveIdx = 0;\n while (vertexIndex < vertexCount) {\n const featureId = featureIds[vertexIndex / nDim];\n const center = [0, 0];\n let vertexCountInFeature = 0;\n while (vertexIndex < vertexCount && featureIds[coordIdx] === featureId) {\n if (\n geometryType === BinaryGeometryType.polygons &&\n primitivePolygonIndices?.[primitiveIdx] === coordIdx\n ) {\n // skip the first point since it is the same as the last point in each ring for polygons\n vertexIndex += nDim;\n primitiveIdx++;\n } else {\n center[0] += flatCoordinateArray[vertexIndex];\n center[1] += flatCoordinateArray[vertexIndex + 1];\n vertexIndex += nDim;\n vertexCountInFeature++;\n }\n coordIdx += 1;\n }\n center[0] /= vertexCountInFeature;\n center[1] /= vertexCountInFeature;\n meanCenters.push(center);\n }\n return meanCenters;\n}\n\n/**\n * get binary geometries from geoarrow column\n * @param chunk one chunk/batch of geoarrow column\n * @param geoEncoding geo encoding of the geoarrow column\n * @param options options for getting binary geometries\n * @returns BinaryGeometryContent\n */\nfunction getBinaryGeometriesFromChunk(\n chunk: arrow.Data,\n geoEncoding: GeoArrowEncoding,\n options?: BinaryGeometriesFromArrowOptions\n): BinaryGeometryContent {\n switch (geoEncoding) {\n case 'geoarrow.point':\n case 'geoarrow.multipoint':\n return getBinaryPointsFromChunk(chunk, geoEncoding);\n case 'geoarrow.linestring':\n case 'geoarrow.multilinestring':\n return getBinaryLinesFromChunk(chunk, geoEncoding);\n case 'geoarrow.polygon':\n case 'geoarrow.multipolygon':\n return getBinaryPolygonsFromChunk(chunk, geoEncoding, options);\n default:\n throw Error('invalid geoarrow encoding');\n }\n}\n\n/**\n * get triangle indices. Allows deck.gl to skip performing costly triangulation on main thread.\n * @param polygonIndices Indices within positions of the start of each simple Polygon\n * @param primitivePolygonIndices Indices within positions of the start of each primitive Polygon/ring\n * @param flatCoordinateArray Array of x, y or x, y, z positions\n * @param nDim - number of dimensions per position\n * @returns triangle indices or null if invalid polygon and earcut fails\n */\nexport function getTriangleIndices(\n polygonIndices: Uint16Array,\n primitivePolygonIndices: Int32Array,\n flatCoordinateArray: Float64Array,\n nDim: number\n): Uint32Array | null {\n try {\n let primitiveIndex = 0;\n const triangles: number[] = [];\n // loop polygonIndices to get triangles\n for (let i = 0; i < polygonIndices.length - 1; i++) {\n const startIdx = polygonIndices[i];\n const endIdx = polygonIndices[i + 1];\n // get subarray of flatCoordinateArray\n const slicedFlatCoords = flatCoordinateArray.subarray(startIdx * nDim, endIdx * nDim);\n // get holeIndices for earcut\n const holeIndices: number[] = [];\n while (primitivePolygonIndices[primitiveIndex] < endIdx) {\n if (primitivePolygonIndices[primitiveIndex] > startIdx) {\n holeIndices.push(primitivePolygonIndices[primitiveIndex] - startIdx);\n }\n primitiveIndex++;\n }\n // TODO check if each ring is closed\n const triangleIndices = earcut(\n slicedFlatCoords,\n holeIndices.length > 0 ? holeIndices : undefined,\n nDim\n );\n if (triangleIndices.length === 0) {\n throw Error('earcut failed e.g. invalid polygon');\n }\n for (let j = 0; j < triangleIndices.length; j++) {\n triangles.push(triangleIndices[j] + startIdx);\n }\n }\n // convert traingles to Uint32Array\n const trianglesUint32 = new Uint32Array(triangles.length);\n for (let i = 0; i < triangles.length; i++) {\n trianglesUint32[i] = triangles[i];\n }\n return trianglesUint32;\n } catch (error) {\n // if earcut fails, return null\n return null;\n }\n}\n\n/**\n * get binary polygons from geoarrow polygon column\n * @param chunk one chunk of geoarrow polygon column\n * @param geoEncoding the geo encoding of the geoarrow polygon column\n * @param options options for getting binary geometries\n * @returns BinaryGeometryContent\n */\nfunction getBinaryPolygonsFromChunk(\n chunk: arrow.Data,\n geoEncoding: string,\n options?: BinaryGeometriesFromArrowOptions\n): BinaryGeometryContent {\n const isMultiPolygon = geoEncoding === 'geoarrow.multipolygon';\n\n const polygonData = isMultiPolygon ? chunk.children[0] : chunk;\n const polygonOffset = polygonData.valueOffsets;\n const partData = isMultiPolygon\n ? chunk.valueOffsets.map((i) => polygonOffset.at(i) || i)\n : chunk.valueOffsets;\n const ringData = polygonData.children[0];\n const pointData = ringData.children[0];\n const coordData = pointData.children[0];\n const nDim = pointData.stride;\n const geomOffset = ringData.valueOffsets;\n const flatCoordinateArray = coordData.values;\n\n const geometryIndicies = new Uint16Array(polygonOffset.length);\n for (let i = 0; i < polygonOffset.length; i++) {\n geometryIndicies[i] = geomOffset[polygonOffset[i]];\n }\n\n const numOfVertices = flatCoordinateArray.length / nDim;\n const featureIds = new Uint32Array(numOfVertices);\n for (let i = 0; i < partData.length - 1; i++) {\n const startIdx = geomOffset[partData[i]];\n const endIdx = geomOffset[partData[i + 1]];\n for (let j = startIdx; j < endIdx; j++) {\n featureIds[j] = i;\n }\n }\n\n const triangles = options?.triangulate\n ? getTriangleIndices(geometryIndicies, geomOffset, flatCoordinateArray, nDim)\n : null;\n\n return {\n featureIds,\n nDim,\n flatCoordinateArray,\n geomOffset,\n geometryIndicies,\n ...(options?.triangulate && triangles ? {triangles} : {})\n };\n}\n\n/**\n * get binary lines from geoarrow line column\n * @param chunk one chunk/batch of geoarrow column\n * @param geoEncoding the geo encoding of the geoarrow column\n * @returns BinaryGeometryContent\n */\nfunction getBinaryLinesFromChunk(chunk: arrow.Data, geoEncoding: string): BinaryGeometryContent {\n const isMultiLineString = geoEncoding === 'geoarrow.multilinestring';\n\n const lineData = isMultiLineString ? chunk.children[0] : chunk;\n const pointData = lineData.children[0];\n const coordData = pointData.children[0];\n\n const nDim = pointData.stride;\n const geomOffset = lineData.valueOffsets;\n const flatCoordinateArray = coordData.values;\n\n // geometryIndicies is not needed for line string\n const geometryIndicies = new Uint16Array(0);\n\n const numOfVertices = flatCoordinateArray.length / nDim;\n const featureIds = new Uint32Array(numOfVertices);\n\n if (isMultiLineString) {\n const partData = chunk.valueOffsets;\n for (let i = 0; i < partData.length - 1; i++) {\n const startIdx = geomOffset[partData[i]];\n const endIdx = geomOffset[partData[i + 1]];\n for (let j = startIdx; j < endIdx; j++) {\n featureIds[j] = i;\n }\n }\n } else {\n for (let i = 0; i < chunk.length; i++) {\n const startIdx = geomOffset[i];\n const endIdx = geomOffset[i + 1];\n for (let j = startIdx; j < endIdx; j++) {\n featureIds[j] = i;\n }\n }\n }\n\n return {\n featureIds,\n flatCoordinateArray,\n nDim,\n geomOffset,\n geometryIndicies\n };\n}\n\n/**\n * get binary points from geoarrow point column\n * @param chunk one chunk/batch of geoarrow column\n * @param geoEncoding geo encoding of the geoarrow column\n * @returns BinaryGeometryContent\n */\nfunction getBinaryPointsFromChunk(chunk: arrow.Data, geoEncoding: string): BinaryGeometryContent {\n const isMultiPoint = geoEncoding === 'geoarrow.multipoint';\n\n const pointData = isMultiPoint ? chunk.children[0] : chunk;\n const coordData = pointData.children[0];\n\n const nDim = pointData.stride;\n const flatCoordinateArray = coordData.values;\n\n // geometryIndices is not needed for point\n const geometryIndicies = new Uint16Array(0);\n // geomOffset is not needed for point\n const geomOffset = new Int32Array(0);\n\n const numOfVertices = flatCoordinateArray.length / nDim;\n const featureIds = new Uint32Array(numOfVertices);\n\n if (isMultiPoint) {\n const partData = chunk.valueOffsets;\n for (let i = 0; i < partData.length - 1; i++) {\n const startIdx = partData[i];\n const endIdx = partData[i + 1];\n for (let j = startIdx; j < endIdx; j++) {\n featureIds[j] = i;\n }\n }\n } else {\n for (let i = 0; i < chunk.length; i++) {\n featureIds[i] = i;\n }\n }\n\n return {\n featureIds,\n flatCoordinateArray,\n nDim,\n geomOffset,\n geometryIndicies\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-geoarrow-to-geojson-geometry.d.ts","sourceRoot":"","sources":["../../src/geoarrow/convert-geoarrow-to-geojson-geometry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"convert-geoarrow-to-geojson-geometry.d.ts","sourceRoot":"","sources":["../../src/geoarrow/convert-geoarrow-to-geojson-geometry.ts"],"names":[],"mappings":"AAKA,OAAO,EAQL,QAAQ,EAET,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAmB,KAAK,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAGxE;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,GAAG,EACnB,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,QAAQ,GAAG,IAAI,CAwCjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-geoarrow-to-geojson-geometry.js","names":["binaryToGeometry","WKBLoader","WKTLoader","parseGeometryFromArrow","arrowCellValue","encoding","_encoding","toLowerCase","geometry","arrowMultiPolygonToFeature","arrowPolygonToFeature","arrowMultiPointToFeature","arrowPointToFeature","arrowMultiLineStringToFeature","arrowLineStringToFeature","arrowWKBToFeature","arrowWKTToFeature","Error","_WKBLoader$parseSync","arrayBuffer","buffer","slice","byteOffset","byteLength","binaryGeometry","parseSync","call","_WKTLoader$parseTextS","string","parseTextSync","arrowMultiPolygon","multiPolygon","m","length","arrowPolygon","get","polygon","i","arrowRing","ring","j","arrowCoord","coord","Array","from","push","type","coordinates","coords","arrowMultiPoint","multiPoint","arrowPoint","point","arrowMultiLineString","multiLineString","arrowLineString","lineString"],"sources":["../../src/geoarrow/convert-geoarrow-to-geojson-geometry.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\n// import * as arrow from 'apache-arrow';\nimport {\n MultiPolygon,\n Position,\n Polygon,\n MultiPoint,\n Point,\n MultiLineString,\n LineString,\n Geometry,\n BinaryGeometry\n} from '@loaders.gl/schema';\nimport {binaryToGeometry, type GeoArrowEncoding} from '@loaders.gl/gis';\nimport {WKBLoader, WKTLoader} from '@loaders.gl/wkt';\n\n/**\n * parse geometry from arrow data that is returned from processArrowData()\n * NOTE: this function could be deduplicated with the binaryToFeature() in deck.gl,\n * it is currently used for deck.gl picking because currently deck.gl returns only the index of the feature\n *\n * @param data data extraced from arrow vector representing a geometry\n * @param encoding the geoarrow encoding of the geometry column\n * @returns Feature or null\n */\nexport function parseGeometryFromArrow(\n arrowCellValue: any,\n encoding?: GeoArrowEncoding\n): Geometry | null {\n // sanity\n encoding = encoding?.toLowerCase() as GeoArrowEncoding;\n if (!encoding || !arrowCellValue) {\n return null;\n }\n\n let geometry: Geometry;\n\n switch (encoding) {\n case 'geoarrow.multipolygon':\n geometry = arrowMultiPolygonToFeature(arrowCellValue);\n break;\n case 'geoarrow.polygon':\n geometry = arrowPolygonToFeature(arrowCellValue);\n break;\n case 'geoarrow.multipoint':\n geometry = arrowMultiPointToFeature(arrowCellValue);\n break;\n case 'geoarrow.point':\n geometry = arrowPointToFeature(arrowCellValue);\n break;\n case 'geoarrow.multilinestring':\n geometry = arrowMultiLineStringToFeature(arrowCellValue);\n break;\n case 'geoarrow.linestring':\n geometry = arrowLineStringToFeature(arrowCellValue);\n break;\n case 'geoarrow.wkb':\n geometry = arrowWKBToFeature(arrowCellValue);\n break;\n case 'geoarrow.wkt':\n geometry = arrowWKTToFeature(arrowCellValue);\n break;\n default: {\n throw Error(`GeoArrow encoding not supported ${encoding}`);\n }\n }\n\n return geometry;\n}\n\nfunction arrowWKBToFeature(arrowCellValue: any) {\n // The actual WKB array buffer starts from byteOffset and ends at byteOffset + byteLength\n const arrayBuffer: ArrayBuffer = arrowCellValue.buffer.slice(\n arrowCellValue.byteOffset,\n arrowCellValue.byteOffset + arrowCellValue.byteLength\n );\n const binaryGeometry = WKBLoader.parseSync?.(arrayBuffer)! as BinaryGeometry;\n const geometry = binaryToGeometry(binaryGeometry);\n return geometry;\n}\n\nfunction arrowWKTToFeature(arrowCellValue: any) {\n const string: string = arrowCellValue;\n return WKTLoader.parseTextSync?.(string)!;\n}\n\n/**\n * convert Arrow MultiPolygon to geojson Feature\n */\nfunction arrowMultiPolygonToFeature(arrowMultiPolygon: any): MultiPolygon {\n const multiPolygon: Position[][][] = [];\n for (let m = 0; m < arrowMultiPolygon.length; m++) {\n const arrowPolygon = arrowMultiPolygon.get(m);\n const polygon: Position[][] = [];\n for (let i = 0; arrowPolygon && i < arrowPolygon?.length; i++) {\n const arrowRing = arrowPolygon?.get(i);\n const ring: Position[] = [];\n for (let j = 0; arrowRing && j < arrowRing.length; j++) {\n const arrowCoord = arrowRing.get(j);\n const coord: Position = Array.from(arrowCoord);\n ring.push(coord);\n }\n polygon.push(ring);\n }\n multiPolygon.push(polygon);\n }\n const geometry: MultiPolygon = {\n type: 'MultiPolygon',\n coordinates: multiPolygon\n };\n return geometry;\n}\n\n/**\n * convert Arrow Polygon to geojson Feature\n */\nfunction arrowPolygonToFeature(arrowPolygon: any): Polygon {\n const polygon: Position[][] = [];\n for (let i = 0; arrowPolygon && i < arrowPolygon.length; i++) {\n const arrowRing = arrowPolygon.get(i);\n const ring: Position[] = [];\n for (let j = 0; arrowRing && j < arrowRing.length; j++) {\n const arrowCoord = arrowRing.get(j);\n const coords: Position = Array.from(arrowCoord);\n ring.push(coords);\n }\n polygon.push(ring);\n }\n const geometry: Polygon = {\n type: 'Polygon',\n coordinates: polygon\n };\n return geometry;\n}\n\n/**\n * convert Arrow MultiPoint to geojson MultiPoint\n */\nfunction arrowMultiPointToFeature(arrowMultiPoint: any): MultiPoint {\n const multiPoint: Position[] = [];\n for (let i = 0; arrowMultiPoint && i < arrowMultiPoint.length; i++) {\n const arrowPoint = arrowMultiPoint.get(i);\n if (arrowPoint) {\n const coord: Position = Array.from(arrowPoint);\n multiPoint.push(coord);\n }\n }\n return {\n type: 'MultiPoint',\n coordinates: multiPoint\n };\n}\n\n/**\n * convert Arrow Point to geojson Point\n */\nfunction arrowPointToFeature(arrowPoint: any): Point {\n const point: Position = Array.from(arrowPoint);\n return {\n type: 'Point',\n coordinates: point\n };\n}\n\n/**\n * convert Arrow MultiLineString to geojson MultiLineString\n */\nfunction arrowMultiLineStringToFeature(arrowMultiLineString: any): MultiLineString {\n const multiLineString: Position[][] = [];\n for (let i = 0; arrowMultiLineString && i < arrowMultiLineString.length; i++) {\n const arrowLineString = arrowMultiLineString.get(i);\n const lineString: Position[] = [];\n for (let j = 0; arrowLineString && j < arrowLineString.length; j++) {\n const arrowCoord = arrowLineString.get(j);\n if (arrowCoord) {\n const coords: Position = Array.from(arrowCoord);\n lineString.push(coords);\n }\n }\n multiLineString.push(lineString);\n }\n return {\n type: 'MultiLineString',\n coordinates: multiLineString\n };\n}\n\n/**\n * convert Arrow LineString to geojson LineString\n */\nfunction arrowLineStringToFeature(arrowLineString: any): LineString {\n const lineString: Position[] = [];\n for (let i = 0; arrowLineString && i < arrowLineString.length; i++) {\n const arrowCoord = arrowLineString.get(i);\n if (arrowCoord) {\n const coords: Position = Array.from(arrowCoord);\n lineString.push(coords);\n }\n }\n return {\n type: 'LineString',\n coordinates: lineString\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"convert-geoarrow-to-geojson-geometry.js","names":["binaryToGeometry","WKBLoader","WKTLoader","parseGeometryFromArrow","arrowCellValue","encoding","_encoding","toLowerCase","geometry","arrowMultiPolygonToFeature","arrowPolygonToFeature","arrowMultiPointToFeature","arrowPointToFeature","arrowMultiLineStringToFeature","arrowLineStringToFeature","arrowWKBToFeature","arrowWKTToFeature","Error","_WKBLoader$parseSync","arrayBuffer","buffer","slice","byteOffset","byteLength","binaryGeometry","parseSync","call","_WKTLoader$parseTextS","string","parseTextSync","arrowMultiPolygon","multiPolygon","m","length","arrowPolygon","get","polygon","i","arrowRing","ring","j","arrowCoord","coord","Array","from","push","type","coordinates","coords","arrowMultiPoint","multiPoint","arrowPoint","point","arrowMultiLineString","multiLineString","arrowLineString","lineString"],"sources":["../../src/geoarrow/convert-geoarrow-to-geojson-geometry.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// import * as arrow from 'apache-arrow';\nimport {\n MultiPolygon,\n Position,\n Polygon,\n MultiPoint,\n Point,\n MultiLineString,\n LineString,\n Geometry,\n BinaryGeometry\n} from '@loaders.gl/schema';\nimport {binaryToGeometry, type GeoArrowEncoding} from '@loaders.gl/gis';\nimport {WKBLoader, WKTLoader} from '@loaders.gl/wkt';\n\n/**\n * parse geometry from arrow data that is returned from processArrowData()\n * NOTE: this function could be deduplicated with the binaryToFeature() in deck.gl,\n * it is currently used for deck.gl picking because currently deck.gl returns only the index of the feature\n *\n * @param data data extraced from arrow vector representing a geometry\n * @param encoding the geoarrow encoding of the geometry column\n * @returns Feature or null\n */\nexport function parseGeometryFromArrow(\n arrowCellValue: any,\n encoding?: GeoArrowEncoding\n): Geometry | null {\n // sanity\n encoding = encoding?.toLowerCase() as GeoArrowEncoding;\n if (!encoding || !arrowCellValue) {\n return null;\n }\n\n let geometry: Geometry;\n\n switch (encoding) {\n case 'geoarrow.multipolygon':\n geometry = arrowMultiPolygonToFeature(arrowCellValue);\n break;\n case 'geoarrow.polygon':\n geometry = arrowPolygonToFeature(arrowCellValue);\n break;\n case 'geoarrow.multipoint':\n geometry = arrowMultiPointToFeature(arrowCellValue);\n break;\n case 'geoarrow.point':\n geometry = arrowPointToFeature(arrowCellValue);\n break;\n case 'geoarrow.multilinestring':\n geometry = arrowMultiLineStringToFeature(arrowCellValue);\n break;\n case 'geoarrow.linestring':\n geometry = arrowLineStringToFeature(arrowCellValue);\n break;\n case 'geoarrow.wkb':\n geometry = arrowWKBToFeature(arrowCellValue);\n break;\n case 'geoarrow.wkt':\n geometry = arrowWKTToFeature(arrowCellValue);\n break;\n default: {\n throw Error(`GeoArrow encoding not supported ${encoding}`);\n }\n }\n\n return geometry;\n}\n\nfunction arrowWKBToFeature(arrowCellValue: any) {\n // The actual WKB array buffer starts from byteOffset and ends at byteOffset + byteLength\n const arrayBuffer: ArrayBuffer = arrowCellValue.buffer.slice(\n arrowCellValue.byteOffset,\n arrowCellValue.byteOffset + arrowCellValue.byteLength\n );\n const binaryGeometry = WKBLoader.parseSync?.(arrayBuffer)! as BinaryGeometry;\n const geometry = binaryToGeometry(binaryGeometry);\n return geometry;\n}\n\nfunction arrowWKTToFeature(arrowCellValue: any) {\n const string: string = arrowCellValue;\n return WKTLoader.parseTextSync?.(string)!;\n}\n\n/**\n * convert Arrow MultiPolygon to geojson Feature\n */\nfunction arrowMultiPolygonToFeature(arrowMultiPolygon: any): MultiPolygon {\n const multiPolygon: Position[][][] = [];\n for (let m = 0; m < arrowMultiPolygon.length; m++) {\n const arrowPolygon = arrowMultiPolygon.get(m);\n const polygon: Position[][] = [];\n for (let i = 0; arrowPolygon && i < arrowPolygon?.length; i++) {\n const arrowRing = arrowPolygon?.get(i);\n const ring: Position[] = [];\n for (let j = 0; arrowRing && j < arrowRing.length; j++) {\n const arrowCoord = arrowRing.get(j);\n const coord: Position = Array.from(arrowCoord);\n ring.push(coord);\n }\n polygon.push(ring);\n }\n multiPolygon.push(polygon);\n }\n const geometry: MultiPolygon = {\n type: 'MultiPolygon',\n coordinates: multiPolygon\n };\n return geometry;\n}\n\n/**\n * convert Arrow Polygon to geojson Feature\n */\nfunction arrowPolygonToFeature(arrowPolygon: any): Polygon {\n const polygon: Position[][] = [];\n for (let i = 0; arrowPolygon && i < arrowPolygon.length; i++) {\n const arrowRing = arrowPolygon.get(i);\n const ring: Position[] = [];\n for (let j = 0; arrowRing && j < arrowRing.length; j++) {\n const arrowCoord = arrowRing.get(j);\n const coords: Position = Array.from(arrowCoord);\n ring.push(coords);\n }\n polygon.push(ring);\n }\n const geometry: Polygon = {\n type: 'Polygon',\n coordinates: polygon\n };\n return geometry;\n}\n\n/**\n * convert Arrow MultiPoint to geojson MultiPoint\n */\nfunction arrowMultiPointToFeature(arrowMultiPoint: any): MultiPoint {\n const multiPoint: Position[] = [];\n for (let i = 0; arrowMultiPoint && i < arrowMultiPoint.length; i++) {\n const arrowPoint = arrowMultiPoint.get(i);\n if (arrowPoint) {\n const coord: Position = Array.from(arrowPoint);\n multiPoint.push(coord);\n }\n }\n return {\n type: 'MultiPoint',\n coordinates: multiPoint\n };\n}\n\n/**\n * convert Arrow Point to geojson Point\n */\nfunction arrowPointToFeature(arrowPoint: any): Point {\n const point: Position = Array.from(arrowPoint);\n return {\n type: 'Point',\n coordinates: point\n };\n}\n\n/**\n * convert Arrow MultiLineString to geojson MultiLineString\n */\nfunction arrowMultiLineStringToFeature(arrowMultiLineString: any): MultiLineString {\n const multiLineString: Position[][] = [];\n for (let i = 0; arrowMultiLineString && i < arrowMultiLineString.length; i++) {\n const arrowLineString = arrowMultiLineString.get(i);\n const lineString: Position[] = [];\n for (let j = 0; arrowLineString && j < arrowLineString.length; j++) {\n const arrowCoord = arrowLineString.get(j);\n if (arrowCoord) {\n const coords: Position = Array.from(arrowCoord);\n lineString.push(coords);\n }\n }\n multiLineString.push(lineString);\n }\n return {\n type: 'MultiLineString',\n coordinates: multiLineString\n };\n}\n\n/**\n * convert Arrow LineString to geojson LineString\n */\nfunction arrowLineStringToFeature(arrowLineString: any): LineString {\n const lineString: Position[] = [];\n for (let i = 0; arrowLineString && i < arrowLineString.length; i++) {\n const arrowCoord = arrowLineString.get(i);\n if (arrowCoord) {\n const coords: Position = Array.from(arrowCoord);\n lineString.push(coords);\n }\n }\n return {\n type: 'LineString',\n coordinates: lineString\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-arrow-bounds.d.ts","sourceRoot":"","sources":["../../src/geoarrow/get-arrow-bounds.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-arrow-bounds.d.ts","sourceRoot":"","sources":["../../src/geoarrow/get-arrow-bounds.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,YAAY,EACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACxC,UAAU,GAAE,MAAY,GACvB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAsBlC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-arrow-bounds.js","names":["updateBoundsFromGeoArrowSamples","flatCoords","nDim","bounds","sampleSize","arguments","length","undefined","numberOfFeatures","sampleStep","Math","max","floor","newBounds","i","lng","lat"],"sources":["../../src/geoarrow/get-arrow-bounds.ts"],"sourcesContent":["// loaders.gl
|
|
1
|
+
{"version":3,"file":"get-arrow-bounds.js","names":["updateBoundsFromGeoArrowSamples","flatCoords","nDim","bounds","sampleSize","arguments","length","undefined","numberOfFeatures","sampleStep","Math","max","floor","newBounds","i","lng","lat"],"sources":["../../src/geoarrow/get-arrow-bounds.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/**\n * Update bounds from geoarrow sample data\n *\n * @param flatCoords the flattend coordinates array from one chunk of geoarrow column\n * @param nDim the number of dimensions of the coordinates\n * @param bounds the bounds to be updated\n * @param sampleSize how many samples to be used to update the bounds, default is 1000 per chunk\n * @returns the updated bounds\n */\nexport function updateBoundsFromGeoArrowSamples(\n flatCoords: Float64Array,\n nDim: number,\n bounds: [number, number, number, number],\n sampleSize: number = 100\n): [number, number, number, number] {\n const numberOfFeatures = flatCoords.length / nDim;\n const sampleStep = Math.max(Math.floor(numberOfFeatures / sampleSize), 1);\n\n const newBounds: [number, number, number, number] = [...bounds];\n for (let i = 0; i < numberOfFeatures; i += sampleStep) {\n const lng = flatCoords[i * nDim];\n const lat = flatCoords[i * nDim + 1];\n if (lng < newBounds[0]) {\n newBounds[0] = lng;\n }\n if (lat < newBounds[1]) {\n newBounds[1] = lat;\n }\n if (lng > newBounds[2]) {\n newBounds[2] = lng;\n }\n if (lat > newBounds[3]) {\n newBounds[3] = lat;\n }\n }\n return newBounds;\n}\n"],"mappings":"AAaA,OAAO,SAASA,+BAA+BA,CAC7CC,UAAwB,EACxBC,IAAY,EACZC,MAAwC,EAEN;EAAA,IADlCC,UAAkB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,GAAG;EAExB,MAAMG,gBAAgB,GAAGP,UAAU,CAACK,MAAM,GAAGJ,IAAI;EACjD,MAAMO,UAAU,GAAGC,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,KAAK,CAACJ,gBAAgB,GAAGJ,UAAU,CAAC,EAAE,CAAC,CAAC;EAEzE,MAAMS,SAA2C,GAAG,CAAC,GAAGV,MAAM,CAAC;EAC/D,KAAK,IAAIW,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,gBAAgB,EAAEM,CAAC,IAAIL,UAAU,EAAE;IACrD,MAAMM,GAAG,GAAGd,UAAU,CAACa,CAAC,GAAGZ,IAAI,CAAC;IAChC,MAAMc,GAAG,GAAGf,UAAU,CAACa,CAAC,GAAGZ,IAAI,GAAG,CAAC,CAAC;IACpC,IAAIa,GAAG,GAAGF,SAAS,CAAC,CAAC,CAAC,EAAE;MACtBA,SAAS,CAAC,CAAC,CAAC,GAAGE,GAAG;IACpB;IACA,IAAIC,GAAG,GAAGH,SAAS,CAAC,CAAC,CAAC,EAAE;MACtBA,SAAS,CAAC,CAAC,CAAC,GAAGG,GAAG;IACpB;IACA,IAAID,GAAG,GAAGF,SAAS,CAAC,CAAC,CAAC,EAAE;MACtBA,SAAS,CAAC,CAAC,CAAC,GAAGE,GAAG;IACpB;IACA,IAAIC,GAAG,GAAGH,SAAS,CAAC,CAAC,CAAC,EAAE;MACtBA,SAAS,CAAC,CAAC,CAAC,GAAGG,GAAG;IACpB;EACF;EACA,OAAOH,SAAS;AAClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geoarrow-loader.d.ts","sourceRoot":"","sources":["../src/geoarrow-loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"geoarrow-loader.d.ts","sourceRoot":"","sources":["../src/geoarrow-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAEtF,OAAO,KAAK,EAAC,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AACxF,OAAO,KAAK,EAAC,UAAU,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAInE,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG;IAClD,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,aAAa,GAAG,iBAAiB,CAAC;KAC1C,CAAC;CACH,CAAC;AAEF,2BAA2B;AAC3B,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,UAAU,GAAG,cAAc,EAC3B,KAAK,EACL,qBAAqB,CAQtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,gBAAgB,CAC3C,UAAU,GAAG,YAAY,EAAE,oBAAoB;AAC/C,AAD2B,oBAAoB;AAC/C,eAAe,GAAG,iBAAiB,EAAE,oBAAoB;AACzD,qBAAqB,CAatB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geoarrow-loader.js","names":["ArrowWorkerLoader","parseGeoArrowSync","parseGeoArrowInBatches","GeoArrowWorkerLoader","options","arrow","shape","GeoArrowLoader","parse","arraybuffer","parseSync","parseInBatches"],"sources":["../src/geoarrow-loader.ts"],"sourcesContent":["// loaders.gl
|
|
1
|
+
{"version":3,"file":"geoarrow-loader.js","names":["ArrowWorkerLoader","parseGeoArrowSync","parseGeoArrowInBatches","GeoArrowWorkerLoader","options","arrow","shape","GeoArrowLoader","parse","arraybuffer","parseSync","parseInBatches"],"sources":["../src/geoarrow-loader.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {ArrowWorkerLoader} from './arrow-loader';\nimport type {GeoJSONTable, GeoJSONTableBatch, BinaryGeometry} from '@loaders.gl/schema';\nimport type {ArrowTable, ArrowTableBatch} from './lib/arrow-table';\nimport {parseGeoArrowSync} from './parsers/parse-geoarrow-sync';\nimport {parseGeoArrowInBatches} from './parsers/parse-geoarrow-in-batches';\n\nexport type GeoArrowLoaderOptions = LoaderOptions & {\n arrow?: {\n shape: 'arrow-table' | 'binary-geometry';\n };\n};\n\n/** ArrowJS table loader */\nexport const GeoArrowWorkerLoader: Loader<\n ArrowTable | BinaryGeometry,\n never,\n GeoArrowLoaderOptions\n> = {\n ...ArrowWorkerLoader,\n options: {\n arrow: {\n shape: 'arrow-table'\n }\n }\n};\n\n/**\n * GeoArrowLoader loads an Apache Arrow table, parses GeoArrow type extension data\n * to convert it to a GeoJSON table or a BinaryGeometry\n */\nexport const GeoArrowLoader: LoaderWithParser<\n ArrowTable | GeoJSONTable, // | BinaryGeometry,\n ArrowTableBatch | GeoJSONTableBatch, // | BinaryGeometry,\n GeoArrowLoaderOptions\n> = {\n ...ArrowWorkerLoader,\n options: {\n arrow: {\n shape: 'arrow-table'\n }\n },\n parse: async (arraybuffer: ArrayBuffer, options?: GeoArrowLoaderOptions) =>\n parseGeoArrowSync(arraybuffer, options?.arrow),\n parseSync: (arraybuffer: ArrayBuffer, options?: GeoArrowLoaderOptions) =>\n parseGeoArrowSync(arraybuffer, options?.arrow),\n parseInBatches: parseGeoArrowInBatches\n};\n"],"mappings":"SAKQA,iBAAiB;AAAA,SAGjBC,iBAAiB;AAAA,SACjBC,sBAAsB;AAS9B,OAAO,MAAMC,oBAIZ,GAAG;EACF,GAAGH,iBAAiB;EACpBI,OAAO,EAAE;IACPC,KAAK,EAAE;MACLC,KAAK,EAAE;IACT;EACF;AACF,CAAC;AAMD,OAAO,MAAMC,cAIZ,GAAG;EACF,GAAGP,iBAAiB;EACpBI,OAAO,EAAE;IACPC,KAAK,EAAE;MACLC,KAAK,EAAE;IACT;EACF,CAAC;EACDE,KAAK,EAAE,MAAAA,CAAOC,WAAwB,EAAEL,OAA+B,KACrEH,iBAAiB,CAACQ,WAAW,EAAEL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,KAAK,CAAC;EAChDK,SAAS,EAAEA,CAACD,WAAwB,EAAEL,OAA+B,KACnEH,iBAAiB,CAACQ,WAAW,EAAEL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,KAAK,CAAC;EAChDM,cAAc,EAAET;AAClB,CAAC"}
|
package/dist/geoarrow-writer.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { encodeGeoArrowSync } from "./lib/encode-geoarrow.js";
|
|
2
|
-
const VERSION = typeof
|
|
2
|
+
const VERSION = typeof "4.1.0-alpha.4" !== 'undefined' ? "4.1.0-alpha.4" : 'latest';
|
|
3
3
|
export const GeoArrowWriter = {
|
|
4
4
|
name: 'Apache Arrow',
|
|
5
5
|
id: 'arrow',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geoarrow-writer.js","names":["encodeGeoArrowSync","VERSION","
|
|
1
|
+
{"version":3,"file":"geoarrow-writer.js","names":["encodeGeoArrowSync","VERSION","GeoArrowWriter","name","id","module","version","extensions","mimeTypes","binary","options","encode","encodeArrow","data","encodeSync"],"sources":["../src/geoarrow-writer.ts"],"sourcesContent":["// import type {} from '@loaders.gl/loader-utils';\n\nimport type {WriterWithEncoder, WriterOptions} from '@loaders.gl/loader-utils';\nimport {GeoJSONTable, BinaryGeometry} from '@loaders.gl/schema';\nimport {encodeGeoArrowSync} from './lib/encode-geoarrow';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\ntype ArrowWriterOptions = WriterOptions & {\n arrow?: {};\n};\n\n/** Apache Arrow writer */\nexport const GeoArrowWriter: WriterWithEncoder<\n GeoJSONTable | BinaryGeometry,\n never,\n ArrowWriterOptions\n> = {\n name: 'Apache Arrow',\n id: 'arrow',\n module: 'arrow',\n version: VERSION,\n extensions: ['arrow', 'feather'],\n mimeTypes: [\n 'application/vnd.apache.arrow.file',\n 'application/vnd.apache.arrow.stream',\n 'application/octet-stream'\n ],\n binary: true,\n options: {},\n encode: async function encodeArrow(data, options?): Promise<ArrayBuffer> {\n // @ts-expect-error\n return encodeGeoArrowSync(data);\n },\n encodeSync(data, options?) {\n // @ts-expect-error\n return encodeGeoArrowSync(data);\n }\n};\n"],"mappings":"SAIQA,kBAAkB;AAI1B,MAAMC,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAO3E,OAAO,MAAMC,cAIZ,GAAG;EACFC,IAAI,EAAE,cAAc;EACpBC,EAAE,EAAE,OAAO;EACXC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAEL,OAAO;EAChBM,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;EAChCC,SAAS,EAAE,CACT,mCAAmC,EACnC,qCAAqC,EACrC,0BAA0B,CAC3B;EACDC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAE,CAAC,CAAC;EACXC,MAAM,EAAE,eAAeC,WAAWA,CAACC,IAAI,EAAEH,OAAQ,EAAwB;IAEvE,OAAOV,kBAAkB,CAACa,IAAI,CAAC;EACjC,CAAC;EACDC,UAAUA,CAACD,IAAI,EAAEH,OAAQ,EAAE;IAEzB,OAAOV,kBAAkB,CAACa,IAAI,CAAC;EACjC;AACF,CAAC"}
|
package/dist/index.cjs
CHANGED
|
@@ -467,11 +467,18 @@ function parseArrowSync(arrayBuffer, options) {
|
|
|
467
467
|
|
|
468
468
|
// src/parsers/parse-arrow-in-batches.ts
|
|
469
469
|
var arrow5 = __toESM(require("apache-arrow"), 1);
|
|
470
|
-
function parseArrowInBatches(asyncIterator) {
|
|
470
|
+
function parseArrowInBatches(asyncIterator, options) {
|
|
471
471
|
async function* makeArrowAsyncIterator() {
|
|
472
|
+
var _a, _b;
|
|
472
473
|
const readers = arrow5.RecordBatchReader.readAll(asyncIterator);
|
|
473
474
|
for await (const reader of readers) {
|
|
474
475
|
for await (const recordBatch of reader) {
|
|
476
|
+
if (((_a = options == null ? void 0 : options.arrow) == null ? void 0 : _a.batchDebounceMs) !== void 0 && ((_b = options == null ? void 0 : options.arrow) == null ? void 0 : _b.batchDebounceMs) > 0) {
|
|
477
|
+
await new Promise((resolve) => {
|
|
478
|
+
var _a2;
|
|
479
|
+
return setTimeout(resolve, ((_a2 = options.arrow) == null ? void 0 : _a2.batchDebounceMs) || 0);
|
|
480
|
+
});
|
|
481
|
+
}
|
|
475
482
|
const arrowTabledBatch = {
|
|
476
483
|
shape: "arrow-table",
|
|
477
484
|
batchType: "data",
|