function aggregateFeaturesData(mapGeo, dataGeo) {
let centroids = mapFeatures(dataGeo, (f) => {
if (turf.getType(f) === "Point") return f;
const p = turf.centroid(f, { properties: f.properties });
return p;
});
centroids = turf.featureCollection(centroids);
const allowedShapes = ["Polygon", "MultiPolygon"];
let updatedMapGeo = mapFeatures(mapGeo, (f) => {
if (allowedShapes.includes(turf.getType(f))) {
const geo = turf.pointsWithinPolygon(centroids, f);
f.properties.__pointsCount = geo.features?.length || 0;
f.properties.__center = turf.getCoord(turf.center(f));
}
return f;
});
updatedMapGeo=updatedMapGeo.filter(d => d.properties.__pointsCount)
return turf.featureCollection(updatedMapGeo);
}