@turf/buffer 7.1.0 → 7.3.0

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 CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## buffer
6
6
 
7
- Calculates a buffer for input features for a given radius. Units supported are miles, kilometers, and degrees.
7
+ Calculates a buffer for input features for a given radius.
8
8
 
9
9
  When using a negative radius, the resulting geometry may be invalid if
10
10
  it's too small compared to the radius magnitude. If the input is a
@@ -18,7 +18,7 @@ the input, or even be empty.
18
18
  * `radius` **[number][4]** distance to draw the buffer (negative values are allowed)
19
19
  * `options` **[Object][5]** Optional parameters (optional, default `{}`)
20
20
 
21
- * `options.units` **[string][6]** any of the options supported by turf units (optional, default `"kilometers"`)
21
+ * `options.units` **Units** Supports all valid Turf [Units][6]. (optional, default `"kilometers"`)
22
22
  * `options.steps` **[number][4]** number of steps (optional, default `8`)
23
23
 
24
24
  ### Examples
@@ -43,7 +43,7 @@ Returns **([FeatureCollection][1] | [Feature][3]<([Polygon][7] | [MultiPolygon][
43
43
 
44
44
  [5]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
45
45
 
46
- [6]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
46
+ [6]: https://turfjs.org/docs/api/types/Units
47
47
 
48
48
  [7]: https://tools.ietf.org/html/rfc7946#section-3.1.6
49
49
 
@@ -15,23 +15,17 @@ function buffer(geojson, radius, options) {
15
15
  options = options || {};
16
16
  var units = options.units || "kilometers";
17
17
  var steps = options.steps || 8;
18
- if (!geojson)
19
- throw new Error("geojson is required");
20
- if (typeof options !== "object")
21
- throw new Error("options must be an object");
22
- if (typeof steps !== "number")
23
- throw new Error("steps must be an number");
24
- if (radius === void 0)
25
- throw new Error("radius is required");
26
- if (steps <= 0)
27
- throw new Error("steps must be greater than 0");
18
+ if (!geojson) throw new Error("geojson is required");
19
+ if (typeof options !== "object") throw new Error("options must be an object");
20
+ if (typeof steps !== "number") throw new Error("steps must be an number");
21
+ if (radius === void 0) throw new Error("radius is required");
22
+ if (steps <= 0) throw new Error("steps must be greater than 0");
28
23
  var results = [];
29
24
  switch (geojson.type) {
30
25
  case "GeometryCollection":
31
26
  _meta.geomEach.call(void 0, geojson, function(geometry) {
32
27
  var buffered = bufferFeature(geometry, radius, units, steps);
33
- if (buffered)
34
- results.push(buffered);
28
+ if (buffered) results.push(buffered);
35
29
  });
36
30
  return _helpers.featureCollection.call(void 0, results);
37
31
  case "FeatureCollection":
@@ -39,8 +33,7 @@ function buffer(geojson, radius, options) {
39
33
  var multiBuffered = bufferFeature(feature2, radius, units, steps);
40
34
  if (multiBuffered) {
41
35
  _meta.featureEach.call(void 0, multiBuffered, function(buffered) {
42
- if (buffered)
43
- results.push(buffered);
36
+ if (buffered) results.push(buffered);
44
37
  });
45
38
  }
46
39
  });
@@ -55,8 +48,7 @@ function bufferFeature(geojson, radius, units, steps) {
55
48
  var results = [];
56
49
  _meta.geomEach.call(void 0, geojson, function(geometry2) {
57
50
  var buffered2 = bufferFeature(geometry2, radius, units, steps);
58
- if (buffered2)
59
- results.push(buffered2);
51
+ if (buffered2) results.push(buffered2);
60
52
  });
61
53
  return _helpers.featureCollection.call(void 0, results);
62
54
  }
@@ -71,8 +63,7 @@ function bufferFeature(geojson, radius, units, steps) {
71
63
  var buffered = BufferOp.bufferOp(geom, distance, steps);
72
64
  var writer = new GeoJSONWriter();
73
65
  buffered = writer.write(buffered);
74
- if (coordsIsNaN(buffered.coordinates))
75
- return void 0;
66
+ if (coordsIsNaN(buffered.coordinates)) return void 0;
76
67
  var result = {
77
68
  type: buffered.type,
78
69
  coordinates: unprojectCoords(buffered.coordinates, projection)
@@ -80,20 +71,17 @@ function bufferFeature(geojson, radius, units, steps) {
80
71
  return _helpers.feature.call(void 0, result, properties);
81
72
  }
82
73
  function coordsIsNaN(coords) {
83
- if (Array.isArray(coords[0]))
84
- return coordsIsNaN(coords[0]);
74
+ if (Array.isArray(coords[0])) return coordsIsNaN(coords[0]);
85
75
  return isNaN(coords[0]);
86
76
  }
87
77
  function projectCoords(coords, proj) {
88
- if (typeof coords[0] !== "object")
89
- return proj(coords);
78
+ if (typeof coords[0] !== "object") return proj(coords);
90
79
  return coords.map(function(coord) {
91
80
  return projectCoords(coord, proj);
92
81
  });
93
82
  }
94
83
  function unprojectCoords(coords, proj) {
95
- if (typeof coords[0] !== "object")
96
- return proj.invert(coords);
84
+ if (typeof coords[0] !== "object") return proj.invert(coords);
97
85
  return coords.map(function(coord) {
98
86
  return unprojectCoords(coord, proj);
99
87
  });
@@ -103,9 +91,9 @@ function defineProjection(geojson) {
103
91
  var rotation = [-coords[0], -coords[1]];
104
92
  return _d3geo.geoAzimuthalEquidistant.call(void 0, ).rotate(rotation).scale(_helpers.earthRadius);
105
93
  }
106
- var turf_buffer_default = buffer;
94
+ var index_default = buffer;
107
95
 
108
96
 
109
97
 
110
- exports.buffer = buffer; exports.default = turf_buffer_default;
98
+ exports.buffer = buffer; exports.default = index_default;
111
99
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../index.js"],"names":["feature","geometry","buffered"],"mappings":"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","sourcesContent":["import { center } from \"@turf/center\";\nimport jsts from \"@turf/jsts\";\nimport { geomEach, featureEach } from \"@turf/meta\";\nimport { geoAzimuthalEquidistant } from \"d3-geo\";\nimport {\n feature,\n featureCollection,\n radiansToLength,\n lengthToRadians,\n earthRadius,\n} from \"@turf/helpers\";\n\nconst { BufferOp, GeoJSONReader, GeoJSONWriter } = jsts;\n\n/**\n * Calculates a buffer for input features for a given radius. Units supported are miles, kilometers, and degrees.\n *\n * When using a negative radius, the resulting geometry may be invalid if\n * it's too small compared to the radius magnitude. If the input is a\n * FeatureCollection, only valid members will be returned in the output\n * FeatureCollection - i.e., the output collection may have fewer members than\n * the input, or even be empty.\n *\n * @name buffer\n * @param {FeatureCollection|Geometry|Feature<any>} geojson input to be buffered\n * @param {number} radius distance to draw the buffer (negative values are allowed)\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units=\"kilometers\"] any of the options supported by turf units\n * @param {number} [options.steps=8] number of steps\n * @returns {FeatureCollection|Feature<Polygon|MultiPolygon>|undefined} buffered features\n * @example\n * var point = turf.point([-90.548630, 14.616599]);\n * var buffered = turf.buffer(point, 500, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [point, buffered]\n */\nfunction buffer(geojson, radius, options) {\n // Optional params\n options = options || {};\n\n // use user supplied options or default values\n var units = options.units || \"kilometers\";\n var steps = options.steps || 8;\n\n // validation\n if (!geojson) throw new Error(\"geojson is required\");\n if (typeof options !== \"object\") throw new Error(\"options must be an object\");\n if (typeof steps !== \"number\") throw new Error(\"steps must be an number\");\n\n // Allow negative buffers (\"erosion\") or zero-sized buffers (\"repair geometry\")\n if (radius === undefined) throw new Error(\"radius is required\");\n if (steps <= 0) throw new Error(\"steps must be greater than 0\");\n\n var results = [];\n switch (geojson.type) {\n case \"GeometryCollection\":\n geomEach(geojson, function (geometry) {\n var buffered = bufferFeature(geometry, radius, units, steps);\n if (buffered) results.push(buffered);\n });\n return featureCollection(results);\n case \"FeatureCollection\":\n featureEach(geojson, function (feature) {\n var multiBuffered = bufferFeature(feature, radius, units, steps);\n if (multiBuffered) {\n featureEach(multiBuffered, function (buffered) {\n if (buffered) results.push(buffered);\n });\n }\n });\n return featureCollection(results);\n }\n return bufferFeature(geojson, radius, units, steps);\n}\n\n/**\n * Buffer single Feature/Geometry\n *\n * @private\n * @param {Feature<any>} geojson input to be buffered\n * @param {number} radius distance to draw the buffer\n * @param {string} [units='kilometers'] any of the options supported by turf units\n * @param {number} [steps=8] number of steps\n * @returns {Feature<Polygon|MultiPolygon>} buffered feature\n */\nfunction bufferFeature(geojson, radius, units, steps) {\n var properties = geojson.properties || {};\n var geometry = geojson.type === \"Feature\" ? geojson.geometry : geojson;\n\n // Geometry Types faster than jsts\n if (geometry.type === \"GeometryCollection\") {\n var results = [];\n geomEach(geojson, function (geometry) {\n var buffered = bufferFeature(geometry, radius, units, steps);\n if (buffered) results.push(buffered);\n });\n return featureCollection(results);\n }\n\n // Project GeoJSON to Azimuthal Equidistant projection (convert to Meters)\n var projection = defineProjection(geometry);\n var projected = {\n type: geometry.type,\n coordinates: projectCoords(geometry.coordinates, projection),\n };\n\n // JSTS buffer operation\n var reader = new GeoJSONReader();\n var geom = reader.read(projected);\n var distance = radiansToLength(lengthToRadians(radius, units), \"meters\");\n var buffered = BufferOp.bufferOp(geom, distance, steps);\n var writer = new GeoJSONWriter();\n buffered = writer.write(buffered);\n\n // Detect if empty geometries\n if (coordsIsNaN(buffered.coordinates)) return undefined;\n\n // Unproject coordinates (convert to Degrees)\n var result = {\n type: buffered.type,\n coordinates: unprojectCoords(buffered.coordinates, projection),\n };\n\n return feature(result, properties);\n}\n\n/**\n * Coordinates isNaN\n *\n * @private\n * @param {Array<any>} coords GeoJSON Coordinates\n * @returns {boolean} if NaN exists\n */\nfunction coordsIsNaN(coords) {\n if (Array.isArray(coords[0])) return coordsIsNaN(coords[0]);\n return isNaN(coords[0]);\n}\n\n/**\n * Project coordinates to projection\n *\n * @private\n * @param {Array<any>} coords to project\n * @param {GeoProjection} proj D3 Geo Projection\n * @returns {Array<any>} projected coordinates\n */\nfunction projectCoords(coords, proj) {\n if (typeof coords[0] !== \"object\") return proj(coords);\n return coords.map(function (coord) {\n return projectCoords(coord, proj);\n });\n}\n\n/**\n * Un-Project coordinates to projection\n *\n * @private\n * @param {Array<any>} coords to un-project\n * @param {GeoProjection} proj D3 Geo Projection\n * @returns {Array<any>} un-projected coordinates\n */\nfunction unprojectCoords(coords, proj) {\n if (typeof coords[0] !== \"object\") return proj.invert(coords);\n return coords.map(function (coord) {\n return unprojectCoords(coord, proj);\n });\n}\n\n/**\n * Define Azimuthal Equidistant projection\n *\n * @private\n * @param {Geometry|Feature<any>} geojson Base projection on center of GeoJSON\n * @returns {GeoProjection} D3 Geo Azimuthal Equidistant Projection\n */\nfunction defineProjection(geojson) {\n var coords = center(geojson).geometry.coordinates;\n var rotation = [-coords[0], -coords[1]];\n return geoAzimuthalEquidistant().rotate(rotation).scale(earthRadius);\n}\n\nexport { buffer };\nexport default buffer;\n"]}
1
+ {"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-buffer/dist/cjs/index.cjs","../../index.js"],"names":["feature","geometry","buffered"],"mappings":"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","file":"/home/runner/work/turf/turf/packages/turf-buffer/dist/cjs/index.cjs","sourcesContent":[null,"import { center } from \"@turf/center\";\nimport jsts from \"@turf/jsts\";\nimport { geomEach, featureEach } from \"@turf/meta\";\nimport { geoAzimuthalEquidistant } from \"d3-geo\";\nimport {\n feature,\n featureCollection,\n radiansToLength,\n lengthToRadians,\n earthRadius,\n} from \"@turf/helpers\";\n\nconst { BufferOp, GeoJSONReader, GeoJSONWriter } = jsts;\n\n/**\n * Calculates a buffer for input features for a given radius.\n *\n * When using a negative radius, the resulting geometry may be invalid if\n * it's too small compared to the radius magnitude. If the input is a\n * FeatureCollection, only valid members will be returned in the output\n * FeatureCollection - i.e., the output collection may have fewer members than\n * the input, or even be empty.\n *\n * @function\n * @param {FeatureCollection|Geometry|Feature<any>} geojson input to be buffered\n * @param {number} radius distance to draw the buffer (negative values are allowed)\n * @param {Object} [options={}] Optional parameters\n * @param {Units} [options.units=\"kilometers\"] Supports all valid Turf {@link https://turfjs.org/docs/api/types/Units Units}.\n * @param {number} [options.steps=8] number of steps\n * @returns {FeatureCollection|Feature<Polygon|MultiPolygon>|undefined} buffered features\n * @example\n * var point = turf.point([-90.548630, 14.616599]);\n * var buffered = turf.buffer(point, 500, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [point, buffered]\n */\nfunction buffer(geojson, radius, options) {\n // Optional params\n options = options || {};\n\n // use user supplied options or default values\n var units = options.units || \"kilometers\";\n var steps = options.steps || 8;\n\n // validation\n if (!geojson) throw new Error(\"geojson is required\");\n if (typeof options !== \"object\") throw new Error(\"options must be an object\");\n if (typeof steps !== \"number\") throw new Error(\"steps must be an number\");\n\n // Allow negative buffers (\"erosion\") or zero-sized buffers (\"repair geometry\")\n if (radius === undefined) throw new Error(\"radius is required\");\n if (steps <= 0) throw new Error(\"steps must be greater than 0\");\n\n var results = [];\n switch (geojson.type) {\n case \"GeometryCollection\":\n geomEach(geojson, function (geometry) {\n var buffered = bufferFeature(geometry, radius, units, steps);\n if (buffered) results.push(buffered);\n });\n return featureCollection(results);\n case \"FeatureCollection\":\n featureEach(geojson, function (feature) {\n var multiBuffered = bufferFeature(feature, radius, units, steps);\n if (multiBuffered) {\n featureEach(multiBuffered, function (buffered) {\n if (buffered) results.push(buffered);\n });\n }\n });\n return featureCollection(results);\n }\n return bufferFeature(geojson, radius, units, steps);\n}\n\n/**\n * Buffer single Feature/Geometry\n *\n * @private\n * @param {Feature<any>} geojson input to be buffered\n * @param {number} radius distance to draw the buffer\n * @param {Units} [units='kilometers'] Supports all valid Turf {@link https://turfjs.org/docs/api/types/Units Units}.\n * @param {number} [steps=8] number of steps\n * @returns {Feature<Polygon|MultiPolygon>} buffered feature\n */\nfunction bufferFeature(geojson, radius, units, steps) {\n var properties = geojson.properties || {};\n var geometry = geojson.type === \"Feature\" ? geojson.geometry : geojson;\n\n // Geometry Types faster than jsts\n if (geometry.type === \"GeometryCollection\") {\n var results = [];\n geomEach(geojson, function (geometry) {\n var buffered = bufferFeature(geometry, radius, units, steps);\n if (buffered) results.push(buffered);\n });\n return featureCollection(results);\n }\n\n // Project GeoJSON to Azimuthal Equidistant projection (convert to Meters)\n var projection = defineProjection(geometry);\n var projected = {\n type: geometry.type,\n coordinates: projectCoords(geometry.coordinates, projection),\n };\n\n // JSTS buffer operation\n var reader = new GeoJSONReader();\n var geom = reader.read(projected);\n var distance = radiansToLength(lengthToRadians(radius, units), \"meters\");\n var buffered = BufferOp.bufferOp(geom, distance, steps);\n var writer = new GeoJSONWriter();\n buffered = writer.write(buffered);\n\n // Detect if empty geometries\n if (coordsIsNaN(buffered.coordinates)) return undefined;\n\n // Unproject coordinates (convert to Degrees)\n var result = {\n type: buffered.type,\n coordinates: unprojectCoords(buffered.coordinates, projection),\n };\n\n return feature(result, properties);\n}\n\n/**\n * Coordinates isNaN\n *\n * @private\n * @param {Array<any>} coords GeoJSON Coordinates\n * @returns {boolean} if NaN exists\n */\nfunction coordsIsNaN(coords) {\n if (Array.isArray(coords[0])) return coordsIsNaN(coords[0]);\n return isNaN(coords[0]);\n}\n\n/**\n * Project coordinates to projection\n *\n * @private\n * @param {Array<any>} coords to project\n * @param {GeoProjection} proj D3 Geo Projection\n * @returns {Array<any>} projected coordinates\n */\nfunction projectCoords(coords, proj) {\n if (typeof coords[0] !== \"object\") return proj(coords);\n return coords.map(function (coord) {\n return projectCoords(coord, proj);\n });\n}\n\n/**\n * Un-Project coordinates to projection\n *\n * @private\n * @param {Array<any>} coords to un-project\n * @param {GeoProjection} proj D3 Geo Projection\n * @returns {Array<any>} un-projected coordinates\n */\nfunction unprojectCoords(coords, proj) {\n if (typeof coords[0] !== \"object\") return proj.invert(coords);\n return coords.map(function (coord) {\n return unprojectCoords(coord, proj);\n });\n}\n\n/**\n * Define Azimuthal Equidistant projection\n *\n * @private\n * @param {Geometry|Feature<any>} geojson Base projection on center of GeoJSON\n * @returns {GeoProjection} D3 Geo Azimuthal Equidistant Projection\n */\nfunction defineProjection(geojson) {\n var coords = center(geojson).geometry.coordinates;\n var rotation = [-coords[0], -coords[1]];\n return geoAzimuthalEquidistant().rotate(rotation).scale(earthRadius);\n}\n\nexport { buffer };\nexport default buffer;\n"]}
package/dist/esm/index.js CHANGED
@@ -15,23 +15,17 @@ function buffer(geojson, radius, options) {
15
15
  options = options || {};
16
16
  var units = options.units || "kilometers";
17
17
  var steps = options.steps || 8;
18
- if (!geojson)
19
- throw new Error("geojson is required");
20
- if (typeof options !== "object")
21
- throw new Error("options must be an object");
22
- if (typeof steps !== "number")
23
- throw new Error("steps must be an number");
24
- if (radius === void 0)
25
- throw new Error("radius is required");
26
- if (steps <= 0)
27
- throw new Error("steps must be greater than 0");
18
+ if (!geojson) throw new Error("geojson is required");
19
+ if (typeof options !== "object") throw new Error("options must be an object");
20
+ if (typeof steps !== "number") throw new Error("steps must be an number");
21
+ if (radius === void 0) throw new Error("radius is required");
22
+ if (steps <= 0) throw new Error("steps must be greater than 0");
28
23
  var results = [];
29
24
  switch (geojson.type) {
30
25
  case "GeometryCollection":
31
26
  geomEach(geojson, function(geometry) {
32
27
  var buffered = bufferFeature(geometry, radius, units, steps);
33
- if (buffered)
34
- results.push(buffered);
28
+ if (buffered) results.push(buffered);
35
29
  });
36
30
  return featureCollection(results);
37
31
  case "FeatureCollection":
@@ -39,8 +33,7 @@ function buffer(geojson, radius, options) {
39
33
  var multiBuffered = bufferFeature(feature2, radius, units, steps);
40
34
  if (multiBuffered) {
41
35
  featureEach(multiBuffered, function(buffered) {
42
- if (buffered)
43
- results.push(buffered);
36
+ if (buffered) results.push(buffered);
44
37
  });
45
38
  }
46
39
  });
@@ -55,8 +48,7 @@ function bufferFeature(geojson, radius, units, steps) {
55
48
  var results = [];
56
49
  geomEach(geojson, function(geometry2) {
57
50
  var buffered2 = bufferFeature(geometry2, radius, units, steps);
58
- if (buffered2)
59
- results.push(buffered2);
51
+ if (buffered2) results.push(buffered2);
60
52
  });
61
53
  return featureCollection(results);
62
54
  }
@@ -71,8 +63,7 @@ function bufferFeature(geojson, radius, units, steps) {
71
63
  var buffered = BufferOp.bufferOp(geom, distance, steps);
72
64
  var writer = new GeoJSONWriter();
73
65
  buffered = writer.write(buffered);
74
- if (coordsIsNaN(buffered.coordinates))
75
- return void 0;
66
+ if (coordsIsNaN(buffered.coordinates)) return void 0;
76
67
  var result = {
77
68
  type: buffered.type,
78
69
  coordinates: unprojectCoords(buffered.coordinates, projection)
@@ -80,20 +71,17 @@ function bufferFeature(geojson, radius, units, steps) {
80
71
  return feature(result, properties);
81
72
  }
82
73
  function coordsIsNaN(coords) {
83
- if (Array.isArray(coords[0]))
84
- return coordsIsNaN(coords[0]);
74
+ if (Array.isArray(coords[0])) return coordsIsNaN(coords[0]);
85
75
  return isNaN(coords[0]);
86
76
  }
87
77
  function projectCoords(coords, proj) {
88
- if (typeof coords[0] !== "object")
89
- return proj(coords);
78
+ if (typeof coords[0] !== "object") return proj(coords);
90
79
  return coords.map(function(coord) {
91
80
  return projectCoords(coord, proj);
92
81
  });
93
82
  }
94
83
  function unprojectCoords(coords, proj) {
95
- if (typeof coords[0] !== "object")
96
- return proj.invert(coords);
84
+ if (typeof coords[0] !== "object") return proj.invert(coords);
97
85
  return coords.map(function(coord) {
98
86
  return unprojectCoords(coord, proj);
99
87
  });
@@ -103,9 +91,9 @@ function defineProjection(geojson) {
103
91
  var rotation = [-coords[0], -coords[1]];
104
92
  return geoAzimuthalEquidistant().rotate(rotation).scale(earthRadius);
105
93
  }
106
- var turf_buffer_default = buffer;
94
+ var index_default = buffer;
107
95
  export {
108
96
  buffer,
109
- turf_buffer_default as default
97
+ index_default as default
110
98
  };
111
99
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../index.js"],"sourcesContent":["import { center } from \"@turf/center\";\nimport jsts from \"@turf/jsts\";\nimport { geomEach, featureEach } from \"@turf/meta\";\nimport { geoAzimuthalEquidistant } from \"d3-geo\";\nimport {\n feature,\n featureCollection,\n radiansToLength,\n lengthToRadians,\n earthRadius,\n} from \"@turf/helpers\";\n\nconst { BufferOp, GeoJSONReader, GeoJSONWriter } = jsts;\n\n/**\n * Calculates a buffer for input features for a given radius. Units supported are miles, kilometers, and degrees.\n *\n * When using a negative radius, the resulting geometry may be invalid if\n * it's too small compared to the radius magnitude. If the input is a\n * FeatureCollection, only valid members will be returned in the output\n * FeatureCollection - i.e., the output collection may have fewer members than\n * the input, or even be empty.\n *\n * @name buffer\n * @param {FeatureCollection|Geometry|Feature<any>} geojson input to be buffered\n * @param {number} radius distance to draw the buffer (negative values are allowed)\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units=\"kilometers\"] any of the options supported by turf units\n * @param {number} [options.steps=8] number of steps\n * @returns {FeatureCollection|Feature<Polygon|MultiPolygon>|undefined} buffered features\n * @example\n * var point = turf.point([-90.548630, 14.616599]);\n * var buffered = turf.buffer(point, 500, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [point, buffered]\n */\nfunction buffer(geojson, radius, options) {\n // Optional params\n options = options || {};\n\n // use user supplied options or default values\n var units = options.units || \"kilometers\";\n var steps = options.steps || 8;\n\n // validation\n if (!geojson) throw new Error(\"geojson is required\");\n if (typeof options !== \"object\") throw new Error(\"options must be an object\");\n if (typeof steps !== \"number\") throw new Error(\"steps must be an number\");\n\n // Allow negative buffers (\"erosion\") or zero-sized buffers (\"repair geometry\")\n if (radius === undefined) throw new Error(\"radius is required\");\n if (steps <= 0) throw new Error(\"steps must be greater than 0\");\n\n var results = [];\n switch (geojson.type) {\n case \"GeometryCollection\":\n geomEach(geojson, function (geometry) {\n var buffered = bufferFeature(geometry, radius, units, steps);\n if (buffered) results.push(buffered);\n });\n return featureCollection(results);\n case \"FeatureCollection\":\n featureEach(geojson, function (feature) {\n var multiBuffered = bufferFeature(feature, radius, units, steps);\n if (multiBuffered) {\n featureEach(multiBuffered, function (buffered) {\n if (buffered) results.push(buffered);\n });\n }\n });\n return featureCollection(results);\n }\n return bufferFeature(geojson, radius, units, steps);\n}\n\n/**\n * Buffer single Feature/Geometry\n *\n * @private\n * @param {Feature<any>} geojson input to be buffered\n * @param {number} radius distance to draw the buffer\n * @param {string} [units='kilometers'] any of the options supported by turf units\n * @param {number} [steps=8] number of steps\n * @returns {Feature<Polygon|MultiPolygon>} buffered feature\n */\nfunction bufferFeature(geojson, radius, units, steps) {\n var properties = geojson.properties || {};\n var geometry = geojson.type === \"Feature\" ? geojson.geometry : geojson;\n\n // Geometry Types faster than jsts\n if (geometry.type === \"GeometryCollection\") {\n var results = [];\n geomEach(geojson, function (geometry) {\n var buffered = bufferFeature(geometry, radius, units, steps);\n if (buffered) results.push(buffered);\n });\n return featureCollection(results);\n }\n\n // Project GeoJSON to Azimuthal Equidistant projection (convert to Meters)\n var projection = defineProjection(geometry);\n var projected = {\n type: geometry.type,\n coordinates: projectCoords(geometry.coordinates, projection),\n };\n\n // JSTS buffer operation\n var reader = new GeoJSONReader();\n var geom = reader.read(projected);\n var distance = radiansToLength(lengthToRadians(radius, units), \"meters\");\n var buffered = BufferOp.bufferOp(geom, distance, steps);\n var writer = new GeoJSONWriter();\n buffered = writer.write(buffered);\n\n // Detect if empty geometries\n if (coordsIsNaN(buffered.coordinates)) return undefined;\n\n // Unproject coordinates (convert to Degrees)\n var result = {\n type: buffered.type,\n coordinates: unprojectCoords(buffered.coordinates, projection),\n };\n\n return feature(result, properties);\n}\n\n/**\n * Coordinates isNaN\n *\n * @private\n * @param {Array<any>} coords GeoJSON Coordinates\n * @returns {boolean} if NaN exists\n */\nfunction coordsIsNaN(coords) {\n if (Array.isArray(coords[0])) return coordsIsNaN(coords[0]);\n return isNaN(coords[0]);\n}\n\n/**\n * Project coordinates to projection\n *\n * @private\n * @param {Array<any>} coords to project\n * @param {GeoProjection} proj D3 Geo Projection\n * @returns {Array<any>} projected coordinates\n */\nfunction projectCoords(coords, proj) {\n if (typeof coords[0] !== \"object\") return proj(coords);\n return coords.map(function (coord) {\n return projectCoords(coord, proj);\n });\n}\n\n/**\n * Un-Project coordinates to projection\n *\n * @private\n * @param {Array<any>} coords to un-project\n * @param {GeoProjection} proj D3 Geo Projection\n * @returns {Array<any>} un-projected coordinates\n */\nfunction unprojectCoords(coords, proj) {\n if (typeof coords[0] !== \"object\") return proj.invert(coords);\n return coords.map(function (coord) {\n return unprojectCoords(coord, proj);\n });\n}\n\n/**\n * Define Azimuthal Equidistant projection\n *\n * @private\n * @param {Geometry|Feature<any>} geojson Base projection on center of GeoJSON\n * @returns {GeoProjection} D3 Geo Azimuthal Equidistant Projection\n */\nfunction defineProjection(geojson) {\n var coords = center(geojson).geometry.coordinates;\n var rotation = [-coords[0], -coords[1]];\n return geoAzimuthalEquidistant().rotate(rotation).scale(earthRadius);\n}\n\nexport { buffer };\nexport default buffer;\n"],"mappings":";AAAA,SAAS,cAAc;AACvB,OAAO,UAAU;AACjB,SAAS,UAAU,mBAAmB;AACtC,SAAS,+BAA+B;AACxC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,IAAM,EAAE,UAAU,eAAe,cAAc,IAAI;AAyBnD,SAAS,OAAO,SAAS,QAAQ,SAAS;AAExC,YAAU,WAAW,CAAC;AAGtB,MAAI,QAAQ,QAAQ,SAAS;AAC7B,MAAI,QAAQ,QAAQ,SAAS;AAG7B,MAAI,CAAC;AAAS,UAAM,IAAI,MAAM,qBAAqB;AACnD,MAAI,OAAO,YAAY;AAAU,UAAM,IAAI,MAAM,2BAA2B;AAC5E,MAAI,OAAO,UAAU;AAAU,UAAM,IAAI,MAAM,yBAAyB;AAGxE,MAAI,WAAW;AAAW,UAAM,IAAI,MAAM,oBAAoB;AAC9D,MAAI,SAAS;AAAG,UAAM,IAAI,MAAM,8BAA8B;AAE9D,MAAI,UAAU,CAAC;AACf,UAAQ,QAAQ,MAAM;AAAA,IACpB,KAAK;AACH,eAAS,SAAS,SAAU,UAAU;AACpC,YAAI,WAAW,cAAc,UAAU,QAAQ,OAAO,KAAK;AAC3D,YAAI;AAAU,kBAAQ,KAAK,QAAQ;AAAA,MACrC,CAAC;AACD,aAAO,kBAAkB,OAAO;AAAA,IAClC,KAAK;AACH,kBAAY,SAAS,SAAUA,UAAS;AACtC,YAAI,gBAAgB,cAAcA,UAAS,QAAQ,OAAO,KAAK;AAC/D,YAAI,eAAe;AACjB,sBAAY,eAAe,SAAU,UAAU;AAC7C,gBAAI;AAAU,sBAAQ,KAAK,QAAQ;AAAA,UACrC,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AACD,aAAO,kBAAkB,OAAO;AAAA,EACpC;AACA,SAAO,cAAc,SAAS,QAAQ,OAAO,KAAK;AACpD;AAYA,SAAS,cAAc,SAAS,QAAQ,OAAO,OAAO;AACpD,MAAI,aAAa,QAAQ,cAAc,CAAC;AACxC,MAAI,WAAW,QAAQ,SAAS,YAAY,QAAQ,WAAW;AAG/D,MAAI,SAAS,SAAS,sBAAsB;AAC1C,QAAI,UAAU,CAAC;AACf,aAAS,SAAS,SAAUC,WAAU;AACpC,UAAIC,YAAW,cAAcD,WAAU,QAAQ,OAAO,KAAK;AAC3D,UAAIC;AAAU,gBAAQ,KAAKA,SAAQ;AAAA,IACrC,CAAC;AACD,WAAO,kBAAkB,OAAO;AAAA,EAClC;AAGA,MAAI,aAAa,iBAAiB,QAAQ;AAC1C,MAAI,YAAY;AAAA,IACd,MAAM,SAAS;AAAA,IACf,aAAa,cAAc,SAAS,aAAa,UAAU;AAAA,EAC7D;AAGA,MAAI,SAAS,IAAI,cAAc;AAC/B,MAAI,OAAO,OAAO,KAAK,SAAS;AAChC,MAAI,WAAW,gBAAgB,gBAAgB,QAAQ,KAAK,GAAG,QAAQ;AACvE,MAAI,WAAW,SAAS,SAAS,MAAM,UAAU,KAAK;AACtD,MAAI,SAAS,IAAI,cAAc;AAC/B,aAAW,OAAO,MAAM,QAAQ;AAGhC,MAAI,YAAY,SAAS,WAAW;AAAG,WAAO;AAG9C,MAAI,SAAS;AAAA,IACX,MAAM,SAAS;AAAA,IACf,aAAa,gBAAgB,SAAS,aAAa,UAAU;AAAA,EAC/D;AAEA,SAAO,QAAQ,QAAQ,UAAU;AACnC;AASA,SAAS,YAAY,QAAQ;AAC3B,MAAI,MAAM,QAAQ,OAAO,CAAC,CAAC;AAAG,WAAO,YAAY,OAAO,CAAC,CAAC;AAC1D,SAAO,MAAM,OAAO,CAAC,CAAC;AACxB;AAUA,SAAS,cAAc,QAAQ,MAAM;AACnC,MAAI,OAAO,OAAO,CAAC,MAAM;AAAU,WAAO,KAAK,MAAM;AACrD,SAAO,OAAO,IAAI,SAAU,OAAO;AACjC,WAAO,cAAc,OAAO,IAAI;AAAA,EAClC,CAAC;AACH;AAUA,SAAS,gBAAgB,QAAQ,MAAM;AACrC,MAAI,OAAO,OAAO,CAAC,MAAM;AAAU,WAAO,KAAK,OAAO,MAAM;AAC5D,SAAO,OAAO,IAAI,SAAU,OAAO;AACjC,WAAO,gBAAgB,OAAO,IAAI;AAAA,EACpC,CAAC;AACH;AASA,SAAS,iBAAiB,SAAS;AACjC,MAAI,SAAS,OAAO,OAAO,EAAE,SAAS;AACtC,MAAI,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtC,SAAO,wBAAwB,EAAE,OAAO,QAAQ,EAAE,MAAM,WAAW;AACrE;AAGA,IAAO,sBAAQ;","names":["feature","geometry","buffered"]}
1
+ {"version":3,"sources":["../../index.js"],"sourcesContent":["import { center } from \"@turf/center\";\nimport jsts from \"@turf/jsts\";\nimport { geomEach, featureEach } from \"@turf/meta\";\nimport { geoAzimuthalEquidistant } from \"d3-geo\";\nimport {\n feature,\n featureCollection,\n radiansToLength,\n lengthToRadians,\n earthRadius,\n} from \"@turf/helpers\";\n\nconst { BufferOp, GeoJSONReader, GeoJSONWriter } = jsts;\n\n/**\n * Calculates a buffer for input features for a given radius.\n *\n * When using a negative radius, the resulting geometry may be invalid if\n * it's too small compared to the radius magnitude. If the input is a\n * FeatureCollection, only valid members will be returned in the output\n * FeatureCollection - i.e., the output collection may have fewer members than\n * the input, or even be empty.\n *\n * @function\n * @param {FeatureCollection|Geometry|Feature<any>} geojson input to be buffered\n * @param {number} radius distance to draw the buffer (negative values are allowed)\n * @param {Object} [options={}] Optional parameters\n * @param {Units} [options.units=\"kilometers\"] Supports all valid Turf {@link https://turfjs.org/docs/api/types/Units Units}.\n * @param {number} [options.steps=8] number of steps\n * @returns {FeatureCollection|Feature<Polygon|MultiPolygon>|undefined} buffered features\n * @example\n * var point = turf.point([-90.548630, 14.616599]);\n * var buffered = turf.buffer(point, 500, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [point, buffered]\n */\nfunction buffer(geojson, radius, options) {\n // Optional params\n options = options || {};\n\n // use user supplied options or default values\n var units = options.units || \"kilometers\";\n var steps = options.steps || 8;\n\n // validation\n if (!geojson) throw new Error(\"geojson is required\");\n if (typeof options !== \"object\") throw new Error(\"options must be an object\");\n if (typeof steps !== \"number\") throw new Error(\"steps must be an number\");\n\n // Allow negative buffers (\"erosion\") or zero-sized buffers (\"repair geometry\")\n if (radius === undefined) throw new Error(\"radius is required\");\n if (steps <= 0) throw new Error(\"steps must be greater than 0\");\n\n var results = [];\n switch (geojson.type) {\n case \"GeometryCollection\":\n geomEach(geojson, function (geometry) {\n var buffered = bufferFeature(geometry, radius, units, steps);\n if (buffered) results.push(buffered);\n });\n return featureCollection(results);\n case \"FeatureCollection\":\n featureEach(geojson, function (feature) {\n var multiBuffered = bufferFeature(feature, radius, units, steps);\n if (multiBuffered) {\n featureEach(multiBuffered, function (buffered) {\n if (buffered) results.push(buffered);\n });\n }\n });\n return featureCollection(results);\n }\n return bufferFeature(geojson, radius, units, steps);\n}\n\n/**\n * Buffer single Feature/Geometry\n *\n * @private\n * @param {Feature<any>} geojson input to be buffered\n * @param {number} radius distance to draw the buffer\n * @param {Units} [units='kilometers'] Supports all valid Turf {@link https://turfjs.org/docs/api/types/Units Units}.\n * @param {number} [steps=8] number of steps\n * @returns {Feature<Polygon|MultiPolygon>} buffered feature\n */\nfunction bufferFeature(geojson, radius, units, steps) {\n var properties = geojson.properties || {};\n var geometry = geojson.type === \"Feature\" ? geojson.geometry : geojson;\n\n // Geometry Types faster than jsts\n if (geometry.type === \"GeometryCollection\") {\n var results = [];\n geomEach(geojson, function (geometry) {\n var buffered = bufferFeature(geometry, radius, units, steps);\n if (buffered) results.push(buffered);\n });\n return featureCollection(results);\n }\n\n // Project GeoJSON to Azimuthal Equidistant projection (convert to Meters)\n var projection = defineProjection(geometry);\n var projected = {\n type: geometry.type,\n coordinates: projectCoords(geometry.coordinates, projection),\n };\n\n // JSTS buffer operation\n var reader = new GeoJSONReader();\n var geom = reader.read(projected);\n var distance = radiansToLength(lengthToRadians(radius, units), \"meters\");\n var buffered = BufferOp.bufferOp(geom, distance, steps);\n var writer = new GeoJSONWriter();\n buffered = writer.write(buffered);\n\n // Detect if empty geometries\n if (coordsIsNaN(buffered.coordinates)) return undefined;\n\n // Unproject coordinates (convert to Degrees)\n var result = {\n type: buffered.type,\n coordinates: unprojectCoords(buffered.coordinates, projection),\n };\n\n return feature(result, properties);\n}\n\n/**\n * Coordinates isNaN\n *\n * @private\n * @param {Array<any>} coords GeoJSON Coordinates\n * @returns {boolean} if NaN exists\n */\nfunction coordsIsNaN(coords) {\n if (Array.isArray(coords[0])) return coordsIsNaN(coords[0]);\n return isNaN(coords[0]);\n}\n\n/**\n * Project coordinates to projection\n *\n * @private\n * @param {Array<any>} coords to project\n * @param {GeoProjection} proj D3 Geo Projection\n * @returns {Array<any>} projected coordinates\n */\nfunction projectCoords(coords, proj) {\n if (typeof coords[0] !== \"object\") return proj(coords);\n return coords.map(function (coord) {\n return projectCoords(coord, proj);\n });\n}\n\n/**\n * Un-Project coordinates to projection\n *\n * @private\n * @param {Array<any>} coords to un-project\n * @param {GeoProjection} proj D3 Geo Projection\n * @returns {Array<any>} un-projected coordinates\n */\nfunction unprojectCoords(coords, proj) {\n if (typeof coords[0] !== \"object\") return proj.invert(coords);\n return coords.map(function (coord) {\n return unprojectCoords(coord, proj);\n });\n}\n\n/**\n * Define Azimuthal Equidistant projection\n *\n * @private\n * @param {Geometry|Feature<any>} geojson Base projection on center of GeoJSON\n * @returns {GeoProjection} D3 Geo Azimuthal Equidistant Projection\n */\nfunction defineProjection(geojson) {\n var coords = center(geojson).geometry.coordinates;\n var rotation = [-coords[0], -coords[1]];\n return geoAzimuthalEquidistant().rotate(rotation).scale(earthRadius);\n}\n\nexport { buffer };\nexport default buffer;\n"],"mappings":"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","names":["feature","geometry","buffered"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@turf/buffer",
3
- "version": "7.1.0",
4
- "description": "turf buffer module",
3
+ "version": "7.3.0",
4
+ "description": "Creates a buffer around a GeoJSON feature.",
5
5
  "author": "Turf Authors",
6
6
  "contributors": [
7
7
  "Tom MacWright <@tmcw>",
@@ -60,26 +60,26 @@
60
60
  "test:types": "tsc --esModuleInterop --module node16 --moduleResolution node16 --noEmit --strict types.ts"
61
61
  },
62
62
  "devDependencies": {
63
- "@turf/truncate": "^7.1.0",
63
+ "@turf/truncate": "7.3.0",
64
64
  "@types/benchmark": "^2.1.5",
65
- "@types/tape": "^4.2.32",
65
+ "@types/tape": "^5.8.1",
66
66
  "benchmark": "^2.1.4",
67
67
  "load-json-file": "^7.0.1",
68
68
  "npm-run-all": "^4.1.5",
69
- "tape": "^5.7.2",
70
- "tsup": "^8.0.1",
71
- "tsx": "^4.6.2",
72
- "write-json-file": "^5.0.0"
69
+ "tape": "^5.9.0",
70
+ "tsup": "^8.4.0",
71
+ "tsx": "^4.19.4",
72
+ "write-json-file": "^6.0.0"
73
73
  },
74
74
  "dependencies": {
75
- "@turf/bbox": "^7.1.0",
76
- "@turf/center": "^7.1.0",
77
- "@turf/helpers": "^7.1.0",
75
+ "@turf/bbox": "7.3.0",
76
+ "@turf/center": "7.3.0",
77
+ "@turf/helpers": "7.3.0",
78
78
  "@turf/jsts": "^2.7.1",
79
- "@turf/meta": "^7.1.0",
80
- "@turf/projection": "^7.1.0",
79
+ "@turf/meta": "7.3.0",
80
+ "@turf/projection": "7.3.0",
81
81
  "@types/geojson": "^7946.0.10",
82
82
  "d3-geo": "1.7.1"
83
83
  },
84
- "gitHead": "68915eeebc9278bb40dec3f1034499698a0561ef"
84
+ "gitHead": "9f58a103e8f9a587ab640307ed03ba5233913ddd"
85
85
  }