What is @turf/intersect?
@turf/intersect is a module of the Turf.js library that provides geospatial analysis tools. Specifically, it allows users to compute the intersection of two or more geometries, such as polygons or lines. This is useful in various applications like geographic information systems (GIS), urban planning, and environmental modeling.
What are @turf/intersect's main functionalities?
Polygon Intersection
This feature allows you to find the intersection of two polygons. The code sample demonstrates how to create two polygons and compute their intersection.
const turf = require('@turf/turf');
const polygon1 = turf.polygon([[[0, 0], [2, 0], [2, 2], [0, 2], [0, 0]]]);
const polygon2 = turf.polygon([[[1, 1], [3, 1], [3, 3], [1, 3], [1, 1]]]);
const intersection = turf.intersect(polygon1, polygon2);
console.log(intersection);
Line Intersection
This feature allows you to find the intersection of two lines. The code sample demonstrates how to create two lines and compute their intersection.
const turf = require('@turf/turf');
const line1 = turf.lineString([[0, 0], [2, 2]]);
const line2 = turf.lineString([[0, 2], [2, 0]]);
const intersection = turf.intersect(line1, line2);
console.log(intersection);
MultiPolygon Intersection
This feature allows you to find the intersection of two multipolygons. The code sample demonstrates how to create two multipolygons and compute their intersection.
const turf = require('@turf/turf');
const multiPolygon1 = turf.multiPolygon([[[[0, 0], [2, 0], [2, 2], [0, 2], [0, 0]]]]);
const multiPolygon2 = turf.multiPolygon([[[[1, 1], [3, 1], [3, 3], [1, 3], [1, 1]]]]);
const intersection = turf.intersect(multiPolygon1, multiPolygon2);
console.log(intersection);
Other packages similar to @turf/intersect
jsts
JSTS (JavaScript Topology Suite) is a JavaScript library for performing various geometric operations, including intersections. It is similar to @turf/intersect but offers a broader range of geometric functions and is based on the Java Topology Suite (JTS).
martinez-polygon-clipping
Martinez Polygon Clipping is a library for performing boolean operations on polygons, such as intersection, union, and difference. It is highly efficient and specifically designed for polygon operations, making it a good alternative to @turf/intersect for polygon-specific tasks.
rbush
RBush is a high-performance JavaScript library for 2D spatial indexing of points and rectangles. While it does not directly perform intersections, it can be used in conjunction with other libraries to efficiently manage and query spatial data, which can then be used for intersection operations.
@turf/intersect
intersect
Takes two polygons and finds their intersection. If they share a border, returns the border; if they don't intersect, returns undefined.
Parameters
Examples
var poly1 = {
"type": "Feature",
"properties": {
"fill": "#0f0"
},
"geometry": {
"type": "Polygon",
"coordinates": [[
[-122.801742, 45.48565],
[-122.801742, 45.60491],
[-122.584762, 45.60491],
[-122.584762, 45.48565],
[-122.801742, 45.48565]
]]
}
}
var poly2 = {
"type": "Feature",
"properties": {
"fill": "#00f"
},
"geometry": {
"type": "Polygon",
"coordinates": [[
[-122.520217, 45.535693],
[-122.64038, 45.553967],
[-122.720031, 45.526554],
[-122.669906, 45.507309],
[-122.723464, 45.446643],
[-122.532577, 45.408574],
[-122.487258, 45.477466],
[-122.520217, 45.535693]
]]
}
}
var polygons = {
"type": "FeatureCollection",
"features": [poly1, poly2]
};
var intersection = turf.intersect(poly1, poly2);
Returns (Feature<Polygon> | undefined | Feature<MultiLineString>) if poly1
and poly2
overlap, returns a Polygon feature representing the area they overlap; if poly1
and poly2
do not overlap, returns undefined
; if poly1
and poly2
share a border, a MultiLineString of the locations where their borders are shared
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/intersect
Or install the Turf module that includes it as a function:
$ npm install @turf/turf