const compareFeatures = function()

in scripts/layerdiff.js [112:168]


const compareFeatures = function ({ id, left, right }) {
  const diffs = {};
  const details = {};

  // Deep comparison of properties using lodash
  diffs.properties = !isEqual(left.properties, right.properties);

  // Geometry check
  const lGeom = left.geometry;
  const rGeom = right.geometry;

  // Area check
  const lArea = getArea(lGeom);
  const rArea = getArea(rGeom);
  const areaDiff = (1 - lArea / rArea) * 100;

  diffs.area = Math.abs(areaDiff) > AREA_DIFF;
  details.area = areaDiff;
  details.areas = {
    left: Math.round(lArea / 1e6) + " km²",
    right: Math.round(rArea / 1e6) + " km²",
  };

  // Centroid check
  const lCentroid = Centroid.getCentroid(lGeom);
  const rCentroid = Centroid.getCentroid(rGeom);

  const centroidDist = Math.floor(
    getDistance(toFeaturePoint(lCentroid), toFeaturePoint(rCentroid))
  );

  diffs.centroid = centroidDist > CENTROID_DIST;
  details.centroid = centroidDist;

  details.centroids = {
    left: `${lCentroid.getX()}, ${lCentroid.getY()}`,
    right: `${rCentroid.getX()}, ${rCentroid.getY()}`,
  };

  // Check parts

  const lParts = lGeom.getNumGeometries();
  const rParts = rGeom.getNumGeometries();
  details.parts = {
    left: lParts,
    right: rParts,
  };
  diffs.parts = CHECK_PARTS && lParts !== rParts;

  return {
    id,
    left,
    right,
    diffs,
    details,
  };
};