{"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-simplify/dist/cjs/index.cjs","../../index.ts","../../lib/simplify.js"],"names":["simplify"],"mappings":"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","file":"/home/runner/work/turf/turf/packages/turf-simplify/dist/cjs/index.cjs","sourcesContent":[null,"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 * @function\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(\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} 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>>} 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} 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"]}