turf

a node.js library for performing geospatial operations with geojson

A modular geospatial engine written in JavaScript

turfjs.org


Turf is a JavaScript library for spatial analysis. It includes traditional spatial operations, helper functions for creating GeoJSON data, and data classification and statistics tools. Turf can be added to your website as a client-side plugin, or you can run Turf server-side with Node.js (see below).

##Installation

In Node.js:

npm install turf

In browser:

Download the minified file, and include it in a script tag. This will expose a global variable named "turf".

<script src="turf.min.js" charset="utf-8"></script>

Browserify:

All of Turf's functions can also be installed as separate modules. This works well with tools like browserify where you want to install only the code you need. It also allows you to mix and match modules. This is the recommended usage pattern for most production environments. For example, to install the point and buffer modules use:

npm install turf-point turf-buffer

###Data in Turf

Turf uses GeoJSON for all geographic data. Turf expects the data to be standard WGS84 longitude, latitude coordinates. Check out geojson.io for a tool to easily create this data.

Most Turf functions work with GeoJSON features. These are are pieces of data that represent a collection of properties (ie: population, elevation, zipcode, etc.) along with a geometry. GeoJSON has several geometry types such as:

  • Point
  • LineString
  • Polygon

Turf provides a few geometry functions of its own. These are nothing more than simple (and optional) wrappers that output plain old GeoJSON. For example, these two methods of creating a point are functionally equivalent:

var point1 = turf.point(0,0);
 
var point2 = {
  type: 'Feature',
  geometry: {
    type: 'Point',
    coordinates: [0, 0]
  },
  properties: {}
};

##Functions

####geometry

point

linestring

polygon

featurecollection

####joins

inside

within

tag

####data remove

filter

sample

####measurement distance

area

nearest

bbox-polygon

envelope

extent

square

size

center

centroid

point-on-surface

midpoint

bearing

destination

line-distance

along

####interpolation tin

grid

hex

planepoint

isolines

isobands

####classification quantile

jenks

reclass

####aggregation average

median

sum

min

max

count

deviation

variance

aggregate

####transformation buffer

bezier

simplify

union

merge

intersect

erase

convex

concave

####misc flip

explode

combine

is-clockwise

kinks