| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | 'use strict';var helpers = require('@turf/helpers');var invariant = require('@turf/invariant');var meta = require('@turf/meta');var flatten = require('@turf/flatten');var polygonClipping = require('polygon-clipping');function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }var flatten__default = /*#__PURE__*/_interopDefaultLegacy(flatten);var polygonClipping__default = /*#__PURE__*/_interopDefaultLegacy(polygonClipping);/** * Dissolves a FeatureCollection of {@link polygon} features, filtered by an optional property name:value. * Note that {@link mulitpolygon} features within the collection are not supported * * @name dissolve * @param {FeatureCollection<Polygon>} featureCollection input feature collection to be dissolved * @param {Object} [options={}] Optional parameters * @param {string} [options.propertyName] features with the same `propertyName` value will be dissolved. * @returns {FeatureCollection<Polygon>} a FeatureCollection containing the dissolved polygons * @example * var features = turf.featureCollection([ *   turf.polygon([[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]], {combine: 'yes'}), *   turf.polygon([[[0, -1], [0, 0], [1, 0], [1, -1], [0,-1]]], {combine: 'yes'}), *   turf.polygon([[[1,-1],[1, 0], [2, 0], [2, -1], [1, -1]]], {combine: 'no'}), * ]); * * var dissolved = turf.dissolve(features, {propertyName: 'combine'}); * * //addToMap * var addToMap = [features, dissolved] */function dissolve(fc, options) {  // Optional parameters  options = options || {};  if (!helpers.isObject(options)) throw new Error("options is invalid");  var propertyName = options.propertyName;  // Input validation  invariant.collectionOf(fc, "Polygon", "dissolve");  // Main  var outFeatures = [];  if (!options.propertyName) {    return flatten__default['default'](      helpers.multiPolygon(        polygonClipping__default['default'].union.apply(          null,          fc.features.map(function (f) {            return f.geometry.coordinates;          })        )      )    );  } else {    var uniquePropertyVals = {};    meta.featureEach(fc, function (feature) {      if (        !Object.prototype.hasOwnProperty.call(          uniquePropertyVals,          feature.properties[propertyName]        )      ) {        uniquePropertyVals[feature.properties[propertyName]] = [];      }      uniquePropertyVals[feature.properties[propertyName]].push(feature);    });    var vals = Object.keys(uniquePropertyVals);    for (var i = 0; i < vals.length; i++) {      var mp = helpers.multiPolygon(        polygonClipping__default['default'].union.apply(          null,          uniquePropertyVals[vals[i]].map(function (f) {            return f.geometry.coordinates;          })        )      );      mp.properties[propertyName] = vals[i];      outFeatures.push(mp);    }  }  return flatten__default['default'](helpers.featureCollection(outFeatures));}module.exports = dissolve;module.exports.default = dissolve;
 |