What is @turf/boolean-crosses?
@turf/boolean-crosses is a module from the Turf.js library that provides geospatial analysis tools. This specific module is used to determine if two geometries (such as lines or polygons) cross each other. It is useful in various geospatial applications, such as GIS, mapping, and spatial data analysis.
What are @turf/boolean-crosses's main functionalities?
Check if LineString crosses another LineString
This feature allows you to check if one LineString crosses another LineString. In this example, two lines intersect each other, so the result is true.
const turf = require('@turf/turf');
const line1 = turf.lineString([[0, 0], [2, 2]]);
const line2 = turf.lineString([[0, 2], [2, 0]]);
const crosses = turf.booleanCrosses(line1, line2);
console.log(crosses); // true
Check if LineString crosses a Polygon
This feature allows you to check if a LineString crosses a Polygon. In this example, the line crosses the polygon, so the result is true.
const turf = require('@turf/turf');
const line = turf.lineString([[1, 1], [3, 3]]);
const polygon = turf.polygon([[[0, 0], [0, 4], [4, 4], [4, 0], [0, 0]]]);
const crosses = turf.booleanCrosses(line, polygon);
console.log(crosses); // true
Check if MultiLineString crosses a Polygon
This feature allows you to check if a MultiLineString crosses a Polygon. In this example, the multi-line string crosses the polygon, so the result is true.
const turf = require('@turf/turf');
const multiLine = turf.multiLineString([[[1, 1], [3, 3]], [[2, 2], [4, 4]]]);
const polygon = turf.polygon([[[0, 0], [0, 5], [5, 5], [5, 0], [0, 0]]]);
const crosses = turf.booleanCrosses(multiLine, polygon);
console.log(crosses); // true
Other packages similar to @turf/boolean-crosses
jsts
JSTS is a JavaScript library of spatial predicates and functions for processing geometry. It is a port of the Java Topology Suite (JTS). JSTS provides a wide range of geometric operations, including intersection, union, and difference, similar to Turf.js but with a focus on topology.
geolib
Geolib is a library to provide basic geospatial operations like distance calculation, bounding boxes, and more. While it does not focus on geometric predicates like crossing, it offers a variety of other geospatial utilities that can complement the functionalities provided by @turf/boolean-crosses.
martinez-polygon-clipping
Martinez Polygon Clipping is a library for performing boolean operations on polygons, such as union, intersection, and difference. It is highly efficient and can be used for complex polygon operations, similar to some of the functionalities provided by Turf.js.
@turf/boolean-crosses
booleanCrosses
Boolean-Crosses returns True if the intersection results in a geometry whose dimension is one less than
the maximum dimension of the two source geometries and the intersection set is interior to
both source geometries.
Boolean-Crosses returns t (TRUE) for only multipoint/polygon, multipoint/linestring, linestring/linestring, linestring/polygon, and linestring/multipolygon comparisons.
Other comparisons are not supported as they are outside the OpenGIS Simple Features spec and may give unexpected results.
Parameters
Examples
var line1 = turf.lineString([[-2, 2], [4, 2]]);
var line2 = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]);
var cross = turf.booleanCrosses(line1, line2);
Returns boolean true/false
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 single module individually:
$ npm install @turf/boolean-crosses
Or install the all-encompassing @turf/turf module that includes all modules as functions:
$ npm install @turf/turf
Diagrams