Message posté par : sporito
----------------------------------------
-----------------
ThomasG écrit :
Bonjour,
Pas forcément simple mais un exemple basique pour illustrer devrait vous aider
Créer une table dans MySQL
-----------------
Code :
CREATE TABLE IF NOT EXISTS points_xy (
identifier INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
x FLOAT,
y FLOAT
) ENGINE=INNODB;
-----------------
Insérer quelques valeurs dans cette même table créée
-----------------
Code :
INSERT INTO points_xy(name, x, y)
VALUES
('az', 1.84, 43.23),
('by', 2.38, 46.37),
('cx', 5.12, 34.24),
('dw', -2.5, 44.17);
-----------------
Tester votre connexion à MySQL avec cette ligne de commande (optionnel)
-----------------
Code :
ogrinfo -so MySQL:mydbname,user=myuser,password=mypassword points_xy -dialect SQLite -sql
"SELECT *, MakePoint(x,y, 4326) AS geom FROM points_xy"
-----------------
Créer un VRT (inspiré du test ci-dessus). Ici en ligne de commande, sinon copier/coller
manuellement le bloc <OGRVRTDataSource></OGRVRTDataSource> dans un fichier)
-----------------
Code :
echo '<OGRVRTDataSource>
<OGRVRTLayer name="points_xy">
<SrcDataSource>MySQL:mydbname,user=myuser,password=mypassword</SrcDataSource>
<SrcSQL dialect="SQlite">SELECT *, MakePoint(x,y, 4326) AS geom
FROM points_xy</SrcSQL>
</OGRVRTLayer>
</OGRVRTDataSource>' >| demo.vrt
-----------------
Enfin, ajouter le fichier demo.vrt en l'ouvrant comme une couche vecteur dans QGIS. Il
est possible d'établir une connexion entre MySQL et QGIS sans passer par cet
intermédiaire mais votre table doit contenir une colonne spécifique avec un type GEOMETRY.
J'évite ce problème en demandant à GDAL de faire le passe-plat via un VRT.
Thomas
-----------------
Merci pour votre retour.
J'ai copié cela dans un bloc note puis enregistrer sous test.vrt mais ça ne fonctionne
pas.
<OGRVRTDataSource>
<OGRVRTLayer name="pointxy">
<SrcDataSource>MySQL:dbname,user=username,password=mdp</SrcDataSource>
<SrcSQL dialect="SQlite">SELECT *, MakePoint(coordx,coordy, 4326)
AS geom FROM pointxy</SrcSQL>
</OGRVRTLayer>
</OGRVRTDataSource>
Ma base MySQL est en local, est-ce dans ce code, il ne manquerait pas l'indication:
host=localhost
J'ai aussi une interrogation sur le format des champs de coordonnées, je sais pas trop
si c'est le bon.
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=352708#p352708
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net