@turf/simplify 7.0.0 → 7.1.0-alpha.7

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.
@@ -1,7 +1,4 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
-
4
- // index.ts
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// index.ts
5
2
  var _cleancoords = require('@turf/clean-coords');
6
3
  var _clone = require('@turf/clone');
7
4
  var _meta = require('@turf/meta');
@@ -12,7 +9,6 @@ function getSqDist(p1, p2) {
12
9
  var dx = p1[0] - p2[0], dy = p1[1] - p2[1];
13
10
  return dx * dx + dy * dy;
14
11
  }
15
- __name(getSqDist, "getSqDist");
16
12
  function getSqSegDist(p, p1, p2) {
17
13
  var x = p1[0], y = p1[1], dx = p2[0] - x, dy = p2[1] - y;
18
14
  if (dx !== 0 || dy !== 0) {
@@ -29,7 +25,6 @@ function getSqSegDist(p, p1, p2) {
29
25
  dy = p[1] - y;
30
26
  return dx * dx + dy * dy;
31
27
  }
32
- __name(getSqSegDist, "getSqSegDist");
33
28
  function simplifyRadialDist(points, sqTolerance) {
34
29
  var prevPoint = points[0], newPoints = [prevPoint], point;
35
30
  for (var i = 1, len = points.length; i < len; i++) {
@@ -43,7 +38,6 @@ function simplifyRadialDist(points, sqTolerance) {
43
38
  newPoints.push(point);
44
39
  return newPoints;
45
40
  }
46
- __name(simplifyRadialDist, "simplifyRadialDist");
47
41
  function simplifyDPStep(points, first, last, sqTolerance, simplified) {
48
42
  var maxSqDist = sqTolerance, index;
49
43
  for (var i = first + 1; i < last; i++) {
@@ -61,7 +55,6 @@ function simplifyDPStep(points, first, last, sqTolerance, simplified) {
61
55
  simplifyDPStep(points, index, last, sqTolerance, simplified);
62
56
  }
63
57
  }
64
- __name(simplifyDPStep, "simplifyDPStep");
65
58
  function simplifyDouglasPeucker(points, sqTolerance) {
66
59
  var last = points.length - 1;
67
60
  var simplified = [points[0]];
@@ -69,7 +62,6 @@ function simplifyDouglasPeucker(points, sqTolerance) {
69
62
  simplified.push(points[last]);
70
63
  return simplified;
71
64
  }
72
- __name(simplifyDouglasPeucker, "simplifyDouglasPeucker");
73
65
  function simplify(points, tolerance, highestQuality) {
74
66
  if (points.length <= 2)
75
67
  return points;
@@ -78,7 +70,6 @@ function simplify(points, tolerance, highestQuality) {
78
70
  points = simplifyDouglasPeucker(points, sqTolerance);
79
71
  return points;
80
72
  }
81
- __name(simplify, "simplify");
82
73
 
83
74
  // index.ts
84
75
  function simplify2(geojson, options = {}) {
@@ -100,7 +91,6 @@ function simplify2(geojson, options = {}) {
100
91
  });
101
92
  return geojson;
102
93
  }
103
- __name(simplify2, "simplify");
104
94
  function simplifyGeom(geometry, tolerance, highQuality) {
105
95
  const type = geometry.type;
106
96
  if (type === "Point" || type === "MultiPoint")
@@ -135,7 +125,6 @@ function simplifyGeom(geometry, tolerance, highQuality) {
135
125
  }
136
126
  return geometry;
137
127
  }
138
- __name(simplifyGeom, "simplifyGeom");
139
128
  function simplifyPolygon(coordinates, tolerance, highQuality) {
140
129
  return coordinates.map(function(ring) {
141
130
  if (ring.length < 4) {
@@ -153,13 +142,11 @@ function simplifyPolygon(coordinates, tolerance, highQuality) {
153
142
  return simpleRing;
154
143
  });
155
144
  }
156
- __name(simplifyPolygon, "simplifyPolygon");
157
145
  function checkValidity(ring) {
158
146
  if (ring.length < 3)
159
147
  return false;
160
148
  return !(ring.length === 3 && ring[2][0] === ring[0][0] && ring[2][1] === ring[0][1]);
161
149
  }
162
- __name(checkValidity, "checkValidity");
163
150
  var turf_simplify_default = simplify2;
164
151
 
165
152
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../index.ts","../../lib/simplify.js"],"names":["simplify"],"mappings":"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","sourcesContent":["import { Geometry, Position } from \"geojson\";\nimport { cleanCoords } from \"@turf/clean-coords\";\nimport { clone } from \"@turf/clone\";\nimport { geomEach } from \"@turf/meta\";\nimport { AllGeoJSON, isObject } from \"@turf/helpers\";\nimport { simplify as simplifyJS } from \"./lib/simplify.js\";\n\n/**\n * Takes a {@link GeoJSON} object and returns a simplified version. Internally uses the 2d version of\n * [simplify-js](http://mourner.github.io/simplify-js/) to perform simplification using the Ramer-Douglas-Peucker algorithm.\n *\n *\n * @name simplify\n * @param {GeoJSON} geojson object to be simplified\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.tolerance=1] simplification tolerance\n * @param {boolean} [options.highQuality=false] whether or not to spend more time to create a higher-quality simplification with a different algorithm\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} a simplified GeoJSON\n * @example\n * var geojson = turf.polygon([[\n * [-70.603637, -33.399918],\n * [-70.614624, -33.395332],\n * [-70.639343, -33.392466],\n * [-70.659942, -33.394759],\n * [-70.683975, -33.404504],\n * [-70.697021, -33.419406],\n * [-70.701141, -33.434306],\n * [-70.700454, -33.446339],\n * [-70.694274, -33.458369],\n * [-70.682601, -33.465816],\n * [-70.668869, -33.472117],\n * [-70.646209, -33.473835],\n * [-70.624923, -33.472117],\n * [-70.609817, -33.468107],\n * [-70.595397, -33.458369],\n * [-70.587158, -33.442901],\n * [-70.587158, -33.426283],\n * [-70.590591, -33.414248],\n * [-70.594711, -33.406224],\n * [-70.603637, -33.399918]\n * ]]);\n * var options = {tolerance: 0.01, highQuality: false};\n * var simplified = turf.simplify(geojson, options);\n *\n * //addToMap\n * var addToMap = [geojson, simplified]\n */\nfunction simplify<T extends AllGeoJSON>(\n geojson: T,\n options: {\n tolerance?: number;\n highQuality?: boolean;\n mutate?: boolean;\n } = {}\n): T {\n // Optional parameters\n options = options ?? {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n const tolerance = options.tolerance ?? 1;\n const highQuality = options.highQuality ?? false;\n const mutate = options.mutate ?? false;\n\n if (!geojson) throw new Error(\"geojson is required\");\n if (tolerance && tolerance < 0) throw new Error(\"invalid tolerance\");\n\n // Clone geojson to avoid side effects\n if (mutate !== true) geojson = clone(geojson);\n\n geomEach(geojson, function (geom) {\n simplifyGeom(geom, tolerance, highQuality);\n });\n return geojson;\n}\n\n/**\n * Simplifies a feature's coordinates\n *\n * @private\n * @param {Geometry} geometry to be simplified\n * @param {number} [tolerance=1] simplification tolerance\n * @param {boolean} [highQuality=false] whether or not to spend more time to create a higher-quality simplification with a different algorithm\n * @returns {Geometry} output\n */\nfunction simplifyGeom(\n geometry: Geometry,\n tolerance: number,\n highQuality: boolean\n) {\n const type = geometry.type;\n\n // \"unsimplyfiable\" geometry types\n if (type === \"Point\" || type === \"MultiPoint\") return geometry;\n\n // Remove any extra coordinates\n cleanCoords(geometry, { mutate: true });\n\n if (type !== \"GeometryCollection\") {\n // TODO should this cater for GeometryCollections too?\n switch (type) {\n case \"LineString\":\n geometry.coordinates = simplifyJS(\n geometry.coordinates,\n tolerance,\n highQuality\n );\n break;\n case \"MultiLineString\":\n geometry.coordinates = geometry.coordinates.map((lines) =>\n simplifyJS(lines, tolerance, highQuality)\n );\n break;\n case \"Polygon\":\n geometry.coordinates = simplifyPolygon(\n geometry.coordinates,\n tolerance,\n highQuality\n );\n break;\n case \"MultiPolygon\":\n geometry.coordinates = geometry.coordinates.map((rings) =>\n simplifyPolygon(rings, tolerance, highQuality)\n );\n }\n }\n\n return geometry;\n}\n\n/**\n * Simplifies the coordinates of a Polygon with simplify-js\n *\n * @private\n * @param {Array<number>} coordinates to be processed\n * @param {number} tolerance simplification tolerance\n * @param {boolean} highQuality whether or not to spend more time to create a higher-quality\n * @returns {Array<Array<Array<number>>>} simplified coords\n */\nfunction simplifyPolygon(\n coordinates: Position[][],\n tolerance: number,\n highQuality: boolean\n) {\n return coordinates.map(function (ring) {\n if (ring.length < 4) {\n throw new Error(\"invalid polygon\");\n }\n let ringTolerance = tolerance;\n let simpleRing = simplifyJS(ring, ringTolerance, highQuality);\n // remove 1 percent of tolerance until enough points to make a triangle\n while (!checkValidity(simpleRing)) {\n ringTolerance -= ringTolerance * 0.01;\n simpleRing = simplifyJS(ring, ringTolerance, highQuality);\n }\n if (\n simpleRing[simpleRing.length - 1][0] !== simpleRing[0][0] ||\n simpleRing[simpleRing.length - 1][1] !== simpleRing[0][1]\n ) {\n simpleRing.push(simpleRing[0]);\n }\n return simpleRing;\n });\n}\n\n/**\n * Returns true if ring has at least 3 coordinates and its first coordinate is the same as its last\n *\n * @private\n * @param {Array<number>} ring coordinates to be checked\n * @returns {boolean} true if valid\n */\nfunction checkValidity(ring: Position[]) {\n if (ring.length < 3) return false;\n //if the last point is the same as the first, it's not a triangle\n return !(\n ring.length === 3 &&\n ring[2][0] === ring[0][0] &&\n ring[2][1] === ring[0][1]\n );\n}\n\nexport { simplify };\nexport default simplify;\n","/*\n (c) 2013, Vladimir Agafonkin\n Simplify.js, a high-performance JS polyline simplification library\n mourner.github.io/simplify-js\n*/\n\n// to suit your point format, run search/replace for '.x' and '.y';\n// for 3D version, see 3d branch (configurability would draw significant performance overhead)\n\n// square distance between 2 points\nfunction getSqDist(p1, p2) {\n var dx = p1[0] - p2[0],\n dy = p1[1] - p2[1];\n\n return dx * dx + dy * dy;\n}\n\n// square distance from a point to a segment\nfunction getSqSegDist(p, p1, p2) {\n var x = p1[0],\n y = p1[1],\n dx = p2[0] - x,\n dy = p2[1] - y;\n\n if (dx !== 0 || dy !== 0) {\n var t = ((p[0] - x) * dx + (p[1] - y) * dy) / (dx * dx + dy * dy);\n\n if (t > 1) {\n x = p2[0];\n y = p2[1];\n } else if (t > 0) {\n x += dx * t;\n y += dy * t;\n }\n }\n\n dx = p[0] - x;\n dy = p[1] - y;\n\n return dx * dx + dy * dy;\n}\n// rest of the code doesn't care about point format\n\n// basic distance-based simplification\nfunction simplifyRadialDist(points, sqTolerance) {\n var prevPoint = points[0],\n newPoints = [prevPoint],\n point;\n\n for (var i = 1, len = points.length; i < len; i++) {\n point = points[i];\n\n if (getSqDist(point, prevPoint) > sqTolerance) {\n newPoints.push(point);\n prevPoint = point;\n }\n }\n\n if (prevPoint !== point) newPoints.push(point);\n\n return newPoints;\n}\n\nfunction simplifyDPStep(points, first, last, sqTolerance, simplified) {\n var maxSqDist = sqTolerance,\n index;\n\n for (var i = first + 1; i < last; i++) {\n var sqDist = getSqSegDist(points[i], points[first], points[last]);\n\n if (sqDist > maxSqDist) {\n index = i;\n maxSqDist = sqDist;\n }\n }\n\n if (maxSqDist > sqTolerance) {\n if (index - first > 1)\n simplifyDPStep(points, first, index, sqTolerance, simplified);\n simplified.push(points[index]);\n if (last - index > 1)\n simplifyDPStep(points, index, last, sqTolerance, simplified);\n }\n}\n\n// simplification using Ramer-Douglas-Peucker algorithm\nfunction simplifyDouglasPeucker(points, sqTolerance) {\n var last = points.length - 1;\n\n var simplified = [points[0]];\n simplifyDPStep(points, 0, last, sqTolerance, simplified);\n simplified.push(points[last]);\n\n return simplified;\n}\n\n// both algorithms combined for awesome performance\nfunction simplify(points, tolerance, highestQuality) {\n if (points.length <= 2) return points;\n\n var sqTolerance = tolerance !== undefined ? tolerance * tolerance : 1;\n\n points = highestQuality ? points : simplifyRadialDist(points, sqTolerance);\n points = simplifyDouglasPeucker(points, sqTolerance);\n\n return points;\n}\n\nexport { simplify };\nexport default simplify;\n"]}
1
+ {"version":3,"sources":["../../index.ts","../../lib/simplify.js"],"names":["simplify"],"mappings":"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","sourcesContent":["import { Geometry, Position } from \"geojson\";\nimport { cleanCoords } from \"@turf/clean-coords\";\nimport { clone } from \"@turf/clone\";\nimport { geomEach } from \"@turf/meta\";\nimport { AllGeoJSON, isObject } from \"@turf/helpers\";\nimport { simplify as simplifyJS } from \"./lib/simplify.js\";\n\n/**\n * Takes a {@link GeoJSON} object and returns a simplified version. Internally uses the 2d version of\n * [simplify-js](http://mourner.github.io/simplify-js/) to perform simplification using the Ramer-Douglas-Peucker algorithm.\n *\n *\n * @name simplify\n * @param {GeoJSON} geojson object to be simplified\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.tolerance=1] simplification tolerance\n * @param {boolean} [options.highQuality=false] whether or not to spend more time to create a higher-quality simplification with a different algorithm\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} a simplified GeoJSON\n * @example\n * var geojson = turf.polygon([[\n * [-70.603637, -33.399918],\n * [-70.614624, -33.395332],\n * [-70.639343, -33.392466],\n * [-70.659942, -33.394759],\n * [-70.683975, -33.404504],\n * [-70.697021, -33.419406],\n * [-70.701141, -33.434306],\n * [-70.700454, -33.446339],\n * [-70.694274, -33.458369],\n * [-70.682601, -33.465816],\n * [-70.668869, -33.472117],\n * [-70.646209, -33.473835],\n * [-70.624923, -33.472117],\n * [-70.609817, -33.468107],\n * [-70.595397, -33.458369],\n * [-70.587158, -33.442901],\n * [-70.587158, -33.426283],\n * [-70.590591, -33.414248],\n * [-70.594711, -33.406224],\n * [-70.603637, -33.399918]\n * ]]);\n * var options = {tolerance: 0.01, highQuality: false};\n * var simplified = turf.simplify(geojson, options);\n *\n * //addToMap\n * var addToMap = [geojson, simplified]\n */\nfunction simplify<T extends AllGeoJSON>(\n geojson: T,\n options: {\n tolerance?: number;\n highQuality?: boolean;\n mutate?: boolean;\n } = {}\n): T {\n // Optional parameters\n options = options ?? {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n const tolerance = options.tolerance ?? 1;\n const highQuality = options.highQuality ?? false;\n const mutate = options.mutate ?? false;\n\n if (!geojson) throw new Error(\"geojson is required\");\n if (tolerance && tolerance < 0) throw new Error(\"invalid tolerance\");\n\n // Clone geojson to avoid side effects\n if (mutate !== true) geojson = clone(geojson);\n\n geomEach(geojson, function (geom) {\n simplifyGeom(geom, tolerance, highQuality);\n });\n return geojson;\n}\n\n/**\n * Simplifies a feature's coordinates\n *\n * @private\n * @param {Geometry} geometry to be simplified\n * @param {number} [tolerance=1] simplification tolerance\n * @param {boolean} [highQuality=false] whether or not to spend more time to create a higher-quality simplification with a different algorithm\n * @returns {Geometry} output\n */\nfunction simplifyGeom(\n geometry: Geometry,\n tolerance: number,\n highQuality: boolean\n) {\n const type = geometry.type;\n\n // \"unsimplyfiable\" geometry types\n if (type === \"Point\" || type === \"MultiPoint\") return geometry;\n\n // Remove any extra coordinates\n cleanCoords(geometry, { mutate: true });\n\n if (type !== \"GeometryCollection\") {\n // TODO should this cater for GeometryCollections too?\n switch (type) {\n case \"LineString\":\n geometry.coordinates = simplifyJS(\n geometry.coordinates,\n tolerance,\n highQuality\n );\n break;\n case \"MultiLineString\":\n geometry.coordinates = geometry.coordinates.map((lines) =>\n simplifyJS(lines, tolerance, highQuality)\n );\n break;\n case \"Polygon\":\n geometry.coordinates = simplifyPolygon(\n geometry.coordinates,\n tolerance,\n highQuality\n );\n break;\n case \"MultiPolygon\":\n geometry.coordinates = geometry.coordinates.map((rings) =>\n simplifyPolygon(rings, tolerance, highQuality)\n );\n }\n }\n\n return geometry;\n}\n\n/**\n * Simplifies the coordinates of a Polygon with simplify-js\n *\n * @private\n * @param {Array<number>} coordinates to be processed\n * @param {number} tolerance simplification tolerance\n * @param {boolean} highQuality whether or not to spend more time to create a higher-quality\n * @returns {Array<Array<Array<number>>>} simplified coords\n */\nfunction simplifyPolygon(\n coordinates: Position[][],\n tolerance: number,\n highQuality: boolean\n) {\n return coordinates.map(function (ring) {\n if (ring.length < 4) {\n throw new Error(\"invalid polygon\");\n }\n let ringTolerance = tolerance;\n let simpleRing = simplifyJS(ring, ringTolerance, highQuality);\n // remove 1 percent of tolerance until enough points to make a triangle\n while (!checkValidity(simpleRing)) {\n ringTolerance -= ringTolerance * 0.01;\n simpleRing = simplifyJS(ring, ringTolerance, highQuality);\n }\n if (\n simpleRing[simpleRing.length - 1][0] !== simpleRing[0][0] ||\n simpleRing[simpleRing.length - 1][1] !== simpleRing[0][1]\n ) {\n simpleRing.push(simpleRing[0]);\n }\n return simpleRing;\n });\n}\n\n/**\n * Returns true if ring has at least 3 coordinates and its first coordinate is the same as its last\n *\n * @private\n * @param {Array<number>} ring coordinates to be checked\n * @returns {boolean} true if valid\n */\nfunction checkValidity(ring: Position[]) {\n if (ring.length < 3) return false;\n //if the last point is the same as the first, it's not a triangle\n return !(\n ring.length === 3 &&\n ring[2][0] === ring[0][0] &&\n ring[2][1] === ring[0][1]\n );\n}\n\nexport { simplify };\nexport default simplify;\n","/*\n (c) 2013, Vladimir Agafonkin\n Simplify.js, a high-performance JS polyline simplification library\n mourner.github.io/simplify-js\n*/\n\n// to suit your point format, run search/replace for '.x' and '.y';\n// for 3D version, see 3d branch (configurability would draw significant performance overhead)\n\n// square distance between 2 points\nfunction getSqDist(p1, p2) {\n var dx = p1[0] - p2[0],\n dy = p1[1] - p2[1];\n\n return dx * dx + dy * dy;\n}\n\n// square distance from a point to a segment\nfunction getSqSegDist(p, p1, p2) {\n var x = p1[0],\n y = p1[1],\n dx = p2[0] - x,\n dy = p2[1] - y;\n\n if (dx !== 0 || dy !== 0) {\n var t = ((p[0] - x) * dx + (p[1] - y) * dy) / (dx * dx + dy * dy);\n\n if (t > 1) {\n x = p2[0];\n y = p2[1];\n } else if (t > 0) {\n x += dx * t;\n y += dy * t;\n }\n }\n\n dx = p[0] - x;\n dy = p[1] - y;\n\n return dx * dx + dy * dy;\n}\n// rest of the code doesn't care about point format\n\n// basic distance-based simplification\nfunction simplifyRadialDist(points, sqTolerance) {\n var prevPoint = points[0],\n newPoints = [prevPoint],\n point;\n\n for (var i = 1, len = points.length; i < len; i++) {\n point = points[i];\n\n if (getSqDist(point, prevPoint) > sqTolerance) {\n newPoints.push(point);\n prevPoint = point;\n }\n }\n\n if (prevPoint !== point) newPoints.push(point);\n\n return newPoints;\n}\n\nfunction simplifyDPStep(points, first, last, sqTolerance, simplified) {\n var maxSqDist = sqTolerance,\n index;\n\n for (var i = first + 1; i < last; i++) {\n var sqDist = getSqSegDist(points[i], points[first], points[last]);\n\n if (sqDist > maxSqDist) {\n index = i;\n maxSqDist = sqDist;\n }\n }\n\n if (maxSqDist > sqTolerance) {\n if (index - first > 1)\n simplifyDPStep(points, first, index, sqTolerance, simplified);\n simplified.push(points[index]);\n if (last - index > 1)\n simplifyDPStep(points, index, last, sqTolerance, simplified);\n }\n}\n\n// simplification using Ramer-Douglas-Peucker algorithm\nfunction simplifyDouglasPeucker(points, sqTolerance) {\n var last = points.length - 1;\n\n var simplified = [points[0]];\n simplifyDPStep(points, 0, last, sqTolerance, simplified);\n simplified.push(points[last]);\n\n return simplified;\n}\n\n// both algorithms combined for awesome performance\nfunction simplify(points, tolerance, highestQuality) {\n if (points.length <= 2) return points;\n\n var sqTolerance = tolerance !== undefined ? tolerance * tolerance : 1;\n\n points = highestQuality ? points : simplifyRadialDist(points, sqTolerance);\n points = simplifyDouglasPeucker(points, sqTolerance);\n\n return points;\n}\n\nexport { simplify };\nexport default simplify;\n"]}
package/dist/esm/index.js CHANGED
@@ -1,6 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
-
4
1
  // index.ts
5
2
  import { cleanCoords } from "@turf/clean-coords";
6
3
  import { clone } from "@turf/clone";
@@ -12,7 +9,6 @@ function getSqDist(p1, p2) {
12
9
  var dx = p1[0] - p2[0], dy = p1[1] - p2[1];
13
10
  return dx * dx + dy * dy;
14
11
  }
15
- __name(getSqDist, "getSqDist");
16
12
  function getSqSegDist(p, p1, p2) {
17
13
  var x = p1[0], y = p1[1], dx = p2[0] - x, dy = p2[1] - y;
18
14
  if (dx !== 0 || dy !== 0) {
@@ -29,7 +25,6 @@ function getSqSegDist(p, p1, p2) {
29
25
  dy = p[1] - y;
30
26
  return dx * dx + dy * dy;
31
27
  }
32
- __name(getSqSegDist, "getSqSegDist");
33
28
  function simplifyRadialDist(points, sqTolerance) {
34
29
  var prevPoint = points[0], newPoints = [prevPoint], point;
35
30
  for (var i = 1, len = points.length; i < len; i++) {
@@ -43,7 +38,6 @@ function simplifyRadialDist(points, sqTolerance) {
43
38
  newPoints.push(point);
44
39
  return newPoints;
45
40
  }
46
- __name(simplifyRadialDist, "simplifyRadialDist");
47
41
  function simplifyDPStep(points, first, last, sqTolerance, simplified) {
48
42
  var maxSqDist = sqTolerance, index;
49
43
  for (var i = first + 1; i < last; i++) {
@@ -61,7 +55,6 @@ function simplifyDPStep(points, first, last, sqTolerance, simplified) {
61
55
  simplifyDPStep(points, index, last, sqTolerance, simplified);
62
56
  }
63
57
  }
64
- __name(simplifyDPStep, "simplifyDPStep");
65
58
  function simplifyDouglasPeucker(points, sqTolerance) {
66
59
  var last = points.length - 1;
67
60
  var simplified = [points[0]];
@@ -69,7 +62,6 @@ function simplifyDouglasPeucker(points, sqTolerance) {
69
62
  simplified.push(points[last]);
70
63
  return simplified;
71
64
  }
72
- __name(simplifyDouglasPeucker, "simplifyDouglasPeucker");
73
65
  function simplify(points, tolerance, highestQuality) {
74
66
  if (points.length <= 2)
75
67
  return points;
@@ -78,7 +70,6 @@ function simplify(points, tolerance, highestQuality) {
78
70
  points = simplifyDouglasPeucker(points, sqTolerance);
79
71
  return points;
80
72
  }
81
- __name(simplify, "simplify");
82
73
 
83
74
  // index.ts
84
75
  function simplify2(geojson, options = {}) {
@@ -100,7 +91,6 @@ function simplify2(geojson, options = {}) {
100
91
  });
101
92
  return geojson;
102
93
  }
103
- __name(simplify2, "simplify");
104
94
  function simplifyGeom(geometry, tolerance, highQuality) {
105
95
  const type = geometry.type;
106
96
  if (type === "Point" || type === "MultiPoint")
@@ -135,7 +125,6 @@ function simplifyGeom(geometry, tolerance, highQuality) {
135
125
  }
136
126
  return geometry;
137
127
  }
138
- __name(simplifyGeom, "simplifyGeom");
139
128
  function simplifyPolygon(coordinates, tolerance, highQuality) {
140
129
  return coordinates.map(function(ring) {
141
130
  if (ring.length < 4) {
@@ -153,13 +142,11 @@ function simplifyPolygon(coordinates, tolerance, highQuality) {
153
142
  return simpleRing;
154
143
  });
155
144
  }
156
- __name(simplifyPolygon, "simplifyPolygon");
157
145
  function checkValidity(ring) {
158
146
  if (ring.length < 3)
159
147
  return false;
160
148
  return !(ring.length === 3 && ring[2][0] === ring[0][0] && ring[2][1] === ring[0][1]);
161
149
  }
162
- __name(checkValidity, "checkValidity");
163
150
  var turf_simplify_default = simplify2;
164
151
  export {
165
152
  turf_simplify_default as default,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../index.ts","../../lib/simplify.js"],"sourcesContent":["import { Geometry, Position } from \"geojson\";\nimport { cleanCoords } from \"@turf/clean-coords\";\nimport { clone } from \"@turf/clone\";\nimport { geomEach } from \"@turf/meta\";\nimport { AllGeoJSON, isObject } from \"@turf/helpers\";\nimport { simplify as simplifyJS } from \"./lib/simplify.js\";\n\n/**\n * Takes a {@link GeoJSON} object and returns a simplified version. Internally uses the 2d version of\n * [simplify-js](http://mourner.github.io/simplify-js/) to perform simplification using the Ramer-Douglas-Peucker algorithm.\n *\n *\n * @name simplify\n * @param {GeoJSON} geojson object to be simplified\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.tolerance=1] simplification tolerance\n * @param {boolean} [options.highQuality=false] whether or not to spend more time to create a higher-quality simplification with a different algorithm\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} a simplified GeoJSON\n * @example\n * var geojson = turf.polygon([[\n * [-70.603637, -33.399918],\n * [-70.614624, -33.395332],\n * [-70.639343, -33.392466],\n * [-70.659942, -33.394759],\n * [-70.683975, -33.404504],\n * [-70.697021, -33.419406],\n * [-70.701141, -33.434306],\n * [-70.700454, -33.446339],\n * [-70.694274, -33.458369],\n * [-70.682601, -33.465816],\n * [-70.668869, -33.472117],\n * [-70.646209, -33.473835],\n * [-70.624923, -33.472117],\n * [-70.609817, -33.468107],\n * [-70.595397, -33.458369],\n * [-70.587158, -33.442901],\n * [-70.587158, -33.426283],\n * [-70.590591, -33.414248],\n * [-70.594711, -33.406224],\n * [-70.603637, -33.399918]\n * ]]);\n * var options = {tolerance: 0.01, highQuality: false};\n * var simplified = turf.simplify(geojson, options);\n *\n * //addToMap\n * var addToMap = [geojson, simplified]\n */\nfunction simplify<T extends AllGeoJSON>(\n geojson: T,\n options: {\n tolerance?: number;\n highQuality?: boolean;\n mutate?: boolean;\n } = {}\n): T {\n // Optional parameters\n options = options ?? {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n const tolerance = options.tolerance ?? 1;\n const highQuality = options.highQuality ?? false;\n const mutate = options.mutate ?? false;\n\n if (!geojson) throw new Error(\"geojson is required\");\n if (tolerance && tolerance < 0) throw new Error(\"invalid tolerance\");\n\n // Clone geojson to avoid side effects\n if (mutate !== true) geojson = clone(geojson);\n\n geomEach(geojson, function (geom) {\n simplifyGeom(geom, tolerance, highQuality);\n });\n return geojson;\n}\n\n/**\n * Simplifies a feature's coordinates\n *\n * @private\n * @param {Geometry} geometry to be simplified\n * @param {number} [tolerance=1] simplification tolerance\n * @param {boolean} [highQuality=false] whether or not to spend more time to create a higher-quality simplification with a different algorithm\n * @returns {Geometry} output\n */\nfunction simplifyGeom(\n geometry: Geometry,\n tolerance: number,\n highQuality: boolean\n) {\n const type = geometry.type;\n\n // \"unsimplyfiable\" geometry types\n if (type === \"Point\" || type === \"MultiPoint\") return geometry;\n\n // Remove any extra coordinates\n cleanCoords(geometry, { mutate: true });\n\n if (type !== \"GeometryCollection\") {\n // TODO should this cater for GeometryCollections too?\n switch (type) {\n case \"LineString\":\n geometry.coordinates = simplifyJS(\n geometry.coordinates,\n tolerance,\n highQuality\n );\n break;\n case \"MultiLineString\":\n geometry.coordinates = geometry.coordinates.map((lines) =>\n simplifyJS(lines, tolerance, highQuality)\n );\n break;\n case \"Polygon\":\n geometry.coordinates = simplifyPolygon(\n geometry.coordinates,\n tolerance,\n highQuality\n );\n break;\n case \"MultiPolygon\":\n geometry.coordinates = geometry.coordinates.map((rings) =>\n simplifyPolygon(rings, tolerance, highQuality)\n );\n }\n }\n\n return geometry;\n}\n\n/**\n * Simplifies the coordinates of a Polygon with simplify-js\n *\n * @private\n * @param {Array<number>} coordinates to be processed\n * @param {number} tolerance simplification tolerance\n * @param {boolean} highQuality whether or not to spend more time to create a higher-quality\n * @returns {Array<Array<Array<number>>>} simplified coords\n */\nfunction simplifyPolygon(\n coordinates: Position[][],\n tolerance: number,\n highQuality: boolean\n) {\n return coordinates.map(function (ring) {\n if (ring.length < 4) {\n throw new Error(\"invalid polygon\");\n }\n let ringTolerance = tolerance;\n let simpleRing = simplifyJS(ring, ringTolerance, highQuality);\n // remove 1 percent of tolerance until enough points to make a triangle\n while (!checkValidity(simpleRing)) {\n ringTolerance -= ringTolerance * 0.01;\n simpleRing = simplifyJS(ring, ringTolerance, highQuality);\n }\n if (\n simpleRing[simpleRing.length - 1][0] !== simpleRing[0][0] ||\n simpleRing[simpleRing.length - 1][1] !== simpleRing[0][1]\n ) {\n simpleRing.push(simpleRing[0]);\n }\n return simpleRing;\n });\n}\n\n/**\n * Returns true if ring has at least 3 coordinates and its first coordinate is the same as its last\n *\n * @private\n * @param {Array<number>} ring coordinates to be checked\n * @returns {boolean} true if valid\n */\nfunction checkValidity(ring: Position[]) {\n if (ring.length < 3) return false;\n //if the last point is the same as the first, it's not a triangle\n return !(\n ring.length === 3 &&\n ring[2][0] === ring[0][0] &&\n ring[2][1] === ring[0][1]\n );\n}\n\nexport { simplify };\nexport default simplify;\n","/*\n (c) 2013, Vladimir Agafonkin\n Simplify.js, a high-performance JS polyline simplification library\n mourner.github.io/simplify-js\n*/\n\n// to suit your point format, run search/replace for '.x' and '.y';\n// for 3D version, see 3d branch (configurability would draw significant performance overhead)\n\n// square distance between 2 points\nfunction getSqDist(p1, p2) {\n var dx = p1[0] - p2[0],\n dy = p1[1] - p2[1];\n\n return dx * dx + dy * dy;\n}\n\n// square distance from a point to a segment\nfunction getSqSegDist(p, p1, p2) {\n var x = p1[0],\n y = p1[1],\n dx = p2[0] - x,\n dy = p2[1] - y;\n\n if (dx !== 0 || dy !== 0) {\n var t = ((p[0] - x) * dx + (p[1] - y) * dy) / (dx * dx + dy * dy);\n\n if (t > 1) {\n x = p2[0];\n y = p2[1];\n } else if (t > 0) {\n x += dx * t;\n y += dy * t;\n }\n }\n\n dx = p[0] - x;\n dy = p[1] - y;\n\n return dx * dx + dy * dy;\n}\n// rest of the code doesn't care about point format\n\n// basic distance-based simplification\nfunction simplifyRadialDist(points, sqTolerance) {\n var prevPoint = points[0],\n newPoints = [prevPoint],\n point;\n\n for (var i = 1, len = points.length; i < len; i++) {\n point = points[i];\n\n if (getSqDist(point, prevPoint) > sqTolerance) {\n newPoints.push(point);\n prevPoint = point;\n }\n }\n\n if (prevPoint !== point) newPoints.push(point);\n\n return newPoints;\n}\n\nfunction simplifyDPStep(points, first, last, sqTolerance, simplified) {\n var maxSqDist = sqTolerance,\n index;\n\n for (var i = first + 1; i < last; i++) {\n var sqDist = getSqSegDist(points[i], points[first], points[last]);\n\n if (sqDist > maxSqDist) {\n index = i;\n maxSqDist = sqDist;\n }\n }\n\n if (maxSqDist > sqTolerance) {\n if (index - first > 1)\n simplifyDPStep(points, first, index, sqTolerance, simplified);\n simplified.push(points[index]);\n if (last - index > 1)\n simplifyDPStep(points, index, last, sqTolerance, simplified);\n }\n}\n\n// simplification using Ramer-Douglas-Peucker algorithm\nfunction simplifyDouglasPeucker(points, sqTolerance) {\n var last = points.length - 1;\n\n var simplified = [points[0]];\n simplifyDPStep(points, 0, last, sqTolerance, simplified);\n simplified.push(points[last]);\n\n return simplified;\n}\n\n// both algorithms combined for awesome performance\nfunction simplify(points, tolerance, highestQuality) {\n if (points.length <= 2) return points;\n\n var sqTolerance = tolerance !== undefined ? tolerance * tolerance : 1;\n\n points = highestQuality ? points : simplifyRadialDist(points, sqTolerance);\n points = simplifyDouglasPeucker(points, sqTolerance);\n\n return points;\n}\n\nexport { simplify };\nexport default simplify;\n"],"mappings":"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","names":["simplify","simplify"]}
1
+ {"version":3,"sources":["../../index.ts","../../lib/simplify.js"],"sourcesContent":["import { Geometry, Position } from \"geojson\";\nimport { cleanCoords } from \"@turf/clean-coords\";\nimport { clone } from \"@turf/clone\";\nimport { geomEach } from \"@turf/meta\";\nimport { AllGeoJSON, isObject } from \"@turf/helpers\";\nimport { simplify as simplifyJS } from \"./lib/simplify.js\";\n\n/**\n * Takes a {@link GeoJSON} object and returns a simplified version. Internally uses the 2d version of\n * [simplify-js](http://mourner.github.io/simplify-js/) to perform simplification using the Ramer-Douglas-Peucker algorithm.\n *\n *\n * @name simplify\n * @param {GeoJSON} geojson object to be simplified\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.tolerance=1] simplification tolerance\n * @param {boolean} [options.highQuality=false] whether or not to spend more time to create a higher-quality simplification with a different algorithm\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} a simplified GeoJSON\n * @example\n * var geojson = turf.polygon([[\n * [-70.603637, -33.399918],\n * [-70.614624, -33.395332],\n * [-70.639343, -33.392466],\n * [-70.659942, -33.394759],\n * [-70.683975, -33.404504],\n * [-70.697021, -33.419406],\n * [-70.701141, -33.434306],\n * [-70.700454, -33.446339],\n * [-70.694274, -33.458369],\n * [-70.682601, -33.465816],\n * [-70.668869, -33.472117],\n * [-70.646209, -33.473835],\n * [-70.624923, -33.472117],\n * [-70.609817, -33.468107],\n * [-70.595397, -33.458369],\n * [-70.587158, -33.442901],\n * [-70.587158, -33.426283],\n * [-70.590591, -33.414248],\n * [-70.594711, -33.406224],\n * [-70.603637, -33.399918]\n * ]]);\n * var options = {tolerance: 0.01, highQuality: false};\n * var simplified = turf.simplify(geojson, options);\n *\n * //addToMap\n * var addToMap = [geojson, simplified]\n */\nfunction simplify<T extends AllGeoJSON>(\n geojson: T,\n options: {\n tolerance?: number;\n highQuality?: boolean;\n mutate?: boolean;\n } = {}\n): T {\n // Optional parameters\n options = options ?? {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n const tolerance = options.tolerance ?? 1;\n const highQuality = options.highQuality ?? false;\n const mutate = options.mutate ?? false;\n\n if (!geojson) throw new Error(\"geojson is required\");\n if (tolerance && tolerance < 0) throw new Error(\"invalid tolerance\");\n\n // Clone geojson to avoid side effects\n if (mutate !== true) geojson = clone(geojson);\n\n geomEach(geojson, function (geom) {\n simplifyGeom(geom, tolerance, highQuality);\n });\n return geojson;\n}\n\n/**\n * Simplifies a feature's coordinates\n *\n * @private\n * @param {Geometry} geometry to be simplified\n * @param {number} [tolerance=1] simplification tolerance\n * @param {boolean} [highQuality=false] whether or not to spend more time to create a higher-quality simplification with a different algorithm\n * @returns {Geometry} output\n */\nfunction simplifyGeom(\n geometry: Geometry,\n tolerance: number,\n highQuality: boolean\n) {\n const type = geometry.type;\n\n // \"unsimplyfiable\" geometry types\n if (type === \"Point\" || type === \"MultiPoint\") return geometry;\n\n // Remove any extra coordinates\n cleanCoords(geometry, { mutate: true });\n\n if (type !== \"GeometryCollection\") {\n // TODO should this cater for GeometryCollections too?\n switch (type) {\n case \"LineString\":\n geometry.coordinates = simplifyJS(\n geometry.coordinates,\n tolerance,\n highQuality\n );\n break;\n case \"MultiLineString\":\n geometry.coordinates = geometry.coordinates.map((lines) =>\n simplifyJS(lines, tolerance, highQuality)\n );\n break;\n case \"Polygon\":\n geometry.coordinates = simplifyPolygon(\n geometry.coordinates,\n tolerance,\n highQuality\n );\n break;\n case \"MultiPolygon\":\n geometry.coordinates = geometry.coordinates.map((rings) =>\n simplifyPolygon(rings, tolerance, highQuality)\n );\n }\n }\n\n return geometry;\n}\n\n/**\n * Simplifies the coordinates of a Polygon with simplify-js\n *\n * @private\n * @param {Array<number>} coordinates to be processed\n * @param {number} tolerance simplification tolerance\n * @param {boolean} highQuality whether or not to spend more time to create a higher-quality\n * @returns {Array<Array<Array<number>>>} simplified coords\n */\nfunction simplifyPolygon(\n coordinates: Position[][],\n tolerance: number,\n highQuality: boolean\n) {\n return coordinates.map(function (ring) {\n if (ring.length < 4) {\n throw new Error(\"invalid polygon\");\n }\n let ringTolerance = tolerance;\n let simpleRing = simplifyJS(ring, ringTolerance, highQuality);\n // remove 1 percent of tolerance until enough points to make a triangle\n while (!checkValidity(simpleRing)) {\n ringTolerance -= ringTolerance * 0.01;\n simpleRing = simplifyJS(ring, ringTolerance, highQuality);\n }\n if (\n simpleRing[simpleRing.length - 1][0] !== simpleRing[0][0] ||\n simpleRing[simpleRing.length - 1][1] !== simpleRing[0][1]\n ) {\n simpleRing.push(simpleRing[0]);\n }\n return simpleRing;\n });\n}\n\n/**\n * Returns true if ring has at least 3 coordinates and its first coordinate is the same as its last\n *\n * @private\n * @param {Array<number>} ring coordinates to be checked\n * @returns {boolean} true if valid\n */\nfunction checkValidity(ring: Position[]) {\n if (ring.length < 3) return false;\n //if the last point is the same as the first, it's not a triangle\n return !(\n ring.length === 3 &&\n ring[2][0] === ring[0][0] &&\n ring[2][1] === ring[0][1]\n );\n}\n\nexport { simplify };\nexport default simplify;\n","/*\n (c) 2013, Vladimir Agafonkin\n Simplify.js, a high-performance JS polyline simplification library\n mourner.github.io/simplify-js\n*/\n\n// to suit your point format, run search/replace for '.x' and '.y';\n// for 3D version, see 3d branch (configurability would draw significant performance overhead)\n\n// square distance between 2 points\nfunction getSqDist(p1, p2) {\n var dx = p1[0] - p2[0],\n dy = p1[1] - p2[1];\n\n return dx * dx + dy * dy;\n}\n\n// square distance from a point to a segment\nfunction getSqSegDist(p, p1, p2) {\n var x = p1[0],\n y = p1[1],\n dx = p2[0] - x,\n dy = p2[1] - y;\n\n if (dx !== 0 || dy !== 0) {\n var t = ((p[0] - x) * dx + (p[1] - y) * dy) / (dx * dx + dy * dy);\n\n if (t > 1) {\n x = p2[0];\n y = p2[1];\n } else if (t > 0) {\n x += dx * t;\n y += dy * t;\n }\n }\n\n dx = p[0] - x;\n dy = p[1] - y;\n\n return dx * dx + dy * dy;\n}\n// rest of the code doesn't care about point format\n\n// basic distance-based simplification\nfunction simplifyRadialDist(points, sqTolerance) {\n var prevPoint = points[0],\n newPoints = [prevPoint],\n point;\n\n for (var i = 1, len = points.length; i < len; i++) {\n point = points[i];\n\n if (getSqDist(point, prevPoint) > sqTolerance) {\n newPoints.push(point);\n prevPoint = point;\n }\n }\n\n if (prevPoint !== point) newPoints.push(point);\n\n return newPoints;\n}\n\nfunction simplifyDPStep(points, first, last, sqTolerance, simplified) {\n var maxSqDist = sqTolerance,\n index;\n\n for (var i = first + 1; i < last; i++) {\n var sqDist = getSqSegDist(points[i], points[first], points[last]);\n\n if (sqDist > maxSqDist) {\n index = i;\n maxSqDist = sqDist;\n }\n }\n\n if (maxSqDist > sqTolerance) {\n if (index - first > 1)\n simplifyDPStep(points, first, index, sqTolerance, simplified);\n simplified.push(points[index]);\n if (last - index > 1)\n simplifyDPStep(points, index, last, sqTolerance, simplified);\n }\n}\n\n// simplification using Ramer-Douglas-Peucker algorithm\nfunction simplifyDouglasPeucker(points, sqTolerance) {\n var last = points.length - 1;\n\n var simplified = [points[0]];\n simplifyDPStep(points, 0, last, sqTolerance, simplified);\n simplified.push(points[last]);\n\n return simplified;\n}\n\n// both algorithms combined for awesome performance\nfunction simplify(points, tolerance, highestQuality) {\n if (points.length <= 2) return points;\n\n var sqTolerance = tolerance !== undefined ? tolerance * tolerance : 1;\n\n points = highestQuality ? points : simplifyRadialDist(points, sqTolerance);\n points = simplifyDouglasPeucker(points, sqTolerance);\n\n return points;\n}\n\nexport { simplify };\nexport default simplify;\n"],"mappings":"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","names":["simplify","simplify"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@turf/simplify",
3
- "version": "7.0.0",
3
+ "version": "7.1.0-alpha.7+0ce6ecca0",
4
4
  "description": "turf simplify module",
5
5
  "author": "Turf Authors",
6
6
  "contributors": [
@@ -58,7 +58,7 @@
58
58
  "test:types": "tsc --esModuleInterop --module node16 --moduleResolution node16 --noEmit --strict types.ts"
59
59
  },
60
60
  "devDependencies": {
61
- "@turf/truncate": "^7.0.0",
61
+ "@turf/truncate": "^7.1.0-alpha.7+0ce6ecca0",
62
62
  "@types/benchmark": "^2.1.5",
63
63
  "@types/tape": "^4.2.32",
64
64
  "benchmark": "^2.1.4",
@@ -71,11 +71,11 @@
71
71
  "write-json-file": "^5.0.0"
72
72
  },
73
73
  "dependencies": {
74
- "@turf/clean-coords": "^7.0.0",
75
- "@turf/clone": "^7.0.0",
76
- "@turf/helpers": "^7.0.0",
77
- "@turf/meta": "^7.0.0",
74
+ "@turf/clean-coords": "^7.1.0-alpha.7+0ce6ecca0",
75
+ "@turf/clone": "^7.1.0-alpha.7+0ce6ecca0",
76
+ "@turf/helpers": "^7.1.0-alpha.7+0ce6ecca0",
77
+ "@turf/meta": "^7.1.0-alpha.7+0ce6ecca0",
78
78
  "tslib": "^2.6.2"
79
79
  },
80
- "gitHead": "3d3a7917025fbabe191dbddbc89754b86f9c7739"
80
+ "gitHead": "0ce6ecca05829690270fec6d6bed2003495fe0ea"
81
81
  }