@loaders.gl/shapefile
Version:
Loader for the Shapefile Format
55 lines (50 loc) • 1.64 kB
text/typescript
// loaders.gl
// SPDX-License-Identifier: MIT
// Copyright (c) vis.gl contributors
import type {StrictLoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';
import type {Batch, GeoJSONTable} from '@loaders.gl/schema';
import {SHP_MAGIC_NUMBER, SHPLoaderOptions} from './shp-loader';
import {parseShapefile, parseShapefileInBatches} from './lib/parsers/parse-shapefile';
import {DBFLoaderOptions} from './dbf-loader';
// __VERSION__ is injected by babel-plugin-version-inline
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
export type ShapefileLoaderOptions = StrictLoaderOptions &
SHPLoaderOptions &
DBFLoaderOptions & {
shapefile?: {
shape?: 'geojson-table' | 'v3';
/** @deprecated Worker URLs must be specified with .dbf.workerUrl * .shp.workerUrl */
workerUrl?: never;
};
gis?: {
reproject?: boolean;
_targetCrs?: string;
};
};
/**
* Shapefile loader
* @note Shapefile is multifile format and requires providing additional files
*/
export const ShapefileLoader = {
name: 'Shapefile',
id: 'shapefile',
module: 'shapefile',
version: VERSION,
category: 'geometry',
extensions: ['shp'],
mimeTypes: ['application/octet-stream'],
tests: [new Uint8Array(SHP_MAGIC_NUMBER).buffer],
options: {
shapefile: {
shape: 'v3'
},
shp: {
_maxDimensions: 4
}
},
// @ts-expect-error
parse: parseShapefile,
// @ts-expect-error
parseInBatches: parseShapefileInBatches
} as const satisfies LoaderWithParser<GeoJSONTable, Batch, ShapefileLoaderOptions>;