wavded / ogr2ogr

An ogr2ogr wrapper library
MIT License
214 stars 46 forks source link
gdal geojson gis ogr2ogr

Build Status NPM NPM Downloads

Looking for V2 documentation? Click here.

ogr2ogr wraps the ogr2ogr GDAL tool to enable file conversion and re-projection of spatial data in simplified friendly API.

Installation

  1. Install GDAL tools (includes the ogr2ogr command line tool)

  2. Install package:

npm install ogr2ogr

Usage

ogr2ogr takes either a path, a stream, or a GeoJSON object. The result of the transformation will depend on the format returned.

// Using CommonJS modules
const ogr2ogr = require('ogr2ogr').default
// Using ECMAScript modules or Typescript
import ogr2ogr from 'ogr2ogr'

// Promise API
(async() {
  // Convert path to GeoJSON.
  let {data} = await ogr2ogr('/path/to/spatial/file')
  console.log(data)

  // Convert GeoJSON object to ESRI Shapefile stream.
  let {stream} = await ogr2ogr(data, {format: 'ESRI Shapefile'})

  // Convert ESRI Shapefile stream to KML text.
  let {text} = await ogr2ogr(stream, {format: 'KML'})
  console.log(text)
})()

// Callback API
ogr2ogr('/path/to/spatial/file').exec((err, {data}) => {
  console.log(data)
})

Formats

ogr2ogr has varying support for format input and output. Consult the particular driver you are interested in for more details. It is highly recommend to run the latest version of GDAL to get the best support. This project attempts to cast the widest net for support. Here are some notables:

Drivers Output Notes
GeoJSON data Default format returned when none specified
CSV, GeoRSS, GML, GMT, GPX, JML, KML, MapML, PDF, VDV text Drivers supporting /vsidout/ return text
Other stream All other drivers return a file stream

API

ogr2ogr(input, options?) -> Promise\<output>

The input may be one of:

The following options are available (none required):

The output object has the following properties:

ogr2ogr(input, options?).exec((err, output))

The callback API supports the same options as above but in a NodeJS style callback format.

Tips and tricks

Running ogr2ogr in a Docker container:

ogr2ogr("/home/.../path/to/spatial/file", {
  command: "docker run -v /home/:/home --rm osgeo/gdal ogr2ogr",
})

Converting an isolated .shp file:

ogr2ogr("/path/to/file.shp", {
  options: ["--config", "SHAPE_RESTORE_SHX", "TRUE"],
})

Getting more debug information by using the CPL_DEBUG option. Debug info added to details on the output object.

ogr2ogr("/path/to/file.shp", {
  options: ["--config", "CPL_DEBUG", "TRUE"],
})

Parsing custom geometry fields in a CSV. Use CSV driver options, like:

ogr2ogr("/path/to/file.csv", {
  options: ["-oo", "GEOM_POSSIBLE_NAMES=the_geom"],
})

Re-project geometry:

ogr2ogr("/path/to/file.shp", {
  options: ["-t_srs", "EPSG:4326"],
})