This project is a fork of substack's shp2json and combines ideas and code from mbostock shapefile and calvinmetcalf's shapefile-js.
Convert shapefile zip archives to streaming GeoJSON using shapefile.
var toJSON = require('shp2jsonx');
toJSON(process.stdin).pipe(process.stdout);
process.stdin.resume();
$ shp2jsonx ~/citylots.zip 2>/dev/null | head -n5
{
"type": "FeatureCollection",
"features": [
{ "type": "Feature", "properties": { "MAPBLKLOT": "0001001", "BLKLOT":
"0001001", "BLOCK_NUM": "0001", "LOT_NUM": "001", "FROM_ST": "", "TO_ST": "",
"STREET": "", "ST_TYPE": "", "ODD_EVEN": "" }, "geometry": { "type": "Polygon",
"coordinates": [ [ [ -122.422004, 37.808480 ], [ -122.422076, 37.808835 ],
[ -122.421102, 37.808804 ], [ -122.421063, 37.808601 ], [ -122.422004, 37.808480 ] ] ] } }
,
var toJSON = require('shp2jsonx')
Create a streaming json output stream outStream
from the streaming shapefile
zip archive inStream
.
Basic: Archive w/ one or many shapefiles will yield a json object or json array.
shp2jsonx {infile|-} {outfile|-}
Specific File -a: (default all)
shp2jsonx {infile|-} -a whiteFile {outfile|-}
Black List -x: (default none)
shp2jsonx {infile|-} -x "file1 file2" {outfile|-}
Include Properties -i: (defaults to true)
shp2jsonx {infile|-} -i false {outfile|-}
Encoding -e: (see mbostock)
shp2jsonx {infile|-} -e "utf-8" {outfile|-}
Make sure you have the unzip
command in your PATH. If you are in heroku you will need
a build pack.
To install the library, with npm do:
npm install shp2jsonx
and to install the command do:
npm install -g shp2jsonx
- remove the use of linux unzip to be pure js/node.
- caveats (consider memory):
- yazl
- or possibly buffer single files like shapefile-js
- caveats (consider memory):
MIT/X11