| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587 |
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});// index.js
- var _helpers = require('@turf/helpers');
- function coordEach(geojson, callback, excludeWrapCoord) {
- if (geojson === null) return;
- var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === "FeatureCollection", isFeature = type === "Feature", stop = isFeatureCollection ? geojson.features.length : 1;
- for (var featureIndex = 0; featureIndex < stop; featureIndex++) {
- geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;
- isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === "GeometryCollection" : false;
- stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;
- for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {
- var multiFeatureIndex = 0;
- var geometryIndex = 0;
- geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;
- if (geometry === null) continue;
- coords = geometry.coordinates;
- var geomType = geometry.type;
- wrapShrink = excludeWrapCoord && (geomType === "Polygon" || geomType === "MultiPolygon") ? 1 : 0;
- switch (geomType) {
- case null:
- break;
- case "Point":
- if (callback(
- coords,
- coordIndex,
- featureIndex,
- multiFeatureIndex,
- geometryIndex
- ) === false)
- return false;
- coordIndex++;
- multiFeatureIndex++;
- break;
- case "LineString":
- case "MultiPoint":
- for (j = 0; j < coords.length; j++) {
- if (callback(
- coords[j],
- coordIndex,
- featureIndex,
- multiFeatureIndex,
- geometryIndex
- ) === false)
- return false;
- coordIndex++;
- if (geomType === "MultiPoint") multiFeatureIndex++;
- }
- if (geomType === "LineString") multiFeatureIndex++;
- break;
- case "Polygon":
- case "MultiLineString":
- for (j = 0; j < coords.length; j++) {
- for (k = 0; k < coords[j].length - wrapShrink; k++) {
- if (callback(
- coords[j][k],
- coordIndex,
- featureIndex,
- multiFeatureIndex,
- geometryIndex
- ) === false)
- return false;
- coordIndex++;
- }
- if (geomType === "MultiLineString") multiFeatureIndex++;
- if (geomType === "Polygon") geometryIndex++;
- }
- if (geomType === "Polygon") multiFeatureIndex++;
- break;
- case "MultiPolygon":
- for (j = 0; j < coords.length; j++) {
- geometryIndex = 0;
- for (k = 0; k < coords[j].length; k++) {
- for (l = 0; l < coords[j][k].length - wrapShrink; l++) {
- if (callback(
- coords[j][k][l],
- coordIndex,
- featureIndex,
- multiFeatureIndex,
- geometryIndex
- ) === false)
- return false;
- coordIndex++;
- }
- geometryIndex++;
- }
- multiFeatureIndex++;
- }
- break;
- case "GeometryCollection":
- for (j = 0; j < geometry.geometries.length; j++)
- if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false)
- return false;
- break;
- default:
- throw new Error("Unknown Geometry Type");
- }
- }
- }
- }
- function coordReduce(geojson, callback, initialValue, excludeWrapCoord) {
- var previousValue = initialValue;
- coordEach(
- geojson,
- function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
- if (coordIndex === 0 && initialValue === void 0)
- previousValue = currentCoord;
- else
- previousValue = callback(
- previousValue,
- currentCoord,
- coordIndex,
- featureIndex,
- multiFeatureIndex,
- geometryIndex
- );
- },
- excludeWrapCoord
- );
- return previousValue;
- }
- function propEach(geojson, callback) {
- var i;
- switch (geojson.type) {
- case "FeatureCollection":
- for (i = 0; i < geojson.features.length; i++) {
- if (callback(geojson.features[i].properties, i) === false) break;
- }
- break;
- case "Feature":
- callback(geojson.properties, 0);
- break;
- }
- }
- function propReduce(geojson, callback, initialValue) {
- var previousValue = initialValue;
- propEach(geojson, function(currentProperties, featureIndex) {
- if (featureIndex === 0 && initialValue === void 0)
- previousValue = currentProperties;
- else
- previousValue = callback(previousValue, currentProperties, featureIndex);
- });
- return previousValue;
- }
- function featureEach(geojson, callback) {
- if (geojson.type === "Feature") {
- callback(geojson, 0);
- } else if (geojson.type === "FeatureCollection") {
- for (var i = 0; i < geojson.features.length; i++) {
- if (callback(geojson.features[i], i) === false) break;
- }
- }
- }
- function featureReduce(geojson, callback, initialValue) {
- var previousValue = initialValue;
- featureEach(geojson, function(currentFeature, featureIndex) {
- if (featureIndex === 0 && initialValue === void 0)
- previousValue = currentFeature;
- else previousValue = callback(previousValue, currentFeature, featureIndex);
- });
- return previousValue;
- }
- function coordAll(geojson) {
- var coords = [];
- coordEach(geojson, function(coord) {
- coords.push(coord);
- });
- return coords;
- }
- function geomEach(geojson, callback) {
- var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === "FeatureCollection", isFeature = geojson.type === "Feature", stop = isFeatureCollection ? geojson.features.length : 1;
- for (i = 0; i < stop; i++) {
- geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;
- featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};
- featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : void 0;
- featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : void 0;
- isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === "GeometryCollection" : false;
- stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;
- for (g = 0; g < stopG; g++) {
- geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;
- if (geometry === null) {
- if (callback(
- null,
- featureIndex,
- featureProperties,
- featureBBox,
- featureId
- ) === false)
- return false;
- continue;
- }
- switch (geometry.type) {
- case "Point":
- case "LineString":
- case "MultiPoint":
- case "Polygon":
- case "MultiLineString":
- case "MultiPolygon": {
- if (callback(
- geometry,
- featureIndex,
- featureProperties,
- featureBBox,
- featureId
- ) === false)
- return false;
- break;
- }
- case "GeometryCollection": {
- for (j = 0; j < geometry.geometries.length; j++) {
- if (callback(
- geometry.geometries[j],
- featureIndex,
- featureProperties,
- featureBBox,
- featureId
- ) === false)
- return false;
- }
- break;
- }
- default:
- throw new Error("Unknown Geometry Type");
- }
- }
- featureIndex++;
- }
- }
- function geomReduce(geojson, callback, initialValue) {
- var previousValue = initialValue;
- geomEach(
- geojson,
- function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {
- if (featureIndex === 0 && initialValue === void 0)
- previousValue = currentGeometry;
- else
- previousValue = callback(
- previousValue,
- currentGeometry,
- featureIndex,
- featureProperties,
- featureBBox,
- featureId
- );
- }
- );
- return previousValue;
- }
- function flattenEach(geojson, callback) {
- geomEach(geojson, function(geometry, featureIndex, properties, bbox, id) {
- var type = geometry === null ? null : geometry.type;
- switch (type) {
- case null:
- case "Point":
- case "LineString":
- case "Polygon":
- if (callback(
- _helpers.feature.call(void 0, geometry, properties, { bbox, id }),
- featureIndex,
- 0
- ) === false)
- return false;
- return;
- }
- var geomType;
- switch (type) {
- case "MultiPoint":
- geomType = "Point";
- break;
- case "MultiLineString":
- geomType = "LineString";
- break;
- case "MultiPolygon":
- geomType = "Polygon";
- break;
- }
- for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {
- var coordinate = geometry.coordinates[multiFeatureIndex];
- var geom = {
- type: geomType,
- coordinates: coordinate
- };
- if (callback(_helpers.feature.call(void 0, geom, properties), featureIndex, multiFeatureIndex) === false)
- return false;
- }
- });
- }
- function flattenReduce(geojson, callback, initialValue) {
- var previousValue = initialValue;
- flattenEach(
- geojson,
- function(currentFeature, featureIndex, multiFeatureIndex) {
- if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === void 0)
- previousValue = currentFeature;
- else
- previousValue = callback(
- previousValue,
- currentFeature,
- featureIndex,
- multiFeatureIndex
- );
- }
- );
- return previousValue;
- }
- function segmentEach(geojson, callback) {
- flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {
- var segmentIndex = 0;
- if (!feature2.geometry) return;
- var type = feature2.geometry.type;
- if (type === "Point" || type === "MultiPoint") return;
- var previousCoords;
- var previousFeatureIndex = 0;
- var previousMultiIndex = 0;
- var prevGeomIndex = 0;
- if (coordEach(
- feature2,
- function(currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {
- if (previousCoords === void 0 || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {
- previousCoords = currentCoord;
- previousFeatureIndex = featureIndex;
- previousMultiIndex = multiPartIndexCoord;
- prevGeomIndex = geometryIndex;
- segmentIndex = 0;
- return;
- }
- var currentSegment = _helpers.lineString.call(void 0,
- [previousCoords, currentCoord],
- feature2.properties
- );
- if (callback(
- currentSegment,
- featureIndex,
- multiFeatureIndex,
- geometryIndex,
- segmentIndex
- ) === false)
- return false;
- segmentIndex++;
- previousCoords = currentCoord;
- }
- ) === false)
- return false;
- });
- }
- function segmentReduce(geojson, callback, initialValue) {
- var previousValue = initialValue;
- var started = false;
- segmentEach(
- geojson,
- function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {
- if (started === false && initialValue === void 0)
- previousValue = currentSegment;
- else
- previousValue = callback(
- previousValue,
- currentSegment,
- featureIndex,
- multiFeatureIndex,
- geometryIndex,
- segmentIndex
- );
- started = true;
- }
- );
- return previousValue;
- }
- function lineEach(geojson, callback) {
- if (!geojson) throw new Error("geojson is required");
- flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {
- if (feature2.geometry === null) return;
- var type = feature2.geometry.type;
- var coords = feature2.geometry.coordinates;
- switch (type) {
- case "LineString":
- if (callback(feature2, featureIndex, multiFeatureIndex, 0, 0) === false)
- return false;
- break;
- case "Polygon":
- for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {
- if (callback(
- _helpers.lineString.call(void 0, coords[geometryIndex], feature2.properties),
- featureIndex,
- multiFeatureIndex,
- geometryIndex
- ) === false)
- return false;
- }
- break;
- }
- });
- }
- function lineReduce(geojson, callback, initialValue) {
- var previousValue = initialValue;
- lineEach(
- geojson,
- function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {
- if (featureIndex === 0 && initialValue === void 0)
- previousValue = currentLine;
- else
- previousValue = callback(
- previousValue,
- currentLine,
- featureIndex,
- multiFeatureIndex,
- geometryIndex
- );
- }
- );
- return previousValue;
- }
- function findSegment(geojson, options) {
- options = options || {};
- if (!_helpers.isObject.call(void 0, options)) throw new Error("options is invalid");
- var featureIndex = options.featureIndex || 0;
- var multiFeatureIndex = options.multiFeatureIndex || 0;
- var geometryIndex = options.geometryIndex || 0;
- var segmentIndex = options.segmentIndex || 0;
- var properties = options.properties;
- var geometry;
- switch (geojson.type) {
- case "FeatureCollection":
- if (featureIndex < 0)
- featureIndex = geojson.features.length + featureIndex;
- properties = properties || geojson.features[featureIndex].properties;
- geometry = geojson.features[featureIndex].geometry;
- break;
- case "Feature":
- properties = properties || geojson.properties;
- geometry = geojson.geometry;
- break;
- case "Point":
- case "MultiPoint":
- return null;
- case "LineString":
- case "Polygon":
- case "MultiLineString":
- case "MultiPolygon":
- geometry = geojson;
- break;
- default:
- throw new Error("geojson is invalid");
- }
- if (geometry === null) return null;
- var coords = geometry.coordinates;
- switch (geometry.type) {
- case "Point":
- case "MultiPoint":
- return null;
- case "LineString":
- if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;
- return _helpers.lineString.call(void 0,
- [coords[segmentIndex], coords[segmentIndex + 1]],
- properties,
- options
- );
- case "Polygon":
- if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;
- if (segmentIndex < 0)
- segmentIndex = coords[geometryIndex].length + segmentIndex - 1;
- return _helpers.lineString.call(void 0,
- [
- coords[geometryIndex][segmentIndex],
- coords[geometryIndex][segmentIndex + 1]
- ],
- properties,
- options
- );
- case "MultiLineString":
- if (multiFeatureIndex < 0)
- multiFeatureIndex = coords.length + multiFeatureIndex;
- if (segmentIndex < 0)
- segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;
- return _helpers.lineString.call(void 0,
- [
- coords[multiFeatureIndex][segmentIndex],
- coords[multiFeatureIndex][segmentIndex + 1]
- ],
- properties,
- options
- );
- case "MultiPolygon":
- if (multiFeatureIndex < 0)
- multiFeatureIndex = coords.length + multiFeatureIndex;
- if (geometryIndex < 0)
- geometryIndex = coords[multiFeatureIndex].length + geometryIndex;
- if (segmentIndex < 0)
- segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;
- return _helpers.lineString.call(void 0,
- [
- coords[multiFeatureIndex][geometryIndex][segmentIndex],
- coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]
- ],
- properties,
- options
- );
- }
- throw new Error("geojson is invalid");
- }
- function findPoint(geojson, options) {
- options = options || {};
- if (!_helpers.isObject.call(void 0, options)) throw new Error("options is invalid");
- var featureIndex = options.featureIndex || 0;
- var multiFeatureIndex = options.multiFeatureIndex || 0;
- var geometryIndex = options.geometryIndex || 0;
- var coordIndex = options.coordIndex || 0;
- var properties = options.properties;
- var geometry;
- switch (geojson.type) {
- case "FeatureCollection":
- if (featureIndex < 0)
- featureIndex = geojson.features.length + featureIndex;
- properties = properties || geojson.features[featureIndex].properties;
- geometry = geojson.features[featureIndex].geometry;
- break;
- case "Feature":
- properties = properties || geojson.properties;
- geometry = geojson.geometry;
- break;
- case "Point":
- case "MultiPoint":
- return null;
- case "LineString":
- case "Polygon":
- case "MultiLineString":
- case "MultiPolygon":
- geometry = geojson;
- break;
- default:
- throw new Error("geojson is invalid");
- }
- if (geometry === null) return null;
- var coords = geometry.coordinates;
- switch (geometry.type) {
- case "Point":
- return _helpers.point.call(void 0, coords, properties, options);
- case "MultiPoint":
- if (multiFeatureIndex < 0)
- multiFeatureIndex = coords.length + multiFeatureIndex;
- return _helpers.point.call(void 0, coords[multiFeatureIndex], properties, options);
- case "LineString":
- if (coordIndex < 0) coordIndex = coords.length + coordIndex;
- return _helpers.point.call(void 0, coords[coordIndex], properties, options);
- case "Polygon":
- if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;
- if (coordIndex < 0)
- coordIndex = coords[geometryIndex].length + coordIndex;
- return _helpers.point.call(void 0, coords[geometryIndex][coordIndex], properties, options);
- case "MultiLineString":
- if (multiFeatureIndex < 0)
- multiFeatureIndex = coords.length + multiFeatureIndex;
- if (coordIndex < 0)
- coordIndex = coords[multiFeatureIndex].length + coordIndex;
- return _helpers.point.call(void 0, coords[multiFeatureIndex][coordIndex], properties, options);
- case "MultiPolygon":
- if (multiFeatureIndex < 0)
- multiFeatureIndex = coords.length + multiFeatureIndex;
- if (geometryIndex < 0)
- geometryIndex = coords[multiFeatureIndex].length + geometryIndex;
- if (coordIndex < 0)
- coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;
- return _helpers.point.call(void 0,
- coords[multiFeatureIndex][geometryIndex][coordIndex],
- properties,
- options
- );
- }
- throw new Error("geojson is invalid");
- }
- exports.coordAll = coordAll; exports.coordEach = coordEach; exports.coordReduce = coordReduce; exports.featureEach = featureEach; exports.featureReduce = featureReduce; exports.findPoint = findPoint; exports.findSegment = findSegment; exports.flattenEach = flattenEach; exports.flattenReduce = flattenReduce; exports.geomEach = geomEach; exports.geomReduce = geomReduce; exports.lineEach = lineEach; exports.lineReduce = lineReduce; exports.propEach = propEach; exports.propReduce = propReduce; exports.segmentEach = segmentEach; exports.segmentReduce = segmentReduce;
- //# sourceMappingURL=index.cjs.map
|