Writes shapefile in pure javascript. Uses dbf for the data component, and jsZIP to generate ZIP file downloads in-browser.
For node.js or browserify
npm install --save shp-write
Or in a browser
https://unpkg.com/shp-write@latest/shpwrite.js
To test the download functionality run npm run make-test
and open index.html in browser.
This should start an immediate download of test features defined in indexTest.js
.
- Requires a capable fancy modern browser with Typed Arrays support
- Geometries: Point, LineString, Polygon, MultiLineString, MultiPolygon
- Tabular-style properties export with Shapefile's field name length limit
var shpwrite = require('shp-write');
// set the projection string and names for zip file, zipped folder and feature types
var options = {
file: 'myshapes'
folder: 'myshapes',
types: {
point: 'mypoints',
polygon: 'mypolygons',
polyline: 'mylines'
},
prj: 'wkt string' (required, but if null omitted)
}
// a GeoJSON bridge for features
shpwrite.download({
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'
}
}
]
}, options);
// triggers a download of a zip file with shapefiles contained within.
Given a GeoJSON FeatureCollection as an object, converts convertible features into Shapefiles and triggers a download.
Given object of a GeoJSON FeatureCollections, converts convertible features into Shapefiles and triggers a download. Supports only polygons.
var featureCollections = {
"polygonLayer1": {
"type": "FeatureCollection",
"features": [...]
},
"polygonLayer2": {
"type": "FeatureCollection",
"features": [...]
}
}
var options = {
file: 'myshapes'
folder: 'myshapes',
prj: 'wkt string' (required, but if null omitted)
}
shpwrite.downloadMany(featureCollections, options);
Given data, an array of objects for each row of data, geometry, the OGC standard
geometry type (like POINT
), geometries, a list of geometries as bare coordinate
arrays, generate a shapfile and call the callback with err
and an object with
{
shp: DataView(),
shx: DataView(),
dbf: DataView()
}
Generate a ArrayBuffer of a zipped shapefile, dbf, and prj, from a GeoJSON object.
- Nick Baugh [email protected]