From 09f4e5ba782522dda15c5452dfa144c3c31e1c71 Mon Sep 17 00:00:00 2001 From: Arnoud de Vries Date: Mon, 12 Jun 2017 13:36:40 +0200 Subject: [PATCH 1/2] Do not put a folder in zip to improve interoperability --- README.md | 3 +-- src/zip.js | 11 +++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index b04c03e0..1b0c5d1e 100644 --- a/README.md +++ b/README.md @@ -29,9 +29,8 @@ Or in a browser ```js var shpwrite = require('shp-write'); -// (optional) set names for feature types and zipped folder +// (optional) set names for feature types var options = { - folder: 'myshapes', types: { point: 'mypoints', polygon: 'mypolygons', diff --git a/src/zip.js b/src/zip.js index b8e89d85..02e351e9 100644 --- a/src/zip.js +++ b/src/zip.js @@ -5,8 +5,7 @@ var write = require('./write'), module.exports = function(gj, options) { - var zip = new JSZip(), - layers = zip.folder(options && options.folder ? options.folder : 'layers'); + var zip = new JSZip(); [geojson.point(gj), geojson.line(gj), geojson.polygon(gj)] .forEach(function(l) { @@ -20,10 +19,10 @@ module.exports = function(gj, options) { l.geometries, function(err, files) { var fileName = options && options.types[l.type.toLowerCase()] ? options.types[l.type.toLowerCase()] : l.type; - layers.file(fileName + '.shp', files.shp.buffer, { binary: true }); - layers.file(fileName + '.shx', files.shx.buffer, { binary: true }); - layers.file(fileName + '.dbf', files.dbf.buffer, { binary: true }); - layers.file(fileName + '.prj', prj); + zip.file(fileName + '.shp', files.shp.buffer, { binary: true }); + zip.file(fileName + '.shx', files.shx.buffer, { binary: true }); + zip.file(fileName + '.dbf', files.dbf.buffer, { binary: true }); + zip.file(fileName + '.prj', prj); }); } }); From 08f785d9a3a7f34451e7f5e17572ff77613c0b38 Mon Sep 17 00:00:00 2001 From: Arnoud de Vries Date: Thu, 15 Jun 2017 17:47:31 +0200 Subject: [PATCH 2/2] Support custom .prj --- README.md | 9 +++++++++ src/zip.js | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1b0c5d1e..ca2084f5 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,15 @@ shpwrite.download({ // triggers a download of a zip file with shapefiles contained within. ``` +## Custom .prj file +To pass a custom [WKT string](http://www.opengeospatial.org/standards/wkt-crs) in the .prj file to define a different projection the prj option can be used: + +```js +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)` diff --git a/src/zip.js b/src/zip.js index 02e351e9..98551ddc 100644 --- a/src/zip.js +++ b/src/zip.js @@ -1,11 +1,12 @@ var write = require('./write'), geojson = require('./geojson'), - prj = require('./prj'), + defaultPrj = require('./prj'), JSZip = require('jszip'); module.exports = function(gj, options) { var zip = new JSZip(); + var prj = (options && options.prj) ? options.prj : defaultPrj; [geojson.point(gj), geojson.line(gj), geojson.polygon(gj)] .forEach(function(l) {