What is @turf/sample?
@turf/sample is a module within the Turf.js library, which is a collection of geospatial analysis tools written in JavaScript. The @turf/sample package specifically allows users to sample a specified number of points from a given set of features, such as polygons or lines, within a GeoJSON object.
What are @turf/sample's main functionalities?
Random Point Sampling
This feature allows you to randomly sample a specified number of points from a set of points. In this example, 100 random points are generated within the given bounding box, and then 10 points are sampled from these.
const turf = require('@turf/turf');
const sample = require('@turf/sample');
const points = turf.randomPoint(100, {bbox: [-180, -90, 180, 90]});
const sampledPoints = sample(points, 10);
console.log(sampledPoints);
Sampling from Polygons
This feature allows you to sample points from within a polygon. In this example, a polygon is defined, 100 random points are generated within the bounding box of the polygon, and then 10 points are sampled from these.
const turf = require('@turf/turf');
const sample = require('@turf/sample');
const polygon = turf.polygon([[
[-5, 52], [-4, 52], [-4, 53], [-5, 53], [-5, 52]
]]);
const points = turf.randomPoint(100, {bbox: [-5, 52, -4, 53]});
const sampledPoints = sample(points, 10);
console.log(sampledPoints);
Other packages similar to @turf/sample
geojson-random
The geojson-random package allows users to generate random GeoJSON points, polygons, and lines. While it focuses on generating random features, it does not provide sampling capabilities like @turf/sample.
random-points-on-polygon
This package generates random points within a given polygon. It is similar to @turf/sample in that it can generate points within a polygon, but it does not offer the broader sampling capabilities from various feature sets that @turf/sample provides.
@turf/sample
sample
Takes a FeatureCollection and returns a FeatureCollection with given number of features at random.
Parameters
Examples
var points = turf.randomPoint(100, {bbox: [-80, 30, -60, 60]});
var sample = turf.sample(points, 5);
var addToMap = [points, sample]
turf.featureEach(sample, function (currentFeature) {
currentFeature.properties['marker-size'] = 'large';
currentFeature.properties['marker-color'] = '#000';
});
Returns FeatureCollection a FeatureCollection with n
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 single module individually:
$ npm install @turf/sample
Or install the all-encompassing @turf/turf module that includes all modules as functions:
$ npm install @turf/turf