From 0d7e794f18cc1fe3e840c69d2af615e5cc6345eb Mon Sep 17 00:00:00 2001 From: Denis Date: Sat, 13 May 2017 03:32:23 -0400 Subject: [PATCH] Reverse winding @turf/rewind - Exterior ring CCW & Interior rings CW https://github.com/Turfjs/turf/issues/737 - Add FeatureCollection & GeometryCollection support - Add tests for input mutation & Geometry Support - Update Typescript definition --- packages/turf-rewind/README.md | 28 +------ packages/turf-rewind/bench.js | 11 +-- packages/turf-rewind/index.d.ts | 19 +++-- packages/turf-rewind/index.js | 75 ++++++++++++++----- packages/turf-rewind/package.json | 3 +- packages/turf-rewind/test.js | 29 ++++++- .../test/in/feature-collection.geojson | 60 +++++++++++++++ .../test/in/polygon-clockwise.geojson | 25 +------ .../test/in/polygon-counter-clockwise.geojson | 37 ++------- .../test/out/feature-collection.geojson | 60 +++++++++++++++ ...geometry-polygon-counter-clockwise.geojson | 8 +- .../test/out/polygon-clockwise.geojson | 20 ++--- .../out/polygon-counter-clockwise.geojson | 20 ++--- 13 files changed, 256 insertions(+), 139 deletions(-) create mode 100644 packages/turf-rewind/test/in/feature-collection.geojson create mode 100644 packages/turf-rewind/test/out/feature-collection.geojson diff --git a/packages/turf-rewind/README.md b/packages/turf-rewind/README.md index 03b82fcc2..7282f37bd 100644 --- a/packages/turf-rewind/README.md +++ b/packages/turf-rewind/README.md @@ -2,11 +2,11 @@ # rewind -Rewind [(Mutli)LineString](http://geojson.org/geojson-spec.html#linestring) or [(Multi)Polygon](http://geojson.org/geojson-spec.html#polygon) outer ring clockwise and inner rings counterclockwise (Uses [Shoelace Formula](http://en.wikipedia.org/wiki/Shoelace_formula)). +Rewind [(Multi)LineString](http://geojson.org/geojson-spec.html#linestring) or [(Multi)Polygon](http://geojson.org/geojson-spec.html#polygon) outer ring counterclockwise and inner rings clockwise (Uses [Shoelace Formula](http://en.wikipedia.org/wiki/Shoelace_formula)). **Parameters** -- `geojson` **[Feature](http://geojson.org/geojson-spec.html#feature-objects)<([Polygon](http://geojson.org/geojson-spec.html#polygon) \| [MultiPolygon](http://geojson.org/geojson-spec.html#multipolygon) \| [LineString](http://geojson.org/geojson-spec.html#linestring) \| [MultiLineString](http://geojson.org/geojson-spec.html#multilinestring))>** input GeoJSON Polygon +- `geojson` **([FeatureCollection](http://geojson.org/geojson-spec.html#feature-collection-objects) \| [Geometry](http://geojson.org/geojson-spec.html#geometry) \| [Feature](http://geojson.org/geojson-spec.html#feature-objects)<([Polygon](http://geojson.org/geojson-spec.html#polygon) \| [MultiPolygon](http://geojson.org/geojson-spec.html#multipolygon) \| [LineString](http://geojson.org/geojson-spec.html#linestring) \| [MultiLineString](http://geojson.org/geojson-spec.html#multilinestring))>)** input GeoJSON Polygon - `reverse` **\[[Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)]** enable reverse winding (optional, default `false`) - `mutate` **\[[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)]** allows GeoJSON input to be mutated (significant performance increase if true) (optional, default `false`) @@ -29,29 +29,7 @@ var rewind = turf.rewind(polygon); var addToMap = [rewind]; ``` -Returns **[Feature](http://geojson.org/geojson-spec.html#feature-objects)<([Polygon](http://geojson.org/geojson-spec.html#polygon) \| [MultiPolygon](http://geojson.org/geojson-spec.html#multipolygon) \| [LineString](http://geojson.org/geojson-spec.html#linestring) \| [MultiLineString](http://geojson.org/geojson-spec.html#multilinestring))>** rewind Polygon - -# rewindLineString - -Rewind LineString - outer ring clockwise - -**Parameters** - -- `coords` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)>>** GeoJSON LineString geometry coordinates -- `reverse` **\[[Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)]** enable reverse winding (optional, default `false`) - -Returns **void** mutates coordinates - -# rewindPolygon - -Rewind Polygon - outer ring clockwise and inner rings counterclockwise. - -**Parameters** - -- `coords` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)>>>** GeoJSON Polygon geometry coordinates -- `reverse` **\[[Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)]** enable reverse winding (optional, default `false`) - -Returns **void** mutates coordinates +Returns **([FeatureCollection](http://geojson.org/geojson-spec.html#feature-collection-objects) \| [Geometry](http://geojson.org/geojson-spec.html#geometry) \| [Feature](http://geojson.org/geojson-spec.html#feature-objects)<([Polygon](http://geojson.org/geojson-spec.html#polygon) \| [MultiPolygon](http://geojson.org/geojson-spec.html#multipolygon) \| [LineString](http://geojson.org/geojson-spec.html#linestring) \| [MultiLineString](http://geojson.org/geojson-spec.html#multilinestring))>)** rewind Polygon