| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | 'use strict';var helpers = require('@turf/helpers');// http://stackoverflow.com/questions/11935175/sampling-a-random-subset-from-an-array/** * Takes a {@link FeatureCollection} and returns a FeatureCollection with given number of {@link Feature|features} at random. * * @name sample * @param {FeatureCollection} featurecollection set of input features * @param {number} num number of features to select * @returns {FeatureCollection} a FeatureCollection with `n` features * @example * var points = turf.randomPoint(100, {bbox: [-80, 30, -60, 60]}); * * var sample = turf.sample(points, 5); * * //addToMap * var addToMap = [points, sample] * turf.featureEach(sample, function (currentFeature) { *   currentFeature.properties['marker-size'] = 'large'; *   currentFeature.properties['marker-color'] = '#000'; * }); */function sample(featurecollection, num) {  if (!featurecollection) throw new Error("featurecollection is required");  if (num === null || num === undefined) throw new Error("num is required");  if (typeof num !== "number") throw new Error("num must be a number");  var outFC = helpers.featureCollection(    getRandomSubarray(featurecollection.features, num)  );  return outFC;}function getRandomSubarray(arr, size) {  var shuffled = arr.slice(0),    i = arr.length,    min = i - size,    temp,    index;  while (i-- > min) {    index = Math.floor((i + 1) * Math.random());    temp = shuffled[index];    shuffled[index] = shuffled[i];    shuffled[i] = temp;  }  return shuffled.slice(min);}module.exports = sample;module.exports.default = sample;
 |