[MySQL 4.1] Datentyp "POINT" wie füllen?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [MySQL 4.1] Datentyp "POINT" wie füllen?

    Ich kämpfe gerade mit einer Mysql-Datenbanktabelle mit Geokoordinaten.
    Momentan habe ich Lat + Long in eigenen Spalten (Typ 'varchar'), ich möchte nun die beiden Spalten zusammenfügen in eine Spalte vom Typ 'Point' .

    Der folgende Befehl funktioniert:
    Code:
    INSERT INTO geo (coord) VALUES (GeomFromText('POINT(48.13724 11.57562)', 6422));
    aber wenn ich jetzt die Werte aus der Datenbank nehmen will, gehts nicht.
    Code:
    UPDATE geo set coord = GeomFromText('POINT(CONCAT(lat,' ',long))', 6422)
    Ich tippe auf die einfachen Anführungszeichen, aber wie lösen?

    Gruß
    Dominik

    [Mysql-Version 5.0.*]
    Zuletzt geändert von dominikr; 17.07.2008, 22:14.

  • #2
    UPDATE geo SET coord = GeomFromText(CONCAT('POINT(',lat,' ',long,')'), 6422)

    Kommentar


    • #3
      vielen Dank!

      Funktioniert :-)

      Jetzt muss ich das ganze nur noch optimieren, damit eine Abfrage ala
      'gib mir alle Punkte im Umkreis von X Kilomentern aus' auch mit 4 Millionen Datensätzen fix geht :-/

      Gruß

      Kommentar


      • #4
        Im ersten Post sagtest du noch, du würdest aus deinen Spalten lat und long eine Spalte vom Typ POINT machen. Danach würde die Umkreissuche vielleicht auch schneller laufen, weil zumindest das Casten mit GeoFromText entfällt.

        Wirf mal einen Blick auf http://howto-use-mysql-spatial-ext.blogspot.com/.

        Kommentar


        • #5
          danke für den link, werde ich mir anschauen.

          ich habe das gemacht (UPDATE ...), das hat das ganze schon verbessert, aber halt noch nicht akzeptabel.

          Code:
          SELECT a.name, a.ort, b.name, GLength(LineStringFromWKB(LineString(AsBinary(a.geo), AsBinary(b.geo))))*111.044736 AS distance FROM adresseNEU a, adresseNEU b WHERE b.id = 1 HAVING distance < 10;
          Der SQL-Befehl gibt die Locations, die im Umkreis der Location b von 10 km liegen, aus.

          => Laufzeit ~10 Sekunden

          Gruß

          Kommentar

          Lädt...
          X