Créer des colonnes géométriques
<<<
Remplir des colonnes géométriques Lire des données géométriques
>>>

19.4 Créer une base de données avec les fonctionnalités géographiques
19 Données spatiales avec MySQL
 Manuel de Référence MySQL 4.1 : Version Française

Types de données géographiques MySQL
Créer des objets géographiques
Créer des colonnes géométriques
->Remplir des colonnes géométriques
Lire des données géométriques

19.4.4 Remplir des colonnes géométriques

Une fois que vous avez créé des colonnes géométriques, vous pouvez les remplir avec des données géographiques.

Les valeurs doivent être stockées dans un format géométrique interne, mais vous pouvez les convertir à ce format à partir des formats Well-Known Text (WKT) et Well-Known Binary (WKB). Les exemples suivants vous montre comment insérer des valeurs géométriques dans une table, en convertissant des valeurs WKT en un format géométrique.

Vous pouvez faire la conversion directement avec la commande INSERT :

INSERT INTO geom VALUES (GeomFromText('POINT(1 1)'));

SET @g = 'POINT(1 1)';
INSERT INTO geom VALUES (GeomFromText(@g));
Au besoin, la conversion peut avoir lieur avant la commande INSERT :

SET @g = GeomFromText('POINT(1 1)');
INSERT INTO geom VALUES (@g);
Les exemples suivants illustre l'insertion de données plus complexes dans la table :

SET @g = 'LINESTRING(0 0,1 1,2 2)';
INSERT INTO geom VALUES (GeomFromText(@g));

SET @g = 'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))';
INSERT INTO geom VALUES (GeomFromText(@g));

SET @g = 'GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 0,1 1,2 2,3 3,4 4))';
INSERT INTO geom VALUES (GeomFromText(@g));
Les exemples précédents utilisent tous la fonction GeomFromText() pour créer des valeurs géométriques. Vous pouvez aussi utiliser des fonctions spécifiques à chaque forme géométrique :

SET @g = 'POINT(1 1)';
INSERT INTO geom VALUES (PointFromText(@g));

SET @g = 'LINESTRING(0 0,1 1,2 2)';
INSERT INTO geom VALUES (LineStringFromText(@g));

SET @g = 'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))';
INSERT INTO geom VALUES (PolygonFromText(@g));

SET @g = 'GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 0,1 1,2 2,3 3,4 4))';
INSERT INTO geom VALUES (GeomCollFromText(@g));
Notez que si une application cliente veut utiliser des représentations WKB de valeur géométrique, elle est responsable d'envoyer des requêtes avec des valeurs WKB valides au serveur. Sinon, il y a de nombreux moyens de passer cette contrainte. Par exemple :
  • Insertion d'un point POINT(1 1) avec sa valeur littérale héxadécimale :
    
    mysql> INSERT INTO geom VALUES
        -> (GeomFromWKB(0x0101000000000000000000F03F000000000000F03F));
  • Une application ODBC veut envoyer une représentation WKB, en l'associant à une variable de requête en utilisant un argument de type BLOB :
    
    INSERT INTO geom VALUES (GeomFromWKB(?))
    
    D'autres interfaces de programmation peuvent supporter des mécanismes similaires.
  • Dans un programme C, vous pouvez protéger les valeurs binaires en utilisant la fonction mysql_real_escape_string() et inclure le résultat dans une chaîne de requête, qui sera envoyée au serveur. mysql_real_escape_string() .

<< Remplir des colonnes géométriques >>
Créer des colonnes géométriques Créer une base de données avec les fonctionnalités géographiques Lire des données géométriques