shpts
TypeScript icon, indicating that this package has built-in type declarations

1.0.7 • Public • Published

shp.ts 🗺️

TypeScript package for loading Esri Shapefiles, primary developed for for WebGL applications

  • returns a geojson-like representation
  • supports all shape types (including MultiPatch) per Esri Shapefile specification
  • supports X, Y, Z, and M coordinates
  • uses vitest 🧪 for testing
  • includes mapbox's earcut triangulation

Install from npm

npm install shpts
Branch
Release SHPts CI Release
Dev SHPts CI Dev

Usage

import { FeatureReader } from 'shpts';

const shp = 'testdata/featureclass.shp';
const shx = 'testdata/featureclass.shx';
const dbf = 'testdata/featureclass.dbf';
const cpg = 'testdata/featureclass.cpg';

const reader = await FeatureReader.fromFiles(shp, shx, dbf, cpg);
//alternatively you can use FeatureReader.fromArrayBuffers()

const features = await reader.readFeatureCollection();
const geojson = features.toGeoJson();

or you can read only the geoemtry:

import { ShapeReader } from 'shpts';

const shp = 'testdata/featureclass.shp';
const shx = 'testdata/featureclass.shx';

const reader = await ShapeReader.fromFiles(shp, shx);
//alternatively you can use ShapeReader.fromArrayBuffers()

const index = 0;
const shape = reader.readGeom(index);
const geojson = shape.toGeoJson();

or you can read only the properties:

import { DbfReader } from 'shpts';

const dbf = 'testdata/featureclass.dbf';
const cpg = 'testdata/featureclass.cpg';

const reader = await DbfReader.fromFiles(dbf, cpg);
//alternatively you can use DbfReader.fromArrayBuffers()

const index = 0;
const properties = reader.readRecord(index);
console.log(properties);

triangulate a polygon (expects a set of rings, where the first one is the outer ring and the rest are holes):

import { triangulate, Ring } from 'shpts';

const input: Ring[] = [
    [
        [0, 0],
        [1, 0],
        [1, 1],
        [0, 1],
    ],
];
const output = triangulate(input, CoordType.XY);
//Float32Array([1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1])

Credits

Package Sidebar

Install

npm i shpts

Weekly Downloads

2

Version

1.0.7

License

MIT

Unpacked Size

83.2 kB

Total Files

30

Last publish

Collaborators

  • vojtatom