1.0.7 β€’ Published 11 months ago

shpts v1.0.7

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

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
ReleaseSHPts CI Release
DevSHPts 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

1.0.7

11 months ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago