What is @turf/points-within-polygon?
@turf/points-within-polygon is a module from the Turf.js library that allows you to determine which points from a set of points fall within a given polygon. This is particularly useful for geospatial analysis, such as finding all locations within a specific area.
What are @turf/points-within-polygon's main functionalities?
Filter Points Within a Polygon
This feature allows you to filter a collection of points to find those that fall within a specified polygon. The code sample demonstrates creating a set of points and a polygon, then using the `pointsWithinPolygon` function to find which points are inside the polygon.
const turf = require('@turf/turf');
const points = turf.featureCollection([
turf.point([0, 0]),
turf.point([1, 1]),
turf.point([2, 2]),
turf.point([3, 3])
]);
const polygon = turf.polygon([[
[0, 0], [0, 2], [2, 2], [2, 0], [0, 0]
]]);
const pointsWithin = turf.pointsWithinPolygon(points, polygon);
console.log(pointsWithin);
Other packages similar to @turf/points-within-polygon
leaflet
Leaflet is a popular open-source JavaScript library for mobile-friendly interactive maps. It provides similar functionality for geospatial analysis, including the ability to check if points fall within a polygon. However, Leaflet is more focused on rendering maps and providing interactive features, whereas @turf/points-within-polygon is more focused on geospatial calculations.
geolib
Geolib is a library for geospatial calculations in JavaScript. It offers a variety of functions for distance calculations, bounding boxes, and point-in-polygon checks. While it provides similar functionality to @turf/points-within-polygon, Geolib is a more general-purpose library for geospatial calculations, whereas @turf/points-within-polygon is specifically designed for working with points and polygons.
@turf/points-within-polygon
pointsWithinPolygon
Finds Points or MultiPoint coordinate positions that fall within (Multi)Polygon(s).
Parameters
Examples
var points = turf.points([
[-46.6318, -23.5523],
[-46.6246, -23.5325],
[-46.6062, -23.5513],
[-46.663, -23.554],
[-46.643, -23.557]
]);
var searchWithin = turf.polygon([[
[-46.653,-23.543],
[-46.634,-23.5346],
[-46.613,-23.543],
[-46.614,-23.559],
[-46.631,-23.567],
[-46.653,-23.560],
[-46.653,-23.543]
]]);
var ptsWithin = turf.pointsWithinPolygon(points, searchWithin);
var addToMap = [points, searchWithin, ptsWithin]
turf.featureEach(ptsWithin, function (currentFeature) {
currentFeature.properties['marker-size'] = 'large';
currentFeature.properties['marker-color'] = '#000';
});
Returns FeatureCollection<(Point | MultiPoint)> Point(s) or MultiPoint(s) with positions that land within at least one polygon. The geometry type will match what was passsed in
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/points-within-polygon
Or install the all-encompassing @turf/turf module that includes all modules as functions:
$ npm install @turf/turf