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()
.
|