Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between centroid and centerOfMass in turf

I need to find the geospatial coordinates of point which is the mean of the distances between all the Features in my GeoJSON dataset. In turf.js both centroid and centerOfMass are presented. The explanation for centerOfMass is that it "takes any Feature or a FeatureCollection and returns its center of mass using this formula: Centroid of Polygon." But centroid and centerOfMass applied to my Features give different results. What is the difference between them? What should be used then?

like image 670
Yarycka Avatar asked May 04 '19 12:05

Yarycka


1 Answers

You've got three options, not two:

  • turf.center (the center of the wrapped bbox)
  • turf.centroid (the purely arithmetic center)
  • turf.centerOfMass (the center of mass you know from physics)

At the end of the day, they serve different purposes but you'd typically decide based on whether your polygon is convex or concave.

For a convex polygon, it doesn't really matter which function you choose -- if, say, you wanted to place the marker near the poly's center:

Center & CenterOfMass roughly the same

For a concave one, the differences are noticeable:

Concave centers


I personally tend to use centerOfMass the most.

like image 194
Joe - Elasticsearch Handbook Avatar answered Nov 05 '22 13:11

Joe - Elasticsearch Handbook