| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// index.js
- var _center = require('@turf/center');
- var _jsts = require('@turf/jsts'); var _jsts2 = _interopRequireDefault(_jsts);
- var _meta = require('@turf/meta');
- var _d3geo = require('d3-geo');
- var _helpers = require('@turf/helpers');
- var { BufferOp, GeoJSONReader, GeoJSONWriter } = _jsts2.default;
- function buffer(geojson, radius, options) {
- options = options || {};
- var units = options.units || "kilometers";
- var steps = options.steps || 8;
- if (!geojson) throw new Error("geojson is required");
- if (typeof options !== "object") throw new Error("options must be an object");
- if (typeof steps !== "number") throw new Error("steps must be an number");
- if (radius === void 0) throw new Error("radius is required");
- if (steps <= 0) throw new Error("steps must be greater than 0");
- var results = [];
- switch (geojson.type) {
- case "GeometryCollection":
- _meta.geomEach.call(void 0, geojson, function(geometry) {
- var buffered = bufferFeature(geometry, radius, units, steps);
- if (buffered) results.push(buffered);
- });
- return _helpers.featureCollection.call(void 0, results);
- case "FeatureCollection":
- _meta.featureEach.call(void 0, geojson, function(feature2) {
- var multiBuffered = bufferFeature(feature2, radius, units, steps);
- if (multiBuffered) {
- _meta.featureEach.call(void 0, multiBuffered, function(buffered) {
- if (buffered) results.push(buffered);
- });
- }
- });
- return _helpers.featureCollection.call(void 0, results);
- }
- return bufferFeature(geojson, radius, units, steps);
- }
- function bufferFeature(geojson, radius, units, steps) {
- var properties = geojson.properties || {};
- var geometry = geojson.type === "Feature" ? geojson.geometry : geojson;
- if (geometry.type === "GeometryCollection") {
- var results = [];
- _meta.geomEach.call(void 0, geojson, function(geometry2) {
- var buffered2 = bufferFeature(geometry2, radius, units, steps);
- if (buffered2) results.push(buffered2);
- });
- return _helpers.featureCollection.call(void 0, results);
- }
- var projection = defineProjection(geometry);
- var projected = {
- type: geometry.type,
- coordinates: projectCoords(geometry.coordinates, projection)
- };
- var reader = new GeoJSONReader();
- var geom = reader.read(projected);
- var distance = _helpers.radiansToLength.call(void 0, _helpers.lengthToRadians.call(void 0, radius, units), "meters");
- var buffered = BufferOp.bufferOp(geom, distance, steps);
- var writer = new GeoJSONWriter();
- buffered = writer.write(buffered);
- if (coordsIsNaN(buffered.coordinates)) return void 0;
- var result = {
- type: buffered.type,
- coordinates: unprojectCoords(buffered.coordinates, projection)
- };
- return _helpers.feature.call(void 0, result, properties);
- }
- function coordsIsNaN(coords) {
- if (Array.isArray(coords[0])) return coordsIsNaN(coords[0]);
- return isNaN(coords[0]);
- }
- function projectCoords(coords, proj) {
- if (typeof coords[0] !== "object") return proj(coords);
- return coords.map(function(coord) {
- return projectCoords(coord, proj);
- });
- }
- function unprojectCoords(coords, proj) {
- if (typeof coords[0] !== "object") return proj.invert(coords);
- return coords.map(function(coord) {
- return unprojectCoords(coord, proj);
- });
- }
- function defineProjection(geojson) {
- var coords = _center.center.call(void 0, geojson).geometry.coordinates;
- var rotation = [-coords[0], -coords[1]];
- return _d3geo.geoAzimuthalEquidistant.call(void 0, ).rotate(rotation).scale(_helpers.earthRadius);
- }
- var turf_buffer_default = buffer;
- exports.buffer = buffer; exports.default = turf_buffer_default;
- //# sourceMappingURL=index.cjs.map
|