#1 Thu 20 June 2013 08:00
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
QGIS 1.8 / Gdal 1.9.2 (Win 7) : Batcher
Bonjour,
J'ai un besoin croissant d'apprendre à automatiser certaines tâches sous les SIG. Je travaille sous QGIS 1.8, installé avec OSGeo4W, version 1.9.2 de gdal, et je suis sous Windows 7.
Je dois reprojeter et convertir du .tab au .shp des dizaines de couches de ma base de données. Idéalement, je sortirai même les .tab directement dans une base Spatialite...
J'ai vu que je pouvais utiliser ogr2ogr pour à la fois changer le type et la projection, ainsi que le dossier de sortie.
Ci-joint la ligne de commande que j'ai tenté sans succès, avec les questions que je me pose en commentaire. Désolé pour le fichier .txt, le .bat ne passe pas.
Pouvez-vous m'aider à débloquer ce premier batch ?
Merci d'avance, a+
Dernière modification par Samy-DT (Thu 20 June 2013 08:04)
Hors ligne
#2 Thu 20 June 2013 08:27
Re: QGIS 1.8 / Gdal 1.9.2 (Win 7) : Batcher
bonjour,
en fait, pour convertir un ensemble de fichiers d'un format à un autre, il suffit de mettre le nom du dossier sans passer par de la prog' batch
qqch comme
Code:
[ton chemin]\ogr2ogr.exe -s_srs EPSG:3727 -t_srs EPSG:2975 [dossier des TABS] [dossier des SHPs]
Pour mettre le shp dans une base spatialit, il faudra sans doute passer par du batch.
pour débugger le tien, procède par étape avec des echo pour voir si la boucle fonctionne bien
geodata au cerema et petits billets en géomatique
Hors ligne
#3 Thu 20 June 2013 12:50
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Re: QGIS 1.8 / Gdal 1.9.2 (Win 7) : Batcher
Ok pour le chemin de sortie,
Les crochets sont obligatoires ? pour l'instant comme ça bloque au niveau de ogr2ogr je ne peux pas vérifier si ça marche ^^.
Pour utiliser ogr2ogr.py à partir des dossiers python\plugins\Sextante\gdal de QGIS dans le batch, faut-il déclarer une variable d'environnement ?
A+
Hors ligne
#4 Thu 20 June 2013 14:40
Re: QGIS 1.8 / Gdal 1.9.2 (Win 7) : Batcher
Les crochets, c'est juste pour l'exemple. il te faut mettre ton chemin à la place vers ogr2ogr
il vaut mieux renseigner la variable d'environnement PATH vers les différentes dlls
geodata au cerema et petits billets en géomatique
Hors ligne
#5 Thu 20 June 2013 21:17
Re: QGIS 1.8 / Gdal 1.9.2 (Win 7) : Batcher
Bonsoir,
Menu Analyse > Modeler et créer ton modèle ?! Tu peux te créer des scripts aussi.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#6 Sun 23 June 2013 08:31
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Re: QGIS 1.8 / Gdal 1.9.2 (Win 7) : Batcher
Bonjour,
Pouvez-vous me confirmer si j'utilise le bon ou le mauvais ogr2ogr ? D'ailleurs quelle est la différence entre un bon et un mauvais ogr2ogr ?...
Bref je note que le seul exécutable que j'ai se trouve dans un dossier ms4w de mon pc, mais que quand je le test seul, j'ai un message d'erreur qui me dit que gdal19.dll n'est pas installé, bien que la .dll en question soit bien dans un autre dossier de ms4w.
D'autre part j'ai des ogr2ogr.py et .pyc dans le dossier des plugins Sextante de qgis. Déjà si quelqu'un pouvait m'éclairer sur le rôle des uns et des autres, ça serait cool.
A vu de nez, je dirais que le .exe est plutôt à utiliser dans un batch et le .py dans un script Python, mais je n'ai pas encore vraiment compris les frontières entre les langages...Peut-on utiliser un script python dans un batch ? Je sais pas...
Merci pour vos conseils,
A+
Hors ligne
#7 Wed 26 June 2013 08:31
Re: QGIS 1.8 / Gdal 1.9.2 (Win 7) : Batcher
D'ailleurs quelle est la différence entre un bon et un mauvais ogr2ogr ?...
tu peux avoir plusieurs ogrogr: celui installé via les fwtools, celui de mapserver, celui de qgis. Ces trois pourraient cohabiter et correspondre à de multiples versions de gdal/ogr, offrant l'accès à une palette différente de formats.
quand je le test seul, j'ai un message d'erreur qui me dit que gdal19.dll n'est pas installé, bien que la .dll en question soit bien dans un autre dossier de ms4w.
Il faut que tu ajoutes le chemin vers cette dll dans la var. d'environnement PATH. gdal19 semble indiquer que la version de GDAL/OGR que tu utilises est la 1.9. C'est une mouture relativement avancée.
D'autre part j'ai des ogr2ogr.py et .pyc dans le dossier des plugins Sextante de qgis. Déjà si quelqu'un pouvait m'éclairer sur le rôle des uns et des autres, ça serait cool.
A vu de nez, je dirais que le .exe est plutôt à utiliser dans un batch et le .py dans un script Python, mais je n'ai pas encore vraiment compris les frontières entre les langages...Peut-on utiliser un script python dans un batch ? Je sais pas...
Oui, on peut utiliser un script python dans un batch.
C'est le cas d'un programme comme gdal_polygonize.py.
Code:
@python gdal_polygonize.py
Ne te préoccupe pas des fichiers python. Utilise les exécutables.
Dernière modification par baobazz (Wed 26 June 2013 08:31)
geodata au cerema et petits billets en géomatique
Hors ligne
#8 Thu 27 June 2013 14:42
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Re: QGIS 1.8 / Gdal 1.9.2 (Win 7) : Batcher
Salut Baobazz,
Impec' pour le problème de .dll, le problème de variable d'environnement est résolu.
En revanche la commande ne marche toujours pas.
J'ai simplifié le code pour qu'il ressemble le plus possible aux plus simples trouvés sur le net (cf. pièce jointe).
J'ai beau avoir comparé avec plusieurs exemples sur le net, il me manque des connaissances pour savoir où ça coince.
J'aimerais bien comprendre et finir par le faire marcher.
Merci,
A+
Hors ligne
#10 Fri 28 June 2013 07:07
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Re: QGIS 1.8 / Gdal 1.9.2 (Win 7) : Batcher
"\R était inattendu"
Hors ligne
#11 Fri 28 June 2013 10:42
Re: QGIS 1.8 / Gdal 1.9.2 (Win 7) : Batcher
Le script:
Code:
@echo off for /f "delims=" %%a IN ('dir /b /s C:\TEMP\*.shp') do ogr2ogr -s_srs EPSG:3727 -t_srs EPSG:2975 %%~na_2975.shp %%~na.shp pause
Petit conseil, dans un premier temps, quand tu batches, teste des choses avec commande echo.
Code:
@echo off for /f "delims=" %%a IN ('dir /b /s C:\TEMP\*.shp') do echo "ogr2ogr -s_srs EPSG:3727 -t_srs EPSG:2975 %%~na_2975.shp %%~na.shp" pause
Dernière modification par baobazz (Fri 28 June 2013 11:03)
geodata au cerema et petits billets en géomatique
Hors ligne
#12 Fri 28 June 2013 15:02
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Re: QGIS 1.8 / Gdal 1.9.2 (Win 7) : Batcher
Merci Baobazz pour cette proposition.
ça fait avancer les choses, mais nous n'y sommes pas encore tout à fait. L'exécution de ton code ouvre une fenêtre cmd et affiche l'opération mais ne créé pas physiquement les nouvelles couches.
D'autre part, comme je veux aussi comprendre le batch pour progresser j'ai plusieurs questions :
- /f semble avoir pour fonction d'ouvrir chaque fichier et d'en parcourir les lignes. En jouant avec les tokens et delim on peut naviguer dedans, ok.
Or dans mon cas, c'était plutôt lire des fichiers dans plusieurs répertoires. Du coup pourquoi utiliser /f plutôt que /R ? Car si je cite "batcher.fr", /R "parcourt l'arborescence de répertoires depuis la racine [lecteur:]chemin, en exécutant FOR dans chaque répertoire de l'arborescence." ça semblait être ça...
- Pourquoi utiliser "delims=" sans rien mettre comme délimitateur ? En faisant les petits exemples de Batcher.fr je comprends que ça sert à séparer les différentes parties au sein d'un fichier...quelle utilité ici ?
- %%~na_2975.shp : affiche chaque fichier renommé ? Pourquoi ~na alors que la variable s'appelle %%a ?
- %%~na.shp : affiche le nom du fichier traité ?
Désolé pour toutes ces questions, mais ce n'est pas limpide...en tous cas par pour moi.
A+
Dernière modification par Samy-DT (Fri 28 June 2013 15:04)
Hors ligne
#13 Mon 01 July 2013 12:40
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Re: QGIS 1.8 / Gdal 1.9.2 (Win 7) : Batcher
Bonjour,
J'ai fini par réussir à faire tourner ce batch avec la ligne suivante écrite directement dans la ligne de commande OsGeo4w à la racine de ma base de données test :
for /R %f in (*.tab) do ogr2ogr -s_srs EPSG:3727 -t_srs EPSG:2975 %f_2975 %f.
Ceci dit, j'aurais bien aimé comprendre le code de vos propositions, surtout celle de Baobazz. ça m'intéresse de savoir pourquoi /f, pourquoi %~fna.shp etc...
Merci !
A+
Hors ligne
#14 Mon 01 July 2013 13:14
Re: QGIS 1.8 / Gdal 1.9.2 (Win 7) : Batcher
%%~na permet de récupérer le nom du fichier sans l'extension quand la variable s'appelle %%a
si c'est %%f comme dans ton exemple, il faut alors mettre
%%~nf
quant à delims, il est possible que ça marche sans (j'ai fait un bête copier coller)
geodata au cerema et petits billets en géomatique
Hors ligne
#15 Mon 01 July 2013 19:28
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Re: QGIS 1.8 / Gdal 1.9.2 (Win 7) : Batcher
Ok, noté, merci pour tes réponses.
A+
Hors ligne