What is @turf/buffer?
@turf/buffer is a module from the Turf.js library that allows you to create buffer zones around geometries. This is useful for spatial analysis tasks such as determining areas of influence, proximity analysis, and more.
What are @turf/buffer's main functionalities?
Create Buffer Around Point
This feature allows you to create a buffer zone around a point geometry. In this example, a buffer of 5 miles is created around a point with coordinates [-90.548630, 14.616599].
const turf = require('@turf/turf');
const point = turf.point([-90.548630, 14.616599]);
const buffered = turf.buffer(point, 5, {units: 'miles'});
console.log(buffered);
Create Buffer Around LineString
This feature allows you to create a buffer zone around a LineString geometry. In this example, a buffer of 10 kilometers is created around a line defined by two points.
const turf = require('@turf/turf');
const line = turf.lineString([[-90.548630, 14.616599], [-90.548630, 15.616599]]);
const buffered = turf.buffer(line, 10, {units: 'kilometers'});
console.log(buffered);
Create Buffer Around Polygon
This feature allows you to create a buffer zone around a Polygon geometry. In this example, a buffer of 2 miles is created around a polygon defined by a set of coordinates.
const turf = require('@turf/turf');
const polygon = turf.polygon([[[-90.548630, 14.616599], [-90.548630, 15.616599], [-89.548630, 15.616599], [-89.548630, 14.616599], [-90.548630, 14.616599]]]);
const buffered = turf.buffer(polygon, 2, {units: 'miles'});
console.log(buffered);
Other packages similar to @turf/buffer
jsts
JSTS (JavaScript Topology Suite) is a JavaScript library for performing various spatial operations, including buffering. It is more comprehensive than @turf/buffer and includes a wide range of geometric operations, but it is also more complex to use.
geolib
Geolib is a library for geospatial calculations in JavaScript. While it does not offer as many features as @turf/buffer, it provides basic functionalities like distance calculations and bounding boxes, which can be useful for simpler tasks.
leaflet
Leaflet is a popular open-source JavaScript library for interactive maps. While it is primarily used for map rendering, it also includes some spatial analysis features, including buffering, through various plugins. It is more focused on visualization than @turf/buffer.
@turf/buffer
buffer
Calculates a buffer for input features for a given radius. Units supported are miles, kilometers, and degrees.
When using a negative radius, the resulting geometry may be invalid if
it's too small compared to the radius magnitude. If the input is a
FeatureCollection, only valid members will be returned in the output
FeatureCollection - i.e., the output collection may have fewer members than
the input, or even be empty.
Parameters
geojson
(FeatureCollection | Geometry | Feature<any>) input to be bufferedradius
number distance to draw the buffer (negative values are allowed)options
Object? Optional parameters
options.units
string any of the options supported by turf units (optional, default "kilometers"
)options.steps
number number of steps (optional, default 64
)
Examples
var point = turf.point([-90.548630, 14.616599]);
var buffered = turf.buffer(point, 500, {units: 'miles'});
var addToMap = [point, buffered]
Returns (FeatureCollection | Feature<(Polygon | MultiPolygon)> | undefined) buffered features
This module is part of the Turfjs project, an open source
module collection dedicated to geographic algorithms. It is maintained in the
Turfjs/turf repository, where you can create
PRs and issues.
Installation
Install this module individually:
$ npm install @turf/buffer
Or install the Turf module that includes it as a function:
$ npm install @turf/turf
5.0.0 🎉
⭐️ Major Updates
- TurfJS now supports ES Modules (Related PR's)
- Optional parameters are now defined as an
Object
.
🚀 New Modules
[@turf/voronoi
][voronoi]
Takes a FeatureCollection of points, and a bounding box, and returns a FeatureCollection of Voronoi polygons.
(PR https://github.com/Turfjs/turf/pull/1043 - Author @stevage)
[@turf/shortest-path
][shortest-path]
Returns the shortest path from start to end without colliding with any feature in obstacles
(PR https://github.com/Turfjs/turf/pull/956 - Author @stebogit)
[@turf/boolean-parallel
][boolean-parallel]
Boolean-Parallel returns True if each segment of line1
is parallel to the correspondent segment of line2
(PR https://github.com/Turfjs/turf/pull/941 - Author @stebogit)
[@turf/nearest-point-on-line
][nearest-point-on-line]
Takes a {@link Point} and a {@link LineString} and calculates the closest Point on the (Multi)LineString.
(PR https://github.com/Turfjs/turf/pull/939 - Author @stebogit)
🏅 New Features/Enhancements
-
Updates [@turf/unkink-polygon
][unkink-polygon] testing & added flattenEach
instead of using flatten
.
(PR https://github.com/Turfjs/turf/pull/889)
-
Add multi-geomtry support to @turf/line-split
(PR https://github.com/Turfjs/turf/pull/1078)
-
Improve @turf/meta
lineEach
method to provide properties, id and bbox
(PR https://github.com/Turfjs/turf/pull/1010)
🐛 Bug Fixes
-
Fixes @turf/helpers
earth radius variable
(PR https://github.com/Turfjs/turf/pull/1012)
-
Fixes @turf/polygon-tangents
bug
(PR https://github.com/Turfjs/turf/pull/1058)
-
Fixes @turf/line-chunk
bug when the number of segments is integer
(PR https://github.com/Turfjs/turf/pull/1046)
-
Fixes segmentEach
and segmentReduce
methods in @turf/meta
to ensure something is returned
(PR https://github.com/Turfjs/turf/pull/968)
⚠️ Breaking Change
- Optional parameters are now defined as an
Object
:
Before
var from = [-75.343, 39.984];
var to = [-75.534, 39.123];
var units = 'miles';
var distance = turf.distance(from, to, units);
After
var from = [-75.343, 39.984];
var to = [-75.534, 39.123];
var options = {units: 'miles'};
var distance = turf.distance(from, to, options);
- Reworked
@turf/random
PR https://github.com/Turfjs/turf/issues/994 - Deprecate
@turf/idw
Issue https://github.com/Turfjs/turf/issues/887 - Reworked Grid modules
@turf/point-grid/hex/square/triangle
PR https://github.com/Turfjs/turf/pull/1029 - Renamed Modules/Methods
- [x]
@turf/inside
=> @turf/boolean-point-in-polygon
https://github.com/Turfjs/turf/issues/860#issuecomment-317216235 - [x]
@turf/within
=> @turf/points-within-polygon
https://github.com/Turfjs/turf/issues/860#issuecomment-317216235 - [x]
@turf/bezier
=> @turf/bezier-spline
Issue https://github.com/Turfjs/turf/issues/661 - [x]
@turf/nearest
=> @turf/nearest-point
https://github.com/Turfjs/turf/pull/858#issuecomment-317197295 - [x]
@turf/point-on-line
=> @turf/nearest-point-on-line
https://github.com/Turfjs/turf/pull/858#issuecomment-317197295 - [x]
@turf/lineDistance
=> @turf/length
https://github.com/Turfjs/turf/issues/860#issuecomment-317229869 - [x]
@turf/helpers
- [x]
radians2degrees
=> radiansToDegrees
- [x]
degrees2radians
=> degreesToRadians
- [x]
distanceToDegrees
=> lengthToDegrees
- [x]
distanceToRadians
=> lengthToRadians
- [x]
radiansToDistance
=> radiansToLength
- [x]
bearingToAngle
=> bearingToAzimuth
- [x]
convertDistance
=> convertLength