Suche eine Datenbank von Koordinaten-gebundenen Daten für einen beliebigen polygonalen Bereich
-
05-07-2019 - |
Frage
Ich habe eine relationale Datenbank, in der jeder Eintrag markiert ist, als ein Punkt mit Längen-und breitengradkoordinaten.Ich gebe dem Benutzer die Möglichkeit, markieren Sie eine beliebige polygon auf einer Karte, und Sie möchten, um alle Einträge in der polygonale Form.
Was wäre der beste Weg, dies zu erreichen?
Auch, es könnte sich lohnen, darauf hin, dass kleine Fehler ok sind (dh.wenn es ist ein effektiver Weg, um schalten Sie das polygon in eine Reihe von Rechtecken, dann ist das in Ordnung).
Lösung
Mit räumlichen Erweiterungen, die meisten Datenbanken haben diese. In MySql kann man sie nur mit MyISAM-Tabellen verwenden, die nicht transaktionale sind.
http://dev.mysql.com/doc /refman/5.0/en/spatial-extensions.html
Andere Tipps
Eine Möglichkeit, um schnell zu reduzieren auf die Anzahl der Punkte, die zu berücksichtigen ist, um zu berechnen, umschließendes Rechteck für das polygon (d.h.nur min-x, min. y, max x, max y der Punkte im polygon), und wählen Sie dann für die Punkte, die innerhalb der bounding rectangle (d.h.wobei x zwischen min-x max-x und dieselbe für y).
Natürlich sind nicht alle diese Punkte sind unbedingt innerhalb des Polygons, aber jetzt können Sie hone code.
Ein alter Hack:
Zählen der Anzahl der Male einer Linie <point far away>
zu <point in question>
einem der Begrenzungssegmente des Polygons überquert.
- Auch Zahlen bedeuten, der Punkt außerhalb des Polygons ist
- Ungerade Zahlen bedeuten, es innerhalb des Polygons ist