为什么我得到一个不正确的Voronoi图?

时间:2013-01-05 00:59:54

标签: d3.js voronoi

我正在尝试为一组纬度/经度点生成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个点并剪切它们。

这些点是这样的,我应该看到每个得到的Vor​​onoi区域至少有一个被修剪的顶点......单独的第一个就不符合这个。

当您在Google地图上绘制它们时,多边形相交并完全混乱。

如果你看一下http://jsfiddle.net/ZzjpC/3/,最后一点被删除了,一切看起来都不错。

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

1 个答案:

答案 0 :(得分:1)

事实证明问题在于我的Voronoi网站(points)是字符串数组而不是浮点数是导致问题的原因。我的猜测是,在某个地方发生了一个额外的事情,它被作为一个字符串连接而被执行而且破坏了事情。

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