2

緯度/経度の点のセットに対してボロノイ図を生成しようとしています。

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つのポイントを入れて、単純な長方形を使用してそれらをクリップしています。

ポイントは、結果のボロノイ領域ごとに少なくとも1つのクリップされた頂点が表示されるようにする必要があります...最初の1つだけではそれを満たしていません。

それらをGoogleマップにプロットすると、ポリゴンは交差し、完全に混乱しています。

最後のポイントが削除されたhttp://jsfiddle.net/ZzjpC/3/を見ると、すべてが正常に見えます。

だからここに私の質問があります:ボロノイ図の生成が失敗する原因となっている私のポイントのセットに何か問題がありますか?それとも、これはD3のバグであり、私はそれらの人々に伝える必要がありますか?

4

1 に答える 1

1

問題は、私のボロノイサイト(points)がフロートではなく文字列の配列であるという事実が問題の原因であることが判明しました。私の推測では、代わりに文字列連結として実行され、物事を壊した追加がどこかで行われたと思います。

文字列ではなくfloatに変換するpointsと、問題が修正されました。

于 2013-01-05T15:00:51.687 に答える