Open asindl opened 2 years ago
Hi @asindl
You might want to take a look at the @turf/polygonSmooth
module.
It currently doesn't work with LineString's but from memory the underlying algorithm could be extended to support that.
And there is probably other algorithms out there for smoothing which might output slightly different shapes - as there isn't really one 'correct' output, it just depends a bit on what you're expecting.
Hope that helps
Thanks, @rowanwins.
The polygonSmooth
isn't exactly doing, what I am looking for (defined curve radius to smooth corners), but thanks for the suggestion to look at the source code and adapting it to my needs.
It is possible to achieve this with multiple buffer operations.
const feature: Feature = …
const cornerRadius = 8;
// 1. increase geometry by radius without smoothing
feature.geometry = turf.buffer(feature.geometry, cornerRadius, { steps: 0 }).geometry;
// 2. decrease it by doubled radius with smoothing
feature.geometry = turf.buffer(feature.geometry, -(cornerRadius * 2), { steps: 8 }).geometry;
// 3. finally increase geometry again by radius with smoothing
feature.geometry = turf.buffer(feature.geometry, cornerRadius, { steps: 8 }).geometry;
Maybe this logic could get wraped into a default function.
@deflectn this might be enough justification for us to start a "tips and techniques" section on the website.
Or perhaps @deflectn would you like to put together a PR for a new roundCorners module?
Probably I could schedule it for Christmas time. 😉
Hi there, I am looking for an easy to use way to round corners of linestrings or polygons. Similar to the bezierSpline function, one could apply the "roundCorner" function to a linestring or polygon with a defined radius in the options which would then return the linestring/polygon with rounded corners.
Is that a meaningful feature for turf?