@loaders.gl/shapefile
Version:
Loader for the Shapefile Format
52 lines (46 loc) • 1.66 kB
text/typescript
// loaders.gl
// SPDX-License-Identifier: MIT
// Copyright (c) vis.gl contributors
import type {Loader, LoaderWithParser, StrictLoaderOptions} from '@loaders.gl/loader-utils';
import type {ArrowTable, ArrowTableBatch} from '@loaders.gl/schema';
import {parseDBF, parseDBFInBatches} from './lib/parsers/parse-dbf-to-arrow';
import {DBFFormat} from './dbf-format';
// __VERSION__ is injected by babel-plugin-version-inline
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
export type DBFLoaderOptions = StrictLoaderOptions & {
dbf?: {
encoding?: string;
/** Override the URL to the worker bundle (by default loads from unpkg.com) */
workerUrl?: string;
};
};
/**
* DBFLoader - DBF files are used to contain non-geometry columns in Shapefiles
*/
export const DBFArrowWorkerLoader = {
...DBFFormat,
dataType: null as unknown as ArrowTable,
batchType: null as unknown as ArrowTableBatch,
version: VERSION,
worker: true,
options: {
dbf: {
encoding: 'latin1'
}
}
} as const satisfies Loader<ArrowTable, ArrowTableBatch, DBFLoaderOptions>;
/** DBF file loader */
export const DBFArrowLoader = {
...DBFArrowWorkerLoader,
parse: async (arrayBuffer, options) => parseDBF(arrayBuffer, options),
parseSync: parseDBF,
parseInBatches(
arrayBufferIterator:
| AsyncIterable<ArrayBufferLike | ArrayBufferView>
| Iterable<ArrayBufferLike | ArrayBufferView>,
options
) {
return parseDBFInBatches(arrayBufferIterator, options);
}
} as const satisfies LoaderWithParser<ArrowTable, ArrowTableBatch, DBFLoaderOptions>;