effizienter Weg, um 2-Zeilen-Segmente zu behandeln

8
  

Ich habe riesige 2D-Liniensegmente. Also, ich weiß es; Zeilennummer,   Beginne (X, Y, Z) und Ende (x, Y, Z) jedes Liniensegments. ich möchte bekommen   Näherungsliniensegmente für ein gegebenes Liniensegment. Ebenso für alle.

     

Um die Nähe zu finden, kann ich this

Wenn ich meine Daten sage, ist das wie;

Also, am Ende Ich möchte Näherungslinien als Vektor für jedes Liniensegment erhalten. Ich habe gehört, dass diese Art von Vektor von Vektor mit R-Baum Datenstrukturen genommen werden kann. Ich habe es gesucht, konnte aber immer noch nicht das relevante für mich finden. Ich habe auch in opencv nachgesehen, da ist ein r-Baum, aber es sagt etwas über Klassifikator und Trainingsphase aus ... also, ich schätze, es passt nicht zu mir.

Kann jemand wissen, wie man Zeile no bekommt, dann die Nachbarzeilen für ex;

  

1 = {2,4,, 7,66,32,12}

     

2 = {1,4,5,6}

     

3 = {...} .. ..   diese Art von Vektor des Vektors mit r-Baum.

Ich weiß, wir können diese Art von Vektoren mit kd-tree bekommen. Aber es ist für die Punktdaten ausgelegt. Also, es ist schwer, kd-Baum für diesen Fall zu verwenden, denke ich. jede Hilfe bitte, danke.

    
gnp 18.03.2013, 12:12
quelle

3 Antworten

4

Die Suche nach den nächstgelegenen Segmenten sollte theoretisch möglich sein, indem eine beliebige Art von räumlichen Index- oder Raumpartitionierungsdatenstrukturen verwendet wird. Meistens erlaubt die Schnittstelle eines solchen räumlichen Indexes das Speichern von Boxen (AABBs) oder Punkten, so dass Sie gezwungen wären, umgebende Boxen von Segmenten zu speichern und dann nach der Abfrage nach den nächsten Boxen die entsprechenden Segmente erneut zu prüfen. Es ist jedoch möglich, Segmente direkt zu indizieren. Z.B. im Fall von kd-tree wäre es eine Version, die interne Knoten enthält, die Teilungsebenen definieren, und Blätter, die Segmente speichern.

Boost.Geometry R-tree unterstützt Segmente in Boost Version 1.56.0 und höher. Unten ist das Beispiel für 2D-Segmente, die diese räumliche Indeximplementierung verwenden:

%Vor%

Falls Sie ALLE Segmente benötigen, die näher als ein Schwellenwert sind, können Sie iterative Abfragen ( Beispiel ).

    
Adam Wulkiewicz 01.08.2014 15:43
quelle
3

Ja, R-Bäume können dies tun . Sie sind für beliebige Objekte mit räumlicher Ausdehnung konzipiert, die nicht auf Punktdaten beschränkt sind. Tatsächlich verwendeten einige der frühesten Beispiele Polygone .

Haben Sie versucht, sie zu benutzen?

    
Anony-Mousse 18.03.2013 17:47
quelle
1

Erstellen Sie ein Voronoi-Segmentdiagramm und nehmen Sie dann Nachbarschaftskandidaten aus benachbarten Zellen .

    
n.m. 18.03.2013 17:45
quelle

Tags und Links