var featureCollection = require('turf-featurecollection');
var each = require('turf-meta').coordEach;
var point = require('turf-point');

/**
 * Takes any {@link GeoJSON} object and return all positions as
 * a {@link FeatureCollection} of {@link Point} features.
 *
 * @module turf/explode
 * @param {GeoJSON} input input features
 * @return {FeatureCollection} a FeatureCollection of {@link Point} features representing the exploded input features
 * @throws {Error} if it encounters an unknown geometry type
 * @example
 * var poly = {
 *   "type": "Feature",
 *   "properties": {},
 *   "geometry": {
 *     "type": "Polygon",
 *     "coordinates": [[
 *       [177.434692, -17.77517],
 *       [177.402076, -17.779093],
 *       [177.38079, -17.803937],
 *       [177.40242, -17.826164],
 *       [177.438468, -17.824857],
 *       [177.454948, -17.796746],
 *       [177.434692, -17.77517]
 *     ]]
 *   }
 * };
 *
 * var points = turf.explode(poly);
 *
 * //=poly
 *
 * //=points
 */
module.exports = function(layer) {
  var points = [];
  each(layer, function(coord) {
    points.push(point(coord));
  });
  return featureCollection(points);
};

var featureCollection = require('turf-featurecollection');
var each = require('turf-meta').coordEach;
var point = require('turf-point');

/**
 * Takes any {@link GeoJSON} object and return all positions as
 * a {@link FeatureCollection} of {@link Point} features.
 *
 * @module turf/explode
 * @category misc
 * @param {GeoJSON} input input features
 * @return {FeatureCollection} a FeatureCollection of {@link Point} features representing the exploded input features
 * @throws {Error} if it encounters an unknown geometry type
 * @example
 * var poly = {
 *   "type": "Feature",
 *   "properties": {},
 *   "geometry": {
 *     "type": "Polygon",
 *     "coordinates": [[
 *       [177.434692, -17.77517],
 *       [177.402076, -17.779093],
 *       [177.38079, -17.803937],
 *       [177.40242, -17.826164],
 *       [177.438468, -17.824857],
 *       [177.454948, -17.796746],
 *       [177.434692, -17.77517]
 *     ]]
 *   }
 * };
 *
 * var points = turf.explode(poly);
 *
 * //=poly
 *
 * //=points
 */
module.exports = function(layer) {
  var points = [];
  each(layer, function(coord) {
    points.push(point(coord));
  });
  return featureCollection(points);
};

Add category