Punkt in polygon-Algorithmus für SQL-Server

Bin ich zu schreiben versucht, eine SQL-Abfrage, die bestimmen, ob ein gegebener Punkt in einem polygon. (Ich bin mit SQL Server 2008 R2).

War ich nach dieses tutorial (einfach kopieren /einfügen und ändern von Tabellennamen) und etwa funktioniert, ABER ist es nicht genau überhaupt. Zum Beispiel, lassen Sie uns rücksichtsvoll einen gegebenen Punkt die Koordinaten sind :

P = 45.7664, 4.87383.

Wenn Sie zeichnen ein kleines polygon (eine Ungefähre Quadrat) um diesen Punkt mit 4 Ecken-Koordinaten :

S = 45.97215 4.693909, 45.687 4.674683, 45.73302 5.460205, 46.05227 5.366821, 45.97215 4.693909

dem Verfahren in dem link unten die Antworten der Punkt ist NICHT in polygon, in der Erwägung, dass es ist...
Das ist die Ausgabe (mit meinem eigenen text-Formatierung) :

Punkt in polygon-Algorithmus für SQL-Server

(Polygon 20 ist das polygon oben)

Aber wenn Sie vergrößert den Platz (10 mal größer in meinem test), das Verfahren Antworten, meine Nummer liegt auf dem Platz.

So, ich bin auf der Suche nach einem anderen Algorithmus, genauer.

Hier ist mein VERTICE Tabelle, mit allen Ecken-Koordinaten der einzelnen Polygone meiner DB
Punkt in polygon-Algorithmus für SQL-Server

Ich brauche, um zu überprüfen, für ALLE Polygone (es gibt ein paar tausend), wenn Sie einen bestimmten Punkt übergeben, parameter ist in ein polygon (und wenn ja, welche(s)). Ich kann die Schleife von mir, aber ich vermisse eine richtige Punkt-in-polygon - Algorithmus.

Könnte mir jemand helfen ?
Ich danke Ihnen sehr.

ZUSAMMENFASSUNG

Den entsprechenden SQL fiddle : http://sqlfiddle.com/#!3/0caa4/1

  • Es ist die Leistung schlecht, wenn Sie große Datensätze in der Datenbank, habe ich versucht, diese Abfrage über 1600000 Datensätze und es dauerte avg 2 Minuten.
  • Hi Jitendra, dies ist eine alte Frage, aber das Projekt ist noch in der Entwicklung (es ist ein persönliches Projekt). Ich habe implementiert die alogrithm in meinem link mit den Erklärungen von @Ben Thul und es perfekt funktioniert, aber ich habe nie versucht, mit so viel Aufzeichnungen. Sie könnten vorschlagen, einen besseren Algorithmus als eine Antwort, es wird willkommen sein !
InformationsquelleAutor AlexB | 2013-10-27
Schreibe einen Kommentar