2016-06-30 5 views
0

Ich habe eine Tabelle in einer Datenbank, wo ich die Scheitelpunkte von Polygonen mit folgender Struktur behalte: IdPolygon (int), Breitengrad (real), Längengrad (real).Best Practice, um zu erkennen, ob ein Punkt innerhalb eines 2D Polygons liegt (Scheitelpunkte eines Polygons liegen auf einer Tabelle)

Um zu prüfen, ob ein Punkt innerhalb eines der registrierten Polygone liegt, suche ich nach dem 'IdPolygon' für einen Längen- und Breitengrad, und dann wiederhole ich diese Liste von Polygonen, um zu sehen, ob der Punkt in einem beliebigen ist von ihnen .

Was ist die beste Praxis, mit einer besseren Leistung, für mich zu überprüfen, ob ein Punkt in einem der Polygone in der Bank registriert ist?

+0

Sie könnten nach Suchalgorithmen recherchieren und eine suchen, die Ihren Anforderungen entspricht. –

+0

Eigentlich ist die Liste der Vertices nicht ausreichend Information. Sie müssen wissen, in welcher Reihenfolge sie sich miteinander verbinden. Andernfalls können Sie zum Beispiel kein reguläres Fünfeck von einem Pentagramm unterscheiden (es ist möglich, entweder aus demselben Satz von Scheitelpunkten zu konstruieren). Wenn Sie eine Reihe von Scheitelpunkten haben, können Sie mit dem Algorithmus für die Anzahl der Wicklungen bestimmen, ob ein Punkt innerhalb des Polygons liegt. –

+0

Danke @JuanTomas. Die Scheitelpunkte sind nach deinem Tipp angeordnet. – Alvimar

Antwort

0

Ich schlage vor, Sie speichern räumliche Daten mit Unterstützung von räumlichen Typ von SQL-Server, z. Geometrie, Geospatial. Es hat Unterstützung Indexierung und räumliche Abfrage. Weitere Informationen finden Sie unter https://msdn.microsoft.com/en-us/library/bb933991.aspx

+0

Danke. Ich werde den Datentyp und die ursprüngliche Strategie ändern. – Alvimar