@turf/polygon-smooth 7.2.0 → 7.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/index.cjs +2 -2
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/package.json +12 -13
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ Returns **[FeatureCollection][4]<([Polygon][1] | [MultiPolygon][2])>** FeatureCo
|
|
|
31
31
|
|
|
32
32
|
[2]: https://tools.ietf.org/html/rfc7946#section-3.1.7
|
|
33
33
|
|
|
34
|
-
[3]:
|
|
34
|
+
[3]: https://www.cs.unc.edu/~dm/UNC/COMP258/LECTURES/Chaikins-Algorithm.pdf
|
|
35
35
|
|
|
36
36
|
[4]: https://tools.ietf.org/html/rfc7946#section-3.3
|
|
37
37
|
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -106,9 +106,9 @@ function processMultiPolygon(poly, tempOutput) {
|
|
|
106
106
|
});
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
|
-
var
|
|
109
|
+
var index_default = polygonSmooth;
|
|
110
110
|
|
|
111
111
|
|
|
112
112
|
|
|
113
|
-
exports.default =
|
|
113
|
+
exports.default = index_default; exports.polygonSmooth = polygonSmooth;
|
|
114
114
|
//# sourceMappingURL=index.cjs.map
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-polygon-smooth/dist/cjs/index.cjs","../../index.ts"],"names":["poly"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-polygon-smooth/dist/cjs/index.cjs","../../index.ts"],"names":["poly"],"mappings":"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","file":"/home/runner/work/turf/turf/packages/turf-polygon-smooth/dist/cjs/index.cjs","sourcesContent":[null,"import type {\n Feature,\n FeatureCollection,\n Polygon,\n Position,\n MultiPolygon,\n} from \"geojson\";\nimport { featureCollection, multiPolygon, polygon } from \"@turf/helpers\";\nimport { coordEach, geomEach } from \"@turf/meta\";\n\n/**\n * Smooths a {@link Polygon} or {@link MultiPolygon}. Based on [Chaikin's algorithm](https://www.cs.unc.edu/~dm/UNC/COMP258/LECTURES/Chaikins-Algorithm.pdf).\n * Warning: may create degenerate polygons.\n *\n * @function\n * @param {FeatureCollection<Polygon|MultiPolygon>|Feature<Polygon|MultiPolygon>|Polygon|MultiPolygon} inputPolys (Multi)Polygon(s) to smooth\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.iterations=1] The number of times to smooth the polygon. A higher value means a smoother polygon.\n * @returns {FeatureCollection<Polygon|MultiPolygon>} FeatureCollection containing the smoothed polygon/multipoylgons\n * @example\n * var polygon = turf.polygon([[[11, 0], [22, 4], [31, 0], [31, 11], [21, 15], [11, 11], [11, 0]]]);\n *\n * var smoothed = turf.polygonSmooth(polygon, {iterations: 3})\n *\n * //addToMap\n * var addToMap = [smoothed, polygon];\n */\nfunction polygonSmooth(\n inputPolys:\n | FeatureCollection<Polygon | MultiPolygon>\n | Feature<Polygon | MultiPolygon>\n | Polygon\n | MultiPolygon,\n options?: {\n iterations?: number;\n }\n): FeatureCollection<Polygon | MultiPolygon> {\n // Optional parameters\n options = options || {};\n options.iterations = options.iterations || 1;\n\n const { iterations } = options;\n\n const outPolys: Feature<Polygon | MultiPolygon>[] = [];\n if (!inputPolys) throw new Error(\"inputPolys is required\");\n\n geomEach(inputPolys, function (geom, geomIndex, properties) {\n if (geom.type === \"Polygon\") {\n let outCoords: Position[][] = [[]];\n for (let i = 0; i < iterations; i++) {\n let tempOutput: Position[][] = [];\n let poly = geom;\n if (i > 0) {\n poly = polygon(outCoords).geometry;\n }\n processPolygon(poly, tempOutput);\n outCoords = tempOutput.slice(0);\n }\n outPolys.push(polygon(outCoords, properties));\n } else if (geom.type === \"MultiPolygon\") {\n let outCoords: Position[][][] = [[[]]];\n for (let y = 0; y < iterations; y++) {\n let tempOutput: Position[][][] = [];\n let poly = geom;\n if (y > 0) {\n poly = multiPolygon(outCoords).geometry;\n }\n processMultiPolygon(poly, tempOutput);\n outCoords = tempOutput.slice(0);\n }\n outPolys.push(multiPolygon(outCoords, properties));\n } else {\n throw new Error(\"geometry is invalid, must be Polygon or MultiPolygon\");\n }\n });\n\n return featureCollection(outPolys);\n}\n\n/**\n * @param {poly} poly to process\n * @param {poly} tempOutput to place the results in\n * @private\n */\nfunction processPolygon(poly: Polygon, tempOutput: Position[][]) {\n var previousCoord: Position;\n var previousGeometryIndex: number;\n\n coordEach(\n poly,\n function (\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) {\n if (previousGeometryIndex !== geometryIndex) {\n tempOutput.push([]);\n } else {\n var p0x = previousCoord[0];\n var p0y = previousCoord[1];\n var p1x = currentCoord[0];\n var p1y = currentCoord[1];\n tempOutput[geometryIndex].push([\n 0.75 * p0x + 0.25 * p1x,\n 0.75 * p0y + 0.25 * p1y,\n ]);\n tempOutput[geometryIndex].push([\n 0.25 * p0x + 0.75 * p1x,\n 0.25 * p0y + 0.75 * p1y,\n ]);\n }\n previousCoord = currentCoord;\n previousGeometryIndex = geometryIndex;\n },\n false\n );\n tempOutput.forEach(function (ring) {\n ring.push(ring[0]);\n });\n}\n\n/**\n * @param {poly} poly to process\n * @param {poly} tempOutput to place the results in\n * @private\n */\nfunction processMultiPolygon(poly: MultiPolygon, tempOutput: Position[][][]) {\n let previousCoord: Position;\n let previousMultiFeatureIndex: number;\n let previousGeometryIndex: number;\n\n coordEach(\n poly,\n function (\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) {\n if (previousMultiFeatureIndex !== multiFeatureIndex) {\n tempOutput.push([[]]);\n } else if (previousGeometryIndex !== geometryIndex) {\n tempOutput[multiFeatureIndex].push([]);\n } else {\n var p0x = previousCoord[0];\n var p0y = previousCoord[1];\n var p1x = currentCoord[0];\n var p1y = currentCoord[1];\n tempOutput[multiFeatureIndex][geometryIndex].push([\n 0.75 * p0x + 0.25 * p1x,\n 0.75 * p0y + 0.25 * p1y,\n ]);\n tempOutput[multiFeatureIndex][geometryIndex].push([\n 0.25 * p0x + 0.75 * p1x,\n 0.25 * p0y + 0.75 * p1y,\n ]);\n }\n previousCoord = currentCoord;\n previousMultiFeatureIndex = multiFeatureIndex;\n previousGeometryIndex = geometryIndex;\n },\n false\n );\n tempOutput.forEach(function (poly) {\n poly.forEach(function (ring) {\n ring.push(ring[0]);\n });\n });\n}\n\nexport { polygonSmooth };\nexport default polygonSmooth;\n"]}
|
package/dist/cjs/index.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FeatureCollection, Polygon, MultiPolygon, Feature } from 'geojson';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Smooths a {@link Polygon} or {@link MultiPolygon}. Based on [Chaikin's algorithm](
|
|
4
|
+
* Smooths a {@link Polygon} or {@link MultiPolygon}. Based on [Chaikin's algorithm](https://www.cs.unc.edu/~dm/UNC/COMP258/LECTURES/Chaikins-Algorithm.pdf).
|
|
5
5
|
* Warning: may create degenerate polygons.
|
|
6
6
|
*
|
|
7
7
|
* @function
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FeatureCollection, Polygon, MultiPolygon, Feature } from 'geojson';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Smooths a {@link Polygon} or {@link MultiPolygon}. Based on [Chaikin's algorithm](
|
|
4
|
+
* Smooths a {@link Polygon} or {@link MultiPolygon}. Based on [Chaikin's algorithm](https://www.cs.unc.edu/~dm/UNC/COMP258/LECTURES/Chaikins-Algorithm.pdf).
|
|
5
5
|
* Warning: may create degenerate polygons.
|
|
6
6
|
*
|
|
7
7
|
* @function
|
package/dist/esm/index.js
CHANGED
|
@@ -106,9 +106,9 @@ function processMultiPolygon(poly, tempOutput) {
|
|
|
106
106
|
});
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
|
-
var
|
|
109
|
+
var index_default = polygonSmooth;
|
|
110
110
|
export {
|
|
111
|
-
|
|
111
|
+
index_default as default,
|
|
112
112
|
polygonSmooth
|
|
113
113
|
};
|
|
114
114
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../index.ts"],"sourcesContent":["import type {\n Feature,\n FeatureCollection,\n Polygon,\n Position,\n MultiPolygon,\n} from \"geojson\";\nimport { featureCollection, multiPolygon, polygon } from \"@turf/helpers\";\nimport { coordEach, geomEach } from \"@turf/meta\";\n\n/**\n * Smooths a {@link Polygon} or {@link MultiPolygon}. Based on [Chaikin's algorithm](
|
|
1
|
+
{"version":3,"sources":["../../index.ts"],"sourcesContent":["import type {\n Feature,\n FeatureCollection,\n Polygon,\n Position,\n MultiPolygon,\n} from \"geojson\";\nimport { featureCollection, multiPolygon, polygon } from \"@turf/helpers\";\nimport { coordEach, geomEach } from \"@turf/meta\";\n\n/**\n * Smooths a {@link Polygon} or {@link MultiPolygon}. Based on [Chaikin's algorithm](https://www.cs.unc.edu/~dm/UNC/COMP258/LECTURES/Chaikins-Algorithm.pdf).\n * Warning: may create degenerate polygons.\n *\n * @function\n * @param {FeatureCollection<Polygon|MultiPolygon>|Feature<Polygon|MultiPolygon>|Polygon|MultiPolygon} inputPolys (Multi)Polygon(s) to smooth\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.iterations=1] The number of times to smooth the polygon. A higher value means a smoother polygon.\n * @returns {FeatureCollection<Polygon|MultiPolygon>} FeatureCollection containing the smoothed polygon/multipoylgons\n * @example\n * var polygon = turf.polygon([[[11, 0], [22, 4], [31, 0], [31, 11], [21, 15], [11, 11], [11, 0]]]);\n *\n * var smoothed = turf.polygonSmooth(polygon, {iterations: 3})\n *\n * //addToMap\n * var addToMap = [smoothed, polygon];\n */\nfunction polygonSmooth(\n inputPolys:\n | FeatureCollection<Polygon | MultiPolygon>\n | Feature<Polygon | MultiPolygon>\n | Polygon\n | MultiPolygon,\n options?: {\n iterations?: number;\n }\n): FeatureCollection<Polygon | MultiPolygon> {\n // Optional parameters\n options = options || {};\n options.iterations = options.iterations || 1;\n\n const { iterations } = options;\n\n const outPolys: Feature<Polygon | MultiPolygon>[] = [];\n if (!inputPolys) throw new Error(\"inputPolys is required\");\n\n geomEach(inputPolys, function (geom, geomIndex, properties) {\n if (geom.type === \"Polygon\") {\n let outCoords: Position[][] = [[]];\n for (let i = 0; i < iterations; i++) {\n let tempOutput: Position[][] = [];\n let poly = geom;\n if (i > 0) {\n poly = polygon(outCoords).geometry;\n }\n processPolygon(poly, tempOutput);\n outCoords = tempOutput.slice(0);\n }\n outPolys.push(polygon(outCoords, properties));\n } else if (geom.type === \"MultiPolygon\") {\n let outCoords: Position[][][] = [[[]]];\n for (let y = 0; y < iterations; y++) {\n let tempOutput: Position[][][] = [];\n let poly = geom;\n if (y > 0) {\n poly = multiPolygon(outCoords).geometry;\n }\n processMultiPolygon(poly, tempOutput);\n outCoords = tempOutput.slice(0);\n }\n outPolys.push(multiPolygon(outCoords, properties));\n } else {\n throw new Error(\"geometry is invalid, must be Polygon or MultiPolygon\");\n }\n });\n\n return featureCollection(outPolys);\n}\n\n/**\n * @param {poly} poly to process\n * @param {poly} tempOutput to place the results in\n * @private\n */\nfunction processPolygon(poly: Polygon, tempOutput: Position[][]) {\n var previousCoord: Position;\n var previousGeometryIndex: number;\n\n coordEach(\n poly,\n function (\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) {\n if (previousGeometryIndex !== geometryIndex) {\n tempOutput.push([]);\n } else {\n var p0x = previousCoord[0];\n var p0y = previousCoord[1];\n var p1x = currentCoord[0];\n var p1y = currentCoord[1];\n tempOutput[geometryIndex].push([\n 0.75 * p0x + 0.25 * p1x,\n 0.75 * p0y + 0.25 * p1y,\n ]);\n tempOutput[geometryIndex].push([\n 0.25 * p0x + 0.75 * p1x,\n 0.25 * p0y + 0.75 * p1y,\n ]);\n }\n previousCoord = currentCoord;\n previousGeometryIndex = geometryIndex;\n },\n false\n );\n tempOutput.forEach(function (ring) {\n ring.push(ring[0]);\n });\n}\n\n/**\n * @param {poly} poly to process\n * @param {poly} tempOutput to place the results in\n * @private\n */\nfunction processMultiPolygon(poly: MultiPolygon, tempOutput: Position[][][]) {\n let previousCoord: Position;\n let previousMultiFeatureIndex: number;\n let previousGeometryIndex: number;\n\n coordEach(\n poly,\n function (\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) {\n if (previousMultiFeatureIndex !== multiFeatureIndex) {\n tempOutput.push([[]]);\n } else if (previousGeometryIndex !== geometryIndex) {\n tempOutput[multiFeatureIndex].push([]);\n } else {\n var p0x = previousCoord[0];\n var p0y = previousCoord[1];\n var p1x = currentCoord[0];\n var p1y = currentCoord[1];\n tempOutput[multiFeatureIndex][geometryIndex].push([\n 0.75 * p0x + 0.25 * p1x,\n 0.75 * p0y + 0.25 * p1y,\n ]);\n tempOutput[multiFeatureIndex][geometryIndex].push([\n 0.25 * p0x + 0.75 * p1x,\n 0.25 * p0y + 0.75 * p1y,\n ]);\n }\n previousCoord = currentCoord;\n previousMultiFeatureIndex = multiFeatureIndex;\n previousGeometryIndex = geometryIndex;\n },\n false\n );\n tempOutput.forEach(function (poly) {\n poly.forEach(function (ring) {\n ring.push(ring[0]);\n });\n });\n}\n\nexport { polygonSmooth };\nexport default polygonSmooth;\n"],"mappings":"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","names":["poly"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@turf/polygon-smooth",
|
|
3
|
-
"version": "7.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "7.3.1",
|
|
4
|
+
"description": "Smooths a Polygon or MultiPolygon, based on Chaikin's algorithm.",
|
|
5
5
|
"author": "Turf Authors",
|
|
6
6
|
"contributors": [
|
|
7
7
|
"Rowan Winsemius <@rowanwins>"
|
|
@@ -49,28 +49,27 @@
|
|
|
49
49
|
"bench": "tsx bench.ts",
|
|
50
50
|
"build": "tsup --config ../../tsup.config.ts",
|
|
51
51
|
"docs": "tsx ../../scripts/generate-readmes.ts",
|
|
52
|
-
"test": "
|
|
52
|
+
"test": "pnpm run /test:.*/",
|
|
53
53
|
"test:tape": "tsx test.ts",
|
|
54
54
|
"test:types": "tsc --esModuleInterop --module node16 --moduleResolution node16 --noEmit --strict types.ts"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@types/benchmark": "^2.1.5",
|
|
58
|
-
"@types/tape": "^
|
|
58
|
+
"@types/tape": "^5.8.1",
|
|
59
59
|
"benchmark": "^2.1.4",
|
|
60
|
-
"glob": "^
|
|
60
|
+
"glob": "^11.1.0",
|
|
61
61
|
"load-json-file": "^7.0.1",
|
|
62
|
-
"npm-run-all": "^4.1.5",
|
|
63
62
|
"tape": "^5.9.0",
|
|
64
|
-
"tsup": "^8.
|
|
65
|
-
"tsx": "^4.19.
|
|
66
|
-
"typescript": "^5.
|
|
67
|
-
"write-json-file": "^
|
|
63
|
+
"tsup": "^8.4.0",
|
|
64
|
+
"tsx": "^4.19.4",
|
|
65
|
+
"typescript": "^5.8.3",
|
|
66
|
+
"write-json-file": "^6.0.0"
|
|
68
67
|
},
|
|
69
68
|
"dependencies": {
|
|
70
|
-
"@turf/helpers": "
|
|
71
|
-
"@turf/meta": "
|
|
69
|
+
"@turf/helpers": "7.3.1",
|
|
70
|
+
"@turf/meta": "7.3.1",
|
|
72
71
|
"@types/geojson": "^7946.0.10",
|
|
73
72
|
"tslib": "^2.8.1"
|
|
74
73
|
},
|
|
75
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "b7f1b4eafb760431e03955499d8eac9489438219"
|
|
76
75
|
}
|