SQL MySQL Geometrie Klasse

PSP_GIGA

Cadet 3rd Year
Registriert
Jan. 2011
Beiträge
57
Hallo Leute,

zu meiner Frage in MySQL gibt es die Geometrie Klasse (zur Klasse

und zwar möchte ich geographische Punkte in meine MySQL Datenbank speicher, aber ich weiß leider nicht genau welchen Typ ich wählen musst um Längen und Breitengrade zu speichern (latitude & longitude).

Danach möchte ich mir mit einem SQL Befehl alle Punkte ausgeben lassen, die z.B. in einem Radius von 2km liegen.

Dazu hab ich schon folgendes gefunden mit der Buffer-Funktion

PHP:
SELECT * FROM pointsTable where MBRContains( 
Buffer(GeomFromText( 'POINT(-122.078916 37.393885 )' ),200), 
coord) = 1

Nur weiß ich leider nicht ob es wirklich funktionieren kann.

Habt ihr vielleicht ein paar Lösungsvorschläge oder ein paar Tipps für mich wie ich am besten an diese Sache ran gehe?

Vielen Dank für Antworten :)

PSP_GIGA
 
schonmal danke für deine mühe, aber leider ist das glaub ich nur wenn die Punkte sich kreuzen

ich hab eine Anleitung von google gefunden hier

dort gibt es diesen Code:

PHP:
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;

zum Anzeigen von Punkten die in der nähe liegen, aber bei mir gibt er immer null zurück und ich weiß nicht wieso

Längen und Breitengrade hab ich angepasst.

Hat jemand eine Idee?

####
Edit:

Hier ist der Code aus meiner PHP Datei

PHP:
$query = ("SELECT id, ( 3959 * acos( cos( radians(51) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(9) ) + sin( radians(51) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20");

$result = mysql_query($query); 

print(json_encode($result));

$result = mysql_query($query);
if (!$result) {
  die("Invalid query: " . mysql_error());
}

?>
 
Zuletzt bearbeitet:
Zurück
Oben