Skip to content

Latest commit

 

History

History
139 lines (104 loc) · 3.92 KB

README.md

File metadata and controls

139 lines (104 loc) · 3.92 KB

@mapbox/shp-write

Writes shapefile in pure javascript. Uses dbf for the data component, and jsZIP to generate downloads in-browser.

Important

The package location for this repo has changed!

tl;dr: shp-write -> @mapbox/shp-write

Usage

NPM

npm install --save @mapbox/shp-write

Yarn

yarn add @mapbox/shp-write

Browser

https://unpkg.com/@mapbox/shp-write@latest/shpwrite.js

Caveats

Example

var shpwrite = require("@mapbox/shp-write");

const geoJSON = {
    type: "FeatureCollection",
    features: [
      {
        type: "Feature",
        geometry: {
          type: "Point",
          coordinates: [0, 0],
        },
        properties: {
          name: "Foo",
        },
      },
      {
        type: "Feature",
        geometry: {
          type: "Point",
          coordinates: [0, 10],
        },
        properties: {
          name: "Bar",
        },
      },
    ],
  };

// Optional custom options passed to the underlying `zip` call 
const options = {
  folder: "my_internal_shapes_folder",
  filename: "my_zip_filename",
  outputType: "blob",
  compression: "DEFLATE",
  types: {
    point: "mypoints",
    polygon: "mypolygons",
    polyline: "mylines",
  },
};

const zipData = shpwrite.zip(geoJSON,options);

Custom .prj file

To pass a custom WKT string in the .prj file to define a different projection the prj option can be used:

var options = {
    prj: 'PROJCS["Amersfoort / RD New",GEOGCS["Amersfoort",DATUM["D_Amersfoort",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic_North_Pole"],PARAMETER["standard_parallel_1",52.15616055555555],PARAMETER["central_meridian",5.38763888888889],PARAMETER["scale_factor",0.9999079],PARAMETER["false_easting",155000],PARAMETER["false_northing",463000],UNIT["Meter",1]]'
}

API

write(data, geometrytype, geometries, callback)

Generates a shapefile and calls the callback with err and an object containing shp, shx, and dbf DataViews.

  • data: Array of objects for each row of data.
  • geometrytype: The OGC standard geometry type (e.g., POINT).
  • geometries: List of geometries as bare coordinate arrays.
  • callback: Function to handle the generated DataViews.
shpwrite.write(data, geometrytype, geometries, (err, result) => {
  // result is equal to
  // {
  //  shp: DataView(),
  //  shx: DataView(),
  //  dbf: DataView()
  // }
  if (err) throw err;
  console.log(result);
});

zip(geojson, [options])

Generate a ArrayBuffer of a zipped shapefile, dbf, and prj, from a GeoJSON object.

download(geojson, [options])

Warning

This is now marked as deprecated because it applies to browsers only and the user should instead rely on an external library for this functionality like file-saver or downloadjs

Given a GeoJSON FeatureCollection as an object, converts convertible features into Shapefiles and triggers a download. options is passed to the underlying zip call.

Other Implementations

Reference

Contributors