2011-01-05 9 views
1

Ich habe eine Reihe von Naturreservaten, die als Polygon-Overlays auf einer Karte mit den Koordinaten in KML-Daten geplottet werden müssen. Ich habe auf der Apple-Website ein Tutorial zum Anzeigen von KML-Überlagerungen auf Karteninstanzen gefunden.Berechnen Sie den nächsten Punkt des KML-Polygons für iPhone App

Das Problem ist, dass die Reserven in der Größe stark variieren - von einem kleinen Teich bis zu mehreren hundert Kilometern. Daher kann ich die Koordinaten des Mittelpunkts nicht verwenden, um die nächsten Reserven zu finden. Stattdessen muss ich den nächsten Punkt des Reservenpolygons berechnen, um den nächsten zu finden. Mit den Daten in KML - wie würde ich versuchen, dies zu erreichen?

Ich habe es geschafft, nur eine andere Person bitten, dies und niemand geantwortet hatte zu finden :(

+0

Können Sie einen Link auf die andere Frage zur Verfügung stellen? Benötigen Sie den nächstgelegenen Punkt im nächsten Polygon oder nur das nächstgelegene Polygon von einem bestimmten Punkt? – Anna

+0

Stuart, bist du am Backend oder in der App kalkuliert? – Xailor

+0

Wie wäre es mit dem Hinzufügen des meanRadius-Parameters? Berechnen Sie den Abstand zum Zentrum des Reservats, subtrahieren Sie dann den mittleren Radius des Reservats. – Phil

Antwort

2

Nun, es gibt ein paar verschiedene Lösungen je nach Ihren Bedürfnissen. Je höher die Genauigkeit erforderlich ist, desto mehr Arbeit erforderlich Ich mag Phils MeanRadius-Parameter Idee, die Ihnen eine ungefähre Vorstellung davon geben würde, welches Polygon am nächsten ist und leicht zu berechnen wäre. Diese Idee funktioniert am besten, wenn die Polygone "kreisförmig" sind Die Idee verliert ihre Genauigkeit

Von einem mathematischen Standpunkt aus, hier ist, was Sie tun möchten.Schleifen Sie durch alle Punkte aller Polygone.Berechnen Sie den Abstand von diesen Punkten zu Ihrer aktuellen Koordinate e. Dann behalte nur im Auge, welcher am nächsten ist. Es gibt eine letzte Falte. Stellen Sie sich zwei Punkte vor, die ein sehr langes Liniensegment ergeben. Sie befinden sich einen Meter vom Mittelpunkt der Linie entfernt. Nun, die Entfernung zu diesen beiden Punkten ist sehr groß, während Sie dem Polygon sehr nahe sind. Sie müssen die Entfernung von Ihrer Koordinate zu jedem möglichen Liniensegment berechnen, die Sie in einer Vielzahl von Arten tun können, die hier beschrieben werden:

http://www.worsleyschool.net/science/files/linepoint/distance.html

Schließlich müssen Sie sich fragen, bin ich in jedem Polygone? Wenn Sie 10 Meter von einem Punkt auf einem Polygon entfernt sind, sich aber tatsächlich innerhalb des Polygons befinden, müssen Sie dies berücksichtigen. Der beste Weg, dies zu tun ist, einen Algorithmus Strahlwerfprozessoren zu verwenden:

http://en.wikipedia.org/wiki/Point_in_polygon#Ray_casting_algorithm

Verwandte Themen