#1 Tue 05 April 2016 16:59
- world citizen
- Participant occasionnel
- Date d'inscription: 29 Nov 2013
- Messages: 21
QGIS : Reprojeter toutes couches shp d'un dossier
Bonjour,
J'aimerais reprojeter toutes les couches shp d'un dossier du Lambert II étendu vers le L93. Mais, vu que l'opération se répétera couramment dans l'organisation, je souhaiterais automatisé l'opération. Il n’y a pas à ma connaissance une méthode sous QGIS qui permet de projeter tous les éléments d'un dossier. Je m'oriente donc vers PyQGIS pour le faire. Le hic c'est que je suis un débutant en PyGIS. Je pourais le faire en ArcPY mais les contrainte technique ne me le permet pas. Y'a t-il l’équivalent de la bibliothèque Arcpy avec qgis? Je m'en sortirai avec l'algorithme. Mais ça sera sympa si vous pouvez m'aider à avoir des fonctions qui me permettrons de faire travail. Avec Arcpy par exemple j'aurais par exemple besoin de la fonction projection_management() dont je n'arrive pas à trouver l'équivalent pour PyQGIS.
Merci d'avance
Hors ligne
#2 Tue 05 April 2016 17:13
Re: QGIS : Reprojeter toutes couches shp d'un dossier
Bonjour,
Ogr2ogr permet de le faire par lot. On peut y avoir accès vià OSGEO4W installé avec Qgis
http://www.gdal.org/ogr2ogr.html
avec l'argument : -t_srs
Edit :
Exemple : convertir les .shp qui sont à la racine du dossier en epsg:2154 dans le dossier "2154"
FOR %F in (*.shp) DO ogr2ogr -t_srs EPSG:2154 "2154/%F" "%F"
Dernière modification par Dof (Tue 05 April 2016 17:39)
Hors ligne
#3 Tue 05 April 2016 17:33
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3944
Re: QGIS : Reprojeter toutes couches shp d'un dossier
Bonjour,
Il me semble que la boîte à outils du menu Traitement de QGIS propose des algorithmes de reprojection, et que chaque algo possède une option d'exécution par lots qui fonctionne sur un dossier (ou en tout cas, plusieurs fichiers sélectionnés). A tester.
Dernière modification par SANTANNA (Tue 05 April 2016 17:33)
Hors ligne
#4 Tue 05 April 2016 17:51
- J.San José
- Participant occasionnel
- Date d'inscription: 7 Sep 2015
- Messages: 14
Re: QGIS : Reprojeter toutes couches shp d'un dossier
Bonjour,
l'extension Qpackage peut résoudre votre problème. Elle permet d'exporter toutes vos couches ou seulement celles que vous souhaitez dans votre projet, ainsi que votre projet en lui-même. Il suffit de sélectionner le SCR voulu avant d'exporter.
Au préalable, il faut que vous ayez déjà utilisé dans votre projet le SCR voulu pour qu'il apparaisse dans la liste déroulante.
Hors ligne
#5 Wed 06 April 2016 16:02
- world citizen
- Participant occasionnel
- Date d'inscription: 29 Nov 2013
- Messages: 21
Re: QGIS : Reprojeter toutes couches shp d'un dossier
Exemple : convertir les .shp qui sont à la racine du dossier en epsg:2154 dans le dossier "2154"
FOR %F in (*.shp) DO ogr2ogr -t_srs EPSG:2154 "2154/%F" "%F"
J'ai esssayer cette approche qui m'a donné du fil à retordre vu que je maitrise pas le OGR.
Il me semble que la boîte à outils du menu Traitement de QGIS propose des algorithmes de reprojection, et que chaque algo possède une option d'exécution par lots qui fonctionne sur un dossier (ou en tout cas, plusieurs fichiers sélectionnés
Effectivement, mais cet outil nécessite l'ajout un à un de toutes les couches a reprojeter. comme je l'ai dit, c'est une opération répétitive et à chaque fois on a vu une centaine de couche à reprojeter. Donc elle n'est pas vraiment pratique.
Par contre la proposition de J.San José me convient très bien.
Code:
l'extension Qpackage peut résoudre votre problème. Elle permet d'exporter toutes vos couches ou seulement celles que vous souhaitez dans votre projet, ainsi que votre projet en lui-même. Il suffit de sélectionner le SCR voulu avant d'exporter. Au préalable, il faut que vous ayez déjà utilisé dans votre projet le SCR voulu pour qu'il apparaisse dans la liste déroulante.
il me suffit de désactiver la visibilité pour les couches ajouter dans le projet (pour gagner en temps), d'ajouter toutes les couches à reprojeter et d'utiliser l'extension. Je vais dans ce sens. Je vous tiens au courant du résultat.
Hors ligne
#6 Sun 10 April 2016 09:22
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3944
Re: QGIS : Reprojeter toutes couches shp d'un dossier
Bonjour,
Effectivement, mais cet outil nécessite l'ajout un à un de toutes les couches a reprojeter. comme je l'ai dit, c'est une opération répétitive et à chaque fois on a vu une centaine de couche à reprojeter. Donc elle n'est pas vraiment pratique.
L'avez-vous vraiment testée, cette option? Parce que moi, il me suffit une fois que le mode traitement par lots est activé de cliquer sur le sélectionneur de fichiers pour aller sélectionner le contenu de tout un dossier. Tous les fichiers sont alors ajoutés à la liste. Pour le paramétrage automatique des options, un double clic sur l'entête de colonne propage la variable de la première ligne. Je vous invite à lire docs.qgis.org/2.8/fr/docs/training_manual/processing/batch_conversion.html qui est plus détaillé/approprié que mon précédent lien.
Ps: il me semblait nécessaire d'apporter cette précision pour que les futurs lecteurs sachent que cette solution (devrait) fonctionne(r) aussi
Cordialement,
S.
Hors ligne
#7 Wed 13 April 2016 15:01
- world citizen
- Participant occasionnel
- Date d'inscription: 29 Nov 2013
- Messages: 21
Re: QGIS : Reprojeter toutes couches shp d'un dossier
Bonjour,
On peut effectivement le faire avec l'outil reprojeter en sélectionnant toutes les couches d'un dosssier. Mais le hic c'est qu'il faut selectionner à chaque le scr cible et le nom de la couche reprojeter. Avec Qpackage, il suffit de selectionner le dossier de sauvegarde et le scr cible. Il fait une copie reprojeté toutes les couches en gardant leur nom.
Hors ligne
#8 Thu 14 April 2016 00:25
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3944
Re: QGIS : Reprojeter toutes couches shp d'un dossier
Bonjour,
Mais le hic c'est qu'il faut selectionner à chaque le scr cible et le nom de la couche reprojeter.
Là encore, je ne suis pas d'accord. Comme précédemment dit et indiqué dans le tutoriel, il suffit de renseigner la première ligne et double-cliquer sur l'entête de colonne pour propager la valeur dans les lignes en-dessous.
Hors ligne