Ich habe einen großen Datensatz von geographischen Punkten (rund 22 000 Punkte, aber ich könnte mehr in der Zukunft sein) und ich muss ihre Voronoï-Diagramm berechnen. Ich projiziere zuerst meine Punkte von (lat,lng)
bis (x,y)
(mit latLngToLayerPoint() aus Leaflet) und berechne dann das Diagramm basierend auf einem Javascript implementation of Fortune's algorithm. I zu jede Zelle der Diagramme oder genauer va
und vb
jeweils infrage kommen:Berechnen Voronoï Diagramm auf einem großen Datensatz von sehr nahen Punkten
„A Voronoi.Vertex Objekt mit einer x und y-Eigenschaft Definition den Start- Punktes (bezogen auf die Voronoi Stelle auf der linken Seite) von diesem Voronoi.Edge Objekt. "
und
"A Voronoi.Vertex Objekt mit einer x und einer y-Eigenschaft definiert, um das Ende Punkt (bezogen auf Voronoi Stelle auf der linken Seite) dieses Voronoi.Edge Objekt."
(vgl Dokumentation)
Schließlich Projekt, das ich diese Punkte wieder das Diagramm angezeigt werden Faltblatt mit. Ich weiß, dass jeder Punkt einzigartig sein muss, um das Diagramm zu berechnen, also werde ich die Duplikate los, bevor ich das Diagramm berechne. Aber die Sache ist, dass ich mit einem ziemlich schlechten Ergebnis am Ende (nicht-knotigen Kreuzungen, komplexe Polygone):
Nahaufnahme
Ich habe Löcher in dem Diagramm und ich bin mir nicht sicher warum. Die Punkte sind Hausadresse, also sind einige von ihnen, selbst wenn sie nicht gleich sind, wirklich (wirklich) nah. Und ich frage mich, ob das Problem nicht von der Projektion kommt (wenn (lat1,lng1)
und (lat2,lng2)
fast gleich sind, werden (x1,y1)
und (x2,y2)
gleich sein?). Ich vermute stark, dass ist, wo das Problem herkommen, aber ich weiß nicht, wie man umgehen kann (einen Schwellenwert festlegen?)
Bearbeiten: Ich präzis, dass ich die Duplikate nach der Projektion löschen, so ist es nicht über die Präzision der Projektion, aber mehr darüber, was passiert, wenn zwei Punkte ein Pixel auseinander liegen?
Sind die Lat/Long-Werte oder die X/Y-Werte dedupliziert? Für die Deduplizierung basierend auf "nahe genug" müssten Sie einen Wert finden, der für Sie funktioniert. Du hast erwähnt, dass du mit Adressen arbeitest. Meiner Meinung nach, wenn zwei Punkte nur 10 Fuß voneinander entfernt sind, würde ich sie als Duplikate betrachten. –
Ich deduiere die X/Y-Werte, um die "nahe genug" zu vermeiden – kwn