| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});// index.ts
- var _helpers = require('@turf/helpers');
- var _meta = require('@turf/meta');
- function polygonSmooth(inputPolys, options) {
- options = options || {};
- options.iterations = options.iterations || 1;
- const { iterations } = options;
- const outPolys = [];
- if (!inputPolys) throw new Error("inputPolys is required");
- _meta.geomEach.call(void 0, inputPolys, function(geom, geomIndex, properties) {
- if (geom.type === "Polygon") {
- let outCoords = [[]];
- for (let i = 0; i < iterations; i++) {
- let tempOutput = [];
- let poly = geom;
- if (i > 0) {
- poly = _helpers.polygon.call(void 0, outCoords).geometry;
- }
- processPolygon(poly, tempOutput);
- outCoords = tempOutput.slice(0);
- }
- outPolys.push(_helpers.polygon.call(void 0, outCoords, properties));
- } else if (geom.type === "MultiPolygon") {
- let outCoords = [[[]]];
- for (let y = 0; y < iterations; y++) {
- let tempOutput = [];
- let poly = geom;
- if (y > 0) {
- poly = _helpers.multiPolygon.call(void 0, outCoords).geometry;
- }
- processMultiPolygon(poly, tempOutput);
- outCoords = tempOutput.slice(0);
- }
- outPolys.push(_helpers.multiPolygon.call(void 0, outCoords, properties));
- } else {
- throw new Error("geometry is invalid, must be Polygon or MultiPolygon");
- }
- });
- return _helpers.featureCollection.call(void 0, outPolys);
- }
- function processPolygon(poly, tempOutput) {
- var previousCoord;
- var previousGeometryIndex;
- _meta.coordEach.call(void 0,
- poly,
- function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
- if (previousGeometryIndex !== geometryIndex) {
- tempOutput.push([]);
- } else {
- var p0x = previousCoord[0];
- var p0y = previousCoord[1];
- var p1x = currentCoord[0];
- var p1y = currentCoord[1];
- tempOutput[geometryIndex].push([
- 0.75 * p0x + 0.25 * p1x,
- 0.75 * p0y + 0.25 * p1y
- ]);
- tempOutput[geometryIndex].push([
- 0.25 * p0x + 0.75 * p1x,
- 0.25 * p0y + 0.75 * p1y
- ]);
- }
- previousCoord = currentCoord;
- previousGeometryIndex = geometryIndex;
- },
- false
- );
- tempOutput.forEach(function(ring) {
- ring.push(ring[0]);
- });
- }
- function processMultiPolygon(poly, tempOutput) {
- let previousCoord;
- let previousMultiFeatureIndex;
- let previousGeometryIndex;
- _meta.coordEach.call(void 0,
- poly,
- function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
- if (previousMultiFeatureIndex !== multiFeatureIndex) {
- tempOutput.push([[]]);
- } else if (previousGeometryIndex !== geometryIndex) {
- tempOutput[multiFeatureIndex].push([]);
- } else {
- var p0x = previousCoord[0];
- var p0y = previousCoord[1];
- var p1x = currentCoord[0];
- var p1y = currentCoord[1];
- tempOutput[multiFeatureIndex][geometryIndex].push([
- 0.75 * p0x + 0.25 * p1x,
- 0.75 * p0y + 0.25 * p1y
- ]);
- tempOutput[multiFeatureIndex][geometryIndex].push([
- 0.25 * p0x + 0.75 * p1x,
- 0.25 * p0y + 0.75 * p1y
- ]);
- }
- previousCoord = currentCoord;
- previousMultiFeatureIndex = multiFeatureIndex;
- previousGeometryIndex = geometryIndex;
- },
- false
- );
- tempOutput.forEach(function(poly2) {
- poly2.forEach(function(ring) {
- ring.push(ring[0]);
- });
- });
- }
- var turf_polygon_smooth_default = polygonSmooth;
- exports.default = turf_polygon_smooth_default; exports.polygonSmooth = polygonSmooth;
- //# sourceMappingURL=index.cjs.map
|