Importer une couche spatiale dans MySQL

Besoin d’exporter ponctuellement des données géographiques dans MySQL de façon rapide afin de les partager ou exploiter sur internet?

Voici une méthode simple et rapide pour importer des données géométriques dans une base de données MySQL en utilisant QGIS, LibreOffice Calc et PhpMyadmin.


 

Pour l’exemple, j’ai utilisé les communes de l’Isère  issue d’Openstreetmap : http://export.openstreetmap.fr/contours-administratifs/communes/

Commençons par ouvrir le .shp dans QGIS en utilisant l’encodage UTF8.

Ensuite, dans la table attributaire, on  sélectionne toutes les entités (ctrl+A), puis  on copie  l’ensemble . Enregistrer la couche en CSV en précisant que la géométrie soit en WKT (plus propre que le copier coller)

On ouvre ouvre libre office calc pour coller le tout avant de l’enregistrer en CSV (séparateur :  ; et l’encodage toujours en UTF8)

Dans phpMyAdmin, j’importe ce CSV dans la base souhaité.

On renomme la table qui par défaut s’appelle « TABLE_1 » avec cette requête :

	RENAME TABLE   TABLE_1 TO  isere;

On ajoute une clé primaire sur le code Insee :

ALTER TABLE  isere  ADD PRIMARY KEY ( REF_INSEE);

La géométrie (wkt_geom)  est un champs texte, on va donc créer un champs « geom » de type géometry

ALTER TABLE  isere ADD  geom GEOMETRY NOT NULL;

On crée un index spatial, c’est mieux:

CREATE SPATIAL INDEX sp_index ON isere (geom);

On remplit le champs geom en utilisant le champ « wkt_geom »

UPDATE isere SET geom=GeomFromText(wkt_geom);

Enfin, on supprime la géométrie stocké en texte qui ne nous est plus utile

ALTER TABLE isere DROP  wkt_geom;

Et voilà, les données sont dans mysql en moins de 5 minutes et sans utiliser d’ETL.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *