Skip to content

hongfaqiu/shp-write-multi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

shp-write-multi

origin repository shp-write

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

Usage

For node.js or browserify

npm install --save shp-write-multi

Or in a browser

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

Caveats

  • 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
  • Uses jsZip for ZIP files, but compression is buggy so it uses STORE instead of DEFLATE.

Example

const shpwrite = require('shp-write-multi');

// (optional) set names for features and zipped folder
const options = {
    folder: 'myshapes',
    // output .shp name with geojson's features, default is ['myshpes_POINT_1', 'myshpes_POINT_2']
    names: ['test','test1']
}
// a GeoJSON bridge for features
await 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.

output file

download.zip
└── myshapes
    ├── test.dbf
    ├── test.prj
    ├── test.shp
    ├── test.shx
    ├── test1.dbf
    ├── test1.prj
    ├── test1.shp
    └── test1.shx

API

download(geojson) ⇒ Asynchronous call

Given a GeoJSON FeatureCollection as an object, converts convertible features into Shapefiles and triggers a download.

write(data, geometrytype, geometries, callback) ⇒ Synchronous call

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()
}

zip(geojson) ⇒ Asynchronous call

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