| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | import { feature, featureCollection, } from "@turf/helpers";import { featureEach } from "@turf/meta";/** * Combines a {@link FeatureCollection} of {@link Point}, {@link LineString}, or {@link Polygon} features * into {@link MultiPoint}, {@link MultiLineString}, or {@link MultiPolygon} features. * * @name combine * @param {FeatureCollection<Point|LineString|Polygon>} fc a FeatureCollection of any type * @returns {FeatureCollection<MultiPoint|MultiLineString|MultiPolygon>} a FeatureCollection of corresponding type to input * @example * var fc = turf.featureCollection([ *   turf.point([19.026432, 47.49134]), *   turf.point([19.074497, 47.509548]) * ]); * * var combined = turf.combine(fc); * * //addToMap * var addToMap = [combined] */function combine(fc) {    var groups = {        MultiPoint: {            coordinates: [],            properties: [],        },        MultiLineString: {            coordinates: [],            properties: [],        },        MultiPolygon: {            coordinates: [],            properties: [],        },    };    featureEach(fc, function (feature) {        var _a, _b, _c;        var _d;        switch ((_d = feature.geometry) === null || _d === void 0 ? void 0 : _d.type) {            case "Point":                groups.MultiPoint.coordinates.push(feature.geometry.coordinates);                groups.MultiPoint.properties.push(feature.properties);                break;            case "MultiPoint":                (_a = groups.MultiPoint.coordinates).push.apply(_a, feature.geometry.coordinates);                groups.MultiPoint.properties.push(feature.properties);                break;            case "LineString":                groups.MultiLineString.coordinates.push(feature.geometry.coordinates);                groups.MultiLineString.properties.push(feature.properties);                break;            case "MultiLineString":                (_b = groups.MultiLineString.coordinates).push.apply(_b, feature.geometry.coordinates);                groups.MultiLineString.properties.push(feature.properties);                break;            case "Polygon":                groups.MultiPolygon.coordinates.push(feature.geometry.coordinates);                groups.MultiPolygon.properties.push(feature.properties);                break;            case "MultiPolygon":                (_c = groups.MultiPolygon.coordinates).push.apply(_c, feature.geometry.coordinates);                groups.MultiPolygon.properties.push(feature.properties);                break;            default:                break;        }    });    return featureCollection(Object.keys(groups)        .filter(function (key) {        return groups[key].coordinates.length;    })        .sort()        .map(function (key) {        var geometry = { type: key, coordinates: groups[key].coordinates };        var properties = { collectedProperties: groups[key].properties };        return feature(geometry, properties);    }));}export default combine;
 |