@loaders.gl/arrow 4.0.4 → 4.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/arrow-worker.js +237 -2
- package/dist/dist.dev.js +1398 -610
- package/dist/geoarrow/convert-geoarrow-to-binary-geometry.d.ts +4 -2
- package/dist/geoarrow/convert-geoarrow-to-binary-geometry.d.ts.map +1 -1
- package/dist/geoarrow/convert-geoarrow-to-binary-geometry.js +51 -32
- package/dist/geoarrow/convert-geoarrow-to-binary-geometry.js.map +1 -1
- package/dist/geoarrow/convert-geoarrow-to-geojson-geometry.d.ts +13 -0
- package/dist/geoarrow/convert-geoarrow-to-geojson-geometry.d.ts.map +1 -0
- package/dist/geoarrow/{convert-geoarrow-to-geojson.js → convert-geoarrow-to-geojson-geometry.js} +34 -27
- package/dist/geoarrow/convert-geoarrow-to-geojson-geometry.js.map +1 -0
- package/dist/geoarrow-loader.d.ts.map +1 -1
- package/dist/geoarrow-loader.js +0 -1
- package/dist/geoarrow-loader.js.map +1 -1
- package/dist/index.cjs +361 -332
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/parsers/parse-arrow-sync.d.ts.map +1 -1
- package/dist/parsers/parse-arrow-sync.js +2 -0
- package/dist/parsers/parse-arrow-sync.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 +1 -0
- package/dist/tables/convert-arrow-to-columnar-table.js.map +1 -1
- package/dist/tables/convert-arrow-to-geojson-table.d.ts +1 -1
- package/dist/tables/convert-arrow-to-geojson-table.d.ts.map +1 -1
- package/dist/tables/convert-arrow-to-geojson-table.js +14 -8
- 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 +1 -0
- package/dist/tables/convert-columnar-to-row-table.js.map +1 -1
- package/dist/triangulate-on-worker.d.ts +1 -1
- package/dist/triangulate-on-worker.d.ts.map +1 -1
- package/dist/triangulate-on-worker.js.map +1 -1
- package/dist/triangulation-worker.js +31 -24
- package/dist/workers/triangulation-worker.js +3 -1
- package/dist/workers/triangulation-worker.js.map +1 -1
- package/package.json +16 -10
- package/src/geoarrow/convert-geoarrow-to-binary-geometry.ts +81 -46
- package/src/geoarrow/{convert-geoarrow-to-geojson.ts → convert-geoarrow-to-geojson-geometry.ts} +56 -46
- package/src/geoarrow-loader.ts +0 -4
- package/src/index.ts +1 -1
- package/src/parsers/parse-arrow-sync.ts +6 -1
- package/src/tables/convert-arrow-to-columnar-table.ts +1 -0
- package/src/tables/convert-arrow-to-geojson-table.ts +18 -7
- package/src/tables/convert-columnar-to-row-table.ts +1 -0
- package/src/triangulate-on-worker.ts +1 -1
- package/src/workers/triangulation-worker.ts +1 -1
- package/dist/geoarrow/convert-geoarrow-to-geojson.d.ts +0 -20
- package/dist/geoarrow/convert-geoarrow-to-geojson.d.ts.map +0 -1
- package/dist/geoarrow/convert-geoarrow-to-geojson.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export type { GeoArrowEncoding } from '@loaders.gl/gis';
|
|
|
11
11
|
export type { BinaryDataFromGeoArrow, BinaryGeometriesFromArrowOptions } from './geoarrow/convert-geoarrow-to-binary-geometry';
|
|
12
12
|
export { BINARY_GEOMETRY_TEMPLATE, getBinaryGeometriesFromArrow, getTriangleIndices, getMeanCentersFromBinaryGeometries } from './geoarrow/convert-geoarrow-to-binary-geometry';
|
|
13
13
|
export { updateBoundsFromGeoArrowSamples } from './geoarrow/get-arrow-bounds';
|
|
14
|
-
export { parseGeometryFromArrow } from './geoarrow/convert-geoarrow-to-geojson';
|
|
14
|
+
export { parseGeometryFromArrow } from './geoarrow/convert-geoarrow-to-geojson-geometry';
|
|
15
15
|
export { convertArrowToGeoJSONTable } from './tables/convert-arrow-to-geojson-table';
|
|
16
16
|
export { TriangulationWorker, triangulateOnWorker } from './triangulate-on-worker';
|
|
17
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,KAAK,EAAC,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AASvD,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAKvD,YAAY,EAAC,UAAU,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAC,YAAY,EAAC,MAAM,SAAS,CAAC;AAIrC,YAAY,EAAC,kBAAkB,EAAC,CAAC;AACjC,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAE9D,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAC,cAAc,EAAE,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,+BAA+B,CAAC;AAKvC,YAAY,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAItD,YAAY,EACV,sBAAsB,EACtB,gCAAgC,EACjC,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,EAClB,kCAAkC,EACnC,MAAM,gDAAgD,CAAC;AAExD,OAAO,EAAC,+BAA+B,EAAC,MAAM,6BAA6B,CAAC;AAE5E,OAAO,EAAC,sBAAsB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AASvD,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAKvD,YAAY,EAAC,UAAU,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAC,YAAY,EAAC,MAAM,SAAS,CAAC;AAIrC,YAAY,EAAC,kBAAkB,EAAC,CAAC;AACjC,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAE9D,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAC,cAAc,EAAE,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,+BAA+B,CAAC;AAKvC,YAAY,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAItD,YAAY,EACV,sBAAsB,EACtB,gCAAgC,EACjC,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,EAClB,kCAAkC,EACnC,MAAM,gDAAgD,CAAC;AAExD,OAAO,EAAC,+BAA+B,EAAC,MAAM,6BAA6B,CAAC;AAE5E,OAAO,EAAC,sBAAsB,EAAC,MAAM,iDAAiD,CAAC;AAEvF,OAAO,EAAC,0BAA0B,EAAC,MAAM,yCAAyC,CAAC;AAInF,OAAO,EAAC,mBAAmB,EAAE,mBAAmB,EAAC,MAAM,yBAAyB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ export { GeoArrowLoader, GeoArrowWorkerLoader } from "./geoarrow-loader.js";
|
|
|
9
9
|
export { serializeArrowSchema, deserializeArrowSchema, serializeArrowMetadata, deserializeArrowMetadata, serializeArrowField, deserializeArrowField, serializeArrowType, deserializeArrowType } from "./schema/convert-arrow-schema.js";
|
|
10
10
|
export { BINARY_GEOMETRY_TEMPLATE, getBinaryGeometriesFromArrow, getTriangleIndices, getMeanCentersFromBinaryGeometries } from "./geoarrow/convert-geoarrow-to-binary-geometry.js";
|
|
11
11
|
export { updateBoundsFromGeoArrowSamples } from "./geoarrow/get-arrow-bounds.js";
|
|
12
|
-
export { parseGeometryFromArrow } from "./geoarrow/convert-geoarrow-to-geojson.js";
|
|
12
|
+
export { parseGeometryFromArrow } from "./geoarrow/convert-geoarrow-to-geojson-geometry.js";
|
|
13
13
|
export { convertArrowToGeoJSONTable } from "./tables/convert-arrow-to-geojson-table.js";
|
|
14
14
|
export { TriangulationWorker, triangulateOnWorker } from "./triangulate-on-worker.js";
|
|
15
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["TableBatchBuilder","ArrowTableBatchAggregator","ArrowBatch","getArrowType","VECTOR_TYPES","ArrowLoader","ArrowWorkerLoader","ArrowWriter","GeoArrowLoader","GeoArrowWorkerLoader","serializeArrowSchema","deserializeArrowSchema","serializeArrowMetadata","deserializeArrowMetadata","serializeArrowField","deserializeArrowField","serializeArrowType","deserializeArrowType","BINARY_GEOMETRY_TEMPLATE","getBinaryGeometriesFromArrow","getTriangleIndices","getMeanCentersFromBinaryGeometries","updateBoundsFromGeoArrowSamples","parseGeometryFromArrow","convertArrowToGeoJSONTable","TriangulationWorker","triangulateOnWorker"],"sources":["../src/index.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {ArrowLoaderOptions} from './arrow-loader';\nimport {TableBatchBuilder} from '@loaders.gl/schema';\nimport {ArrowTableBatchAggregator} from './lib/arrow-table-batch';\n\n// Make the ArrowBatch type available\nTableBatchBuilder.ArrowBatch = ArrowTableBatchAggregator;\n\n// TYPES\n\nexport {getArrowType} from './schema/arrow-type-utils';\n\n// SCHEMA\n\n// Types\nexport type {ArrowTable, ArrowTableBatch} from './lib/arrow-table';\nexport {VECTOR_TYPES} from './types';\n\n// Arrow loader / Writer\n\nexport type {ArrowLoaderOptions};\nexport {ArrowLoader, ArrowWorkerLoader} from './arrow-loader';\n\nexport {ArrowWriter} from './arrow-writer';\n\n// Geoarrow loader\nexport {GeoArrowLoader, GeoArrowWorkerLoader} from './geoarrow-loader';\n\n// Schema utils\nexport {\n serializeArrowSchema,\n deserializeArrowSchema,\n serializeArrowMetadata,\n deserializeArrowMetadata,\n serializeArrowField,\n deserializeArrowField,\n serializeArrowType,\n deserializeArrowType\n} from './schema/convert-arrow-schema';\n\n// EXPERIMENTAL\n\n// Arrow Utils\nexport type {GeoArrowEncoding} from '@loaders.gl/gis';\n// getGeometryColumnsFromArrowTable,\n// getGeoArrowEncoding\n\nexport type {\n BinaryDataFromGeoArrow,\n BinaryGeometriesFromArrowOptions\n} from './geoarrow/convert-geoarrow-to-binary-geometry';\nexport {\n BINARY_GEOMETRY_TEMPLATE,\n getBinaryGeometriesFromArrow,\n getTriangleIndices,\n getMeanCentersFromBinaryGeometries\n} from './geoarrow/convert-geoarrow-to-binary-geometry';\n\nexport {updateBoundsFromGeoArrowSamples} from './geoarrow/get-arrow-bounds';\n\nexport {parseGeometryFromArrow} from './geoarrow/convert-geoarrow-to-geojson';\n\nexport {convertArrowToGeoJSONTable} from './tables/convert-arrow-to-geojson-table';\n\n// EXPERIMENTAL WORKER\n\nexport {TriangulationWorker, triangulateOnWorker} from './triangulate-on-worker';\n"],"mappings":"AAIA,SAAQA,iBAAiB,QAAO,oBAAoB;AAAC,SAC7CC,yBAAyB;AAGjCD,iBAAiB,CAACE,UAAU,GAAGD,yBAAyB;AAAC,SAIjDE,YAAY;AAAA,SAMZC,YAAY;AAAA,SAKZC,WAAW,EAAEC,iBAAiB;AAAA,SAE9BC,WAAW;AAAA,SAGXC,cAAc,EAAEC,oBAAoB;AAAA,SAI1CC,oBAAoB,EACpBC,sBAAsB,EACtBC,sBAAsB,EACtBC,wBAAwB,EACxBC,mBAAmB,EACnBC,qBAAqB,EACrBC,kBAAkB,EAClBC,oBAAoB;AAAA,SAepBC,wBAAwB,EACxBC,4BAA4B,EAC5BC,kBAAkB,EAClBC,kCAAkC;AAAA,SAG5BC,+BAA+B;AAAA,SAE/BC,sBAAsB;AAAA,SAEtBC,0BAA0B;AAAA,SAI1BC,mBAAmB,EAAEC,mBAAmB"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["TableBatchBuilder","ArrowTableBatchAggregator","ArrowBatch","getArrowType","VECTOR_TYPES","ArrowLoader","ArrowWorkerLoader","ArrowWriter","GeoArrowLoader","GeoArrowWorkerLoader","serializeArrowSchema","deserializeArrowSchema","serializeArrowMetadata","deserializeArrowMetadata","serializeArrowField","deserializeArrowField","serializeArrowType","deserializeArrowType","BINARY_GEOMETRY_TEMPLATE","getBinaryGeometriesFromArrow","getTriangleIndices","getMeanCentersFromBinaryGeometries","updateBoundsFromGeoArrowSamples","parseGeometryFromArrow","convertArrowToGeoJSONTable","TriangulationWorker","triangulateOnWorker"],"sources":["../src/index.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {ArrowLoaderOptions} from './arrow-loader';\nimport {TableBatchBuilder} from '@loaders.gl/schema';\nimport {ArrowTableBatchAggregator} from './lib/arrow-table-batch';\n\n// Make the ArrowBatch type available\nTableBatchBuilder.ArrowBatch = ArrowTableBatchAggregator;\n\n// TYPES\n\nexport {getArrowType} from './schema/arrow-type-utils';\n\n// SCHEMA\n\n// Types\nexport type {ArrowTable, ArrowTableBatch} from './lib/arrow-table';\nexport {VECTOR_TYPES} from './types';\n\n// Arrow loader / Writer\n\nexport type {ArrowLoaderOptions};\nexport {ArrowLoader, ArrowWorkerLoader} from './arrow-loader';\n\nexport {ArrowWriter} from './arrow-writer';\n\n// Geoarrow loader\nexport {GeoArrowLoader, GeoArrowWorkerLoader} from './geoarrow-loader';\n\n// Schema utils\nexport {\n serializeArrowSchema,\n deserializeArrowSchema,\n serializeArrowMetadata,\n deserializeArrowMetadata,\n serializeArrowField,\n deserializeArrowField,\n serializeArrowType,\n deserializeArrowType\n} from './schema/convert-arrow-schema';\n\n// EXPERIMENTAL\n\n// Arrow Utils\nexport type {GeoArrowEncoding} from '@loaders.gl/gis';\n// getGeometryColumnsFromArrowTable,\n// getGeoArrowEncoding\n\nexport type {\n BinaryDataFromGeoArrow,\n BinaryGeometriesFromArrowOptions\n} from './geoarrow/convert-geoarrow-to-binary-geometry';\nexport {\n BINARY_GEOMETRY_TEMPLATE,\n getBinaryGeometriesFromArrow,\n getTriangleIndices,\n getMeanCentersFromBinaryGeometries\n} from './geoarrow/convert-geoarrow-to-binary-geometry';\n\nexport {updateBoundsFromGeoArrowSamples} from './geoarrow/get-arrow-bounds';\n\nexport {parseGeometryFromArrow} from './geoarrow/convert-geoarrow-to-geojson-geometry';\n\nexport {convertArrowToGeoJSONTable} from './tables/convert-arrow-to-geojson-table';\n\n// EXPERIMENTAL WORKER\n\nexport {TriangulationWorker, triangulateOnWorker} from './triangulate-on-worker';\n"],"mappings":"AAIA,SAAQA,iBAAiB,QAAO,oBAAoB;AAAC,SAC7CC,yBAAyB;AAGjCD,iBAAiB,CAACE,UAAU,GAAGD,yBAAyB;AAAC,SAIjDE,YAAY;AAAA,SAMZC,YAAY;AAAA,SAKZC,WAAW,EAAEC,iBAAiB;AAAA,SAE9BC,WAAW;AAAA,SAGXC,cAAc,EAAEC,oBAAoB;AAAA,SAI1CC,oBAAoB,EACpBC,sBAAsB,EACtBC,sBAAsB,EACtBC,wBAAwB,EACxBC,mBAAmB,EACnBC,qBAAqB,EACrBC,kBAAkB,EAClBC,oBAAoB;AAAA,SAepBC,wBAAwB,EACxBC,4BAA4B,EAC5BC,kBAAkB,EAClBC,kCAAkC;AAAA,SAG5BC,+BAA+B;AAAA,SAE/BC,sBAAsB;AAAA,SAEtBC,0BAA0B;AAAA,SAI1BC,mBAAmB,EAAEC,mBAAmB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-arrow-sync.d.ts","sourceRoot":"","sources":["../../src/parsers/parse-arrow-sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAE,aAAa,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AACrF,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-arrow-sync.d.ts","sourceRoot":"","sources":["../../src/parsers/parse-arrow-sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAE,aAAa,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AACrF,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAOnD,wBAAgB,cAAc,CAC5B,WAAW,KAAA,EACX,OAAO,CAAC,EAAE;IAAC,KAAK,CAAC,EAAE,aAAa,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,iBAAiB,CAAA;CAAC,GAC5F,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,aAAa,CA4B7D"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { convertTable } from '@loaders.gl/schema';
|
|
2
2
|
import * as arrow from 'apache-arrow';
|
|
3
3
|
import { convertArrowToColumnarTable } from "../tables/convert-arrow-to-columnar-table.js";
|
|
4
|
+
import { serializeArrowSchema } from "../schema/convert-arrow-schema.js";
|
|
4
5
|
export function parseArrowSync(arrayBuffer, options) {
|
|
5
6
|
const apacheArrowTable = arrow.tableFromIPC([new Uint8Array(arrayBuffer)]);
|
|
6
7
|
const arrowTable = {
|
|
7
8
|
shape: 'arrow-table',
|
|
9
|
+
schema: serializeArrowSchema(apacheArrowTable.schema),
|
|
8
10
|
data: apacheArrowTable
|
|
9
11
|
};
|
|
10
12
|
const shape = (options === null || options === void 0 ? void 0 : options.shape) || 'arrow-table';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-arrow-sync.js","names":["convertTable","arrow","convertArrowToColumnarTable","parseArrowSync","arrayBuffer","options","apacheArrowTable","tableFromIPC","Uint8Array","arrowTable","shape","data","columnarTable","Error"],"sources":["../../src/parsers/parse-arrow-sync.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {ArrayRowTable, ColumnarTable, ObjectRowTable} from '@loaders.gl/schema';\nimport type {ArrowTable} from '../lib/arrow-table';\nimport {convertTable} from '@loaders.gl/schema';\nimport * as arrow from 'apache-arrow';\nimport {convertArrowToColumnarTable} from '../tables/convert-arrow-to-columnar-table';\n\n// Parses arrow to a columnar table\nexport function parseArrowSync(\n arrayBuffer,\n options?: {shape?: 'arrow-table' | 'columnar-table' | 'object-row-table' | 'array-row-table'}\n): ArrowTable | ColumnarTable | ObjectRowTable | ArrayRowTable {\n const apacheArrowTable = arrow.tableFromIPC([new Uint8Array(arrayBuffer)]);\n const arrowTable: ArrowTable = {shape: 'arrow-table'
|
|
1
|
+
{"version":3,"file":"parse-arrow-sync.js","names":["convertTable","arrow","convertArrowToColumnarTable","serializeArrowSchema","parseArrowSync","arrayBuffer","options","apacheArrowTable","tableFromIPC","Uint8Array","arrowTable","shape","schema","data","columnarTable","Error"],"sources":["../../src/parsers/parse-arrow-sync.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {ArrayRowTable, ColumnarTable, ObjectRowTable} from '@loaders.gl/schema';\nimport type {ArrowTable} from '../lib/arrow-table';\nimport {convertTable} from '@loaders.gl/schema';\nimport * as arrow from 'apache-arrow';\nimport {convertArrowToColumnarTable} from '../tables/convert-arrow-to-columnar-table';\nimport {serializeArrowSchema} from '../schema/convert-arrow-schema';\n\n// Parses arrow to a columnar table\nexport function parseArrowSync(\n arrayBuffer,\n options?: {shape?: 'arrow-table' | 'columnar-table' | 'object-row-table' | 'array-row-table'}\n): ArrowTable | ColumnarTable | ObjectRowTable | ArrayRowTable {\n const apacheArrowTable = arrow.tableFromIPC([new Uint8Array(arrayBuffer)]);\n const arrowTable: ArrowTable = {\n shape: 'arrow-table',\n schema: serializeArrowSchema(apacheArrowTable.schema),\n data: apacheArrowTable\n };\n\n const shape = options?.shape || 'arrow-table';\n switch (shape) {\n case 'arrow-table':\n return arrowTable;\n\n case 'columnar-table':\n return convertArrowToColumnarTable(arrowTable);\n\n case 'object-row-table':\n let columnarTable = convertArrowToColumnarTable(arrowTable);\n return convertTable(columnarTable, 'object-row-table');\n\n case 'array-row-table':\n columnarTable = convertArrowToColumnarTable(arrowTable);\n return convertTable(columnarTable, 'array-row-table');\n\n default:\n // TODO\n throw new Error(shape);\n }\n}\n"],"mappings":"AAKA,SAAQA,YAAY,QAAO,oBAAoB;AAC/C,OAAO,KAAKC,KAAK,MAAM,cAAc;AAAC,SAC9BC,2BAA2B;AAAA,SAC3BC,oBAAoB;AAG5B,OAAO,SAASC,cAAcA,CAC5BC,WAAW,EACXC,OAA6F,EAChC;EAC7D,MAAMC,gBAAgB,GAAGN,KAAK,CAACO,YAAY,CAAC,CAAC,IAAIC,UAAU,CAACJ,WAAW,CAAC,CAAC,CAAC;EAC1E,MAAMK,UAAsB,GAAG;IAC7BC,KAAK,EAAE,aAAa;IACpBC,MAAM,EAAET,oBAAoB,CAACI,gBAAgB,CAACK,MAAM,CAAC;IACrDC,IAAI,EAAEN;EACR,CAAC;EAED,MAAMI,KAAK,GAAG,CAAAL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK,KAAK,KAAI,aAAa;EAC7C,QAAQA,KAAK;IACX,KAAK,aAAa;MAChB,OAAOD,UAAU;IAEnB,KAAK,gBAAgB;MACnB,OAAOR,2BAA2B,CAACQ,UAAU,CAAC;IAEhD,KAAK,kBAAkB;MACrB,IAAII,aAAa,GAAGZ,2BAA2B,CAACQ,UAAU,CAAC;MAC3D,OAAOV,YAAY,CAACc,aAAa,EAAE,kBAAkB,CAAC;IAExD,KAAK,iBAAiB;MACpBA,aAAa,GAAGZ,2BAA2B,CAACQ,UAAU,CAAC;MACvD,OAAOV,YAAY,CAACc,aAAa,EAAE,iBAAiB,CAAC;IAEvD;MAEE,MAAM,IAAIC,KAAK,CAACJ,KAAK,CAAC;EAC1B;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-arrow-to-columnar-table.d.ts","sourceRoot":"","sources":["../../src/tables/convert-arrow-to-columnar-table.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"convert-arrow-to-columnar-table.d.ts","sourceRoot":"","sources":["../../src/tables/convert-arrow-to-columnar-table.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,CAmB5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-arrow-to-columnar-table.js","names":["convertArrowToColumnarTable","table","arrowTable","data","columnarTable","field","schema","fields","arrowColumn","getChild","name","values","toArray","shape"],"sources":["../../src/tables/convert-arrow-to-columnar-table.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {ColumnarTable} from '@loaders.gl/schema';\nimport type {ArrowTable} from '../lib/arrow-table';\n\n/**\n * Convert an Apache Arrow table to a ColumnarTable\n * @note Currently does not convert schema\n */\nexport function convertArrowToColumnarTable(table: ArrowTable): ColumnarTable {\n // TODO - avoid calling `getColumn` on columns we are not interested in?\n // Add options object?\n\n const arrowTable = table.data;\n const columnarTable = {};\n\n for (const field of arrowTable.schema.fields) {\n // This (is intended to) coalesce all record batches into a single typed array\n const arrowColumn = arrowTable.getChild(field.name);\n const values = arrowColumn?.toArray();\n columnarTable[field.name] = values;\n }\n\n return {\n shape: 'columnar-table',\n data: columnarTable\n };\n}\n"],"mappings":"AAUA,OAAO,SAASA,2BAA2BA,CAACC,KAAiB,EAAiB;EAI5E,MAAMC,UAAU,GAAGD,KAAK,CAACE,IAAI;EAC7B,MAAMC,aAAa,GAAG,CAAC,CAAC;EAExB,KAAK,MAAMC,KAAK,IAAIH,UAAU,CAACI,MAAM,CAACC,MAAM,EAAE;IAE5C,MAAMC,WAAW,GAAGN,UAAU,CAACO,QAAQ,CAACJ,KAAK,CAACK,IAAI,CAAC;IACnD,MAAMC,MAAM,GAAGH,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEI,OAAO,CAAC,CAAC;IACrCR,aAAa,CAACC,KAAK,CAACK,IAAI,CAAC,GAAGC,MAAM;EACpC;EAEA,OAAO;IACLE,KAAK,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"convert-arrow-to-columnar-table.js","names":["convertArrowToColumnarTable","table","arrowTable","data","columnarTable","field","schema","fields","arrowColumn","getChild","name","values","toArray","shape"],"sources":["../../src/tables/convert-arrow-to-columnar-table.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {ColumnarTable} from '@loaders.gl/schema';\nimport type {ArrowTable} from '../lib/arrow-table';\n\n/**\n * Convert an Apache Arrow table to a ColumnarTable\n * @note Currently does not convert schema\n */\nexport function convertArrowToColumnarTable(table: ArrowTable): ColumnarTable {\n // TODO - avoid calling `getColumn` on columns we are not interested in?\n // Add options object?\n\n const arrowTable = table.data;\n const columnarTable = {};\n\n for (const field of arrowTable.schema.fields) {\n // This (is intended to) coalesce all record batches into a single typed array\n const arrowColumn = arrowTable.getChild(field.name);\n const values = arrowColumn?.toArray();\n columnarTable[field.name] = values;\n }\n\n return {\n shape: 'columnar-table',\n schema: table.schema,\n data: columnarTable\n };\n}\n"],"mappings":"AAUA,OAAO,SAASA,2BAA2BA,CAACC,KAAiB,EAAiB;EAI5E,MAAMC,UAAU,GAAGD,KAAK,CAACE,IAAI;EAC7B,MAAMC,aAAa,GAAG,CAAC,CAAC;EAExB,KAAK,MAAMC,KAAK,IAAIH,UAAU,CAACI,MAAM,CAACC,MAAM,EAAE;IAE5C,MAAMC,WAAW,GAAGN,UAAU,CAACO,QAAQ,CAACJ,KAAK,CAACK,IAAI,CAAC;IACnD,MAAMC,MAAM,GAAGH,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEI,OAAO,CAAC,CAAC;IACrCR,aAAa,CAACC,KAAK,CAACK,IAAI,CAAC,GAAGC,MAAM;EACpC;EAEA,OAAO;IACLE,KAAK,EAAE,gBAAgB;IACvBP,MAAM,EAAEL,KAAK,CAACK,MAAM;IACpBH,IAAI,EAAEC;EACR,CAAC;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-arrow-to-geojson-table.d.ts","sourceRoot":"","sources":["../../src/tables/convert-arrow-to-geojson-table.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAU,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"convert-arrow-to-geojson-table.d.ts","sourceRoot":"","sources":["../../src/tables/convert-arrow-to-geojson-table.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAU,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAInD;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,GAAG,UAAU,CAMlF;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,CAqC1E"}
|
|
@@ -3,6 +3,7 @@ import { getGeometryColumnsFromSchema } from '@loaders.gl/gis';
|
|
|
3
3
|
export function convertApacheArrowToArrowTable(arrowTable) {
|
|
4
4
|
return {
|
|
5
5
|
shape: 'arrow-table',
|
|
6
|
+
schema: serializeArrowSchema(arrowTable.schema),
|
|
6
7
|
data: arrowTable
|
|
7
8
|
};
|
|
8
9
|
}
|
|
@@ -12,21 +13,26 @@ export function convertArrowToGeoJSONTable(table) {
|
|
|
12
13
|
const geometryColumns = getGeometryColumnsFromSchema(schema);
|
|
13
14
|
const encoding = geometryColumns.geometry.encoding;
|
|
14
15
|
const features = [];
|
|
16
|
+
const propertyColumnNames = arrowTable.schema.fields.map(field => field.name).filter(name => !(name in geometryColumns));
|
|
17
|
+
const propertiesTable = arrowTable.select(propertyColumnNames);
|
|
18
|
+
const arrowGeometryColumn = arrowTable.getChild('geometry');
|
|
15
19
|
for (let row = 0; row < arrowTable.numRows; row++) {
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
const arrowGeometryObject = {
|
|
19
|
-
encoding,
|
|
20
|
-
data: arrowGeometry
|
|
21
|
-
};
|
|
22
|
-
const feature = parseGeometryFromArrow(arrowGeometryObject);
|
|
20
|
+
const arrowGeometry = arrowGeometryColumn === null || arrowGeometryColumn === void 0 ? void 0 : arrowGeometryColumn.get(row);
|
|
21
|
+
const feature = parseGeometryFromArrow(arrowGeometry, encoding);
|
|
23
22
|
if (feature) {
|
|
24
|
-
|
|
23
|
+
var _propertiesTable$get;
|
|
24
|
+
const properties = ((_propertiesTable$get = propertiesTable.get(row)) === null || _propertiesTable$get === void 0 ? void 0 : _propertiesTable$get.toJSON()) || {};
|
|
25
|
+
features.push({
|
|
26
|
+
type: 'Feature',
|
|
27
|
+
geometry: feature,
|
|
28
|
+
properties
|
|
29
|
+
});
|
|
25
30
|
}
|
|
26
31
|
}
|
|
27
32
|
return {
|
|
28
33
|
shape: 'geojson-table',
|
|
29
34
|
type: 'FeatureCollection',
|
|
35
|
+
schema: table.schema,
|
|
30
36
|
features
|
|
31
37
|
};
|
|
32
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-arrow-to-geojson-table.js","names":["serializeArrowSchema","parseGeometryFromArrow","getGeometryColumnsFromSchema","convertApacheArrowToArrowTable","arrowTable","shape","data","convertArrowToGeoJSONTable","table","
|
|
1
|
+
{"version":3,"file":"convert-arrow-to-geojson-table.js","names":["serializeArrowSchema","parseGeometryFromArrow","getGeometryColumnsFromSchema","convertApacheArrowToArrowTable","arrowTable","shape","schema","data","convertArrowToGeoJSONTable","table","geometryColumns","encoding","geometry","features","propertyColumnNames","fields","map","field","name","filter","propertiesTable","select","arrowGeometryColumn","getChild","row","numRows","arrowGeometry","get","feature","_propertiesTable$get","properties","toJSON","push","type"],"sources":["../../src/tables/convert-arrow-to-geojson-table.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {Feature, GeoJSONTable} from '@loaders.gl/schema';\nimport * as arrow from 'apache-arrow';\nimport type {ArrowTable} from '../lib/arrow-table';\nimport {serializeArrowSchema, parseGeometryFromArrow} from '@loaders.gl/arrow';\nimport {getGeometryColumnsFromSchema} from '@loaders.gl/gis';\n\n/**\n * Wrap an apache arrow table in a loaders.gl table wrapper.\n * From this additional conversions are available.\n * @param arrowTable\n * @returns\n */\nexport function convertApacheArrowToArrowTable(arrowTable: arrow.Table): ArrowTable {\n return {\n shape: 'arrow-table',\n schema: serializeArrowSchema(arrowTable.schema),\n data: arrowTable\n };\n}\n\n/**\n * Convert an Apache Arrow table to a GeoJSONTable\n * @note Currently does not convert schema\n */\nexport function convertArrowToGeoJSONTable(table: ArrowTable): GeoJSONTable {\n const arrowTable = table.data;\n const schema = serializeArrowSchema(arrowTable.schema);\n const geometryColumns = getGeometryColumnsFromSchema(schema);\n\n // get encoding from geometryColumns['geometry']\n const encoding = geometryColumns.geometry.encoding;\n\n const features: Feature[] = [];\n\n // Remove geometry columns\n const propertyColumnNames = arrowTable.schema.fields\n .map((field) => field.name)\n // TODO - this deletes all geometry columns\n .filter((name) => !(name in geometryColumns));\n const propertiesTable = arrowTable.select(propertyColumnNames);\n\n const arrowGeometryColumn = arrowTable.getChild('geometry');\n\n for (let row = 0; row < arrowTable.numRows; row++) {\n // get the geometry value from arrow geometry column\n // Note that type can vary\n const arrowGeometry = arrowGeometryColumn?.get(row);\n // parse arrow geometry to geojson feature\n const feature = parseGeometryFromArrow(arrowGeometry, encoding);\n if (feature) {\n const properties = propertiesTable.get(row)?.toJSON() || {};\n features.push({type: 'Feature', geometry: feature, properties});\n }\n }\n\n return {\n shape: 'geojson-table',\n type: 'FeatureCollection',\n schema: table.schema,\n features\n };\n}\n"],"mappings":"AAMA,SAAQA,oBAAoB,EAAEC,sBAAsB,QAAO,mBAAmB;AAC9E,SAAQC,4BAA4B,QAAO,iBAAiB;AAQ5D,OAAO,SAASC,8BAA8BA,CAACC,UAAuB,EAAc;EAClF,OAAO;IACLC,KAAK,EAAE,aAAa;IACpBC,MAAM,EAAEN,oBAAoB,CAACI,UAAU,CAACE,MAAM,CAAC;IAC/CC,IAAI,EAAEH;EACR,CAAC;AACH;AAMA,OAAO,SAASI,0BAA0BA,CAACC,KAAiB,EAAgB;EAC1E,MAAML,UAAU,GAAGK,KAAK,CAACF,IAAI;EAC7B,MAAMD,MAAM,GAAGN,oBAAoB,CAACI,UAAU,CAACE,MAAM,CAAC;EACtD,MAAMI,eAAe,GAAGR,4BAA4B,CAACI,MAAM,CAAC;EAG5D,MAAMK,QAAQ,GAAGD,eAAe,CAACE,QAAQ,CAACD,QAAQ;EAElD,MAAME,QAAmB,GAAG,EAAE;EAG9B,MAAMC,mBAAmB,GAAGV,UAAU,CAACE,MAAM,CAACS,MAAM,CACjDC,GAAG,CAAEC,KAAK,IAAKA,KAAK,CAACC,IAAI,CAAC,CAE1BC,MAAM,CAAED,IAAI,IAAK,EAAEA,IAAI,IAAIR,eAAe,CAAC,CAAC;EAC/C,MAAMU,eAAe,GAAGhB,UAAU,CAACiB,MAAM,CAACP,mBAAmB,CAAC;EAE9D,MAAMQ,mBAAmB,GAAGlB,UAAU,CAACmB,QAAQ,CAAC,UAAU,CAAC;EAE3D,KAAK,IAAIC,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGpB,UAAU,CAACqB,OAAO,EAAED,GAAG,EAAE,EAAE;IAGjD,MAAME,aAAa,GAAGJ,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAEK,GAAG,CAACH,GAAG,CAAC;IAEnD,MAAMI,OAAO,GAAG3B,sBAAsB,CAACyB,aAAa,EAAEf,QAAQ,CAAC;IAC/D,IAAIiB,OAAO,EAAE;MAAA,IAAAC,oBAAA;MACX,MAAMC,UAAU,GAAG,EAAAD,oBAAA,GAAAT,eAAe,CAACO,GAAG,CAACH,GAAG,CAAC,cAAAK,oBAAA,uBAAxBA,oBAAA,CAA0BE,MAAM,CAAC,CAAC,KAAI,CAAC,CAAC;MAC3DlB,QAAQ,CAACmB,IAAI,CAAC;QAACC,IAAI,EAAE,SAAS;QAAErB,QAAQ,EAAEgB,OAAO;QAAEE;MAAU,CAAC,CAAC;IACjE;EACF;EAEA,OAAO;IACLzB,KAAK,EAAE,eAAe;IACtB4B,IAAI,EAAE,mBAAmB;IACzB3B,MAAM,EAAEG,KAAK,CAACH,MAAM;IACpBO;EACF,CAAC;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-columnar-to-row-table.d.ts","sourceRoot":"","sources":["../../src/tables/convert-columnar-to-row-table.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAEtE;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,aAAa,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"convert-columnar-to-row-table.d.ts","sourceRoot":"","sources":["../../src/tables/convert-columnar-to-row-table.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAEtE;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,aAAa,GAAG,cAAc,CAoB5F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-columnar-to-row-table.js","names":["convertColumnarToRowFormatTable","columnarTable","tableKeys","Object","keys","tableRowsCount","length","rowFormatTable","index","tableItem","keyIndex","fieldName","push","shape","data"],"sources":["../../src/tables/convert-columnar-to-row-table.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {ColumnarTable, ObjectRowTable} from '@loaders.gl/schema';\n\n/**\n *\n * @note - should be part of schema module\n */\nexport function convertColumnarToRowFormatTable(columnarTable: ColumnarTable): ObjectRowTable {\n const tableKeys = Object.keys(columnarTable);\n const tableRowsCount = columnarTable[tableKeys[0]].length;\n\n const rowFormatTable: {}[] = [];\n\n for (let index = 0; index < tableRowsCount; index++) {\n const tableItem = {};\n for (let keyIndex = 0; keyIndex < tableKeys.length; keyIndex++) {\n const fieldName = tableKeys[keyIndex];\n tableItem[fieldName] = columnarTable[fieldName][index];\n }\n rowFormatTable.push(tableItem);\n }\n\n return {\n shape: 'object-row-table',\n data: rowFormatTable\n };\n}\n"],"mappings":"AASA,OAAO,SAASA,+BAA+BA,CAACC,aAA4B,EAAkB;EAC5F,MAAMC,SAAS,GAAGC,MAAM,CAACC,IAAI,CAACH,aAAa,CAAC;EAC5C,MAAMI,cAAc,GAAGJ,aAAa,CAACC,SAAS,CAAC,CAAC,CAAC,CAAC,CAACI,MAAM;EAEzD,MAAMC,cAAoB,GAAG,EAAE;EAE/B,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGH,cAAc,EAAEG,KAAK,EAAE,EAAE;IACnD,MAAMC,SAAS,GAAG,CAAC,CAAC;IACpB,KAAK,IAAIC,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAGR,SAAS,CAACI,MAAM,EAAEI,QAAQ,EAAE,EAAE;MAC9D,MAAMC,SAAS,GAAGT,SAAS,CAACQ,QAAQ,CAAC;MACrCD,SAAS,CAACE,SAAS,CAAC,GAAGV,aAAa,CAACU,SAAS,CAAC,CAACH,KAAK,CAAC;IACxD;IACAD,cAAc,CAACK,IAAI,CAACH,SAAS,CAAC;EAChC;EAEA,OAAO;IACLI,KAAK,EAAE,kBAAkB;IACzBC,IAAI,
|
|
1
|
+
{"version":3,"file":"convert-columnar-to-row-table.js","names":["convertColumnarToRowFormatTable","columnarTable","tableKeys","Object","keys","tableRowsCount","length","rowFormatTable","index","tableItem","keyIndex","fieldName","push","shape","schema","data"],"sources":["../../src/tables/convert-columnar-to-row-table.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {ColumnarTable, ObjectRowTable} from '@loaders.gl/schema';\n\n/**\n *\n * @note - should be part of schema module\n */\nexport function convertColumnarToRowFormatTable(columnarTable: ColumnarTable): ObjectRowTable {\n const tableKeys = Object.keys(columnarTable);\n const tableRowsCount = columnarTable[tableKeys[0]].length;\n\n const rowFormatTable: {}[] = [];\n\n for (let index = 0; index < tableRowsCount; index++) {\n const tableItem = {};\n for (let keyIndex = 0; keyIndex < tableKeys.length; keyIndex++) {\n const fieldName = tableKeys[keyIndex];\n tableItem[fieldName] = columnarTable[fieldName][index];\n }\n rowFormatTable.push(tableItem);\n }\n\n return {\n shape: 'object-row-table',\n schema: columnarTable.schema,\n data: rowFormatTable\n };\n}\n"],"mappings":"AASA,OAAO,SAASA,+BAA+BA,CAACC,aAA4B,EAAkB;EAC5F,MAAMC,SAAS,GAAGC,MAAM,CAACC,IAAI,CAACH,aAAa,CAAC;EAC5C,MAAMI,cAAc,GAAGJ,aAAa,CAACC,SAAS,CAAC,CAAC,CAAC,CAAC,CAACI,MAAM;EAEzD,MAAMC,cAAoB,GAAG,EAAE;EAE/B,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGH,cAAc,EAAEG,KAAK,EAAE,EAAE;IACnD,MAAMC,SAAS,GAAG,CAAC,CAAC;IACpB,KAAK,IAAIC,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAGR,SAAS,CAACI,MAAM,EAAEI,QAAQ,EAAE,EAAE;MAC9D,MAAMC,SAAS,GAAGT,SAAS,CAACQ,QAAQ,CAAC;MACrCD,SAAS,CAACE,SAAS,CAAC,GAAGV,aAAa,CAACU,SAAS,CAAC,CAACH,KAAK,CAAC;IACxD;IACAD,cAAc,CAACK,IAAI,CAACH,SAAS,CAAC;EAChC;EAEA,OAAO;IACLI,KAAK,EAAE,kBAAkB;IACzBC,MAAM,EAAEb,aAAa,CAACa,MAAM;IAC5BC,IAAI,EAAER;EACR,CAAC;AACH"}
|
|
@@ -17,7 +17,7 @@ export type TriangulateInput = {
|
|
|
17
17
|
};
|
|
18
18
|
/** Result type for operation: 'triangulate' */
|
|
19
19
|
export type TriangulateResult = TriangulateInput & {
|
|
20
|
-
triangleIndices
|
|
20
|
+
triangleIndices?: Uint32Array;
|
|
21
21
|
};
|
|
22
22
|
/**
|
|
23
23
|
* Worker for tessellating geometries. Normally called through triangulateOnWorker
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triangulate-on-worker.d.ts","sourceRoot":"","sources":["../src/triangulate-on-worker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAO5D,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,GAAG;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAC,CAAC;AACzF,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,GAAG;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAC,CAAC;AAE3F,8CAA8C;AAC9C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,aAAa,CAAC;IACzB,cAAc,EAAE,WAAW,CAAC;IAC5B,uBAAuB,EAAE,UAAU,CAAC;IACpC,mBAAmB,EAAE,YAAY,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,+CAA+C;AAC/C,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG;IACjD,eAAe,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"triangulate-on-worker.d.ts","sourceRoot":"","sources":["../src/triangulate-on-worker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAO5D,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,GAAG;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAC,CAAC;AACzF,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,GAAG;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAC,CAAC;AAE3F,8CAA8C;AAC9C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,aAAa,CAAC;IACzB,cAAc,EAAE,WAAW,CAAC;IAC5B,uBAAuB,EAAE,UAAU,CAAC;IACpC,mBAAmB,EAAE,YAAY,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,+CAA+C;AAC/C,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG;IACjD,eAAe,CAAC,EAAE,WAAW,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;CAM/B,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,wBAAwB,EAC9B,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,yBAAyB,CAAC,CAEpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triangulate-on-worker.js","names":["processOnWorker","VERSION","__VERSION__","TriangulationWorker","id","name","module","version","options","triangulateOnWorker","data","arguments","length","undefined"],"sources":["../src/triangulate-on-worker.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {WorkerOptions} from '@loaders.gl/worker-utils';\nimport {processOnWorker} from '@loaders.gl/worker-utils';\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 TriangulationWorkerInput = TriangulateInput | {operation: 'test'; data: any};\nexport type TriangulationWorkerOutput = TriangulateResult | {operation: 'test'; data: any};\n\n/** Input data for operation: 'triangulate' */\nexport type TriangulateInput = {\n operation: 'triangulate';\n polygonIndices: Uint16Array;\n primitivePolygonIndices: Int32Array;\n flatCoordinateArray: Float64Array;\n nDim: number;\n};\n\n/** Result type for operation: 'triangulate' */\nexport type TriangulateResult = TriangulateInput & {\n triangleIndices
|
|
1
|
+
{"version":3,"file":"triangulate-on-worker.js","names":["processOnWorker","VERSION","__VERSION__","TriangulationWorker","id","name","module","version","options","triangulateOnWorker","data","arguments","length","undefined"],"sources":["../src/triangulate-on-worker.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {WorkerOptions} from '@loaders.gl/worker-utils';\nimport {processOnWorker} from '@loaders.gl/worker-utils';\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 TriangulationWorkerInput = TriangulateInput | {operation: 'test'; data: any};\nexport type TriangulationWorkerOutput = TriangulateResult | {operation: 'test'; data: any};\n\n/** Input data for operation: 'triangulate' */\nexport type TriangulateInput = {\n operation: 'triangulate';\n polygonIndices: Uint16Array;\n primitivePolygonIndices: Int32Array;\n flatCoordinateArray: Float64Array;\n nDim: number;\n};\n\n/** Result type for operation: 'triangulate' */\nexport type TriangulateResult = TriangulateInput & {\n triangleIndices?: Uint32Array;\n};\n\n/**\n * Worker for tessellating geometries. Normally called through triangulateOnWorker\n */\nexport const TriangulationWorker = {\n id: 'triangulation',\n name: 'Triangulate',\n module: 'arrow',\n version: VERSION,\n options: {}\n};\n\n/**\n * Provide type safety\n */\nexport function triangulateOnWorker(\n data: TriangulationWorkerInput,\n options: WorkerOptions = {}\n): Promise<TriangulationWorkerOutput> {\n return processOnWorker(TriangulationWorker, data, options);\n}\n"],"mappings":"AAIA,SAAQA,eAAe,QAAO,0BAA0B;AAIxD,MAAMC,OAAO,GAAG,OAAOC,WAAW,KAAK,WAAW,GAAGA,WAAW,GAAG,QAAQ;AAsB3E,OAAO,MAAMC,mBAAmB,GAAG;EACjCC,EAAE,EAAE,eAAe;EACnBC,IAAI,EAAE,aAAa;EACnBC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAEN,OAAO;EAChBO,OAAO,EAAE,CAAC;AACZ,CAAC;AAKD,OAAO,SAASC,mBAAmBA,CACjCC,IAA8B,EAEM;EAAA,IADpCF,OAAsB,GAAAG,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAE3B,OAAOX,eAAe,CAACG,mBAAmB,EAAEO,IAAI,EAAEF,OAAO,CAAC;AAC5D"}
|
|
@@ -823,33 +823,40 @@
|
|
|
823
823
|
featureIds: { value: new Uint32Array(0), size: 1 }
|
|
824
824
|
};
|
|
825
825
|
function getTriangleIndices(polygonIndices, primitivePolygonIndices, flatCoordinateArray, nDim) {
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
826
|
+
try {
|
|
827
|
+
let primitiveIndex = 0;
|
|
828
|
+
const triangles = [];
|
|
829
|
+
for (let i = 0; i < polygonIndices.length - 1; i++) {
|
|
830
|
+
const startIdx = polygonIndices[i];
|
|
831
|
+
const endIdx = polygonIndices[i + 1];
|
|
832
|
+
const slicedFlatCoords = flatCoordinateArray.subarray(startIdx * nDim, endIdx * nDim);
|
|
833
|
+
const holeIndices = [];
|
|
834
|
+
while (primitivePolygonIndices[primitiveIndex] < endIdx) {
|
|
835
|
+
if (primitivePolygonIndices[primitiveIndex] > startIdx) {
|
|
836
|
+
holeIndices.push(primitivePolygonIndices[primitiveIndex] - startIdx);
|
|
837
|
+
}
|
|
838
|
+
primitiveIndex++;
|
|
839
|
+
}
|
|
840
|
+
const triangleIndices = earcut(
|
|
841
|
+
slicedFlatCoords,
|
|
842
|
+
holeIndices.length > 0 ? holeIndices : void 0,
|
|
843
|
+
nDim
|
|
844
|
+
);
|
|
845
|
+
if (triangleIndices.length === 0) {
|
|
846
|
+
throw Error("can not tesselate invalid polygon");
|
|
847
|
+
}
|
|
848
|
+
for (let j = 0; j < triangleIndices.length; j++) {
|
|
849
|
+
triangles.push(triangleIndices[j] + startIdx);
|
|
836
850
|
}
|
|
837
|
-
primitiveIndex++;
|
|
838
851
|
}
|
|
839
|
-
const
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
nDim
|
|
843
|
-
);
|
|
844
|
-
for (let j = 0; j < triangleIndices.length; j++) {
|
|
845
|
-
triangles.push(triangleIndices[j] + startIdx);
|
|
852
|
+
const trianglesUint32 = new Uint32Array(triangles.length);
|
|
853
|
+
for (let i = 0; i < triangles.length; i++) {
|
|
854
|
+
trianglesUint32[i] = triangles[i];
|
|
846
855
|
}
|
|
856
|
+
return trianglesUint32;
|
|
857
|
+
} catch (error) {
|
|
858
|
+
return null;
|
|
847
859
|
}
|
|
848
|
-
const trianglesUint32 = new Uint32Array(triangles.length);
|
|
849
|
-
for (let i = 0; i < triangles.length; i++) {
|
|
850
|
-
trianglesUint32[i] = triangles[i];
|
|
851
|
-
}
|
|
852
|
-
return trianglesUint32;
|
|
853
860
|
}
|
|
854
861
|
|
|
855
862
|
// src/workers/triangulation-worker.ts
|
|
@@ -875,6 +882,6 @@
|
|
|
875
882
|
data.flatCoordinateArray,
|
|
876
883
|
data.nDim
|
|
877
884
|
);
|
|
878
|
-
return { ...data, triangleIndices };
|
|
885
|
+
return { ...data, ...triangleIndices ? { triangleIndices } : {} };
|
|
879
886
|
}
|
|
880
887
|
})();
|
|
@@ -18,7 +18,9 @@ function triangulateBatch(data) {
|
|
|
18
18
|
const triangleIndices = getTriangleIndices(data.polygonIndices, data.primitivePolygonIndices, data.flatCoordinateArray, data.nDim);
|
|
19
19
|
return {
|
|
20
20
|
...data,
|
|
21
|
-
triangleIndices
|
|
21
|
+
...(triangleIndices ? {
|
|
22
|
+
triangleIndices
|
|
23
|
+
} : {})
|
|
22
24
|
};
|
|
23
25
|
}
|
|
24
26
|
//# sourceMappingURL=triangulation-worker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triangulation-worker.js","names":["createWorker","getTriangleIndices","data","options","arguments","length","undefined","input","operation","triangulateBatch","Error","console","error","triangleIndices","polygonIndices","primitivePolygonIndices","flatCoordinateArray","nDim"],"sources":["../../src/workers/triangulation-worker.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {createWorker} from '@loaders.gl/worker-utils';\nimport {getTriangleIndices} from '../geoarrow/convert-geoarrow-to-binary-geometry';\nimport type {\n TriangulationWorkerInput,\n TriangulateInput,\n TriangulateResult\n} from '../triangulate-on-worker';\n\ncreateWorker(async (data, options = {}) => {\n const input = data as TriangulationWorkerInput;\n const operation = input?.operation;\n switch (operation) {\n case 'test':\n return input;\n case 'triangulate':\n return triangulateBatch(data);\n default:\n throw new Error(\n `TriangulationWorker: Unsupported operation ${operation}. Expected 'triangulate'`\n );\n }\n});\n\nfunction triangulateBatch(data: TriangulateInput): TriangulateResult {\n // Parse any WKT/WKB geometries\n // Build binary geometries\n // Call earcut and triangulate\n console.error('TriangulationWorker: tessellating batch', data);\n const triangleIndices = getTriangleIndices(\n data.polygonIndices,\n data.primitivePolygonIndices,\n data.flatCoordinateArray,\n data.nDim\n );\n return {...data, triangleIndices};\n}\n"],"mappings":"AAGA,SAAQA,YAAY,QAAO,0BAA0B;AAAC,SAC9CC,kBAAkB;AAO1BD,YAAY,CAAC,gBAAOE,IAAI,EAAmB;EAAA,IAAjBC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACpC,MAAMG,KAAK,GAAGL,IAAgC;EAC9C,MAAMM,SAAS,GAAGD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,SAAS;EAClC,QAAQA,SAAS;IACf,KAAK,MAAM;MACT,OAAOD,KAAK;IACd,KAAK,aAAa;MAChB,OAAOE,gBAAgB,CAACP,IAAI,CAAC;IAC/B;MACE,MAAM,IAAIQ,KAAK,CACZ,8CAA6CF,SAAU,0BAC1D,CAAC;EACL;AACF,CAAC,CAAC;AAEF,SAASC,gBAAgBA,CAACP,IAAsB,EAAqB;EAInES,OAAO,CAACC,KAAK,CAAC,yCAAyC,EAAEV,IAAI,CAAC;EAC9D,MAAMW,eAAe,GAAGZ,kBAAkB,CACxCC,IAAI,CAACY,cAAc,EACnBZ,IAAI,CAACa,uBAAuB,EAC5Bb,IAAI,CAACc,mBAAmB,EACxBd,IAAI,CAACe,IACP,CAAC;EACD,OAAO;IAAC,GAAGf,IAAI;
|
|
1
|
+
{"version":3,"file":"triangulation-worker.js","names":["createWorker","getTriangleIndices","data","options","arguments","length","undefined","input","operation","triangulateBatch","Error","console","error","triangleIndices","polygonIndices","primitivePolygonIndices","flatCoordinateArray","nDim"],"sources":["../../src/workers/triangulation-worker.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {createWorker} from '@loaders.gl/worker-utils';\nimport {getTriangleIndices} from '../geoarrow/convert-geoarrow-to-binary-geometry';\nimport type {\n TriangulationWorkerInput,\n TriangulateInput,\n TriangulateResult\n} from '../triangulate-on-worker';\n\ncreateWorker(async (data, options = {}) => {\n const input = data as TriangulationWorkerInput;\n const operation = input?.operation;\n switch (operation) {\n case 'test':\n return input;\n case 'triangulate':\n return triangulateBatch(data);\n default:\n throw new Error(\n `TriangulationWorker: Unsupported operation ${operation}. Expected 'triangulate'`\n );\n }\n});\n\nfunction triangulateBatch(data: TriangulateInput): TriangulateResult {\n // Parse any WKT/WKB geometries\n // Build binary geometries\n // Call earcut and triangulate\n console.error('TriangulationWorker: tessellating batch', data);\n const triangleIndices = getTriangleIndices(\n data.polygonIndices,\n data.primitivePolygonIndices,\n data.flatCoordinateArray,\n data.nDim\n );\n return {...data, ...(triangleIndices ? {triangleIndices} : {})};\n}\n"],"mappings":"AAGA,SAAQA,YAAY,QAAO,0BAA0B;AAAC,SAC9CC,kBAAkB;AAO1BD,YAAY,CAAC,gBAAOE,IAAI,EAAmB;EAAA,IAAjBC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACpC,MAAMG,KAAK,GAAGL,IAAgC;EAC9C,MAAMM,SAAS,GAAGD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,SAAS;EAClC,QAAQA,SAAS;IACf,KAAK,MAAM;MACT,OAAOD,KAAK;IACd,KAAK,aAAa;MAChB,OAAOE,gBAAgB,CAACP,IAAI,CAAC;IAC/B;MACE,MAAM,IAAIQ,KAAK,CACZ,8CAA6CF,SAAU,0BAC1D,CAAC;EACL;AACF,CAAC,CAAC;AAEF,SAASC,gBAAgBA,CAACP,IAAsB,EAAqB;EAInES,OAAO,CAACC,KAAK,CAAC,yCAAyC,EAAEV,IAAI,CAAC;EAC9D,MAAMW,eAAe,GAAGZ,kBAAkB,CACxCC,IAAI,CAACY,cAAc,EACnBZ,IAAI,CAACa,uBAAuB,EAC5Bb,IAAI,CAACc,mBAAmB,EACxBd,IAAI,CAACe,IACP,CAAC;EACD,OAAO;IAAC,GAAGf,IAAI;IAAE,IAAIW,eAAe,GAAG;MAACA;IAAe,CAAC,GAAG,CAAC,CAAC;EAAC,CAAC;AACjE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/arrow",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.1.0-alpha.1",
|
|
4
4
|
"description": "Simple columnar table loader for the Apache Arrow format",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -12,12 +12,17 @@
|
|
|
12
12
|
"url": "https://github.com/visgl/loaders.gl"
|
|
13
13
|
},
|
|
14
14
|
"keywords": [
|
|
15
|
-
"webgl",
|
|
16
15
|
"loader",
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
16
|
+
"parser",
|
|
17
|
+
"writer",
|
|
18
|
+
"encoder",
|
|
19
|
+
"geoarrow",
|
|
20
|
+
"apache-arrow",
|
|
21
|
+
"arrow",
|
|
22
|
+
"binary columnar",
|
|
23
|
+
"cloud native",
|
|
24
|
+
"webgl",
|
|
25
|
+
"webgpu"
|
|
21
26
|
],
|
|
22
27
|
"types": "dist/index.d.ts",
|
|
23
28
|
"main": "dist/index.cjs",
|
|
@@ -47,11 +52,12 @@
|
|
|
47
52
|
"build-worker2": "esbuild src/workers/arrow-worker.ts --bundle --outfile=dist/arrow-worker.js --platform=browser --external:{stream}"
|
|
48
53
|
},
|
|
49
54
|
"dependencies": {
|
|
50
|
-
"@loaders.gl/gis": "4.0.
|
|
51
|
-
"@loaders.gl/loader-utils": "4.0.
|
|
52
|
-
"@loaders.gl/schema": "4.0.
|
|
55
|
+
"@loaders.gl/gis": "4.1.0-alpha.1",
|
|
56
|
+
"@loaders.gl/loader-utils": "4.1.0-alpha.1",
|
|
57
|
+
"@loaders.gl/schema": "4.1.0-alpha.1",
|
|
58
|
+
"@loaders.gl/wkt": "4.1.0-alpha.1",
|
|
53
59
|
"@math.gl/polygon": "4.0.0",
|
|
54
60
|
"apache-arrow": "^13.0.0"
|
|
55
61
|
},
|
|
56
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "6a4d3da93d45115ad99861474a43c3f4a0b280a7"
|
|
57
63
|
}
|