2016-11-19 4 views
0

Ich entwickle ein Projekt, bei dem ich feststellen muss, ob ein bestimmter Bereich von einem bestimmten Ort bedeckt ist. Zum Beispiel:Wie erkennen Sie den Bereich eines bestimmten Ortes in einer Karte in C++?

enter image description here

Angenommen, Bild meine Karte ist, und es gibt zwei Orte mit einem bestimmten Gebiet der mit gelber Farbe und die andere mit grüner Farbe, also wenn ich meine app fragen: „Welche Orte bedecken Sie den Bereich von 1 bis 3 und von A bis F? " Es sollte mir beide Orte sagen, und so weiter.

Ich dachte über die Verwendung einer Matrix, aber ich muss 5 Karten laden, jede unterschiedlich, zum Beispiel beginnt die zweite Karte bei H und endet in M ​​und beginnt in 10 und endet in 30. Also bin ich nicht sicher, was sonst noch zu verwenden, irgendwelche Ideen?

Antwort

1

In der Regel finden zweidimensionale Regionen, die sich überschneiden oder eine andere Region schneiden, eine Aufgabe für die Datenstruktur, die als R-Baum bezeichnet wird. Orte werden in den R-Baum eingegeben. Dann fragen Sie den Baum ab, um zu sehen, welche vom Abfragungsbereich getroffen werden. Sie könnten entweder eine C++ R-Tree-Bibliothek verwenden und die Orte in den In-Memory-R-Tree einfügen. Oder Sie könnten Ihre Orte in eine Datenbank einfügen, die R-Trees unterstützt, wie sqite. Sie würden die Orte in der Datenbank speichern und sie dann in den Speicher einbringen, indem Sie die Datenbank abfragen. Sqlite ist eine In-Process-Datenbank. Sie müssen dafür keinen separaten Server einrichten.

Verwandte Themen