Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <script src="https://cdn.jsdelivr.net/npm/@turf/turf@5/turf.min.js"></script>
   
<script src="//jashkenas.github.io/underscore/underscore-min.js"></script>
</body>
</html>
 
console.clear();
const data = [
  [
    42.890625,
    53.330872983017066
  ],
  [
    49.5703125,
    58.81374171570782
  ],
  [
    49.92187499999999,
    54.57206165565852
  ],
  [
    57.30468749999999,
    56.75272287205736
  ],
  [
    57.65624999999999,
    52.05249047600099
  ],
  [
    57.30468749999999,
    56.75272287205736
  ],
  [
    49.92187499999999,
    54.57206165565852
  ]
];
const getLineFeatures = (data) => {
  let lineFeatures = [];
  for (let idx = 0; idx < data.length - 1; idx++) {
    lineFeatures.push(turf.lineString([data[idx], data[idx + 1]]));
  }
  return lineFeatures;
}
function getFeatureCollection(features) {
  return turf.helpers.featureCollection(features);
}
function findOverlappingLine(lineFeatures) {
  let duplicateIndex = new Set();
  for (let xdx = 0; xdx < lineFeatures.length; xdx++) {
    const curLine = lineFeatures[xdx];
    if (duplicateIndex.has(xdx)) {
      continue;
    }
    for (let ydx = xdx + 1; ydx < lineFeatures.length; ydx++) {
      const nextline = lineFeatures[ydx];
      const c = turf.invariant.getCoords(curLine);
      const n = turf.invariant.getCoords(nextline);
      const doesOverlap = turf.booleanEqual(curLine, nextline) || turf.booleanEqual(curLine, turf.flip(nextline));
      console.log('result ' + doesOverlap);
      if (doesOverlap) {
        duplicateIndex.add(ydx);
      }
    }
  }
}
const lineFeatures = getLineFeatures(data);
const geoJSON = getFeatureCollection(lineFeatures);
findOverlappingLine(lineFeatures);
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers