【问题标题】:Getting the centroid of each polygon from a GeoJson multipolygon in d3.js从 d3.js 中的 GeoJson 多多边形中获取每个多边形的质心
【发布时间】:2013-11-29 10:14:45
【问题描述】:

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

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

是否可以遍历多边形特征中的每个多边形并获得其质心?

谢谢!

【问题讨论】:

  • 您需要遍历多面体的 .coordinates 成员。
  • 我没有尝试缩小,但我在这里的状态中心显示了条形:vida.io/documents/s5qo5Gwrct5HNxAD2
  • @PhuocDo 您正在每个州/多边形获得一个质心,而我正在寻找每个州的每个质心。就像获取阿拉斯加每个岛屿的质心一样。
  • @LarsKotthoff 所以有必要手动计算每个质心并存储为每个多边形的属性吗?你会怎么计算呢?谢谢
  • 正如我所说,多面体由一个多边形列表组成,您可以通过.coordinates 访问这些多边形。对于其中的每一个,您应该能够以与通常相同的方式计算质心。

标签: javascript svg d3.js geojson


【解决方案1】:

最后我决定像@LarsKotthoff 提到的那样,通过迭代geometry.coordinates 来分割多边形中的多面体。使用这些多边形,我创建了一个新的特征数组,其中没有 Multipolygon 类型。从此数组中将路径添加到 svg,从而生成多个具有相同 id 和名称的多边形,即加拿大的多个多边形具有相同的国家/地区缩写。

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

【讨论】:

    猜你喜欢
    • 2017-02-26
    • 2022-12-22
    • 2020-12-14
    • 2013-02-20
    • 2014-10-06
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多