2013-01-05 3 views
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이 : 나는 4 점에 넣고 간단한 사각형을 사용하여 그들을 클리핑있어

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

.

요점은 결과 Voronoi 영역 각각에 대해 적어도 하나의 클리핑 된 꼭지점을보아야한다는 것입니다. 첫 번째 것만이 그것을 충족시키지 못합니다.

Google지도에 플롯하면 폴리곤이 교차하여 완전히 어긋납니다.

마지막 지점이 제거 된 http://jsfiddle.net/ZzjpC/3/을 보면 모든 것이 정상적으로 보입니다.

여기 내 질문이 있습니다. 보로 노이 다이어그램 생성을 실패하게 만드는 점 집합이 잘못되었습니다. 아니면 이것이 D3 버그인가요? 나는 그 사람들에게 말하고 있어야합니까?

답변

1

내 Voronoi 사이트 (points)가 부동 소수점 대신 문자열 배열 이었기 때문에 문제가 발생했습니다. 문제의 원인이 문제였습니다. 내 생각 엔 문자열 연결로 실행 된 어딘가에 추가가 발생했다는 것입니다.

문자열 대신 points을 부동으로 변환하면 문제가 해결됩니다.

관련 문제