从 d3.js 中的 GeoJson 多多边形获取每个多边形的质心

Getting the centroid of each polygon from a GeoJson multipolygon in d3.js

本文关键字:多边形 获取 js 中的 GeoJson 多多 d3      更新时间:2023-09-26

我正在使用d3.js用于非连续制图,其中国家根据某些数据进行缩放。我正在从 GeoJson 文件生成的 svg 中每个国家/路径的质心进行缩放,但对于被描述为多多边形的国家/地区(如美国或加拿大)来说,这看起来并不好。

我想找到形成多多边形的每个多边形的质心,这样我就可以在不平移它们的情况下重新缩放。例如,当使用美国的质心时,阿拉斯加向右移动(在墨卡托投影中),而其余部分向上移动。理想情况下,阿拉斯加将从自己的质心缩放,因此它将保持在同一位置。

是否可以遍历多面要素中的每个面并获取其质心?

谢谢!

最后,

我决定通过迭代几何坐标来分割多边形中的多多边形,如@LarsKotthoff所述。使用这些面,我创建了一个新的要素数组,其中没有多面类型。路径从此数组添加到 svg,导致多个多边形具有相同的 id 和名称,即具有相同国家/地区缩写的加拿大的多个多边形。

因此,你可以继续使用 d3 的 path.centroid() 来获取每个多边形的质心。