write shapefiles from pure javascript
npm install @crmackey/shp-writeDEFLATE compression.
js
import { download } from '@crmackey/shp-write'
// (optional) set names for feature types and zipped folder
var options = {
/** zip file name, id you only pass this
* the shapefile will also receive this name
*/
name: 'ZippedShapefile',
/* optional nested folder /
folder: 'myshapes',
/** optional explicit names for shapefiles generated
* for each type of geometry (applicable when mixed geometries are present)
*/
types: {
point: 'mypoints',
polygon: 'mypolygons',
line: 'mylines'
}
}
// a GeoJSON bridge for features
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.
`
API
$3
Given a GeoJSON FeatureCollection as an object,
converts convertible features into Shapefiles and triggers a download.
$3
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 shapefile and call the callback with err and an object with
`js
{
shp: DataView(),
shx: DataView(),
dbf: DataView()
}
`
$3
Generate an Blob of a zipped shapefile, dbf, and prj, from a GeoJSON
object.
$3
These are the available options that can be passed into the zip and download functions:
`ts
interface WriterOptions {
/* the zipfile name for the contained shapefile /
name?: string;
/* the names of the shapefile for each geometry type /
types?: {
/* the name for the point features shapefile if applicable /
point: string;
/* the name for the polygon features shapefile if applicable /
polygon: string;
/* the name for the line features shapefile if applicable /
line: string;
};
/* optional subfolder within zipfile that will contain the shapefile(s) /
folder?: string;
}
`
Testing
$3
Run node ./example/write/write.js to generate shp, shx, dbf, files of every geometry type.
Run node ./example/write/linestring.js to generate shp, shx, dbf, files for a linestring.
$3
Run node ./example/zip/zip.js to generate example zips of every geometry type.
Run node ./example/zip/linestring.js to generate a zip for a linestring.
$3
The files are named with the following format.
${geojson geometry type}-${dimensionality}-${single or multiple features in feature collection?}`