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,
};
};