index.cjs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. "use strict";Object.defineProperty(exports, "__esModule", {value: true});// index.ts
  2. var _meta = require('@turf/meta');
  3. var _invariant = require('@turf/invariant');
  4. var _lineoverlap = require('@turf/line-overlap');
  5. var _lineintersect = require('@turf/line-intersect');
  6. var _geojsonequalityts = require('geojson-equality-ts');
  7. function booleanOverlap(feature1, feature2) {
  8. const geom1 = _invariant.getGeom.call(void 0, feature1);
  9. const geom2 = _invariant.getGeom.call(void 0, feature2);
  10. const type1 = geom1.type;
  11. const type2 = geom2.type;
  12. if (type1 === "MultiPoint" && type2 !== "MultiPoint" || (type1 === "LineString" || type1 === "MultiLineString") && type2 !== "LineString" && type2 !== "MultiLineString" || (type1 === "Polygon" || type1 === "MultiPolygon") && type2 !== "Polygon" && type2 !== "MultiPolygon") {
  13. throw new Error("features must be of the same type");
  14. }
  15. if (type1 === "Point") throw new Error("Point geometry not supported");
  16. if (_geojsonequalityts.geojsonEquality.call(void 0, feature1, feature2, { precision: 6 }))
  17. return false;
  18. let overlap = 0;
  19. switch (type1) {
  20. case "MultiPoint":
  21. for (var i = 0; i < geom1.coordinates.length; i++) {
  22. for (var j = 0; j < geom2.coordinates.length; j++) {
  23. var coord1 = geom1.coordinates[i];
  24. var coord2 = geom2.coordinates[j];
  25. if (coord1[0] === coord2[0] && coord1[1] === coord2[1]) {
  26. return true;
  27. }
  28. }
  29. }
  30. return false;
  31. case "LineString":
  32. case "MultiLineString":
  33. _meta.segmentEach.call(void 0, feature1, (segment1) => {
  34. _meta.segmentEach.call(void 0, feature2, (segment2) => {
  35. if (_lineoverlap.lineOverlap.call(void 0, segment1, segment2).features.length) overlap++;
  36. });
  37. });
  38. break;
  39. case "Polygon":
  40. case "MultiPolygon":
  41. _meta.segmentEach.call(void 0, feature1, (segment1) => {
  42. _meta.segmentEach.call(void 0, feature2, (segment2) => {
  43. if (_lineintersect.lineIntersect.call(void 0, segment1, segment2).features.length) overlap++;
  44. });
  45. });
  46. break;
  47. }
  48. return overlap > 0;
  49. }
  50. var turf_boolean_overlap_default = booleanOverlap;
  51. exports.booleanOverlap = booleanOverlap; exports.default = turf_boolean_overlap_default;
  52. //# sourceMappingURL=index.cjs.map