| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});// index.ts
- var _bbox = require('@turf/bbox');
- var _invariant = require('@turf/invariant');
- var _helpers = require('@turf/helpers');
- var _clone = require('@turf/clone');
- function lineToPolygon(lines, options = {}) {
- var _a, _b, _c;
- var properties = options.properties;
- var autoComplete = (_a = options.autoComplete) != null ? _a : true;
- var orderCoords = (_b = options.orderCoords) != null ? _b : true;
- var mutate = (_c = options.mutate) != null ? _c : false;
- if (!mutate) {
- lines = _clone.clone.call(void 0, lines);
- }
- switch (lines.type) {
- case "FeatureCollection":
- var coords = [];
- lines.features.forEach(function(line) {
- coords.push(
- _invariant.getCoords.call(void 0, lineStringToPolygon(line, {}, autoComplete, orderCoords))
- );
- });
- return _helpers.multiPolygon.call(void 0, coords, properties);
- default:
- return lineStringToPolygon(lines, properties, autoComplete, orderCoords);
- }
- }
- function lineStringToPolygon(line, properties, autoComplete, orderCoords) {
- properties = properties ? properties : line.type === "Feature" ? line.properties : {};
- var geom = _invariant.getGeom.call(void 0, line);
- var coords = geom.coordinates;
- var type = geom.type;
- if (!coords.length) throw new Error("line must contain coordinates");
- switch (type) {
- case "LineString":
- if (autoComplete) coords = autoCompleteCoords(coords);
- return _helpers.polygon.call(void 0, [coords], properties);
- case "MultiLineString":
- var multiCoords = [];
- var largestArea = 0;
- coords.forEach(function(coord) {
- if (autoComplete) coord = autoCompleteCoords(coord);
- if (orderCoords) {
- var area = calculateArea(_bbox.bbox.call(void 0, _helpers.lineString.call(void 0, coord)));
- if (area > largestArea) {
- multiCoords.unshift(coord);
- largestArea = area;
- } else multiCoords.push(coord);
- } else {
- multiCoords.push(coord);
- }
- });
- return _helpers.polygon.call(void 0, multiCoords, properties);
- default:
- throw new Error("geometry type " + type + " is not supported");
- }
- }
- function autoCompleteCoords(coords) {
- var first = coords[0];
- var x1 = first[0];
- var y1 = first[1];
- var last = coords[coords.length - 1];
- var x2 = last[0];
- var y2 = last[1];
- if (x1 !== x2 || y1 !== y2) {
- coords.push(first);
- }
- return coords;
- }
- function calculateArea(bbox) {
- var west = bbox[0];
- var south = bbox[1];
- var east = bbox[2];
- var north = bbox[3];
- return Math.abs(west - east) * Math.abs(south - north);
- }
- var turf_line_to_polygon_default = lineToPolygon;
- exports.default = turf_line_to_polygon_default; exports.lineToPolygon = lineToPolygon;
- //# sourceMappingURL=index.cjs.map
|