IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MySQL Discussion :

MySQL donnée Spatial


Sujet :

MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 20
    Points
    20
    Par défaut MySQL donnée Spatial
    Bonjour

    Voila l'exemple que je veux essayer, j'ai fait ça sous phpMyAdmin.

    The first example is a very simple database with just two tables: one that contains addresses and the location of the address as a POINT, and a second table that contains information on taxi cabs, including the location of the cab, again as a POINT.

    Note that we also create a spatial index on both tables.

    CREATE TABLE address (
    address CHAR(80) NOT NULL,
    address_loc POINT NOT NULL,
    PRIMARY KEY(address),
    SPATIAL KEY(address_loc)
    );

    CREATE TABLE cab (
    cab_id INT AUTO_INCREMENT NOT NULL,
    cab_driver CHAR(80) NOT NULL,
    cab_loc POINT NOT NULL,
    PRIMARY KEY(cab_id),
    SPATIAL KEY(cab_loc)
    );
    Now we need to insert some data into these tables to test the spatial features. To do this, the easiest way is to use the GeomFromText() function, that takes a string in WKT format and converts that to a spatial object.

    INSERT INTO address VALUES('Foobar street 12', GeomFromText('POINT(2671 2500)'));
    INSERT INTO address VALUES('Foobar street 56', GeomFromText('POINT(2971 2520)'));
    INSERT INTO address VALUES('Foobar street 78', GeomFromText('POINT(3171 2510)'));
    INSERT INTO address VALUES('Foobar street 97', GeomFromText('POINT(5671 2530)'));
    INSERT INTO address VALUES('Foobar street 99', GeomFromText('POINT(6271 2460)'));
    INSERT INTO address VALUES('Bloggs lane 10', GeomFromText('POINT(5673 3520)'));
    INSERT INTO address VALUES('Bloggs lane 20', GeomFromText('POINT(5665 3550)'));
    INSERT INTO address VALUES('Bloggs lane 45', GeomFromText('POINT(5571 3510)'));

    INSERT INTO cab VALUES(0, 'Joe Bloggs', GeomFromText('POINT(2262 2100)'));
    INSERT INTO cab VALUES(0, 'Bill Bloggs', GeomFromText('POINT(2441 1980)'));
    INSERT INTO cab VALUES(0, 'Sam Spade', GeomFromText('POINT(5400 3200)'));
    Now we have some data to work with, let's try a spatial query: We will query for the closest cab to a given location. As both of the columns involved in the query have the POINT data type, the standard OpenGIS function Distance() could be used. Regrettably, this is not yet implemented in the MySQL Spatial Extensions, so we have to take a different route. (The Distance() function will be implemented in a later release of MySQL.) We convert the two POINT values to a LINESTRING and then compute the length of that, which will be the same as the distance between the two points. The finished query then looks like this:

    SELECT
    c.cab_driver,
    ROUND(GLength(LineStringFromWKB(LineString(AsBinary(c.cab_loc),
    AsBinary(a.address_loc)))))
    AS distance
    FROM cab c, address a
    WHERE a.address = 'Foobar street 110'
    ORDER BY distance ASC LIMIT 1;
    Les valeurs de address_loc de type POINT sont mal affichées. Voilà un imprime écran :


    J'utilise WampServer avec MySql 5.1.36

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Je suppose que c'est lié au fait que POINT n'est pas exactement un type mais une classe qui n'est peut-être pas directement lisible en dehors des fonctions géométriques.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Je suppose que c'est lié au fait que POINT n'est pas exactement un type mais une classe qui n'est peut-être pas directement lisible en dehors des fonctions géométriques.
    CinePhil


    et comment je peux modifier ça?

Discussions similaires

  1. [Mysql] Donnée XML >vers> BDD
    Par largiss dans le forum XQUERY/SGBD
    Réponses: 14
    Dernier message: 28/02/2017, 17h51
  2. Dump MySQL - Données géographiques
    Par SpaceFrog dans le forum Contribuez
    Réponses: 1
    Dernier message: 08/06/2010, 08h42
  3. Réponses: 1
    Dernier message: 31/01/2008, 14h01
  4. ODBC et données spatiales
    Par pconrad dans le forum SQL
    Réponses: 2
    Dernier message: 21/11/2007, 16h33
  5. [Base de données Spatial] Distance entre deux points
    Par Pumpkins dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/11/2006, 12h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo