Skip to content

Latest commit

 

History

History
90 lines (64 loc) · 2.23 KB

README.md

File metadata and controls

90 lines (64 loc) · 2.23 KB

Streaming geospatial format conversion

verrazzano NPM version Downloads Build Status

Install

npm install verrazzano --save

Notice: the unzip command must be available on the system in order to handle zipped inputs.

Supported Formats

Parsing

  • SHP
  • GDB
  • GPX
  • KML
  • KMZ
  • GeoJSON

Creation

  • SHP
  • GPX (Partial)
  • KML
  • KMZ
  • GeoJSON

API

from(format)

Returns a stream. Input is the file content. Output is GeoJSON Feature objects.

to(format)

Returns a stream. Input is GeoJSON Feature objects. Output is the file content.

Example

import fs from 'graceful-fs'
import geo from 'verrazzano'

// SHP -> GeoJSON Feature objects
fs.createReadStream('zones.shp')
  .pipe(geo.from('shp'))
  .pipe(through2.obj((feat, _, cb) => {
    // Do whatever you want with it here!
    cb(null, feat)
  }))

// SHP -> GeoJSON FeatureCollection
fs.createReadStream('zones.shp')
  .pipe(geo.from('shp'))
  .pipe(geo.to('geojson'))
  .pipe(fs.createWriteStream('zones.geojson'))

// GeoJSON FeatureCollection -> SHP
fs.createReadStream('zones.geojson')
  .pipe(geo.from('geojson'))
  .pipe(geo.to('shp'))
  .pipe(fs.createWriteStream('zones.shp'))

// SHP -> KML
fs.createReadStream('zones.shp')
  .pipe(geo.from('shp'))
  .pipe(geo.to('kml'))
  .pipe(fs.createWriteStream('zones.kml'))

Limitations

  • For zip-based geospatial formats it is not possible to operate on these in a streaming/memory efficient way (the manifest for a zip is stored at the end of the file). In these cases, a temporary file will be used for the duration of the stream.
  • In some cases where GDAL needs to be used, a temporary file will be used. Over time we will replace GDAL with pure JS parsers.