Wie verwenden Sie MySQL-spatial-Abfragen finden alle Datensätze, in X radius?

Ich habe eine Tabelle in einer MySQL-Datenbank mit einem räumlichen geometrie-Spalte vom Typ POINT. Ich möchte in der Lage sein zu nehmen, ein Punkt in der Mitte der Karte und finden Sie alle Datensätze innerhalb von X Meilen (oder was auch immer-Abstand). Ich kann nicht scheinen zu finden, ein gutes Beispiel oder eine Erklärung, wie dies zu tun, nicht zu bekommen, stark in der geometrischen Mathematik. Ich bin froh, diese Strecke zu fahren, aber würde erstmal gerne versuchen und lösen es mit einer echten räumlichen Datenbank.

Wollte nur zu beachten, dass Recht keine, die ich zu lösen versuche, dies mit der Technik (nicht präzise, sondern nur versuchen das jetzt) ein polygon mit Datenpunkte. Meine Abfrage sieht wie folgt aus. SELECT * from business WHERE MBRContains(GeomFromText('Polygon((30 -100, 30 -90, 25 -90, 25 -100, 30 -100))'), geolocation -) ich habe einen Datensatz in der Tabelle mit einer Länge von 39 und einer langen -94. Wie ich es verstehe, dies sollte zeigen, bis in das resultset und das tut es nicht. Also das ist in einem anderen Winkel auf die Frage.
Du machst es falsch (oder nur kompliziert). Die Berechnung der bounding-box in PHP mit github.com/anthonymartin/GeoLocation.php und dann die Abfrage wie WHERE lat BETWEEN minL AND maxL AND lon BETWEEN minO AND maxO. Das ist Platz suchen, statt ein Kreis, aber Ihre web-Karte ist rechteckig sowieso, nicht wahr?

InformationsquelleAutor Preston Crawford | 2010-07-09

Schreibe einen Kommentar