Umkreissuche mit Google-Koordinaten mit MySQL

Mit der nachfolgende Funktion kann die Entfernung zwischen 2 Punkten auf der Erdkugel berechnet werden.


CREATE FUNCTION `GoogleDistance_KM`(
geo_breitengrad_p1 double,
geo_laengengrad_p1 double,
geo_breitengrad_p2 double,
geo_laengengrad_p2 double ) RETURNS double
RETURN (6371 * acos( cos( radians(geo_breitengrad_p2) ) * cos( radians( geo_breitengrad_p1 ) )
* cos( radians( geo_laengengrad_p1 ) - radians(geo_laengengrad_p2) )
+ sin( radians(geo_breitengrad_p2) ) * sin( radians( geo_breitengrad_p1 ) ) )
);

Somit kann man ganz einfach in einer MySQL-Datenbank die Elemente ermitteln die zm Beispiel im Umkreis zu einem bestimmten Punkt liegen. Ich denke das Beispiel läßt sich auch leicht auf den SQL-Server oder auf eine Oracle-Datenbank übertragen.

Läßt sich dann ganz einfach benutzen:

CREATE TABLE `Adressen` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 60 ) NOT NULL ,
`address` VARCHAR( 80 ) NOT NULL ,
`geo_laengengrad` double NOT NULL ,
`geo_breitengrad` double NOT NULL
)

SELECT id, adresse, geo_laengengrad, geo_breitengrad
from adressen
where GoogleDistance_km(geo_breitengrad, geo_laengengrad, 40, -122) <= 100

Mehr zur Berechnung von Entfernungen, Peilung, Mittelpunkt etc gibts hier