2

我正在尝试为一组纬度/经度点生成 Voronoi 图。

var points = [["-87.63374","41.878723"],["-87.680622","41.829353"],["-87.631739","41.8768"],["-87.626149","41.884431"]] ;
var boundingRegion = d3.geom.polygon([
    [-88, 41.7],
    [-88, 42.3],
    [-87.5, 42.3],
    [-87.5, 41.7]
    ]);

var voronoi = d3.geom.voronoi(points).map(function(cell) {
    return boundingRegion.clip(cell);
});

document.write("<pre>"+JSON.stringify(voronoi, null, ' ')+"</pre>");​

我在这里有一个用于该基本示例的 JSFiddle:

http://jsfiddle.net/ZzjpC/2/

我输入 4 个点并使用一个简单的矩形对它们进行剪裁。

这些点是这样的,我应该看到每个生成的 Voronoi 区域至少有一个剪裁顶点......单独的第一个不符合这一点。

当你在谷歌地图上绘制它们时,多边形相交并且完全混乱。

如果您查看http://jsfiddle.net/ZzjpC/3/,最后一点已被删除,一切看起来都很好。

所以这是我的问题:我的点集是否有问题导致 Voronoi 图生成失败?或者这是一个 D3 错误,我应该告诉那些人?

4

1 回答 1

1

原来问题在于我的 Voronoi 站点 ( points) 是字符串数组而不是浮点数,这是问题的原因。我的猜测是在某处发生了一个加法,它被作为字符串连接执行,并且破坏了事情。

将 转换points为浮点数而不是字符串可以解决问题。

于 2013-01-05T15:00:51.687 回答