Anagraph / shp-write

create and write to shapefiles in pure javascript

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status

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

Or in a browser

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

Caveats

  • Requires a capable fancy modern browser with Typed Arrays support
  • Geometries: Point, PointZ, MultiPoint, MultiPointZ, LineString, LineStringZ, Polygon, PolygonZ, 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

var shpwrite = require('shp-write');

// (optional) set names for feature types
var options = {
    types: {
        point: 'mypoints',
        polygon: 'mypolygons',
        line: 'mylines'
    }
}
// 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.

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

download(geojson)

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

write(data, geometrytype, geometries, callback)

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)

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

Other Implementations

Reference

Contributors

About

create and write to shapefiles in pure javascript

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:JavaScript 99.9%Language:HTML 0.1%