我有一個很大的地理點數據集(大約22000點,但我可能會在將來更多),我需要計算他們的沃羅諾圖。我首先從(lat,lng)
到(x,y)
(使用Leaflet中的latLngToLayerPoint())計算我的分數,然後根據Javascript implementation of Fortune's algorithm計算圖。我恢復或框圖的每個細胞更精確地va
和vb
,分別爲:在非常接近的點的大型數據集上計算沃羅諾圖
「具有x和y屬性定義開始 點(相對於沃羅諾伊站點左側)甲Voronoi.Vertex對象這個Voronoi.Edge 對象。「
和
「具有x和y屬性定義所述端 點(相對於左側沃羅諾伊點)此Voronoi.Edge 對象的Voronoi.Vertex對象」。
(參見文檔)
最後,我被投影回這些點用單張顯示圖。我知道,爲了計算圖,每個點都需要是唯一的,所以我在計算圖之前擺脫了重複。但事實是,我結束了一個非常糟糕的結果(非聯接的交叉口,複雜的多邊形):
特寫
我有圖中孔我不知道爲什麼。這些要點是房屋地址,所以他們中的一些人,即使他們不是平等的,真的(真的)很接近。我想知道問題是否不是來自投影(如果(lat1,lng1)
和(lat2,lng2)
幾乎相等,(x1,y1)
和(x2,y2)
是否等於?)。我強烈懷疑這是問題的來源,但我不知道如何解決方法(建立一個閾值?)
編輯:我確切地說我刪除投影后的副本,所以它不是關於投影的精度,但更多關於如果兩點相距一個像素會發生什麼?
你是在扣除緯度/長度值還是x/y值?至於基於「足夠接近」的重複數據刪除,您必須找到適合您的值。你提到你正在處理地址,所以在我看來,如果兩點距離彼此不到10英尺,我會認爲它們是重複的。 –
爲了避免「足夠接近」我正在扣除x/y值 – kwn